quinta-feira, 29 de setembro de 2022

Programando e simulando u-blox NINA-W106 com NuttX/ WOKWI - Piscando LED com WOKIWI



O objetivo deste BLOG é demonstrar como é possível utilizar o NuttX para programação do U-blox NINA W106 e simulando a execução em um ambiente virtual chamado WOKWI.


NuttX

NuttX: O sistema operacional para a Internet das Coisas.

NuttX é um sistema operacional em tempo real (RTOS) com ênfase na conformidade de padrões e pequeno footprint. Escaláveis de ambientes microcontroladores de 8 bits a 32 bits, os principais padrões de governo em NuttX são os padrões Posix e ANSI. ApIs padrão adicionais do Unix e de outros RTOS comuns (como o VxWorks) são adotadas para funcionalidades não disponíveis sob esses padrões, ou para funcionalidades que não são apropriadas para ambientes profundamente incorporados (como fork()).

A NuttX busca alcançar um alto grau de conformidade de padrões. As principais normas de governo são as normas POSIX e ANSI. ApIs padrão adicionais do Unix e de outros RTOS comuns são adotadas para funcionalidades não disponíveis sob esses padrões ou para funcionalidades que não são apropriadas para os RTOS profundamente incorporados (como fork()).

Devido a essa conformidade de padrões, o software desenvolvido sob outros OSs padrão (como o Linux) deve ser portado facilmente para NuttX.

Tempo Real Totalmente preemptivo; prioridade fixa, round-robin, e agendamento "esporádico".

Licença Apache não restritiva totalmente aberta.

GNU Toolchains Compatíveis com as cadeias de ferramentas GNU baseadas no buildroot disponível para download para fornecer um ambiente completo de desenvolvimento para muitas arquiteturas.

Uri Shaked

Best  Simulator

Wokwi é um simulador de eletrônica online. Você pode usá-lo para simular Arduino, U-BLOX NINA W106 (ESP32) e muitas outras placas além de componentes e sensores populares como LEDs, shift registers, Buzzer, sensores (ultrassônico, temperatura, umidade etc), Display TFT, teclados e muito mais.

Pode carregar BIN ou HEX gerados de Terceiros.

Você pode aprender programação NuTTx no simulador do U-BLOX NINA W106 onde quer que esteja. sem ter a necessidade de dispor de um Hardware real.


UBLOX NINA W106
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
Super Pequena
Módulo baseado no ESP32, com 4MB FLASH
HOMOLOGADO PELA ANATEL

U-BLOX NINA W106 e NuttX

Como o módulo NINA W106 é baseado no chip ESP32 (CPU), será possível rodar/simular o NuttX sem problemas. 


O link abaixo, é roteiro Básico para que você possa preparar o ambiente para programar o U-BLOX NINA W106 com o NuttX e gerar o BIN do APP


ADICIONANDO U-BLOX NINA W106 NO WOKWI

No WOKWI (Wokwi - Online Arduino and ESP32 Simulator), crie e desenhe o projeto abaixo, selecionando ESP32




ALTERANDO SKIN PARA U-BLOX NINA W106 NO WOKWI

  • Descompacte em alguma pasta qualquer.
  • Clique dentro do editor de código, pressione "F1" e escolha "Load custom board file..."
  • Selecione o diretório que contém os arquivos de definição do quadro (board.json e board.svg)
  • A  Skin vai ser carregada no wokwi. Verifique no console JavaScript do navegador para obter mensagens de erro.
  • Cole o seguinte código no arquivo diagram.json:
{
  "version": 1,
  "author": "Miguel Alexandre Wisintainer",
  "editor": "wokwi",
  "serialMonitor": { "display": "terminal" },
  "parts": [ { "id": "esp", "type": "wokwi-custom-board" } ],
  "connections": [ [ "esp:TX0", "$serialMonitor:RX", "" ], [ "esp:RX0", "$serialMonitor:TX", "" ] ]
}

Ficará assim


Adicione LED no GPIO 2 (IO25 NO U-BLOX NINA W106)


EXECUÇÃO NO WOKIWI

Como visto anteriormente, foi gerado um arquivo Nuttx.bin para ser gravado junto com outros dois arquivos (bootloader.bin e partitions.binno U-BLOX NINA W106. No caso do WOKWI, os três arquivos devem ser agregados e então gerar um único BIN, o qual deve ser simulado no U-BLOX NINA W106.

Para isto, deve ser baixado o utility escrito em Python: esp32_binary_mergero mesmo pode ser baixado pelo GIT em 

Copie para a pasta deste utilitário os arquivos bootloader.bin/partitions.bin e  Nuttx.bin gerado pela compilação do "APP" no NuttX.



Então execute o seguinte Script em Python

python3 merge_bin_esp.py --output_name app_output.bin --bin_path bootloader.bin nuttx.bin partitions.bin --bin_address 0x1000 0x10000 0x8000


Na pasta Output será gerado um arquivo para ser simulado no WOKWI, chamdo de app_output.bin


Clicando no "Sketch" (não se preocupe com o código em Arduino, que tal deixá-lo em branco ?!), pressione F1 e escolha

LOAD HEX FILE AND SIMULATE

e então COLE o BIN app_output.bin




Execute help e veja o APP leds



Em breve novos exemplos com vários sensores e atuadores



DÚVIDAS

suporte@smartcore.com.br

REFERÊNCIAS
 

Nenhum comentário:

Postar um comentário