segunda-feira, 3 de agosto de 2020

NINA W102 e RemoteXY (VISUINO)

U-BLOX NINA W102 e RemoteXY (com VISUINO)

O objetivo deste BLOG é demonstrar como é possível utilizar o VISUINO para programar o módulo U-BLOX NINA W102 para acessar o RemoteXY, criar uma APP e acender um LED, tudo super rápido. Foi utilizado o EVK-NINA-W para o teste.

RemoteXY


O RemoteXY é uma maneira fácil de criar e usar uma interface gráfica de usuário móvel para placas Arduino e outros controladores. Usando o editor de interfaces gráficas móveis, localizado no site http://remotexy.com, você pode criar sua própria interface gráfica de usuário exclusiva e carregá-la no controlador. Usando este aplicativo móvel, você poderá se conectar ao controlador e gerenciar com eles por meio de uma interface gráfica.

A interface gráfica suporta os seguintes elementos:
- botão;
- Interruptor;
- select;
- Slider;
- Controle de video game;
- cor RGB;
- LED;
- Nível;
- impressão de texto;
- Gráfico;
- Outros elementos de design da GUI.

Conexão entre o controlador e o dispositivo móvel usando:
- Bluetooth;
- Cliente WiFi e ponto de acesso;
- Ethernet por IP ou URL;
- Internet de qualquer lugar através do Cloud Server;
- USB OTG.

O gerador de código-fonte tem suporte para os próximos controladores:
- Arduino UNO, Arduino MEGA, Arduino Leonardo, Arduino Pro Mini, Arduino Nano, Arduino MICRO;
- WeMos D1, WeMos D1 R2, WeMos D1 mini;
- NodeMCU V2, NodeMCU V3;
- o AirBoard;

Módulos de comunicação suportados:
- Bluetooth HC-05, HC-06 ou compatível;
- Bluetooth BLE HM-10 ou compatível;
- WiFi ESP8266;
- Ethernet Shield W5100;

IDE suportado:
- IDE do Arduino;
- IDE FLProg;
NINA W102 - ARDUINO


VISUINO


Visuino é o mais recente software inovador da Mitov Software. Um ambiente de programação visual que permite programar suas placas Arduino. ... Os componentes encontrados no software Visuino representam seus componentes de hardware e você pode criar e projetar facilmente seus programas usando o recurso de arrastar e soltar.

domingo, 2 de agosto de 2020

NINA W102 e RemoteXY

U-BLOX NINA W102 e RemoteXY

O objetivo deste BLOG é demonstrar como é possível utilizar a IDE do Arduino para programar o módulo U-BLOX NINA W102 para acessar o RemoteXY, criar uma APP e acender um LED, tudo super rápido. Foi utilizado o EVK-NINA-W para o teste.

RemoteXY


O RemoteXY é uma maneira fácil de criar e usar uma interface gráfica de usuário móvel para placas Arduino e outros controladores. Usando o editor de interfaces gráficas móveis, localizado no site http://remotexy.com, você pode criar sua própria interface gráfica de usuário exclusiva e carregá-la no controlador. Usando este aplicativo móvel, você poderá se conectar ao controlador e gerenciar com eles por meio de uma interface gráfica.

A interface gráfica suporta os seguintes elementos:
- botão;
- Interruptor;
- select;
- Slider;
- Controle de video game;
- cor RGB;
- LED;
- Nível;
- impressão de texto;
- Gráfico;
- Outros elementos de design da GUI.

Conexão entre o controlador e o dispositivo móvel usando:
- Bluetooth;
- Cliente WiFi e ponto de acesso;
- Ethernet por IP ou URL;
- Internet de qualquer lugar através do Cloud Server;
- USB OTG.

O gerador de código-fonte tem suporte para os próximos controladores:
- Arduino UNO, Arduino MEGA, Arduino Leonardo, Arduino Pro Mini, Arduino Nano, Arduino MICRO;
- WeMos D1, WeMos D1 R2, WeMos D1 mini;
- NodeMCU V2, NodeMCU V3;
- o AirBoard;

Módulos de comunicação suportados:
- Bluetooth HC-05, HC-06 ou compatível;
- Bluetooth BLE HM-10 ou compatível;
- WiFi ESP8266;
- Ethernet Shield W5100;

IDE suportado:
- IDE do Arduino;
- IDE FLProg;
NINA W102 - ARDUINO

1) Baixe e instale a última versão da IDE do Arduino

https://www.arduino.cc/en/Main/Software

2) Execute a IDE do Arduino e click em files-->preferences


e digite
https://dl.espressif.com/dl/package_esp32_index.json e click OK

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



4) Procure por "ESP32 by Espressif" e instale


Aguarde alguns minutos para instalação do SDK. 

5) Selecione em tools-->board o módulo u-blox NINA-W10 series


Atualize os BINS abaixo do Package ESP32 (opcional hoje)

6) Entre em 


Configure o que você quer controlar no APP virtual bem como Configuration (à direita), para que funcione compatível com NINA W102.

Neste caso iremos acessar o NINA W102 numa rede local


E click em Get Source Code
  • Faça o download do código-fonte do programa, abra-o no Arduino IDE.
  • Instale a biblioteca RemoteXY para o Arduino IDE.
  • Compile o código-fonte e faça o upload para a placa ESP32 usando o Arduino IDE.
  • Instale o aplicativo remoto RemoteXY ver.4.5.1 para smartphone / tablet.
  • Conecte-se ao ESP32 usando o aplicativo móvel.
7) Compile o código no Arduino

/* -- New project -- This source code of graphical user interface has been generated automatically by RemoteXY editor. To compile this code using RemoteXY library 2.4.3 or later version download by link http://remotexy.com/en/library/ To connect using RemoteXY mobile app by link http://remotexy.com/en/download/ - for ANDROID 4.5.1 or later version; - for iOS 1.4.1 or later version; This source code is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. */ ////////////////////////////////////////////// // RemoteXY include library // ////////////////////////////////////////////// // RemoteXY select connection mode and include library #define REMOTEXY_MODE__ESP32CORE_WIFI_POINT #include <WiFi.h> #include <RemoteXY.h> // RemoteXY connection settings #define REMOTEXY_WIFI_SSID "Andreia Oi Miguel 2.4G" #define REMOTEXY_WIFI_PASSWORD "xxxxxxxx" #define REMOTEXY_SERVER_PORT 6377 #define REMOTEXY_ACCESS_PASSWORD "yyyyyyyy" // RemoteXY configurate #pragma pack(push, 1) uint8_t RemoteXY_CONF[] = { 255,1,0,0,0,20,0,10,13,0, 2,0,39,25,22,11,2,26,31,31, 79,78,0,79,70,70,0 }; // this structure defines all the variables and events of your control interface struct { // input variables uint8_t switch_1; // =1 if switch ON and =0 if OFF // other variable uint8_t connect_flag; // =1 if wire connected, else =0 } RemoteXY; #pragma pack(pop) ///////////////////////////////////////////// // END RemoteXY include // ///////////////////////////////////////////// #define PIN_SWITCH_1 23 //<========LED DO NINA W102 void setup() { RemoteXY_Init (); pinMode (PIN_SWITCH_1, OUTPUT); // TODO you setup code } void loop() { RemoteXY_Handler (); digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH); // TODO you loop code // use the RemoteXY structure for data transfer // do not call delay() }

8) Transfira e execute no NINA W102




9) Execute o APP do celular (deves esta na mesma rede do NINA W102)

Você observará que ele montará a tela conforme configuração do APP virtual.







10) Questões: suporte@smartcore.com.br

FONTES: 
https://remotexy.com/en/editor/

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

sábado, 2 de maio de 2020

NINA B302 + ETHERNET 802.3 + BLYNK + BLE

U-BLOX NINA B302 e BLYNK - ETHERNET 802.3 - BLE

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 e mandar o STATUS da Temperatura, obtido de módulo sensor de temperatura BLE. Foi utilizado o NINA B302 BREAKOUT para os testes.

BLINKY

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.

BLE DE TEMPERATURA

Módulo BLE que fica propagando tempos em tempos as temperatura, advertising.

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


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

variant.h
viariant.cpp





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


Consulte


ENC28J60

O módulo Ethernet ENC28J60 utiliza o novo IC controlador controlador independente Microchip ENC28J60 com uma série de recursos para lidar com a maioria dos requisitos de protocolo de rede. A placa se conecta diretamente à maioria dos microcontroladores com uma interface SPI padrão com uma velocidade de transferência de até 20MHz.

Conexão com NINA B302

static const uint8_t SS   = (10);----> CS  (ENC28J60)
static const uint8_t MOSI = PIN_SPI_MOSI; ----> SI (ENC28J60)
static const uint8_t MISO = PIN_SPI_MISO;----> SO (ENC28J60)
static const uint8_t SCK  = PIN_SPI_SCK;----> SCK      (ENC28J60)

#define PIN_SPI_MISO         (24)    //24 original   IO1
#define PIN_SPI_MOSI         (25)    //25 original   IO3
#define PIN_SPI_SCK          (26)    //26 original    IO45

// D24 .. D26 (aka SPI pins)
  32,  // D24 is P1.00 (SPI MISO)
  15,  // D25 is P0.15 (SPI MOSI)
   7,  // D26 is P0.07 (SPI SCK )
  14,  // D10 is P0.14


Blynk

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

1) 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

COPIE AS LIBRARIES PARA O ARDUINO


1) Copie para Sketch o exemplo a seguir. Ele fará um SCAN do BLE, pegará a temperatura e então enviará para o servidor BLYNK.

/********************************************************************* This is an example for our nRF52 based Bluefruit LE modules Pick one up today in the adafruit shop! Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! MIT license, check LICENSE for more information All text above, and the splash screen below must be included in any redistribution *********************************************************************/ #include <bluefruit.h> #define USE_UIP_ETHERNET true #define BLYNK_PRINT Serial #include <UIPEthernet.h> #include <BlynkSimpleUIPEthernet.h> #define USE_LOCAL_SERVER true // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). #if USE_LOCAL_SERVER // Local Blynk Server char token[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxf"; // Fill the name of Blynk Server char server[] = "xxxxxxxxxx.ddns.net"; //char server[] = "****.ddns.net"; //char server[] = "192.168.2.112"; #else //Cloud Blynk Server char token[] = "******"; char server[] = "blynk-cloud.com"; #endif #define BLYNK_HARDWARE_PORT 8080 #define BLYNK_HARDWARE_PORT 8080 WidgetLED led1(V1); WidgetLCD lcd(V0); unsigned short Temp_D1,Temp_D2; BlynkTimer timer; // V1 LED Widget is blinking void blinkLedWidget() { if (led1.getValue()) { led1.off(); Serial.println("LED on V1: off"); } else { led1.on(); Serial.println("LED on V1: on"); } } int cnt = 0; char Temp[32]; void doSomething(void) { Serial.println("============ Print Every 120s ============"); blinkLedWidget(); Serial.println("========== And Blink LED widget =========="); sprintf(Temp,"%0d.%0d",Temp_D1,Temp_D2); lcd.print(0,0,String(Temp)); } void heartBeatPrint(void) { static int num = 1; if (Blynk.connected()) Serial.print(F("B")); // For Blynk OK else Serial.print(F("F")); // Failure if (num == 80) { Serial.println(); num = 1; } else if (num++ % 10 == 0) { Serial.print(F(" ")); } } void check_status() { static unsigned long checkstatus_timeout = 0; #define STATUS_CHECK_INTERVAL 60000L // Send status report every STATUS_REPORT_INTERVAL (60) seconds: we don't need to send updates frequently if there is no status change. if ((millis() > checkstatus_timeout) || (checkstatus_timeout == 0)) { heartBeatPrint(); checkstatus_timeout = millis() + STATUS_CHECK_INTERVAL; } } #define BLYNK_CONNECT_TIMEOUT_MS 20000 #define USE_NON_BLOCKING_BLYNK false void setup() { // Debug console Serial.begin(115200); while ( !Serial ) delay(10); // for nrf52840 with native usb #if USE_NON_BLOCKING_BLYNK Blynk.config(token, server, BLYNK_HARDWARE_PORT); Blynk.connect(BLYNK_CONNECT_TIMEOUT_MS); #else //Blynk.begin(auth); // You can also specify server: Blynk.begin(token, server, BLYNK_HARDWARE_PORT); #endif if (Blynk.connected()) { Serial.print(F("Conn2Blynk: server = ")); Serial.print(server); Serial.print(F(", port = ")); Serial.println(BLYNK_HARDWARE_PORT); Serial.print(F("Token = ")); Serial.print(token); Serial.print(F(", IP = ")); Serial.println(Ethernet.localIP()); } // Every 120s, doSomething => print and blink LED (V1) on APP timer.setInterval(5000L, doSomething); Serial.println("Bluefruit52 Central Scan Example"); Serial.println("--------------------------------\n"); // Initialize Bluefruit with maximum connections as Peripheral = 0, Central = 1 // SRAM usage required by SoftDevice will increase dramatically with number of connections Bluefruit.begin(0, 1); Bluefruit.setTxPower(4); // Check bluefruit.h for supported values Bluefruit.setName("Bluefruit52"); // Start Central Scan Bluefruit.setConnLedInterval(250); Bluefruit.Scanner.setRxCallback(scan_callback); Bluefruit.Scanner.start(0); Serial.println("Scanning ..."); } //DB:9C:ED:D2:A2:F7 unsigned char smart_watch_mac[] = {0xDB,0x9C,0xED,0xD2,0xA2,0xF7}; void scan_callback(ble_gap_evt_adv_report_t* report) { if(report->peer_addr.addr[5]==smart_watch_mac[0]) if(report->peer_addr.addr[4]==smart_watch_mac[1]) if(report->peer_addr.addr[3]==smart_watch_mac[2]) if(report->peer_addr.addr[2]==smart_watch_mac[3]) if(report->peer_addr.addr[1]==smart_watch_mac[4]) if(report->peer_addr.addr[0]==smart_watch_mac[5]) { // MAC is in little endian --> print reverse Serial.printBufferReverse(report->peer_addr.addr, 6, ':'); Serial.printBuffer(report->data.p_data, report->data.len, '-'); Serial.println(); Serial.print(report->data.p_data[11]); Serial.print("."); Serial.println(report->data.p_data[12]); Temp_D1 = report->data.p_data[11]; //to blynk Temp_D2 = report->data.p_data[12]; //to blynk } // For Softdevice v6: after received a report, scanner will be paused // We need to call Scanner resume() to continue scanning Bluefruit.Scanner.resume(); } void loop() { Blynk.run(); timer.run(); check_status(); }

Coloque o TOKEN e o servidor!

//Cloud Blynk Server char token[] = "******"; 
 char server[] = "blynk-cloud.com";

Leia Atentamente 

2) COMPILE E GRAVE


3) EXECUTE



4) EXECUTANDO



5) NO SEU APP CRIE UM LED VIRTUAL



Versão Melhorada!

Você pode cria o seu próprio BLYNK SERVER. Lembrando que deves abastecer com ENERGY



Questões: 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
https://en.wikipedia.org/wiki/Bluetooth_low_energy_beacon
http://docs.blynk.cc/#getting-started-getting-started-with-the-blynk-app

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