domingo, 14 de março de 2021

NINA B302 ACESSANDO BLYNK VIA GSM - SARA G350

NINA B302 ACESSANDO BLYNK VIA GSM - SARA G350


O objetivo deste BLOG é demonstrar como é possível utilizar o ARDUINO para programar o módulo U-BLOX NINA B302 para ter acesso a INTERNET via GSM via G350 e assim se comunicar com servidor Blynk.

+

SARA G350

A série SARA-G3 de módulos GSM / GPRS apresenta consumo de energia extremamente baixo e um fator de forma LGA em miniatura. Os módulos SARA-G3 são intercambiáveis ​​e foram projetados tendo em mente as diversas necessidades dos clientes M2M. Diferentes funcionalidades e conjuntos de recursos estão disponíveis para atender aos diferentes requisitos do cliente e da aplicação. SARA-G340 / G350 são módulos GSM / GPRS completos com um conjunto abrangente de recursos, incluindo um amplo conjunto de protocolos de internet (TCP, UDP, HTTP, FTP e SMTP). Elas têm acesso totalmente integrado a chips de posicionamento GNSS u-blox e módulos, junto com a funcionalidade A-GNSS (AssistNow On line e AssistNow Off-line) incorporada. SARA-G350 é o versão quad-band para conectividade global e SARA-G340 (900/1800 MHz) é a versão de banda dupla para otimização de custos uso na Europa e na Ásia. Seu rico conjunto de recursos permite que os clientes desenvolvam facilmente uma ampla gama de dispositivos M2M com desenvolvimento mínimo de software no processador host. SARA-G340 ATEX e SARA-G350 ATEX são ATEX / IECEx variantes certificadas que complementam ainda mais a série de produtos oferecendo a solução ideal para o desenvolvimento de dispositivos inteligentes implantados em ambientes potencialmente explosivos. Módulos celulares u-blox são certificados e aprovados pelo principal órgãos reguladores e operadoras. Software RIL para Android está disponível gratuitamente. Os módulos SARA-G3 são fabricados em locais com certificação ISO / TS 16949. Cada módulo é testado e inspecionado durante a produção. Os módulos são qualificados de acordo com a ISO 16750 - Condições ambientais e testes elétricos para equipamentos elétricos e eletrônicos para rodovias veículos.

BLYNK

Junte-se à plataforma IoT mais popular para conectar seus dispositivos à nuvem, projetar aplicativos para controlá-los e gerenciar seus produtos implantados em escala! Crie sua APP rapidinho e depois porte Blynk para seu próprio servidor.


INSTALE O APP DO BLYNK

Instale um APP do BLYNK e crie uma conta. Crie um projeto de um  FRONT END para acesso ao NINA B302


Então um TOKEN será gerado para o seu e-mail com instruções

Auth Token : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Happy Blynking!
-
Getting Started Guide -> https://www.blynk.cc/getting-started
Documentation -> http://docs.blynk.cc/
Sketch generator -> https://examples.blynk.cc/

Latest Blynk library -> https://github.com/blynkkk/blynk-library/releases/download/v0.6.1/Blynk_Release_v0.6.1.zip
Latest Blynk server -> https://github.com/blynkkk/blynk-server/releases/
-
https://www.blynk.cc
twitter.com/blynk_app
www.facebook.com/blynkapp

Instalando Arduino Adafruit no NINA B302

Abaixo o roteiro para você seguir:

Baixe e instale o Arduino IDE 
Inicie o Arduino IDE, vá em Preferências e adicione 

https://www.adafruit.com/package_adafruit_index.json



como "URL adicional do gerenciador de pastas"

Abra o Boards Manager no menu Tools -> Board e instale o "Adafruit nRF52 by Adafruit"

Selecione sua placa nRF5 no menu Ferramentas -> Placa

Adafruit Bluefruit nRF52 Feather





OBSERVAÇÃO: Durante a instalação, o Arduino IDE leva alguns minutos para extrair as ferramentas após o download, por favor, seja paciente

Gravando bootloader da Adafruit

Use o gravador SEGGER JLINK para gravar o BREAKOUT com módulo NINA B302, conecte nos pinos do SWCLK (pino 7) e SWDIO (pino 9) do SEGGER JLINK nos pinos  SWDCLK e SWDIO do BREAKOUT (pinos nas laterais, próximo à antena). Não esquecer de ligar os GND do BREAKOUT no GND do SEGGER JTAG, bem como alimentar o BREAKOUT com 3.3V.



Ligue os pinos SWD DIO e CLK ...
...nestes pinos da placa BREAKOUT

Você pode também usar o ST-LINK V2



Abra J-FLASH lite e grave o bootloader da Adafruit




O mesmo se encontra em 

....\packages\adafruit\hardware\nrf52\0.19.0\bootloader\feather_nrf52840_express

Compile depois para o NINA B302
https://github.com/adafruit/Adafruit_nRF52_Bootloader

Com ele, você poderá transferir programas via DFU USB. Maiores detalhes sobre este bootloader

https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/update-bootloader

Segundo a documentação, se você pressionar o reset, o módulo aguardará por um certo tempo se há algo sendo enviado pelo Arduino, ou seja, o programa a ser gravado via DFU.

ATENÇÃO, o bootloader usa USB para gravação do NINA 302, OU SEJA, CRIA UMA COMM VIRTUAL, TAMBÉM PARA SER A SERIAL PADRÃO DO ARDUINO

INSTALE OS DRIVERS
https://github.com/adafruit/Adafruit_Windows_Drivers

Conecte na USB + e USB - um cabo USB, AGUARDE INSTALAR OS DRIVERS




ÓTIMA REFERÊNCIA PARA PINOS DO ARDUINO E PINOS (GPIOS) DO NINA B302


Consulte

https://www.u-blox.com/sites/default/files/NINA-B3_DataSheet_%28UBX-17052099%29.pdf

1) Baixe e instale a última versão da IDE do Arduino para o seu NINA.

2) Instale a LIB TINYGSM

https://github.com/khoih-prog/GSM_Generic

Veja o README e atualize Packages para o NINA B302


3) Abra o projeto GSM_BLYNK


  1.  Habilite o modem da U-BLOX em defines.h
  2.  Defina sua APN e User/Pass em defines.h
  3.  Defina o Token do Servidor Blynk em gsm_blynk
  4.  Coloque as credenciais da Operadora de Celular em defines.h

4) Conexões

Conecte o TXD do NINA no TXD do MODEM U-BLOX
Conecte o RXD do NINA no RXD do MODEM U-BLOX

5)  Vá agora em Tools > Board > Boards Manager



6) Selecione o NINA, neste caso, NINA B302




7) Compile e Execute



Comandos enviados pelo NINA via TINYGSM e recebidos

ENVIADOS PELO NINA B302

AT+CFUN=16
AT
AT
AT
AT
AT+CPIN?
AT+CMGF=1
AT+UDCONF=1,1
AT+CTZU=1
AT+UDTMFD=1,2
AT+CREG?
AT+CREG?
AT+CREG?
AT+CREG?
AT+CREG?
AT+CREG?
AT+CREG?
AT+CREG?
AT+UCALLSTAT=1
AT+CGATT=1
AT+UPSD=0,1,"claro.com.br"
AT+UPSD=0,2,"claro"
AT+UPSD=0,3,"claro"
AT+UPSD=0,7,"0.0.0.0"
AT+UPSDA=0,3
AT+UPSND=0,8
AT+UPSND=0,0
AT+USOCR=6
AT+USOCO=0,"blynk-cloud.com",8080
AT+USORD=0,512
AT+USOWR=0,37,"1D0001002042634575644E6F58776376506C437464615149546D4357733074413135746659"
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512
AT+USOWR=0,92,"110002005776657200302E362E3700682D6265617400363000627566662D696E00323536006465760041726475696E6F00636F6E0047534D5F47454E45524943006275696C64004D617220313420323032312030393A34373A323400"
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512
AT+USORD=0,512

RECEBIDOS PELO NINA B302

AT+CFUN=16

OK
AT

OK
AT

AT+CPIN?

+CPIN: READY

OK
AT+CMGF=1

OK
AT+UDCONF=1,1

OK
AT+CTZU=1

OK
AT+UDTMFD=1,2

OK
AT+CREG?

+CREG: 0,0

OK
AT+CREG?

+CREG: 0,0

OK
AT+CREG?

OK
AT+CREG?

+CREG: 0,0

OK
AT+CREG?

+CREG: 0,1

OK
AT+UCALLSTAT=1

OK
AT+CGATT=1

OK
AT+UPSD=0,1,"claro.com.br"

OK
AT+UPSD=0,2,"claro"

OK
AT+UPSD=0,3,"claro"

OK
AT+UPSD=0,7,"0.0.0.0"

OK
AT+UPSDA=0,3

OK
AT+UPSND=0,8

+UPSND: 0,8,1

OK
AT+UPSND=0,0

+UPSND: 0,0,"100.110.76.248"

OK
AT+USOCR=6

+USOCR: 0

OK
AT+USOCO=0,"blynk-cloud.com",8080

OK
AT+USORD=0,512

+USORD: 0,0,""

OK
AT+USOWR=0,37,"1D0001002042634575644E6F58776376506C437464615149546D4357733074413135746659"

+USOWR: 0,37

OK
AT+USORD=0,512

+USORD: 0,0,""

OK
AT+USORD=0,512

+USORD: 0,0,""

OK
AT+USORD=0,512

+USORD: 0,0,""

OK

+UUSORD: 0,5
AT+USORD=0,512

+USORD: 0,5,"00000100C8"
OK
AT+USORD=0,512

+USORD: 0,0,""

OK
AT+USOWR=0,92,"110002005776657200302E362E3700682D6265617400363000627566662D696E00323536006465760041726475696E6F00636F6E0047534D5F47454E45524943006275696C64004D617220313420323032312030393A34373A323400"

+USOWR: 0,92

OK
AT+USORD=0,512

+USORD: 0,0,""

OK
AT+USORD=0,512

+USORD: 0,0,""

Lado do NINA B302

TERMINAL

Start GSM_Blynk on NINA_B302_ublox
GSM_Generic v1.2.3
[2485] 
    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v0.6.7 on Arduino

[GSM] begin: UART baud = 115200
[GSM] GSMClient::handleUrc: usr = +UUPSDD: 0
[GSM] GSMClient::handleUrc: usr = +UUSOCL: 0
[GSM] begin: Check autosense
[GSM] begin: Modem OK
[GSM] GSM::begin: _gsmData._state = GSM_ERROR
Connect GPRS failed, try = 1
[GSM] begin: UART baud = 115200
[GSM] begin: Check autosense
[GSM] GSMClient::handleUrc: usr = OK
[GSM] begin: Modem OK
[GSM] GSM::begin: _gsmData._state = GSM_IDLE

Connected to GPRS. IP address = 10.52.37.49
nect: host = blynk-cloud.com, port = 8080
[GSM] GSMClient::connect: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[28840] Ready (ping: 551ms).
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::handleUrc: usr = +UUSORD: 0,5
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK
[GSM] GSMClient::connected: OK

Circuito



Modem SARA G350
Blynk APP conectado com END DEVICE (GSM)

8) Código


#include "defines.h" #define USING_NON_BLOCK_BLYNK_CONNECT true ////////////////////////////////////////////////////// // Please enter your sensitive data in the Secret tab or arduino_secrets.h // PIN Number const char PINNUMBER[] = SECRET_PINNUMBER; // APN data const char GPRS_APN[] = SECRET_GPRS_APN; const char GPRS_LOGIN[] = SECRET_GPRS_LOGIN; const char GPRS_PASSWORD[] = SECRET_GPRS_PASSWORD; ////////////////////////////////////////////////////// GSMClient gsmClient; GPRS gprs; GSM gsmAccess; // connection state bool connected = false; bool GSM_CONNECT_OK = false; // BaudRate to communicate to GSM/GPRS modem. If be limit to max 115200 inside modem unsigned long baudRateSerialGSM = 115200; ////////////////////////////////////////////////////// // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "BcEudNoXwcvPlCtdaQITmCWs0tA15tfY"; bool connectToGPRS() { #define NUMBER_OF_CONNECTION_TRIES 10 uint8_t tryNumber = 1; // After starting the modem with GSM.begin() // attach the shield to the GPRS network with the APN, login and password while ((gsmAccess.begin(baudRateSerialGSM, PINNUMBER) != GSM_READY) || (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) != GPRS_READY)) { // failed, retry Serial.print("Connect GPRS failed, try = "); Serial.println(tryNumber); if (++tryNumber > NUMBER_OF_CONNECTION_TRIES) { Serial.println("\nCan't connected to GPRS."); connected = false; return false; } delay(1000); } connected = true; //Get IP. IPAddress LocalIP = gprs.getIPAddress(); Serial.print("\nConnected to GPRS. IP address = "); Serial.println(LocalIP); return true; } void setup() { // Open serial communications and wait for port to open: Serial.begin(115200); while (!Serial); delay(200); Serial.print(F("\nStart GSM_Blynk on ")); Serial.println(BOARD_NAME); Serial.println(GSM_GENERIC_VERSION); #if USING_NON_BLOCK_BLYNK_CONNECT Blynk.config(gsmAccess, gprs, gsmClient, auth, blynk_server, BLYNK_HARDWARE_PORT); //GSM_CONNECT_OK = Blynk.connectNetwork(gsmAccess, gprs, PINNUMBER, GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD); GSM_CONNECT_OK = connectToGPRS(); if (GSM_CONNECT_OK) Blynk.connect(); #else Blynk.begin(auth, gsmAccess, gprs, gsmClient, PINNUMBER, GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD); #endif } void loop() { if (gsmAccess.status() != GSM_READY || gprs.status() != GPRS_READY) { connectToGPRS(); } if (connected) { Blynk.run(); } else { delay(10000); } }

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 portfó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

Nenhum comentário:

Postar um comentário