Como enviar tweets com um Arduino

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Para o nosso artigo final da IFTTT, faremos o Arduino UNO e um módulo ESP8266 twittar as leituras de temperatura e umidade de um sensor DHT a cada hora.

Anúncio PCBWay

IFTTT

Vamos fazer uma revisão.

O IFTTT (If This Then That) é uma plataforma da Web gratuita que conecta dispositivos e serviços como Gmail, Twitter, Instagram, Dropbox, Fitbit, Amazon Alexa e Assistente do Google. Ele tece esses serviços de uma maneira que o Instagram pode usar as funções de outro serviço como o Dropbox, sem problemas.

O IFTTT funciona como uma instrução if padrão – se essa condição for acionada, execute esta ação.

Além disso, o IFTTT usa Applets. Estes são pequenos programas que usam um gatilho para realizar eventos. Um applet pode fazer várias coisas, como postar tweets em intervalos regulares, como o nosso projeto hoje.

Para integrar o IFTTT ao ESP8266, precisamos de webhooks. Webhooks é um serviço que aciona eventos via solicitações HTTP.

Um sistema simples de webhooks funciona como abaixo:

Como enviar tweets com um Arduino 1
Figura 1: Sistema Webhooks

O gatilho inicial de um sistema de webhooks é uma solicitação HTTP. Eles podem ser acionados por um interruptor tátil, botão digital, nível de som, limite de temperatura e outros fatores. Para criar uma solicitação da Web para acionar Webhooks, você precisa ter um nome de chave e de evento. A chave fornece autenticação de webhooks à sua conta IFTTT enquanto o nome do evento especifica a ação a ser acionada quando uma condição é atendida. Sem um desses dois, não há como saber de quem e que ação há para desencadear.

Preparando o hardware

Para este projeto, vamos conectar um sensor DHT com o Arduino UNO e transferir os valores de temperatura e umidade para o ESP8266 a cada hora. O módulo ESP8266 está configurado para enviar uma solicitação POST ao receber os dados. Por fim, a solicitação POST aciona o applet, que grava um tweet na conta que você registrou no IFTTT.

Leia Também  Snippet em destaque do Google - Como alcançar a posição zero no Google!

Para fazer isso, precisamos dos seguintes componentes:

Como enviar tweets com um Arduino 2
Como enviar tweets com um Arduino 3
Figura 2: Conexões

Configurando o IFTTT

Primeiro, acesse o site da IFTTT e crie uma conta.

Depois de fazer login, vá para a barra de ferramentas superior direita na sua página inicial e clique em criar. Isso o direciona para uma página onde você pode começar a criar um Applet.

Como enviar um email com o ESP8266 e o ​​IFTTT - Criando conta
Figura 3: Criando um applet

Em seguida, defina uma condição clicando em “+ Isto”.

Como enviar um email com o ESP8266 e o ​​IFTTT - Criando conta Etapa 2
Figura 4: Esta condição

Em seguida, procure Webhooks.

Como enviar tweets com um Arduino 4
Figura 5: Webhooks

Em webhooks, escolha receber uma solicitação da web. Clique em criar gatilho depois de nomear seu evento.

Como enviar tweets com um Arduino 5
Figura 6: Criando o gatilho

Agora, para definir a ação, clique em “+ Isso”.

Como enviar um email com ESP8266 e IFTTT - Configuração de ação
Figura 7: Essa condição

Em seguida, procure o Twitter como serviço de ação.

Como enviar tweets com um Arduino 6
Figura 8: Escolhendo o Twitter

Se você ainda não tem uma conta no Twitter emparelhada com o IFTTT, um prompt será exibido. Clique em conectar para registrar seu twitter. Você precisa fazer login na sua conta depois disso.

Como enviar tweets com um Arduino 7
Figura 9: Conectando o Twitter

Em seguida, autorize o IFTTT a acessar sua conta do twitter.

Como enviar tweets com um Arduino 8
Figura 10: Autorizando o IFTTT

Após o registro da sua conta, retorne ao IFTTT. Selecione “Postar um Tweet” como a ação.

Como enviar tweets com um Arduino 9
Figura 11: Escolhendo a ação

Por fim, componha o tweet. Existem variáveis ​​convenientes que você pode usar para compor sua mensagem: EventName que contém o nome do evento; OccurredAt que exibe a data e a hora em que o evento é acionado e; Value que pode conter qualquer número que você deseja enviar para o servidor IFTTT.

Como enviar tweets com um Arduino 10
Figura 12: Construindo o tweet

Verifique se você colocou os detalhes corretos.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Como enviar tweets com um Arduino 11
Figura 13: Revisão e conclusão

O applet está pronto agora. Agora, para ativar o seu dispositivo Android para as notificações por SMS, pesquise IFTTT no Google Playstore e instale.

Após a instalação, faça login com suas credenciais IFTTT para emparelhar com sua conta.

Adquirindo a chave

Para acionar a receita do Applet, precisamos da chave junto com o nome do evento em nossa solicitação HTTP. Para obter sua chave IFTTT exclusiva, vá para a página inicial e pesquise Webhooks na barra de pesquisa no canto superior esquerdo. Você pode encontrar os webhooks em serviços.

Como enviar tweets com um Arduino 12
Figura 14: Verificando a documentação

Agora, na página Webhooks, clique no link Documentação no canto superior direito da página.

Por fim, uma página que contém sua chave pessoal e a solicitação da Web completa para o seu evento é exibida. Essa chave é exclusiva para todas as contas IFTTT. Ao incluir o nome do evento, você pode disparar uma ação IFTTT via Webhooks. Finalmente, vamos prosseguir para o nosso código.

Leia Também  Como gerar € 12.000 com um congresso on-line em um nicho emergente e sem gastar muito com o Facebook Ads.
Como enviar tweets com um Arduino 13
Figura 15: Adquirindo a chave

Código para o Arduino

#include "SerialTransfer.h"
#include <DHT.h>

#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float t,h;

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  dht.begin();
}

void loop()
{
  t = dht.readTemperature();
  h = dht.readHumidity();  
  Serial.println
  Serial.println(h);
  myTransfer.txObj(status, sizeof
  myTransfer.sendData(sizeof(h));
  delay(3600000);
}

Código para o módulo ESP8266

#include <ESP8266WiFi.h> 
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include "SerialTransfer.h"

SerialTransfer myTransfer;

const char* ssid     = "Wifi Name";
const char* password = "WiFi Password";

const char* resource = "https://maker.ifttt.com/trigger/YOUR EVENT NAME HERE/with/key/YOUR KEY HERE";
const char* server = "maker.ifttt.com";

void setup() 
{
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  myTransfer.begin(Serial);
}

void loop() 
{
  if(myTransfer.available())
  {
    float t,h;
    myTransfer.rxObj(myFloat, sizeof(myFloat));
    HTTPClient http;
    http.begin(serverName);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    String httpRequestData = "value1=" + String
    int httpResponseCode = http.POST(httpRequestData);
    http.end();
  }
  delay(10000);
}  

Código para NodeMCU

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <DHT.h>

#define DHTPIN D5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int t,h;

const char* ssid = "Centropolis409";
const char* password = "ChitoMikeArnelRuz409!";

const char* serverName = "http://maker.ifttt.com/trigger/YOUR EVENT NAME HERE/with/key/YOUR KEY HERE";

unsigned long lastTime = 0;
unsigned long timerDelay = 10000;

void setup() 
{
  Serial.begin(115200);
  dht.begin();
  delay(100);
  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while(WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());
 
  Serial.println("Timer set to 1 hour (timerDelay variable), it will take 1 hour before publishing the first reading.");
}

void loop() 
{
  if ((millis() - lastTime) > timerDelay) 
  {
    if(WiFi.status()== WL_CONNECTED)
    {
      HTTPClient http;
      http.begin(serverName);
      t = dht.readTemperature();
      h = dht.readHumidity();  
      Serial.println
      Serial.println(h);
      http.addHeader("Content-Type", "application/x-www-form-urlencoded");
      String httpRequestData = "value1=" + String
      int httpResponseCode = http.POST(httpRequestData);
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
      http.end();
    }
    else 
    {
      Serial.println("WiFi Disconnected");
    }
    lastTime = millis();
  }
}

Código Explicação

Assim como antes, usamos o SerialTransfer.h biblioteca para enviar os dados do sensor do Arduino UNO para o módulo ESP. Você pode fazer o download aqui.

Estas são as linhas importantes que usamos na biblioteca:

  • SerialTransfer myTransfer – cria uma instância SerialTransfer chamada myTransfer.
  • myTransfer.begin(Serial) – inicia a comunicação serial usando a taxa de transmissão serial.
  • myTransfer.txObj(status, sizeof(status)) – cria um objeto feito especificamente para status.
  • myTransfer.sendData(sizeof(status)) – envia o status em um pacote adequado ao seu tamanho.
  • myTransfer.rxObj(status, sizeof(status)) – recebe status do remetente.
Leia Também  Planejamento - Noções básicas de auto-emprego bem sucedido

Primeiro, escrevemos o programa para o Arduino UNO. O trabalho principal da UNO é ler os dados do sensor DHT e enviá-los ao módulo ESP a cada hora. Fazemos isso usando o DHT.h biblioteca, que você pode obter neste link. Para usar corretamente a biblioteca, é necessário especificar o pino em que o sensor está conectado e o tipo de sensor DHT que você está usando. Em seguida, criamos um objeto DHT usando esses dois. O código deve ficar assim: DHT dht(DHTPIN, DHTTYPE). Depois de criar o objeto, inicializamos o sensor usando dht.begin() para usar funções como dht.readTemperature() e dht.readHumidity para obter os dados do sensor. Finalmente, usamos o SerialTransfer.h para enviar os dados para o módulo ESP.

Por outro lado, o programa para o módulo ESP simplesmente detecta os dados recebidos do Arduino e os envia ao IFTTT usando HTTP POST. Primeiro, para conectar-se à Internet, concatenamos cadeias de caracteres para o seu nome WiFi, senha, URL de solicitação da Web e servidor do fabricante IFTTT usando const char*. Em seguida, usando WiFi.mode(WIFI_STA), declaramos o módulo ESP8266 como uma estação para impedir que ele seja padronizado para outros modos. Com WiFi.begin e myTransfer.begin, inicializamos a conexão WiFi e a comunicação serial, respectivamente. Ao contrário do artigo anterior sobre o envio de mensagens de texto usando o Arduino, agora usamos ESP8266HTTPClient.h e WiFiClient.h bibliotecas para facilitar o envio da solicitação HTTP. Então agora só precisamos chamar o http.POST(httpRequestData) para enviar a solicitação. Não são necessários mais símbolos enigmáticos.

Também incluí o código original em que baseei meus programas. É para um kit de desenvolvimento do NodeMCU. Você pode ler o tutorial completo aqui. O bom de usar o NodeMCU é que você não precisa usar a comunicação serial para enviar os dados do sensor. Isso acelera um pouco as coisas, pois a conexão serial é lenta. Isso também facilita a depuração do seu projeto, pois ele usa componentes menores.

Demonstração

Após o upload do código, o Arduino envia a solicitação POST imediatamente.

Como enviar tweets com um Arduino 14
Figura 16: Primeiro Tweet

Depois de uma hora, recebi outro tweet.

Como enviar tweets com um Arduino 15
Figura 17: Segundo Tweet

Como enviar tweets com um Arduino 2
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br