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

terça-feira, 6 de outubro de 2020

W102 sendo programado com Lua

 U-BLOX NINA W102 PROGRAMADO EM  LUA


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




UBLOX NINA W102

Wi-Fi 802.11b / g / n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32

SMARTCORE

A SmartCore fornece módulos para comuniçã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

Lua

Lua é uma linguagem de programação interpretada, de script em alto nível, com tipagem dinâmica e multiparadigma, reflexiva e leve, projetada por Tecgraf da PUC-Rio em 1993 para expandir aplicações em geral, de forma extensível (que une partes de um programa feitas em mais de uma linguagem), para prototipagem e para ser embarcada em softwares complexos, como jogos.

É uma linguagem de script também projetada para sistemas embarcados. É poderoso, mas pequeno o suficiente para funcionar em plataformas de microcontroladores.


COMPILAÇÃO do LUA para NINA W102

Aqui está a VM (VIRTUAL BOX)


Para compilar foi seguido passo a passo o roteiros abaixo:






Algumas dicas importantes

-Foi realizado um downgrade no PYPARSING
-Partitions escolhidad foi partitions_2MB.csv
-Alterado Flash de 4MB par 2MB
-Utilizei UBUNTU 18 (VM)

Seguem algumas imagens importantes

Gravando na FLASH do NINA W102 - make flash

Alterando tamanho flash para gravar no W102 - make menuconfig

Definindo tamanho da Partição - make menuconfig

Compilando Programa - make menuconfig
Módulos Disponíveis para o LUA (Padrão)

Documentação LIB site


Dando Boot no W102

Interagindo com Lua via ChiliPeppr ESP32 Web IDE

Ótimo Roteiro



JSON (WEB COMM)
Exemplo Blynk Original

Exemplo

-- ChiliPeppr - Blink built-in LEDs on ESP32 devices m = {} -- Config m.pins = {NINA_W102 = 32} -- GPIO m.value = 0 m.duration = 500 m.ctr = 0 function m.toggleLED () if m.value == 0 then m.value = 1 else m.value = 0 end print("Toggled...") -- print("Toggling") for key, value in pairs(m.pins) do local pin = value gpio.write(pin, m.value) -- print("Toggled " .. pin) end -- m.ctr = m.ctr + 1 -- if m.ctr > 10 then -- m.mytimer:unregister() -- end end -- Initialise the pins print("Initializing pins") for key, value in pairs(m.pins) do print("Initting LED pin for ESP32 device: ", key, "pin:", value) gpio.config( { gpio={value}, dir=gpio.OUT } ) end -- tmr.alarm(0, duration, 1, toggleLED) m.mytimer = tmr.create() m.mytimer:alarm(m.duration, tmr.ALARM_AUTO, m.toggleLED)


MONTAGEM



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

 


terça-feira, 29 de setembro de 2020

W102 sendo programado Micropython - Platformio

 U-BLOX NINA W102 PROGRAMADO EM  MICROPYTHON COM PlatformIO  - Caso de Uso: Acessando TTN LoRaWAN


O objetivo deste BLOG é demonstrar como é possível utilizar programar o módulo U-BLOX NINA W102 com a linguagem de Scripts MicroPython e programá-lo com a IDE PlatformIO.

UBLOX NINA W102

Wi-Fi 802.11b / g / n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32

SMARTCORE

A SmartCore fornece módulos para comuniçã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.
PlatformIO

PlatformIO é uma ferramenta profissional de plataforma cruzada, arquitetura cruzada e estrutura múltipla para engenheiros de sistemas incorporados e para desenvolvedores de software que escrevem aplicativos para produtos incorporados.

LoRaWAN

A especificação LoRaWAN® é um protocolo de rede de baixa potência, área ampla (LPWA) projetado para conectar 'coisas' operadas por bateria sem fio à internet em redes regionais, nacionais ou globais, e tem como alvo os principais requisitos da Internet das coisas (IoT), como bi serviços de comunicação direcional, segurança ponta a ponta, mobilidade e localização.

Módulo LoRa/LoRaWAN


Descrição
Módulo Lora1278 433 mhz Lora 2.0 - IOT CHIP SX1276

Características:
Faixa De freqüência: 433 MHz
sensibilidade-139 dBm até
potência máxima de saída: 20dBm
10.3mA @ modo receptor
Consumo modo Sleep atual < 200nA
taxa de transferência de dados: @ FSK, 1.2-300 kbps
@ Lora TM, 0.018-37.5 kbps
Modulação FSK, GFSK e OOK
Lora TM
Alimentação 1.8-3.7Vdc
127 dB Dynamic Range RSSI
pacote de dados até 256 bytes com CRC
Faixa de Temperatura de operação:-40 ~ + 85 ° C
sensor de temperatura embutido e indicador de bateria fraca

segunda-feira, 18 de maio de 2020

W102 comandado via Assistente Alexa - Micropython

U-BLOX NINA W102 PROGRAMADO EM  MICROPYTHON
E COMANDADO VIA ASSISTENTE DE VOZ ALEXA

O objetivo deste BLOG é demonstrar como é possível utilizar programar o módulo U-BLOX NINA W102 com a linguagem de Scripts MicroPython e comandá-lo via Assistente Alexa.

Por Miguel ALEXAndre Wisintainer



UBLOX NINA W102

Wi-Fi 802.11b / g / n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32

SMARTCORE

A SmartCore fornece módulos para comuniçã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

ASSISTENTE ALEXA

A Amazon Alexa, por exemplo, é um serviço de assistente pessoal inteligente na nuvem onde pode ser solicitadas tarefas como realizar pesquisas, mandar executar uma lista de músicas ou questionar o horário atual. Segundo o site da Amazon Alexa, o serviço permite se conectar com dispositivos (AWS IoT Cor) e por meio da Web Service da Amazon, efetuar comandos de voz, interpretá-los e tomar uma ação correspondente.

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.