quinta-feira, 31 de outubro de 2019

SPP NO NINA W102

Usando SPP (Antigo BLUETOOTH 2.0)

O objetivo deste BLOG é demonstrar como é possível adicionar os comandos AT ao módulo U-BLOX NINA para implementar o SPP (Serial Port Profile) via GATT. Foram utilizados 2 EVK-NINA-W para o teste. Em outro blog vimos como colocar comandos AT no W102, consulte como!

Roteiro
Primeiro, inicialize dois módulos para serem cliente e servidor, respectivamente:

cliente:

AT+BLEINIT = 1

servidor:

AT+BLEINIT = 2

AT+BLEGATTSSRVCRE

AT+BLEGATTSSRVSTART

AT+BLEADVSTART

Em seguida, estabeleça uma conexão, insira o comando de conexão no lado do cliente, se não estiver claro sobre o endereço do servidor, você pode procurar no lado do cliente (AT+BLESCAN = 1,3), também pode consultar no lado do servidor (AT+BLEADDR?).

cliente:

AT+BLECONN=0,"XX: XX: XX: XX: XX: XX"

O servidor solicitará o estabelecimento da conexão.

servidor:

+ BLECONN:0,"XX: XX: XX: XX: XX: XX"

O cliente consulta os serviços do servidor e define os parâmetros do SPP.

cliente:

AT+BLEGATTCPRIMSRV=0

AT+BLEGATTCCHAR=0,3

AT+BLESPPCFG=1,3,3,3,7

servidor:

AT+BLEGATTSSRV?

AT+BLEGATTSCHAR?

AT+BLESPPCFG=1,1,7,1,3

Entre no modo SPP.

cliente:

AT+BLESPP

servidor:

AT+BLESPP

Ótima Referência para comandos AT da ESPRESSIF
Questões: suporte@smartcore.com.br

FONTES:
https://github.com/espressif/esp-at/issues/241#issuecomment-548181469
 

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

 

quarta-feira, 17 de abril de 2019

NINA W102 E COMANDOS AT

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)


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

Name,Type,SubType,Offset,Size

Name,Type,SubType,Offset,Size
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!

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.

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
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)
+CWLAP:(4,"VIVO-1A51",-93,"04:8d:39:13:1a:50",11)



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/

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
 

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