U-BLOX NINA W e COMANDOS AT
O objetivo deste BLOG é demonstrar como é possível adicionar os comandos AT ao módulo U-BLOX NINA. Foi utilizado o EVK-NINA-W para o teste.
Deve ser teu conhecimento que a ESPRESSIF tem um firmware que permite "programar" o ESP32 (NINA W102) via comandos AT e ter acesso ao WIFI 802.11 e BT 4.2, bastando seu HOST (PC ou uC tem uma UART)
ble_data,0x40,1,0x21000,12K
server_cert,0x40,2,0x24000,8K
server_key,0x40,3,0x26000,8K
server_ca,0x40,4,0x28000,8K
client_cert,0x40,5,0x2a000,8K
client_key,0x40,6,0x2c000,8K
client_ca,0x40,7,0x2e000,8K
factory_param,0x40,8,0x30000,4K
wpa2_cert,0x40,9,0x31000,8K
wpa2_key,0x40,10,0x33000,8K
wpa2_ca,0x40,11,0x35000,8K
mqtt_cert,0x40,12,0x37000,8K
mqtt_key,0x40,13,0x39000,8K
mqtt_ca,0x40,14,0x3B000,8K
fatfs,data,fat,0x70000,16K
Além disto foi necessário configurar o GPIO do ESP32 correspondente à do módulo U-BLOX NINA W102( UART port 0, RX pin 3, TX pin 1, RTS pin -1 CTS pin -1) bem como o tamanho da flash para 2MB. OTA foi desabilitado! Alterado para para 240Mhz!
RECOMENDO APRENDER A COMPILAR!
Baseando no ESPTOOLS
python /home/osboxes/esp-at/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x10000 /home/osboxes/esp-at/build/ota_data_initial.bin 0x1000 /home/osboxes/esp-at/build/bootloader/bootloader.bin 0x20000 /home/osboxes/esp-at/build/at_customize.bin 0x21000 /home/osboxes/esp-at/build/customized_partitions/ble_data.bin 0x24000 /home/osboxes/esp-at/build/customized_partitions/server_cert.bin 0x26000 /home/osboxes/esp-at/build/customized_partitions/server_key.bin 0x28000 /home/osboxes/esp-at/build/customized_partitions/server_ca.bin 0x2a000 /home/osboxes/esp-at/build/customized_partitions/client_cert.bin 0x2c000 /home/osboxes/esp-at/build/customized_partitions/client_key.bin 0x2e000 /home/osboxes/esp-at/build/customized_partitions/client_ca.bin 0x30000 /home/osboxes/esp-at/build/customized_partitions/factory_param.bin 0x31000 /home/osboxes/esp-at/build/customized_partitions/wpa2_cert.bin 0x33000 /home/osboxes/esp-at/build/customized_partitions/wpa2_key.bin 0x35000 /home/osboxes/esp-at/build/customized_partitions/wpa2_ca.bin 0x37000 /home/osboxes/esp-at/build/customized_partitions/mqtt_cert.bin 0x39000 /home/osboxes/esp-at/build/customized_partitions/mqtt_key.bin 0x3B000 /home/osboxes/esp-at/build/customized_partitions/mqtt_ca.bin 0xf000 /home/osboxes/esp-at/build/phy_init_data.bin 0x40000 /home/osboxes/esp-at/build/esp-at.bin 0x8000 /home/osboxes/esp-at/build/partitions_at.bin
O mapa ficou assim
0x10000 bootloader.bin
0x20000 at_customize.bin
0x21000 ble_data.bin
0x24000server_cert.bin
0x260001 server_key.bin
0x28000 server_ca.bin
0x2a000 client_cert.bin
0x2c000 client_key.bin
0x2e000 client_ca.bin
0x30000 factory_param.bin
0x31000 wpa2_cert.bin
0x33000 wpa2_key.bin
0x35000 wpa2_ca.bin
0x37000 mqtt_cert.bin
0x39000 mqtt_key.bin
0x3B000 mqtt_ca.bin
0xf000 phy_init_data.bin
0x40000 esp-at.bin
0x8000 partitions_at.bin
sboxes@osboxes:~/esp-at/build/customized_partitions$ ls *.bin
ble_data.bin client_key.bin mqtt_ca.bin server_ca.bin wpa2_ca.bin
client_ca.bin factory_param.bin mqtt_cert.bin server_cert.bin wpa2_cert.bin
client_cert.bin factory_param_WROOM-32.bin mqtt_key.bin server_key.bin wpa2_key.bin
osboxes@osboxes:~/esp-at/build/customized_partitions$
AT+GMRAT version:2.0.0.0-dev(94aeecd - Oct 10 2019 03:34:25)
SDK version:v3.3compile time:Oct 10 2019 11:33:52
OK
FONTES:
https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/kconfig.html
https://www.espressif.com/en/products/hardware/esp32/resources
https://github.com/espressif/esp32-at
https://github.com/espressif/esp32-at/issues/201
Deve ser teu conhecimento que a ESPRESSIF tem um firmware que permite "programar" o ESP32 (NINA W102) via comandos AT e ter acesso ao WIFI 802.11 e BT 4.2, bastando seu HOST (PC ou uC tem uma UART)
Baixei e transferi para o NINA-W102 (ESP32), porém o NINA-W102 nao deu vida para nenhum deles.
Pesquisando mais a fundo, verifiquei que o NINA-W102 tem apenas 1Mb para aplicação do usuário (app) e as imagens bin da espressif ultrapassaram 1Mb (WIFI 802.11 + BT 4.2)
Como o modulo NINA-W102 tem 1Mb para aplicação do usuário (app), este firmware da espressif não caberá.
Para resolver este problema, recompilei o firmware com comandos AT fazendo algumas pequenas mudanças (optmização de código) e principalmente ALTERAÇÃO DO TAMANHO DA PARTIÇÃO DO FILE SYSTEM, ou seja, sobrando mais espaço para o firmware, que pode ultrapassar os 1Mb (WIFI 802.11 + BT 4.2). Para compilar, o roteiro que segui foi https://github.com/espressif/esp32-at (LINUX, via make menuconfig)
Foi necessário alterar partições
Name, Type, SubType, Offset, Size
# Name, Type, SubType, Offset, Size
phy_init, data, phy, 0xf000, 0x1000
otadata,data,ota, 0x10000, 8K
nvs,data,nvs, 0x12000, 56K
at_customize,0x40,0,0x20000,0x11000
factory,app, factory, 0x40000,0x180000
phy_init, data, phy, 0xf000, 0x1000
otadata,data,ota, 0x10000, 8K
nvs,data,nvs, 0x12000, 56K
at_customize,0x40,0,0x20000,0x11000
factory,app, factory, 0x40000,0x180000
Name,Type,SubType,Offset,Size
Name,Type,SubType,Offset,Sizeble_data,0x40,1,0x21000,12K
server_cert,0x40,2,0x24000,8K
server_key,0x40,3,0x26000,8K
server_ca,0x40,4,0x28000,8K
client_cert,0x40,5,0x2a000,8K
client_key,0x40,6,0x2c000,8K
client_ca,0x40,7,0x2e000,8K
factory_param,0x40,8,0x30000,4K
wpa2_cert,0x40,9,0x31000,8K
wpa2_key,0x40,10,0x33000,8K
wpa2_ca,0x40,11,0x35000,8K
mqtt_cert,0x40,12,0x37000,8K
mqtt_key,0x40,13,0x39000,8K
mqtt_ca,0x40,14,0x3B000,8K
fatfs,data,fat,0x70000,16K
Além disto foi necessário configurar o GPIO do ESP32 correspondente à do módulo U-BLOX NINA W102( UART port 0, RX pin 3, TX pin 1, RTS pin -1 CTS pin -1) bem como o tamanho da flash para 2MB. OTA foi desabilitado! Alterado para para 240Mhz!
Os arquivos binário que gerei estao aqui... VERSAO 2.0
Para copiar para o NINA W102, utilize a ferramenta
Flash Download Tools (ESP8266 & ESP32)
Baseando no ESPTOOLS
python /home/osboxes/esp-at/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x10000 /home/osboxes/esp-at/build/ota_data_initial.bin 0x1000 /home/osboxes/esp-at/build/bootloader/bootloader.bin 0x20000 /home/osboxes/esp-at/build/at_customize.bin 0x21000 /home/osboxes/esp-at/build/customized_partitions/ble_data.bin 0x24000 /home/osboxes/esp-at/build/customized_partitions/server_cert.bin 0x26000 /home/osboxes/esp-at/build/customized_partitions/server_key.bin 0x28000 /home/osboxes/esp-at/build/customized_partitions/server_ca.bin 0x2a000 /home/osboxes/esp-at/build/customized_partitions/client_cert.bin 0x2c000 /home/osboxes/esp-at/build/customized_partitions/client_key.bin 0x2e000 /home/osboxes/esp-at/build/customized_partitions/client_ca.bin 0x30000 /home/osboxes/esp-at/build/customized_partitions/factory_param.bin 0x31000 /home/osboxes/esp-at/build/customized_partitions/wpa2_cert.bin 0x33000 /home/osboxes/esp-at/build/customized_partitions/wpa2_key.bin 0x35000 /home/osboxes/esp-at/build/customized_partitions/wpa2_ca.bin 0x37000 /home/osboxes/esp-at/build/customized_partitions/mqtt_cert.bin 0x39000 /home/osboxes/esp-at/build/customized_partitions/mqtt_key.bin 0x3B000 /home/osboxes/esp-at/build/customized_partitions/mqtt_ca.bin 0xf000 /home/osboxes/esp-at/build/phy_init_data.bin 0x40000 /home/osboxes/esp-at/build/esp-at.bin 0x8000 /home/osboxes/esp-at/build/partitions_at.bin
O mapa ficou assim
0x10000 bootloader.bin
0x20000 at_customize.bin
0x21000 ble_data.bin
0x24000server_cert.bin
0x260001 server_key.bin
0x28000 server_ca.bin
0x2a000 client_cert.bin
0x2c000 client_key.bin
0x2e000 client_ca.bin
0x30000 factory_param.bin
0x31000 wpa2_cert.bin
0x33000 wpa2_key.bin
0x35000 wpa2_ca.bin
0x37000 mqtt_cert.bin
0x39000 mqtt_key.bin
0x3B000 mqtt_ca.bin
0xf000 phy_init_data.bin
0x40000 esp-at.bin
0x8000 partitions_at.bin
sboxes@osboxes:~/esp-at/build/customized_partitions$ ls *.bin
ble_data.bin client_key.bin mqtt_ca.bin server_ca.bin wpa2_ca.bin
client_ca.bin factory_param.bin mqtt_cert.bin server_cert.bin wpa2_cert.bin
client_cert.bin factory_param_WROOM-32.bin mqtt_key.bin server_key.bin wpa2_key.bin
osboxes@osboxes:~/esp-at/build/customized_partitions$
Execute e carregue os bins conforme enderecos acima...
Antes de transferir de qualquer operação (ERASE e START), certifique-se de RESETAR o NINA W102 com o BOOT pressionado, para ele entrar em bootloader, ok ?
Primeiro, deves apagar toda flash, deixando apenas o MARCADO 16Mbit_Null.bin e execute ERASE.
Feito isto, demarque o 16Mbit_Null.bin e marque todos os outros BINS e dê o START.
Aguarde alguns segundos para gravação do seu APP. (Certifique que esteja na serial correta, o baud eu utilizei 1152000, atenção, não é 115200).
Agora abra um emulador de terminal (exemplo TERATERM e configure para 115200, N,8,1)
Resete o NINA W102.
Você verá o BOOT acima.
SDK version:v3.3compile time:Oct 10 2019 11:33:52
OK
Nao esquecer que cada comando AT dever ser seguido do CR/LF, no caso do TERATERM se consegue isto pressionado a sequencia CRTL-J
Para varrer os ACCESS POINTS proximos, o NINA W102 deve estar no modo station
Execute
AT+CWMODE=1
OK
AT+CWLAP
+CWLAP:(3,"Andreia&Miguel",-28,"f8:1a:67:dc:1a:9e",6)
+CWLAP:(3,"HP-Print-73-Deskjet 2540 series",-81,"ec:b1:d7:fb:3e:73",6)
+CWLAP:(4,"NET_2GDFC060",-82,"94:2c:b3:df:c0:65",6)
+CWLAP:(3,"carlos",-83,"5c:e3:0e:13:0f:e7",1)
+CWLAP:(0,"#NET-CLARO-WIFI",-83,"5e:e3:0e:23:0f:e7",1)
+CWLAP:(4,"VIVO-5AF0",-86,"a4:33:d7:11:5a:f0",3)
+CWLAP:(4,"Evo-W301AR",-87,"00:1d:1a:0d:85:54",11)
+CWLAP:(0,"",-89,"fa:8f:ca:53:16:be",11)
+CWLAP:(3,"chicatto",-90,"90:0d:cb:e5:32:e0",6)
+CWLAP:(4,"REDE1",-92,"84:a4:23:99:97:8d",9)
+CWLAP:(0,"#NET-CLARO-WIFI",-93,"96:0d:cb:e5:32:e0",6)
Ligando NINA W102 (atenção)
PC/uC NINA W102
TXD --------------------------------> RXD
RXD <-------------------------------- TXD
GND ----------------------------------GND
Ambos lados 3.3V e 115200 BAUD
================================================
Novas atualizações da Espressif já não cabem mais em 2Mb, ou seja, não há como por as funções AT WIFI e AT BLE ao mesmo tempo, logo a versão acima é a última os dois juntos.
Ótima Referência para comandos AT da ESPRESSIF
https://klsys.com/2019/03/esp32-at-commands-set/
================================================
Ótima Referência para comandos AT da ESPRESSIF
https://klsys.com/2019/03/esp32-at-commands-set/
Questoes: suporte@smartcore.com.br
FONTES:
https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/kconfig.html
https://www.espressif.com/en/products/hardware/esp32/resources
https://github.com/espressif/esp32-at
https://github.com/espressif/esp32-at/issues/201