Introdução ao Arduino Cloud IoT: Conecte o ESP8266 ao Arduino Cloud IoT

Tempo de leitura: 7 minutes

Em 2019, a Arduino Platform foi lançada IoT da nuvem do Arduino que é uma solução completa para ajudar entusiastas e profissionais da IoT a criar projetos conectados facilmente. Arduino Nuvem da IoT fornece uma abordagem de pilha completa pronta para uso, combinando hardware, firmware, serviços em nuvem e suporte ao conhecimento necessário para fornecer uma solução de IoT de ponta a ponta. Este Plataforma de nuvem da IoT permite que os usuários coletem, grafiquem e analisem seus dados de sensor, acionem eventos e controlem totalmente seus dispositivos. Dessa forma, os usuários podem automatizar suas casas ou empresas com facilidade, tudo em um único local.

Então, neste tutorial, vamos configurar o NodeMCU-ESP8266 com a IoT da nuvem do Arduino. Para testá-lo, enviaremos. DHT11 dados do sensor da placa para a nuvem e configure um switch que possa controlar o LED conectado ao NodeMCU

 

Arduino Cloud IoT – Principais recursos e limitações

A plataforma Arduino Cloud IoT permite que os usuários escrevam código, compilem e enviem diretamente do navegador, conectem seus dispositivos de IoT e construam painéis em tempo real. Ele gera automaticamente um esboço ao configurar uma coisa nova de acordo com as variáveis definidas. Todos os recursos do Arduino Cloud IoT estão listados abaixo:

Código gerado automaticamente : O Arduino Cloud IoT gera automaticamente um sketch de acordo com as variáveis que o usuário define ao configurar uma coisa, removendo barreiras para usuários que não estão familiarizados com a codificação e o empoderamento de fabricantes de todas as idades e experiências.

Plug & Play onboarding : Usando a plataforma IoT da nuvem Arduino, você pode escrever código, compilar e fazer upload diretamente do seu navegador, conectar seus dispositivos de IoT e criar painéis em tempo real. Portanto, você não precisa passar para o IDE do Arduino para programar o hardware.

Painel móvel “em movimento”: Isso permite que os usuários acessem, verifiquem dados e controlem o monitoramento remoto de sensores de qualquer lugar usando widgets acessíveis.

Integração com outras plataformas: O Arduino Cloud IoT pode ser integrado ao Amazon Alexa, Google Sheets, IFTTT e ZAPIER, que permite aos usuários programar e gerenciar dispositivos usando voz, planilhas, bancos de dados e automatizar alertas usando webhooks. A plataforma também permite que os desenvolvedores criem aplicativos personalizados usando a API do Arduino IoT, com webhooks personalizados para serem adicionados para maior flexibilidade.

Com todos esses recursos, o Arduino Cloud IoT também tem algumas limitações. Uma delas é que ela só funciona com certas placas Arduino e ESP. Todas as placas suportadas estão listadas abaixo:

Placas de Arduino

  • Arduino NANO 33 IoT
  • Arduino MKR Wi-Fi 1010
  • Arduino MKR WAN 1310
  • Arduino MKR WAN 1300
  • Arduino MKR NB 1500
  • Arduino MKR GSM 1400
  • Arduino MKR1000
  • Arduino Portenta H7 (núcleo M7)
  • Arduino Nano RP2040 Connect

ESP e outras placas

  • ESP8266
  • ESP32
  • Pelion
  • LoRa genérico

E usando o plano gratuito Arduino Cloud IoT, os usuários podem adicionar apenas dois dispositivos e ele fornece um tempo de compilação limitado de 200 s/dia. Portanto, se você deseja conectar mais de dois aparelhos, é necessário adquirir um plano premium. Atualmente, o Arduino cloud IoT oferece quatro planos diferentes com diferentes recursos e preços. Todos os planos estão resumidos na imagem abaixo:

Componentes necessários para conectar o ESP8266 ao Arduino Cloud IoT

  • NodeMCU ESP8266
  • Sensor DHT11
  • LED (5 mm)

Diagrama de circuito para conectar ESP8266 ao Arduino Cloud IoT

O diagrama de circuito para enviar dados do sensor DHT11 para a nuvem Arduino IoT é fornecido abaixo.

As conexões são muito simples. O sensor DHT11 é alimentado por 5V e pino GND do NodeMCU. O pino de dados do DHT11 é conectado ao D0 do NodeMCU e o fio positivo do LED é conectado ao pino D7 do NodeMCU.

Configurando o Arduino Cloud IoT

Agora que conectamos o hardware necessário, vamos configurar o Arduino Cloud IoT para ESP8266. Para isso, entre em sua conta do Arduino. Se você ainda não tem uma conta, acesse o Arduino Cloud IoT e crie uma.

Etapa 1: quando a configuração da conta for concluída, adicionaremos um novo dispositivo, ou seja, NodeMCU ao Arduino Cloud IoT. Na nuvem, vá até a guia “Devices”. Em seguida, clique no botão “Add device” button”.

Em seguida, clique em “Set up a 3rd party device”.

Na próxima etapa, precisamos selecionar a placa de desenvolvimento que estamos usando. Primeiro, selecione ESP8266 no tipo de dispositivo e, em seguida, escolha o NodeMCU1.0 no menu suspenso.

Em seguida, renomeie o dispositivo de acordo com seu projeto e clique em Avançar. Uma janela aparecerá com a ID do dispositivo e a chave secreta para esse dispositivo. Você pode anotar ou clicar em “download the PDF” para salvar os detalhes em seu sistema local. Observe que a chave secreta não pode ser recuperada.

Em seguida, clique em CONTINUE para adicionar o dispositivo.

Etapa 2: Depois de adicionar o dispositivo, o próximo passo é criar um Thing. Então vá para a guia “Things” e clique em ‘Criar coisa’, ou click em ‘CREATE THINGS’

Agora, na guia Things, temos três opções para configurar, ou seja, Variáveis, Dispositivo e Rede. Primeiro, conectaremos nosso dispositivo com nossa Thing. Isso pode ser feito clicando no botão do ícone Link na seção “Device”. Isso abrirá uma janela, onde o dispositivo recém-criado deve estar disponível para seleção.

Assim que o dispositivo estiver vinculado, precisamos adicionar algumas variáveis que serão usadas no código. Clique no botão “Add variable”. Isso abrirá uma janela onde você precisa preencher as informações variáveis. Aqui, criaremos três variáveis das quais, uma será usada para LED e duas serão usadas para armazenar valores de temperatura e umidade.

Vamos criar o led_switch primeiro. O tipo de dados é int, a permissão é somente leitura e a política de atualização está em mudança. Uma vez feito isso, clique no botão “Add variable”.

Da mesma forma, adicione as variáveis de ‘temperatura’ e ‘umidade’. O tipo de dados para essas variáveis é float, a permissão é leitura e gravação e a política de atualização está em mudança.

 

Agora, na próxima etapa, precisamos inserir as credenciais do Wi-Fi e a chave secreta é gerada durante a configuração do dispositivo. Para isso, clique no botão ‘Configure’ na seção “Network Section”. Insira as credenciais e clique em ‘Save’.

Etapa 3: Agora que adicionamos o dispositivo e as variáveis, podemos passar para a próxima etapa, que é a criação de um dashboard. Para isso, vá para a guia ‘Dashboard’ e clique no botão ‘Build Dashboard’

Para adicionar os widgets no dashboard, clique no ícone de lápis no canto superior esquerdo, clique no botão ‘Add’ e vá para “Things” e selecione a Coisa. Em seguida, selecione todas as variáveis e clique em “Add widgets”.

A tela final da área de trabalho será semelhante a esta:

Programando NodeMCU para enviar dados para a nuvem

Agora concluímos a configuração do Arduino Cloud IoT, a próxima etapa é programar o NodeMCU para ler os dados do DHT11 e enviá-los para o Arduino Cloud. Para fazer isso, precisamos ir até a guia “Sketch”.

Quando você adiciona qualquer variável em Things, o Sketch na nuvem é atualizado automaticamente de acordo com as variáveis. Portanto, a maior parte do código já está escrito e só precisamos adicionar algumas linhas para o sensor DHT11. O código completo é fornecido abaixo.

Quando o código estiver pronto, selecione Placa e Porta e aperte o botão de upload no canto superior esquerdo.

Feito isso agora, você pode controlar o LED e monitorar os dados do sensor DHT11 usando a plataforma Arduino Cloud IoT.

Espero que tenha gostado de construir o projeto e aprendido algo novo, se você tiver alguma dúvida, deixe-os na seção de comentários abaixo.

Código

/* 
  Sketch generated by the Arduino IoT Cloud Thing "Untitled"
  https://create.arduino.cc/cloud/things/683f6eaa-416f-4d3e-b1f1-29fc63c38204 

  Arduino IoT Cloud Variables description

  The following variables are automatically generated and updated when changes are made to the Thing

  float umidade;
  float temperatura;
  bool led_switch;

  Variables which are marked as READ/WRITE in the Cloud Thing will also have functions
  which are called when their values are changed from the Dashboard.
  These functions are generated with the Thing and added at the end of this sketch.
*/

#include "arduino_secrets.h"
#include "thingProperties.h"
#include "DHT.h"
#define DHTTYPE DHT11   // DHT 11
#define dht_dpin 1
DHT dht(dht_dpin, DHTTYPE); 
int LED = D0;

void setup() {
  // Initialize serial and wait for port to open:
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  // This delay gives the chance to wait for a Serial Monitor without blocking if none is found
  delay(1500); 

  // Defined in thingProperties.h
  initProperties();

  // Connect to Arduino IoT Cloud
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  
  /*
     The following function allows you to obtain more information
     related to the state of network and IoT Cloud connection and errors
     the higher number the more granular information you’ll get.
     The default is 0 (only errors).
     Maximum is 4
 */
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
}

void loop() {
  ArduinoCloud.update();
  // Your code here 
  dht_sensor_getdata();
}

void dht_sensor_getdata()
  {
    float hm= dht.readHumidity();
    Serial.print("Umidade ");
    Serial.println(hm);
    float temp=dht.readTemperature();
    Serial.print("Temperatura ");
    Serial.println(temp);
    umidade=hm;
    temperatura=temp;
    //msg="Temperatura = " + String (temperature)+"  Uumidade = " + String(humidity);
  }

/*
  Since LedSwitch is READ_WRITE variable, onLedSwitchChange() is
  executed every time a new value is received from IoT Cloud.
*/
void onLedSwitchChange()  {
  // Do something
  if(led_switch){
    digitalWrite(LED, LOW);
  }
  else{
    digitalWrite(LED, HIGH);
  }
}

void onUmidadeChange()  {
}

void onTemperaturaChange()  {
}