NINA B302 com WIFI - CircuitPython
O objetivo deste BLOG é monstrar um exemplo de CircuitPython que permite o NINA B302 se comunicar com um servidor HTTP WORLDTIME via WIFI COPROCESSOR baseado no NINA W102, em modo 802.11.
Opening Web Page
{'timezone': 'America/Sao_Paulo', 'utc_datetime': '2020-04-23T14:27:14.771506+00:00', 'utc_offset': '-03:00', 'week_number': 17, 'unixtime': 1587652034, 'dst_from': None, 'raw_offset': -10800, 'datetime': '2020-04-23T11:27:14.771506-03:00', 'client_ip': '201.2.238.219', 'abbreviation': '-03', 'day_of_year': 114, 'day_of_week': 4, 'dst': False, 'dst_offset': 0, 'dst_until': None}
https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/introduction
https://learn.sparkfun.com/tutorials/nrf52840-development-with-arduino-and-circuitpython/all
https://www.u-blox.com/sites/default/files/NINA-B3_DataSheet_%28UBX-17052099%29.pdf
https://forums.adafruit.com/viewtopic.php?f=60&t=148531&start=30
https://circuitpython.readthedocs.io/en/2.x/shared-bindings/microcontroller/__init__.html?highlight=microcontroller
https://www.youtube.com/watch?v=bserx54ZJPM&list=PLKGiH5V9SS1g90s9mHTMPJT1i8N4fXWNT&index=2&t=0s
https://learn.adafruit.com/adding-a-wifi-co-processor-to-circuitpython-esp8266-esp32/firmware-files
https://www.u-blox.com/sites/default/files/NINA-W10_DataSheet_%28UBX-17065507%29.pdf
https://www.youtube.com/watch?v=U-xRKa_7iro&list=PLKGiH5V9SS1g90s9mHTMPJT1i8N4fXWNT&index=4
Sobre a SMARTCORE
Diferente do NINA B1, o B302 tem uma USB a qual permite que você possa criar um COM virtual e MSD e copiar os programas, graças ao bootloader do time da Adafruit.
Adafruit Team
1) Montagem
Um cabo USB foi soldado em D+, D-, GND e VBUS do NINA B302
2) Com seu gravador SEGGER J-TAG, será necessário gravar o BOOTLOADER da Adafruit
Instale os drivers da Adafruit
Também copie o SoftDevice
3) Conecte a USB no seu PC e os drivers serão instalados. Uma MSD vai aparecer, copie para ele o arquivo abaixo.
Este arquivo é o python Engine!
Instale
adafruit_drivers_2.3.4.0.exe
Altere em Adafruity_usbser.inf, caso contrário, o Windows não vai detectar o CDC (Serial)
USB\VID_1B4F&PID_5289&REV_0100&MI_00
4) Desconecte e conecte a USB no seu PC e os novos drivers serão instalados. Uma COM virtual aparecerá, na figura abaixo, apareceu COM55 e um MSD
A COM é para ser o terminal de comunicação serial com o PYTHON, o MSD (CIRCUITPY) é para transferir o SCRIPT PYTHON
5) Executando um script python
Execute o emulador de terminal Teraterm, abra a COM e tecle CONTROL-D, você verá as boas vindas do Python.
Será necessário agora baixar os módulos (libraries) compilados para executar com programa BLE.
Entre no link
E baixe a última versão dos módulo.
Crie uma pasta "lib" no drive CIRCUITPY e descompacte a pasta abaixo!
Também copie o adafruit_requests.mpy
Grave o seguinte BIN no NINA W102, o qual será transformado em um SPI COPROCESSOR WIFI. Você pode usar o esptools.
Conecte fisicamente o NINA B302 com o NINA W102 conforme circuito abaixo
|
BREAKOUT B3 |
|
BREAKOUT W1 |
|
CS |
IO1 |
P0.13 |
IO28 |
5 |
READY |
IO2 |
P0.14 |
IO7 |
33 |
RESET |
IO21 |
P1.12 |
RESET |
RESET |
SCK |
IO45 |
P0.07 |
IO29 |
18 |
MOSI |
IO3 |
P0.15 |
IO31 |
14 |
MISO |
IO8 |
P1.00 |
IO1 |
23 |
GPIO0 |
IO4 |
P0.16 |
IO27 |
0 |
|
|
|
|
|
Ficando assim
Agora é hora de testar o exemplo abaixo. Copie e cole o programa a seguir:
# Escreva o seu código aqui :-)
import microcontroller
import time
import board
import busio
from digitalio import DigitalInOut, Direction, Pull
from adafruit_esp32spi import adafruit_esp32spi
from adafruit_esp32spi import adafruit_esp32spi_wifimanager
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
import adafruit_requests as requests
secrets = {
'ssid' : 'xxxxxxxxxxxxxx',
'password' : 'xxxxxxxxxxx',
'timezone' : "America/New_York", # http://worldtimeapi.org/timezones
'aio_username' : 'MY_ADAFRUIT_IO_USERNAME',
'aio_key' : 'MY_ADAFRUIT_IO_KEY',
}
esp32_cs = DigitalInOut(microcontroller.pin.P0_13)
esp32_ready = DigitalInOut(microcontroller.pin.P0_14)
esp32_reset = DigitalInOut(microcontroller.pin.P1_12)
SCK = microcontroller.pin.P0_07
MOSI = microcontroller.pin.P0_15
MISO = microcontroller.pin.P1_00
spi = busio.SPI(SCK, MOSI, MISO)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
while True:
print("Opening Web Page")
wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, secrets, None)
print(wifi.get('http://worldtimeapi.org/api/timezone/America/Sao_Paulo').json())
Mande executar
Se você salvar com o nome code.py, toda vez que resetar o NINA B302, ele já vai executar.
ERRATA:
SERIGRAFIA DOS PINOS DO LADO DIREITO SUPERIOR
(NOMES DOS PINOS REPOSICIONADOS)
Questões: suporte@smartcore.com.br
ERRATA:
SERIGRAFIA DOS PINOS DO LADO DIREITO SUPERIOR
(NOMES DOS PINOS REPOSICIONADOS)
Questões: suporte@smartcore.com.br
FONTES:
https://learn.sparkfun.com/tutorials/nrf52840-development-with-arduino-and-circuitpython/all
https://www.u-blox.com/sites/default/files/NINA-B3_DataSheet_%28UBX-17052099%29.pdf
https://forums.adafruit.com/viewtopic.php?f=60&t=148531&start=30
https://circuitpython.readthedocs.io/en/2.x/shared-bindings/microcontroller/__init__.html?highlight=microcontroller
https://www.youtube.com/watch?v=bserx54ZJPM&list=PLKGiH5V9SS1g90s9mHTMPJT1i8N4fXWNT&index=2&t=0s
https://learn.adafruit.com/adding-a-wifi-co-processor-to-circuitpython-esp8266-esp32/firmware-files
https://www.u-blox.com/sites/default/files/NINA-W10_DataSheet_%28UBX-17065507%29.pdf
https://www.youtube.com/watch?v=U-xRKa_7iro&list=PLKGiH5V9SS1g90s9mHTMPJT1i8N4fXWNT&index=4
Sobre a SMARTCORE
A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portifólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.
Mais detalhes em www.smartcore.com.br