U-BLOX NINA B302 e CIRCUITPYTHON
O objetivo deste BLOG é demonstrar como é possível utilizar programar o módulo U-BLOX NINA B3 com a linguagem de Scripts Python. Foi utilizado o módulo NINA B302 (opencpu) para o teste.
Diferente do NINA B112, 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 E SOFTDEVICE, ambos na pasta NINA 302
3) INSTALE OS DRIVERS
4) Conecte a USB no seu PC e os drivers serão instalados. Uma MSD vai aparecer, copie para ele o arquivo abaixo.
adafruit-circuitpython-sparkfun_nrf52840_mini-pt_BR-4.1.0.uf2
Este arquivo é o python Engine!
Ultimas versões do Engine você pode obter aqui
Em
C:\Users\USERNAME\AppData\Local\Temp\adafruit_drivers\Drivers\Adafruit_usbser
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.
Ou mande atualizar drivers e aponte para o caminho.
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.
19200,N,8,1
Crie em seu editor preferido o seguinte programa de blink abaixo, o mesmo fará o LED piscar a cada 1 segundo!
import time
import microcontroller
from digitalio import DigitalInOut, Direction, Pull
led = DigitalInOut(microcontroller.pin.P0_03)
led.direction = Direction.OUTPUT
while True:
led.value = False
time.sleep(0.5)
led.value = True
time.sleep(0.5)
Futuramente altere o arquivo
https://github.com/adafruit/circuitpython/blob/master/ports/nrf/boards/sparkfun_nrf52840_mini/pins.c
e também compile para se adequar ao NINA B320.
REQUISTOS
- sudo apt update
- # Try running `make`. If it's not installed, do:
- # sudo apt install build-essential
- sudo apt install git
- sudo apt install gettext
- pip3 install huffman
- sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
- # If you don't have add-apt-repository, do:
- # sudo apt install add-apt-repository
- sudo apt update
- sudo apt install gcc-arm-embedded
BAIXANDO CIRCUITPYTHON
- git clone https://github.com/adafruit/circuitpython.git
- cd circuitpython
- git submodule sync
- git submodule update --init --recursive
PREPARANDO PARA COMPILAÇÃO
make -C mpy-cross
COMPILANDO
- cd ports/nrf5
- make BOARD=sparkfun_nrf52840_mini
osboxes@osboxes:~/circuitpython/ports/nrf/boards$ cd ..
osboxes@osboxes:~/circuitpython/ports/nrf$ make
BOARD=sparkfun_nrf52840_mini Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity. GEN build-sparkfun_nrf52840_mini/genhdr/moduledefs.h QSTR updated
774036 bytes free in flash out of 1048576 bytes ( 1024.0 kb ).
228152 bytes free in ram for stack out of 245760 bytes ( 240.0 kb ).
Create build-sparkfun_nrf52840_mini/firmware.uf2
python3 ../../tools/uf2/utils/uf2conv.py -f 0xADA52840 -c -o
"build-sparkfun_nrf52840_mini/firmware.uf2"
build-sparkfun_nrf52840_mini/firmware.hex
Converting to uf2, output size: 549376, start address: 0x26000
Wrote 549376 bytes to build-sparkfun_nrf52840_mini/firmware.uf2.
osboxes@osboxes:~/circuitpython/ports/nrf$
firmware.bin firmware.elf firmware.elf.map firmware.hex firmware.uf2
Copie fonte .py para a pasta (MSD) CIRCUITPY
Você pode editar o programa diretamente na pasta, mas não é recomendado!
Vá ao terminal e pressione CONTROL-D, o seu programa vai executar!!!!
Se você salvar com o nome code.py, toda vez que resetar o NINA B302, ele já vai executar.
Sempre acompanhe na Adafruit as atualizações do CircuitPython, pois o mesmo é ainda está em desenvolvimento!
Mu Python
Agora há uma ferramenta muito interessante para interagir com REPL, o Mu Python.
Automaticamente ela vai detectar o dispositivo conectado na USB para programação, mas atenção, pegue o VID/PID da serial (USB) criada e edite o arquivo arquivo de configuração do Mu.
C:\Users\USERNAME\AppData\Local\Mu\pkgs\mu\modes and edit the adafruit.py file, add your VID,PID to the list and save -> reopen Mu
CONHEÇA PYTHON
https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_all.pdf
ERRATA:
SERIGRAFIA DOS PINOS DO LADO DIREITO SUPERIOR
(NOMES DOS PINOS REPOSICIONADOS)
https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_all.pdf
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://gitter.im/mu-editor/general
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