MONTAGEM
Adquirimos então os seguintes componentes
-Botão de RESET;
-Botão de Modo BOOTLOADER (W102);
-Plugável no PROTOBOARD;
-Acesso às várias GPIOS;
Pequena
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
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.
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.
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
https://ricardoadulis.sharepoint.com/:f:/r/sites/smartcore/Shared%20Documents/---%20SmartCore%20-%20tecnico%20publico/NINA%20B302/Arduino_variant?csf=1&web=1&e=7URfTD
Ao copiá-los e executar o ARDUINO teremos o NINA B302 na lista.
ÓTIMA REFERENCIA PARA PINOS DO ARDUINO E PINOS (GPIOS) DO NINA B302
https://www.u-blox.com/sites/default/files/NINA-B3_DataSheet_%28UBX-17052099%29.pdf
BREAKOUT B3 | BREAKOUT W1 | |||
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 LIB WIFI GENERIC - EXEMPLOS QUE USAM W102 COPROCESSOR
Thanks to Khoi Hoang to help to port WIFI GENERIC to NINA B302
https://github.com/khoih-prog/WiFiNINA_Generic
O IFTTT e o Adafruit IO são duas plataformas de nuvem populares para criar projetos baseados em IoT (Internet of Things) com facilidade e rapidez. Também usamos outro aplicativo Android popular "Blynk" para controlar o NINA B302 GPIO usando o telefone inteligente. Com algumas pequenas alterações no hardware, você pode substituir o LED por qualquer eletrodoméstico CA para controlá-lo remotamente de qualquer lugar usando a Internet.
Usaremos o Google Assistant com Adafruit IO para controlar um LED com NINA B302. Aqui usamos o IFTTT para acessar o Google Assistant e controlar o LED por comandos de voz. O NINA B302 foi programado usando o Arduino IDE.
Components Required
- Dispositivo ativado pelo assistente do Google.
- Conta no Adafruit IO
- Conta no IFTTT
- Conta do Google - a mesma conta para a qual você está usando o Google Assistant.
Passo1: Configurando a conta Adafruit IO para LED controlado por IOT
- Agora clique em Ações e crie um novo feed. Em seguida, ele solicitará que você dê um nome ao seu feed. Estou dando a ele LED_Control, você pode fornecer de acordo com você e depois criar e seu feed é criado.
- Agora vá para "Painéis" no menu à esquerda. Clique em Ações e, em seguida, clique em criar um novo painel, dê o nome que desejar; Estou dando "LEDSwitch" e, em seguida, clique em Criar e seu painel será criado.
- Agora abra seu novo painel clicando nele e você será direcionado para uma página em branco. Clicar no botão azul + permitirá adicionar novos componentes de interface do usuário ao painel.
- Para este projeto, só preciso de um botão; portanto, selecione a primeira opção; ele solicitará que você selecione o feed; selecione o que você acabou de criar e mantenha os padrões para o restante das configurações.
- Depois de selecionar a janela do painel, ficará assim:
- Durante a programação, você precisará da sua chave AIO exclusiva, portanto, para isso, clique no botão de chave no canto direito da sua janela.
- Durante a programação, você precisará da sua chave AIO exclusiva, portanto, para isso, clique no botão de chave no canto direito da sua janela.
Passo 2. Conectando-se ao Google Assistant através do IFTTT
Nesta etapa, conectaremos nosso Assistente do Google ao Adafruit IO MQTT Broker para permitir o controle das luzes com comandos de voz. Para fazer isso, estou usando a plataforma IFTTT (If This Then That).
Para fazer isso, você precisa seguir o seguinte procedimento:
Vá para o site www.IFTTT.com e crie uma nova conta, se ainda não o tiver. Você também pode se inscrever usando sua conta do Google.
Depois de criar uma conta, clique no seu nome de usuário no canto direito da janela e clique no botão "Novo Applet".
- Depois de clicar em Novo miniaplicativo, você encontrará uma janela que pergunta "Se isso, então aquilo". O termo "SE ESTE ENTÃO QUER" significa que algo acontece no "Isso", então nós fazemos algo no "Isso".
- Clique no botão + azul e pesquise "Assistente do Google" e selecione "Diga uma frase simples" no menu de gatilhos específicos. Isso solicitará alguns detalhes, preencha de acordo com você e crie um gatilho.
- Agora você deve executar a ação. Clique no botão + de "Isso", procure Adafruit e clique em "Enviar dados para o Adafruit IO"
- Agora, ele solicitará que você selecione o nome do Feed; portanto, selecione o feed que você criou anteriormente para este projeto e, em Dados a serem salvos, enviaremos ON para esse applet e clique na ação Criar.
- Depois de criar este applet, você deve criar outro applet para desligar o LED. Você precisa seguir as mesmas etapas para criar outro applet.
- Após criar os dois applets, vá para "Meus Applets" e você pode ver os dois applets aqui.
Depois de instalar esta biblioteca, você estará pronto para usar o Adafruit IO com o NINA B302.
O código completo para este projeto é dado no final deste artigo, explicarei brevemente sobre o código e dirá onde você deve fazer as modificações.
No início do programa, você deve adicionar as seguintes bibliotecas:
#include <WiFiNINA_Generic.h>
#include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h"
#include <avr/dtostrf.h> //incluir em WString.h
Agora você precisa definir o SSID da rede, a senha, o nome de usuário do Adafruit e a chave AIO que você obteve durante a instalação do Adafruit IO.
#define WLAN_SSID "xxxxxx" #define WLAN_PASS "xxxxxxxxxxxx" #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #define AIO_KEY "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Agora você precisa definir o LED para o qual está levando sua saída.
int output=8; // NINA B302 P1.09, PAD 33
Agora, crie os objetos WiFiClient e Adafruit_MQTT_Client como variáveis globais e instancie o feed do seu LED_Control.
WiFiClient client; Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); Adafruit_MQTT_Subscribe LED_Control = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/LED_Control");
Agora, na função de configuração , definiremos nosso pino de LED, taxa de transmissão e nos conectaremos ao WiFi e ao MQTT Server.
void setup() { Serial.begin(115200); delay(10); pinMode(8,OUTPUT); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(WLAN_SSID); WiFi.begin(WLAN_SSID, WLAN_PASS); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); mqtt.subscribe(&LED_Control); }
Agora, na função Loop, precisamos verificar se nossa assinatura foi atualizada e agir em conformidade.
void loop() { MQTT_connect(); Adafruit_MQTT_Subscribe *subscription; while ((subscription = mqtt.readSubscription(5000))) { if (subscription == &LED_Control) { Serial.print(F("Got: ")); Serial.println((char *)LED_Control.lastread); if (!strcmp((char*) LED_Control.lastread, "ON")) { digitalWrite(2, HIGH); } else { digitalWrite(2, LOW); } } } }
Por fim, inclua a função MQTT Connect para que a conexão MQTT seja estabelecida.
void MQTT_connect() { int8_t ret; if (mqtt.connected()) { return; } Serial.print("Connecting to MQTT... "); uint8_t retries = 3; while ((ret = mqtt.connect()) != 0) { Serial.println(mqtt.connectErrorString(ret)); Serial.println("Retrying MQTT connection in 5 seconds..."); mqtt.disconnect(); delay(5000); retries--; if (retries == 0) { while (1); } } Serial.println("MQTT Connected!"); }
Quando seu código estiver pronto para as modificações, você estará pronto para carregá-lo no NINA B302 a partir do IDE do Arduino.
Testando o controle do LED com o Google Assistant
Após o upload do código, abra seu monitor serial e seu monitor serial deverá ficar assim:
Agora abra o assistente do Google no seu Android e dê um comando de voz como "Ligar o LED" ou "Desligar o LED" e ele responderá como você definiu anteriormente e também observará a alteração do estado do LED.
DÚVIDAS/QUESTIONS
Nenhum comentário:
Postar um comentário