quinta-feira, 4 de junho de 2020

NINA B302 ACESSANDO BLYNK SERVER VIA WIFI

U-BLOX NINA B302 e BLYNK - 802.11

O objetivo deste BLOG é demonstrar como é possível utilizar a IDE do Arduino para programar o módulo U-BLOX NINA B302 para acessar o servidor BLYNK e criar uma APP e assim verificar o recebimento de um OK a cada 1 segundo. Foi utilizado o NINA B302 BREAKOUT para o teste junto com um CO-PROCESSADOR WIFI baseado no NINA W102 (WIFININA),este último permite conectividade à Internet.


WIFININA - UBLOX NINA W102
WIFI COPROCESSOR baseado no NINA W102, o qual permite que você tenha acesso a INTERNET 802.11, via SPI.

U-BLOX NINA B302

O NINA-B30 possui Bluetooth 5 completo, um poderoso Arm® Cortex®-M4 com FPU,
e desempenho de energia de ponta. Bluetooth BLE 5.0.

ADADRUIT

A Adafruit foi fundada em 2005 pelo engenheiro do MIT, Limor "Ladyada" Fried. Seu objetivo era criar o melhor local on-line para o aprendizado de eletrônicos e para a fabricação dos melhores produtos projetados para fabricantes de todas as idades e níveis de habilidade.

SMARTCORE

A SmartCore fornece módulos para comuniçã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

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.
Blynk é uma plataforma com aplicativos iOS e Android para controlar   Arduino, Raspberry Pi e afins pela Internet.   Você pode criar facilmente interfaces gráficas para todos os seus   projetos simplesmente arrastando e soltando widgets

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

Mudar NRF52840
 
O mesmo se encontra em 

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

Compile depois para o NINA B302

Com ele, você poderá transferir programas via DFU USB. Maiores detalhes sobre este 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

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


Futuramente altere arquivo variant.cpp para que as GPIOS sejam os mesmos do NINA B302, atualmente estão para o ADAFRUIT FEATHER EXPRESS.

Copie 

Criado pelo Autor

boards.txt
variant.h
viariant.cpp



ÓTIMA REFERENCIA PARA PINOS DO ARDUINO E PINOS (GPIOS) DO NINA B302


Consulte

TRANSFORMANDO NINA W102 EM WIFI COPROCESSOR

Grave o seguinte BIN no NINA W102, o qual será transformado em um SPI COPROCESSOR WIFI. Você pode usar o esptools para gravar.

A versão do BIN de maior ou igual à 1.4.0.



MONTAGEM


Conecte fisicamente o U-BLOX NINA B302 com o U-BLOX NINA W102 conforme circuito abaixo. Bom utilizar fios bem curtos. Os breakouts utilizados foram da Smartcore. 

 SINAIS

BREAKOUT B3

 Pino NRF52X

BREAKOUT W1

 Pino ESP32

CS

IO1

P0.13

IO28

5

READY

IO2

P0.14

IO7

33

RESET

IO21

P1.12

RESET

RESET

SCK

IO45

P0.07

IO29

18

MOSI

IO3

P0.15

IO31

14

MISO

IO8

P1.00

IO1

23

GPIO0

IO4

P0.16

IO27

0

 

 

 

 

 


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

1) Antes de abrir o projeto

Leia Atentamente 

Veja as libs que tem que instalar - dependências

Abra então o projeto


Código

/****************************************************************************************************************************
nRF52_WiFiNINA.ino
For nRF52 using WiFiNINA Shield/Module
(https://github.com/khoih-prog/Blynk_WiFiNINA_WM) to enable easy configuration/reconfiguration and
Blynk_WiFiNINA_WM is a library for the Mega, Teensy, SAM DUE, nRF52, STM32 and SAMD boards
autoconnect/autoreconnect of WiFiNINA/Blynk
Licensed under MIT license
Modified from Blynk library v0.6.1 https://github.com/blynkkk/blynk-library/releases
Built by Khoi Hoang https://github.com/khoih-prog/Blynk_WiFiNINA_WM
@file BlynkSimpleWiFiNINA.h
Version: 1.0.4 Original Blynk Library author:
@author Volodymyr Shymanskyy
@license This project is released under the MIT License (MIT)
@copyright Copyright (c) 2018 Volodymyr Shymanskyy
@date Sep 2018
@brief

Version Modified By Date Comments
------- ----------- ---------- -----------
1.0.0 K Hoang 07/04/2020 Initial coding
1.0.1 K Hoang 09/04/2020 Add support to SAM DUE, Teensy, STM32
1.0.2 K Hoang 15/04/2020 Fix bug. Add SAMD51 support.
1.0.3 K Hoang 05/05/2020 Add nRF52 support, MultiWiFi/Blynk, Configurable Config Portal Title,
Default Config Data and DRD. Update examples.
1.0.4 K Hoang 13/05/2020 Add support to Arduino UNO WiFi R2
*****************************************************************************************************************************/
#include "defines.h"
#include "Credentials.h"
#include "dynamicParams.h"

void heartBeatPrint(void)
{
static int num = 1;

if (Blynk.connected())
{
Serial.print("B");
Blynk.virtualWrite(V0, "OK");
}
else
{
Serial.print("F");
}

if (num == 80)
{
Serial.println();
num = 1;
}
else if (num++ % 10 == 0)
{
Serial.print(" ");
}
}

void check_status()
{
static unsigned long checkstatus_timeout = 0;

#define STATUS_CHECK_INTERVAL 10000L

// Send status report every STATUS_REPORT_INTERVAL (10) seconds: we don't need to send updates frequently if there is no status change.
if ((millis() > checkstatus_timeout) || (checkstatus_timeout == 0))
{
// report status to Blynk
heartBeatPrint();

checkstatus_timeout = millis() + STATUS_CHECK_INTERVAL;
}
}

void setup()
{
// Debug console
Serial.begin(115200);
while (!Serial);
//delay(1000);

Serial.println("\nStart Blynk_WiFiNINA_WM using WiFiNINA_Shield on " + String(BOARD_TYPE));

#if USE_BLYNK_WM
Serial.println(F("Start Blynk_WM"));
Blynk.setConfigPortalIP(IPAddress(192, 168, 120, 1));
//Blynk.setConfigPortal("SAMD", "MySAMD");
//Blynk.begin("nRF52-WiFiNINA");
Blynk.begin(HOST_NAME);
#else
Serial.println(F("Start Blynk"));
Blynk.begin(auth, ssid, pass, BlynkServer.c_str(), BLYNK_SERVER_HARDWARE_PORT);
#endif
}

#if (USE_BLYNK_WM && USE_DYNAMIC_PARAMETERS)
void displayCredentials(void)
{
Serial.println("\nYour stored Credentials :");

for (int i = 0; i < NUM_MENU_ITEMS; i++)
{
Serial.println(String(myMenuItems[i].displayName) + " = " + myMenuItems[i].pdata);
}
}
#endif

void loop()
{
Blynk.run();
check_status();

#if (USE_BLYNK_WM && USE_DYNAMIC_PARAMETERS)
static bool displayedCredentials = false;

if (!displayedCredentials)
{
for (int i = 0; i < NUM_MENU_ITEMS; i++)
{
if (!strlen(myMenuItems[i].pdata))
{
break;
}

if ( i == (NUM_MENU_ITEMS - 1) )
{
displayedCredentials = true;
displayCredentials();
}
}
}
#endif
}

Coloque as credenciais do WIFI e SERVIDOR BLYNK via WEB ou direto nos arquivos correspondentes que aparecem na ABA.



2) COMPILE E GRAVE


3) EXECUTE


4) NO SEU APP CRIE UM VALUE DISPLAY (V0), O MESMO MOSTRARÁ UMA MENSAGEM DE "OK"


Questoes: suporte@smartcore.com.br

FONTES: 

THANKS TO Khoi Hoang

https://blynk.io/en/getting-started
http://docs.blynk.cc/#widgets-displays-led
https://github.com/khoih-prog/BlynkEthernet_WM
http://docs.blynk.cc/#getting-started-getting-started-with-the-blynk-app

Sobre a SMARTCORE

A SmartCore fornece módulos para comuniçã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