Mongoose no u-blox NINA W106
O objetivo deste BLOG é demonstrar como é possível utilizar o Mongoose para programação do u-blox NINA W106. Foi utilizado o EVK-NINA-W1 para o teste e no WINDOWS.
O que é o mongoose OS
Mongoose OS é um pequeno RTOS desenvolvido por Cesanta, Irlanda. Seu suporte a muitos pequenos e poderosos MCU como ESP32 (U-BLOX NINA W106). Mongoose OS é um sistema operacional integrado de código aberto para microcontroladores conectados de baixa potência.
Código em C ou JavaScript;
Recursos de segurança como suporte a chip de criptografia, criptografia de sistema de arquivos, etc;
AWS IoT integrado, integração do Google IoT;
Motor JavaScript incorporado - mJS;
Benefícios do Mongoose OS:
Provas rápidas de conceitos / protótipos;
Menor tempo de comercialização a um custo ideal;
Seguro, confiável e verificado por empresas líderes;
Infraestrutura confiável para produto comercial
u-blox NINA W106 e Moogoose
Como o módulo u-blox NINA W106 é baseado no chip ESP32 (cpu), será possível rodar o Mongoose sem problemas. O usuário deve dar atenção ao mapeamento de GPIOS da U-BLOX apenas conforme datasheet.
No link abaixo, há um roteiro muito interessante para que você possa preparar o ambiente para programar o u-blox NINA W106
Basicamente
Crie uma pasta, MOS, copie o EXE para ela, crie um PATH no WINDOWS, crie pasta Projeto, baixe APP, compile na nuvem, faça o FLASH para o u-blox NINA W106, configure SSID/PASSWORD, cadastre na Nuvem!
TESTANDO NO u-BLOX NINA W106
Seleção do ESP32
Criando Projeto
mkdir demo-js
mos clone https://github.com/mongoose-os-apps/demo-js app1
$ mos clone https://github.com/mongoose-os-apps/demo-js app1
app1: Does not exist, cloning from "https://github.com/mongoose-os-apps/demo-js"...
app1: Checking out 2.19.1...
app1: Done, hash e4ecb176b4e95f53e5938724b6cb6723b4b95fad
mos build --platform esp32
mos build --platform esp32
Connecting to https://build.mongoose-os.com, user test
Uploading sources (2668 bytes)
Firmware saved to C:\mos\app1\build\fw.zip
Command completed.
mos flash
$ mos flash
Loaded app1/esp32 version 1.0 (20210318-180524)
Opening COM35 @ 115200...
Connecting to ESP32 ROM, attempt 1 of 10...
Connecting to ESP32 ROM, attempt 2 of 10...
Connected, chip: ESP32D0WDQ6 R1
Running flasher @ 921600...
Flasher is running
Flash size: 4194304, params: 0x022f (dio,32m,80m)
Flash encryption: disabled, scheme: None
Secure boot: disabled
Deduping...
Writing...
28672 @ 0x1000
4096 @ 0x8000
16384 @ 0x9000
8192 @ 0xd000
1572864 @ 0x10000
262144 @ 0x190000
Wrote 1885280 bytes in 16.93 seconds (869.93 KBit/sec)
Verifying...
25456 @ 0x1000
3072 @ 0x8000
16384 @ 0x9000
8192 @ 0xd000
1570032 @ 0x10000
262144 @ 0x190000
Booting firmware...
All done!
Execução
[Mar 18 15:08:40.981] �������������
[Mar 18 15:08:40.981] [0;32mI (117) boot: 5 fs_1 FS 01 82 00350000 00040000 00000000[0m
[Mar 18 15:08:40.981] [0;32mI (125) boot: End of partition table[0m
[Mar 18 15:08:40.981] [0;32mI (130) boot: OTA data 0: seq 0x00000001, st 0x10, CRC 0x157a2b85, valid? 1[0m
[Mar 18 15:08:40.981] [0;32mI (137) boot: OTA data 1: seq 0x00000000, st 0x00, CRC 0x00000000, valid? 0[0m
[Mar 18 15:08:40.981] [0;32mI (145) boot_comm: chip revision: 1, min. application chip revision: 0[0m
[Mar 18 15:08:40.981] [0;32mI (152) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x44298 (279192) map[0m
[Mar 18 15:08:41.088] [0;32mI (242) esp_image: segment 1: paddr=0x000542c0 vaddr=0x3ffbdb60 size=0x0394c ( 14668) load[0m
[Mar 18 15:08:41.088] [0;32mI (247) esp_image: segment 2: paddr=0x00057c14 vaddr=0x40080000 size=0x00400 ( 1024) load[0m
[Mar 18 15:08:41.088] [0;32mI (249) esp_image: segment 3: paddr=0x0005801c vaddr=0x40080400 size=0x07ffc ( 32764) load[0m
[Mar 18 15:08:41.088] [0;32mI (270) esp_image: segment 4: paddr=0x00060020 vaddr=0x400d0020 size=0x119374 (1151860) map[0m
[Mar 18 15:08:41.557] [0;32mI (605) esp_image: segment 5: paddr=0x0017939c vaddr=0x400883fc size=0x160f4 ( 90356) load[0m
[Mar 18 15:08:41.557] [0;32mI (637) esp_image: segment 6: paddr=0x0018f498 vaddr=0x400c0000 size=0x00034 ( 52) load[0m
[Mar 18 15:08:41.557] [0;32mI (653) boot: Loaded app from partition at offset 0x10000[0m
[Mar 18 15:08:41.557] [0;32mI (653) boot: Disabling RNG early entropy source...[0m
[Mar 18 15:08:41.557] [0;32mI (654) cpu_start: Pro cpu up.[0m
[Mar 18 15:08:41.557] [0;32mI (657) cpu_start: Application information:[0m
[Mar 18 15:08:41.557] [0;32mI (662) cpu_start: Project name: app1[0m
[Mar 18 15:08:41.557] [0;32mI (667) cpu_start: App version: 2.19.1[0m
[Mar 18 15:08:41.557] [0;32mI (672) cpu_start: Compile time: Mar 18 2021 18:04:52[0m
[Mar 18 15:08:41.557] [0;32mI (678) cpu_start: ELF file SHA256: 8a6b25f01d7c479b...[0m
[Mar 18 15:08:41.557] [0;32mI (684) cpu_start: ESP-IDF: 4.2-r1[0m
[Mar 18 15:08:41.557] [0;32mI (689) cpu_start: Single core mode[0m
[Mar 18 15:08:41.557] [0;32mI (693) heap_init: Initializing. RAM available for dynamic allocation:[0m
[Mar 18 15:08:41.557] [0;32mI (700) heap_init: At 3FF80034 len 00001FCC (7 KiB): RTCRAM[0m
[Mar 18 15:08:41.557] [0;32mI (706) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM[0m
[Mar 18 15:08:41.557] [0;32mI (713) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM[0m
[Mar 18 15:08:41.557] [0;32mI (719) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM[0m
[Mar 18 15:08:41.557] [0;32mI (725) heap_init: At 3FFC9078 len 00016F88 (91 KiB): DRAM[0m
[Mar 18 15:08:41.557] [0;32mI (731) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM[0m
[Mar 18 15:08:41.557] [0;32mI (737) heap_init: At 40078000 len 00008000 (32 KiB): IRAM[0m
[Mar 18 15:08:41.557] [0;32mI (743) heap_init: At 4009E4F0 len 00001B10 (6 KiB): IRAM[0m
[Mar 18 15:08:41.557] [0;32mI (750) cpu_start: Pro cpu start user code[0m
[Mar 18 15:08:41.557] [0;32mI (766) spi_flash: detected chip: generic[0m
[Mar 18 15:08:41.661] [0;32mI (767) spi_flash: flash io: qio[0m
[Mar 18 15:08:41.661] [0;32mI (767) cpu_start: Starting scheduler on PRO CPU.[0m
[Mar 18 15:08:41.661]
[Mar 18 15:08:41.661]
[Mar 18 15:08:41.661] mgos_freertos.c:155 app1 1.0 (20210318-180524)
[Mar 18 15:08:41.661] mgos_freertos.c:157 Mongoose OS 2.19.1 (20210318-180523/2.19.1-gd52032f)
[Mar 18 15:08:41.661] mgos_freertos.c:161 CPU: 160 MHz, FreeRTOS 8.2.0, heap: 255848 total, 224772 free
[Mar 18 15:08:41.661] mgos_freertos.c:163 Newlib 3.0.0
[Mar 18 15:08:41.661] esp32_main.c:65 ESP-IDF 4.2-r1
[Mar 18 15:08:41.661] esp32_main.c:68 Boot partition: app_0; flash: 4M
[Mar 18 15:08:41.661] mongoose.c:15677 Mongoose 6.18, LwIP 2.1.3
[Mar 18 15:08:41.661] mongoose.c:4938 mbed TLS 2.16.6-cesanta1
[Mar 18 15:08:41.661] mgos_vfs_dev.c:73 fs_0: esp32part ({"label": "fs_0"}), size 262144
[Mar 18 15:08:41.661] mgos_vfs_dev.c:73 fs_1: esp32part ({"label": "fs_1"}), size 262144
[Mar 18 15:08:41.661] mgos_vfs.c:174 /: SPIFFS @ fs_0, opts {"bs":4096,"ps":256,"es":4096}
[Mar 18 15:08:41.752] mgos_vfs.c:347 /: size 233681, used: 127759, free: 105922
[Mar 18 15:08:41.873] mgos_sys_config.c:368 MAC: f0:08:d1:c8:cf:98
[Mar 18 15:08:41.873] mgos_sys_config.c:376 WDT: 30 seconds
[Mar 18 15:08:41.873] esp32_i2c_master.c:393 I2C0 init ok (SDA: 32, SCL: 33, freq: 100000)
[Mar 18 15:08:41.873] [0;32mI (1311) BTDM_INIT: BT controller compile version [3723d5b][0m
[Mar 18 15:08:41.873] [0;33mW (1311) phy_init: failed to load RF calibration data (0x1102), falling back to full calibration[0m
[Mar 18 15:08:42.009] [0;32mI (1451) phy: phy_version: 4500, 0cd6843, Sep 17 2020, 15:37:07, 0, 2[0m
[Mar 18 15:08:42.009] Coex register schm btdm cb faild
[Mar 18 15:08:42.487] esp32_bt.c:177 Bluetooth init ok, MTU 500, pairing enabled, 0 paired devices
[Mar 18 15:08:42.487] mgos_ota_shadow_lib:116 OTA over shadow initialised
[Mar 18 15:08:42.487] mgos_wifi.c:458 WiFi mode: AP
[Mar 18 15:08:42.487] I (1831) wifi:wifi driver task: 3ffb7190, prio:23, stack:6656, core=0
[Mar 18 15:08:42.487] I (1851) wifi:wifi firmware version: 1865b55
[Mar 18 15:08:42.487] I (1851) wifi:wifi certification version: v7.0
[Mar 18 15:08:42.487] I (1861) wifi:config NVS flash: enabled
[Mar 18 15:08:42.487] I (1861) wifi:config nano formating: disabled
[Mar 18 15:08:42.487] I (1861) wifi:Init data frame dynamic rx buffer num: 16
[Mar 18 15:08:42.487] I (1871) wifi:Init management frame dynamic rx buffer num: 16
[Mar 18 15:08:42.487] I (1881) wifi:Init management short buffer num: 32
[Mar 18 15:08:42.487] I (1881) wifi:Init dynamic tx buffer num: 16
[Mar 18 15:08:42.487] I (1881) wifi:Init static rx buffer size: 1600
[Mar 18 15:08:42.487] I (1891) wifi:Init static rx buffer num: 4
[Mar 18 15:08:42.487] I (1891) wifi:Init dynamic rx buffer num: 16
[Mar 18 15:08:42.487] [0;32mI (1901) wifi_init: rx ba win: 4[0m
[Mar 18 15:08:42.487] [0;32mI (1901) wifi_init: tcpip mbox: 32[0m
[Mar 18 15:08:42.487] [0;32mI (1911) wifi_init: udp mbox: 6[0m
[Mar 18 15:08:42.487] [0;32mI (1911) wifi_init: tcp mbox: 6[0m
[Mar 18 15:08:42.487] [0;32mI (1911) wifi_init: tcp tx win: 5744[0m
[Mar 18 15:08:42.487] [0;32mI (1921) wifi_init: tcp rx win: 5744[0m
[Mar 18 15:08:42.487] [0;32mI (1921) wifi_init: tcp mss: 1440[0m
[Mar 18 15:08:42.487] [0;32mI (1931) wifi_init: WiFi IRAM OP enabled[0m
[Mar 18 15:08:42.487] [0;32mI (1931) wifi_init: WiFi RX IRAM OP enabled[0m
[Mar 18 15:08:42.487] esp32_wifi.c:469 WiFi AP: SSID Mongoose_C8CF98, channel 6
[Mar 18 15:08:43.091] esp32_wifi.c:670 WiFi AP: protocol BGN (0x7)
[Mar 18 15:08:43.091] I (2461) wifi:mode : softAP (f0:08:d1:c8:cf:99)
[Mar 18 15:08:43.091] I (2471) wifi:Total power save buffer number: 8
[Mar 18 15:08:43.091] I (2471) wifi:Init max length of beacon: 752/752
[Mar 18 15:08:43.091] I (2481) wifi:Init max length of beacon: 752/752
[Mar 18 15:08:43.091] I (2481) wifi:Set ps type: 0
[Mar 18 15:08:43.091]
[Mar 18 15:08:43.091] esp32_wifi.c:529 WiFi AP IP: 192.168.4.1/255.255.255.0 gw 192.168.4.1, DHCP range 192.168.4.2 - 192.168.4.100
[Mar 18 15:08:43.091] mgos_http_server.c:368 HTTP server started on [80]
[Mar 18 15:08:43.091] mgos_provision_btn.c:90 Factory reset button: pin 0, pull up, hold_ms 0 (hold on boot)
[Mar 18 15:08:43.091] mgos_provision_stat:120 Max state: 0
[Mar 18 15:08:43.091] mgos_rpc_channel_mq:203 0x3ffdb82c esp32_C8CF98/rpc
[Mar 18 15:08:43.091] mgos_rpc_channel_ua:313 0x3ffdbf50 UART0
[Mar 18 15:08:43.091] mgos_init.c:36 Init done, RAM: 269304 total, 144956 free, 144956 min free
[Mar 18 15:08:43.456] LED on -> false
[Mar 18 15:08:43.527] mgos_mongoose.c:66 New heap free LWM: 118352
[Mar 18 15:08:43.527] mgos_ota_core.c:1330 UID: 0fef52e4924af156, license: none
[Mar 18 15:08:43.527] esp32_bt_gap.c:100 BT device name esp32_C8CF98, addr f0:08:d1:c8:cf:9a,1
[Mar 18 15:08:43.527] esp32_bt_gatts.c:394 Starting BT service 5f6d4f53-5f44-4247-5f53-56435f49445f
[Mar 18 15:08:43.527] esp32_bt_gatts.c:394 Starting BT service 5f6d4f53-5f52-5043-5f53-56435f49445f
[Mar 18 15:08:44.467] online: false {"ram_free":123084,"uptime":2.870466,"btnCount":0,"on":false}
[Mar 18 15:08:45.460] online: false {"ram_free":123064,"uptime":3.870175,"btnCount":0,"on":false}
[Mar 18 15:08:46.470] online: false {"ram_free":123064,"uptime":4.870221,"btnCount":0,"on":false}
Configurando SSID e WIFI
mos wifi "Andreia Oi Miguel 2.4G" 12345678
$ mos wifi "Andreia Oi Miguel 2.4G" 12345678
Getting configuration...
Setting new configuration...
Command completed.
[Mar 18 15:17:10.966] I (4488) wifi:state: assoc -> run (10)
[Mar 18 15:17:10.966] mgos_mongoose.c:66 New heap free LWM: 116612
[Mar 18 15:17:11.028] I (4528) wifi:connected with Andreia Oi Miguel 2.4G, aid = 1, channel 6, BW20, bssid = 9c:52:f8:43:7a:e0
[Mar 18 15:17:11.028] I (4538) wifi:security: WPA2-PSK, phy: bgn, rssi: -41
[Mar 18 15:17:11.028] I (4548) wifi:pm start, type: 0
[Mar 18 15:17:11.028]
[Mar 18 15:17:11.028] mgos_wifi.c:136 WiFi STA: Connected, BSSID 9c:52:f8:43:7a:e0 ch 6 RSSI -42
[Mar 18 15:17:11.028] mgos_net.c:90 WiFi STA: connected
[Mar 18 15:17:11.028] I (4568) wifi:AP's beacon interval = 102400 us, DTIM period = 1
[Mar 18 15:17:11.785] online: false {"ram_free":125128,"uptime":4.266742,"btnCount":0,"on":false}
[Mar 18 15:17:12.787] online: false {"ram_free":125112,"uptime":5.267389,"btnCount":0,"on":false}
[Mar 18 15:17:13.226] [0;32mI (6728) esp_netif_handlers: sta ip: 192.168.100.116, mask: 255.255.255.0, gw: 192.168.100.1[0m
[Mar 18 15:17:13.226] mgos_net.c:102 WiFi STA: ready, IP 192.168.100.116, GW 192.168.100.1, DNS 192.168.100.1
[Mar 18 15:17:13.226] mgos_provision_state:44 Current state: 1 -> 2
[Mar 18 15:17:13.226] mgos_provision_state:73 Setting provisioning timeout for 300 seconds
[Mar 18 15:17:13.226] esp32_bt.c:82 Network is up, disabling Bluetooth
[Mar 18 15:17:13.333] mgos_sys_config.c:174 Saved to conf9.json
[Mar 18 15:17:13.790] online: false {"ram_free":162624,"uptime":6.266802,"btnCount":0,"on":false}
[Mar 18 15:17:14.375] mgos_sntp.c:96 SNTP query to time.google.com
[Mar 18 15:17:14.482] mgos_sntp.c:59 SNTP reply from 216.239.35.0: time 1616091435.341095, local 386.448222, delta 1616091048.892873
[Mar 18 15:17:14.777] online: false {"ram_free":162096,"uptime":7.266806,"btnCount":0,"on":false}
Pegue o TOKEN
mos config-set dash.enable=true dash.token=TOKEN
mos config-set dash.enable=true dash.token=xxxxxxxxxxxxxxxxxxxxxxx
Getting configuration...
Setting new configuration...
Command completed.
Online!
Alterando init.js
load('api_timer.js');
Timer.set(1000, Timer.REPEAT, function() {
print('Hello From Smartcore!!!');
}, null);
$ mos build --platform esp32
Connecting to https://build.mongoose-os.com, user test
Uploading sources (1476 bytes)
Firmware saved to C:\mos\app1\build\fw.zip
Command completed.
$ mos flash
DÚVIDAS
suporte@smartcore.com.br
REFERÊNCIAS
Nenhum comentário:
Postar um comentário