quinta-feira, 23 de abril de 2020

NINA B302 - ADICIONANDO WIFI - CIRCUIT PYTHON

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.


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


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}

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

FONTES: 

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

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