segunda-feira, 18 de março de 2019

NINA B302 e PYTHON

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)



Neste caso, foi escolhido o pino GPIO_16 do NINA B302, que tem pino do processador correspondente à P0.3



Futuramente altere o arquivo 


e também compile para se adequar ao NINA B320.


REQUISTOS
  1. sudo apt update
  2. # Try running `make`. If it's not installed, do:
  3. # sudo apt install build-essential
  4. sudo apt install git
  5. sudo apt install gettext
  6. pip3 install huffman
  7. sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
  8. # If you don't have add-apt-repository, do:
  9. # sudo apt install add-apt-repository
  10. sudo apt update
  11. sudo apt install gcc-arm-embedded

BAIXANDO CIRCUITPYTHON
  1. git clone https://github.com/adafruit/circuitpython.git
  2. cd circuitpython
  3. git submodule sync
  4. git submodule update --init --recursive
PREPARANDO PARA COMPILAÇÃO
make -C mpy-cross 

COMPILANDO
  1. cd ports/nrf5
  2. 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.

Go to 
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




EXEMPLO USANDO MICROPYTHON COMO BLE SERIAL



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)



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://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