quinta-feira, 17 de dezembro de 2020

U-BLOX NINA B302 sendo programado com MicroPython


O objetivo deste BLOG é demonstrar como é possível programar o módulo U-BLOX NINA B302 com a linguagem de Scripts MicroPython 1.13.

O mesmo foi conectado pela USB. 
 
Ainda nao compilado com FS.




Interfaces suportadas

  • UART
  • SPI
  • LEDs
  • Pins
  • ADC
  • I2C
  • PWM
  • Temperature
  • RTC
  • BLE
    • Peripheral role
    • Scanner role
    • REPL over Bluetooth LE (optionally using WebBluetooth)
    • ubluepy: Bluetooth LE module for CircuitPython
    • 1 non-connectable advertiser while in connection
 


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

MICROPYTHON

O MicroPython é uma implementação enxuta e eficiente da linguagem de programação Python 3 que inclui um pequeno subconjunto da biblioteca padrão do Python e é otimizada para ser executada em microcontroladores e em ambientes restritos.

O microPython pyboard é uma placa de circuito eletrônico compacta que executa o MicroPython no estado original, oferecendo a você um sistema operacional Python de baixo nível que pode ser usado para controlar todos os tipos de projetos eletrônicos.

O MicroPython é repleto de recursos avançados, como um prompt interativo, números inteiros de precisão arbitrária, fechamentos, compreensão de listas, geradores, tratamento de exceções e muito mais. No entanto, é compacto o suficiente para caber e executar com apenas 256k de espaço de código e 16k de RAM.

O MicroPython pretende ser o mais compatível possível com o Python normal, para permitir a transferência de código com facilidade da área de trabalho para um microcontrolador ou sistema incorporado.

COMPILAÇÃO MicroPython para NINA B302

Ubuntu 20.10 Groovy Gorilla 

Edite

bluetooth_conf.h
// Default defines.

#ifndef MICROPY_PY_BLE
#define MICROPY_PY_BLE                  (1)//0
#endif  
Para habilitar BLE
sudo apt-get update
sudo apt install python3-pip
pip3 install intelhex
sudo apt install python3-serial
sudo apt install git
git clone https://github.com/micropython/micropython
cd micropython
git submodule update --init

cd micropython/ports/nrf
./drivers/bluetooth/download_ble_stack.sh
cd ~
cd micropython
make -C mpy-cross
sudo apt install gcc-arm-none-eabi
cd ports/nrf make submodules make BOARD=nrf52840-mdk-usb-dongle SD=s140
cd ~/micropython/tools$
osboxes@osboxes:~/micropython/tools$ python3 uf2conv.py /home/osboxes/micropython/ports/nrf/build-nrf52840-mdk-usb-dongle-s140/firmware.hex -c -f 0xADA52840
Converting to uf2, output size: 328704, start address: 0x26000
Wrote 328704 bytes to flash.uf2.
osboxes@osboxes:~/micropython$ find -name *.uf2
./tools/flash.uf2
osboxes@osboxes:~/micropython$ find -name *.hex
./ports/nrf/build-feather52-s140/firmware.hex
./ports/nrf/build-nrf52840-mdk-usb-dongle/firmware.hex
./ports/nrf/drivers/bluetooth/s132_nrf52_6.1.1/s132_nrf52_6.1.1_softdevice.hex
./ports/nrf/drivers/bluetooth/s140_nrf52_6.1.1/s140_nrf52_6.1.1_softdevice.hex
./ports/nrf/drivers/bluetooth/s110_nrf51_8.0.0/s110_nrf51_8.0.0_softdevice.hex
./ports/nrf/build-feather52-s132/firmware.hex
./ports/nrf/build-feather52/firmware.hex
osboxes@osboxes:~/micropython$ 

COMPILAÇÃO Bootloader para NINA B302
pip3 install --user adafruit-nrfutil
cd ~
git clone https://github.com/adafruit/Adafruit_nRF52_Bootloader cd Adafruit_nRF52_Bootloader
git submodule update --init
nano ~/.bashrc
adicione na primeira linha
export PATH="$HOME/.local/bin:$PATH" e salve
source ~/.bashrc make BOARD=feather_nrf52840_express all
osboxes@osboxes:~/Adafruit_nRF52_Bootloader$ find -name *.hex
./_build/build-feather_nrf52832/feather_nrf52832_bootloader-0.3.2-190-geab7e68.hex
./_build/build-feather_nrf52832/feather_nrf52832_bootloader-0.3.2-190-geab7e68_s132_6.1.1.hex
./_build/build-feather_nrf52832/feather_nrf52832_bootloader-0.3.2-190-geab7e68-nosd.hex
./_build/build-feather_nrf52840_express/feather_nrf52840_express_bootloader-0.3.2-190-geab7e68_s140_6.1.1.hex
./_build/build-feather_nrf52840_express/feather_nrf52840_express_bootloader-0.3.2-190-geab7e68-nosd.hex
./_build/build-feather_nrf52840_express/feather_nrf52840_express_bootloader-0.3.2-190-geab7e68.hex
./lib/softdevice/mbr/hex/mbr_nrf52_2.4.1_mbr.hex
./lib/softdevice/s132_nrf52_6.1.1/s132_nrf52_6.1.1_softdevice.hex
./lib/softdevice/s140_nrf52_6.1.1/s140_nrf52_6.1.1_softdevice.hex
osboxes@osboxes:~/Adafruit_nRF52_Bootloader$

Atualizando o Bootloader com um Segger J-Link

Para gravar o bootloader para o Ublox Nina B302 utilizando um Segger J-Link, você 
precisará das seguintes ferramentas instaladas em seu sistema e disponíveis no caminho
do sistema:
Drivers e ferramentas JLink

Baixe e instale o JLink Software and Documentation Pack da Segger, que também instalará 
um conjunto de ferramentas de linha de comando. 
https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Command-Line-Tools/Download
Gravando Manualmente o Bootloader via nrfjprog
instale j-link, nrf-command-line-tools 
https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Command-Line-Tools/Download 

Você também pode gravar manualmente o bootloader a partir da linha de comando, usando 
`nrfjprog` do Nordic. Você pode baixar nRF5x-Command-Line-Tools para OSX/Linux/Win32 ou usar a versão que
acompanha o BSP na pasta tools/nrf5x-command-line-tools. Execute os seguintes comandos, atualizando o caminho para o arquivo .hex conforme apropriado: ⇬ Fazer download do arquivo Copiar Código $ nrfjprog --program bootloader_binary.hex --chiperase -f nrf52 --reset Você deve ver algo semelhante à seguinte saída, seguido por um piscar rápido no LED de status
para indicar que está no modo DFU / bootloader, pois nenhum esboço do usuário foi encontrado
após a redefinição do dispositivo: Todos os comandos abaixo foram executados em 'tools/nrf5x-command-line-tools/osx/nrfjprog' ⇬ Fazer download do arquivo Copiar Código $ ./nrfjprog -e -f nrf52 Apagando áreas de código e flash UICR. Aplicando reinicialização do sistema. $ ./nrfjprog --program ../../../../bin/bootloader/bootloader_v050_s132_v201.hex -f nrf52 Analisando arquivo hexadecimal. Lendo a área do flash para programar para garantir que ela seja apagada. Verificando se a área para escrever não está protegida. Dispositivo de programação. $ ./nrfjprog --reset -f nrf52 Aplicando reinicialização do sistema. run.
Você tambem pode utilizar o OPENOCD para transferir o Bootloader, Softdevice e MicroPython
sudo apt install openocd 
Instale J-LINK (SEGGER)

https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Command-Line-Tools/Download
git clone https://github.com/adafruit/Adafruit_nRF52_Bootloader
cd Adafruit_nRF52_Bootloader

make BOARD=feather_nrf52832 all
FIRMWARE=lib/softdevice/s132_nrf52_6.1.1/s132_nrf52_6.1.1_softdevice.hex

sudo openocd -f board/nordic_nrf52_dk.cfg -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program $FIRMWARE verify" -c reset -c exit

FIRMWARE=_build/build-feather_nrf52832/feather_nrf52832_bootloader-0.3.2-28-g79a6a0c-nosd.hex

sudo openocd -f board/nordic_nrf52_dk.cfg -c init -c "reset init" -c halt -c "program $FIRMWARE verify" -c reset -c exit 
Agora, o bootloader deve ser flash e podemos fazer flash em serial a partir de agora! Deixa o flash micropython (aconselho não flashing master, mas uma tag estável)
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build-feather52-s132/firmware.hex firmware.zip
adafruit-nrfutil dfu serial --package firmware.zip -p /dev/ttyUSB0 -b 115200
miniterm.py --raw /dev/ttyUSB0 115200
--- Miniterm on /dev/ttyUSB0  115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
MicroPython v1.12-dirty on 2020-04-23; Bluefruit nRF52 Feather with NRF52832
Type "help()" for more information.
>>> 
MÉTODO RÁPIDO
Abra J-FLASH lite e grave o bootloader da Adafruit, abrirá então um driver  para gravação

./_build/build-feather_nrf52840_express/feather_nrf52840_express_bootloader-0.3.2-190-geab7e68_s140_6.1.1.hex



arraste o flash.uf2 para este driver
 
 osboxes@osboxes:~/micropython$ find -name *.uf2
./tools/flash.uf2
 
Os arquivos estão aqui

https://ricardoadulis.sharepoint.com/:f:/s/smartcore/EiON1sPAvdxMmHwdJ5kankMBK5AWZlHoGbrMHL7XqrLhEQ?e=oTyMFP
 

Após arrastar o flash.uf2, criará uma  COMx virtual




INTERFACE MicroPython para NINA B302


Questões: suporte@smartcore.com.br

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

Nenhum comentário:

Postar um comentário