Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Monitoramento doméstico inteligente baseado em Alexa

Componentes e suprimentos

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Sensor DHT11 de Temperatura e Umidade (4 pinos)
× 1
ControlEverything.com CONTROLADOR DE RELÉ DE 4 CANAIS PARA I2C
× 1
Sensor de obstáculo IR
× 1
câmera
× 1
Fios de jumpers (genérico)
× 1

Aplicativos e serviços online

Arduino IDE
Amazon Alexa Skills Kit
Amazon Alexa echosim.io
API ThingSpeak
Backendless
Pushingbox

Sobre este projeto







Introdução:


No mundo atual, as pessoas passam mais tempo no local de trabalho do que em suas casas. Daí a necessidade de um sistema de monitoramento residencial onde as pessoas possam conhecer as condições da casa enquanto estão no trabalho. Seria ainda melhor se alguém pudesse perguntar a "alguém" sobre sua casa durante o horário de trabalho. Isso pode ser feito usando o Amazon Alexa como um assistente que pode fornecer ao usuário as informações necessárias sobre sua casa.

Não só o local de trabalho, os usuários podem conhecer as condições da casa em qualquer lugar do mundo, desde que tenham uma conexão com a internet e um dispositivo Amazon Alexa.

As seguintes funções são implementadas neste projeto:

1) Controle os dispositivos domésticos como ventilador e luz

2) Informa o status dos dispositivos

3) Informa as condições climáticas da casa (temperatura e umidade)

4) Envia o instantâneo do interior da casa para o usuário via Gmail quando necessário.

5) Envia notificação em caso de -

* Intruso (também envia foto)

* Fogo

* Convidado (também envia foto)

Etapas envolvidas no projeto:





ETAPA 1:Programação do Arduino e ESP8266


Baixe o Arduino IDE do site oficial:https://www.arduino.cc/en/Main/Software

Abra o IDE do Arduino e vá para arquivo-> preferências-> no tipo de URL do gerenciador de placa adicional - http://arduino.esp8266.com/stable/package_esp8266com_index.json

Vá para ferramentas -> placas -> Gerenciador de placas -> e instale o pacote esp8266 encontrado por último.

Para programar o Arduino basta conectar o cabo USB do arduino ao computador e selecionar Arduino / Genuino UNO em ferramentas-> placas. Certifique-se também de selecionar as portas COM de direitos em Ferramentas (o número da porta COM pode ser encontrado no Gerenciador de dispositivos). Escreva o programa requerido, compile-o e clique em upload se não houver erros.

Para programar ESP8266 faça a conexão conforme mostrado no diagrama



conecte o usb do arduino ao computador. Em ferramentas-> placa-> selecione Generic ESP8266 e selecione também a porta COM correta. Escreva o programa requerido, compile-o e clique em upload se não houver erros. Certifique-se de conectar o Arduino RST ao GND (o arduino atua como um programador no ESP8266).

Neste projeto, primeiro o ESP8266 é programado e, em seguida, as conexões do circuito são removidas. Em seguida, o circuito é reconectado conforme mostrado na figura chamada "Conexões do circuito". E então o arduino é programado





ETAPA 2:Configurando as coisaspeak.com


Crie uma conta em thingspeak.com.

usamos canais no thingspeak para armazenar as informações de controle do dispositivo e encaminhá-las para arduino / alexa. também armazenamos os valores de temperatura e umidade nos canais. É como um local de armazenamento para as informações.

vá para canais -> meus canais e crie um novo canal. Dê nome e descrição aos seus canais.

em nosso projeto, precisamos de 8 canais (você pode fazer o trabalho usando menos canais, mas será um pouco complicado durante a programação). Além disso, o thingspeak tem uma restrição de tempo durante a atualização de um canal. Deve haver um intervalo de 10-15 segundos entre as atualizações sucessivas de um determinado canal.

Oito canais com seus valores e significados são dados abaixo

nome do canal (significado do valor1, significado do valor2, etc):

1) Controle de dispositivo (0 -lightON, 1- lightOff, 2- ventilador ligado, 3- ventilador desligado)

2) status da luz (0- luz apagada, 1- luz acesa)

3) status do ventilador (0- ventilador desligado, 1- ventilador ligado)

4) umidade (valor da umidade)

5) temperatura (valor da temperatura)

6) notificação de intruso (1- alerta de intruso)

7) notificação de incêndio (1- alerta de incêndio)

8) notificação de convidado (1- alerta de convidado)

quando você clica em qualquer canal, você pode ver seu id de canal e escrever chaves de API na guia de chaves de API. o id do canal é necessário para obter a informação / valor no canal. e a chave de gravação é necessária para armazenar um valor no canal.

A solicitação de http para atualizar um canal é:

https://api.thingspeak.com/update?api_key= &field1 =

é substituída pelas teclas de escrita correspondentes do canal e o valor pode ser (0/1 no caso de controle de dispositivo ou valores de temperatura / umidade)

A solicitação de http para ler o valor de um canal é:

https://api.thingspeak.com/channels/ /field/field1/last.html

é substituído pelo id do canal particular do canal do qual queremos ler.





ETAPA 3:o programa


O programa está dividido em 3 partes:

A) Programa para Arduino :o programa para arduino é muito simples. Ele recebe os dados do ESP8266 em série e com base nos dados recebidos, os dispositivos são controlados. Mais informações sobre o programa podem ser encontradas nos comentários do próprio programa.

B) Programa para ESP8266 : o programa para ESP8266 envolve 3 coisas

1) atualização de temperatura e umidade usando solicitação http
  client.print (String ("GET") + "/ update? key = &field1 =" + umidade + "HTTP / 1.1 \ r \ n" + "Host:" + host + " \ r \ n "+" Conexão:fechar \ r \ n \ r \ n "); // atualizar umidade client.print (String ("GET") + "/ update? key = &field1 =" + temperatura + "HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Conexão:fechar \ r \ n \ r \ n "); // atualizar temperatura  

a é substituída pela tecla de escrita correspondente encontrada no canal Thingspeak para umidade e temperatura, respectivamente. e o host é api.thingspeak.com.

baixe a biblioteca dht em:https://github.com/adafruit/DHT-sensor-library

2) leitura dos canais correspondentes da linguagem das coisas e dispositivo de controle com base nos valores obtidos:
  client.print (String ("GET") + "/ channels /  /field/field1/last.html HTTP / 1.1 \ r \ n" + "Host:" + host + " \ r \ n "+" Conexão:fechar \ r \ n \ r \ n ");  

onde é substituído pelo id do canal correspondente encontrado no thingspeak.

3) Envio de alerta em caso de alta temperatura através da caixa de pressão
  String host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushbox? devid = HTTP / 1.1 \ r \ n" + "Host :"+ host1 +" \ r \ n "+" Conexão:fechar \ r \ n \ r \ n ");  

onde é substituído pelo id do seu dispositivo no pushbox.





PASSO 4:Configurar linkit smart 7688 duo e webcam


I Neste projeto, a webcam e o linkit smart 7688 duo são usados ​​para capturar a foto necessária e enviá-la ao usuário. Você também pode usar o módulo de câmera arduino e fazer a interface com o arduino ou usar qualquer câmera IP.

pressione e segure o botão wi-fi no linkit smart 7688 por 20 segundos para reiniciar a placa. Depois que a configuração do wi-fi for redefinida, você poderá ver o nome do ponto de acesso nas conexões de rede sem fio. Agora conecte o computador a essa rede.

depois de conectá-lo, abra o navegador e digite 192.168.100.1 na barra de endereço. Você poderá ver seu portal.

defina uma senha para fazer login em seu portal.

Depois de fazer o login, vá para a guia rede e selecione o modo Estação (precisamos dele (linkit smart 7688 duo) para acessar a internet) e conecte-o à sua rede Wifi e pressione Configurar e reiniciar.

Depois que a placa for reiniciada, ela receberá um endereço IP local. Descubra o endereço usando qualquer ferramenta IP ou o portal do roteador. No meu caso, foi 192.168.1.4.

Agora digite o endereço IP local na barra de endereços do navegador. certifique-se de que o computador está conectado à mesma rede que o linkit smart. Você será solicitado a fazer o login novamente.

Para habilitar o streaming da webcam, você deve habilitar o MJPG streamer (mjpg-streamer é um aplicativo de linha de comando que copia quadros JPEG de um ou mais plug-ins de entrada para vários plug-ins de saída). Para fazer isso no portal, vá até o local OpenWrt no canto superior direito. você precisa fazer o login novamente.

Depois de fazer o login, vá para a guia de serviço e marque Habilitar streamer MJPG e atribua um número de porta para este serviço. Atribuí 4440. Clique em salvar e aplicar.

Após a configuração, você pode conectar sua webcam ao host usb linkit smart 7688 duo por meio de um cabo OTG.

Agora, para ver o Stream, abra o navegador e digite : na barra de endereço. no meu caso é 192.168.1.4:4400

para tirar a foto instantânea, digite o comando :? action =snapshot

Agora, esta imagem está disponível localmente, mas precisamos disponibilizá-la para o serviço de push box. Para conseguir isso, precisamos fazer o encaminhamento de porta. O encaminhamento de portas pode ser feito no portal do roteador. A identificação do processo é diferente para roteadores diferentes. Basta google para saber como encaminhar a porta para um roteador específico. Geralmente está disponível no serviço NAT.

Após o encaminhamento de porta, o uso pode acessar esta porta (ou seja, 4440) do seu IP externo. O IP externo pode ser encontrado ao amarrar "whats my ip" no google.

Você precisa colocar este endereço, ou seja, http:// :? Action =snapshot no pushbox (que é explicado na próxima etapa) para que o pushbox possa acessar esta imagem e anexá-la ao e-mail e envie para você sempre que necessário.

Você também pode armazenar a imagem no cartão SD, pois o Linkit smart 7688 duo também vem com um slot para cartão SD para armazenar informações.

mais informações sobre isso podem ser encontradas em:https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/get-started/get-started-with-the-linkit-smart-7688-duo -quadro de desenvolvimento/





ETAPA 5:Configurando PushingBox


Pushbox é usado para enviar notificações sobre diferentes alertas no projeto para o gmail.

fazer login no pushbox usando a conta do Google:https://www.pushingbox.com/

vá para meus serviços -> adicionar serviço. existem muitos serviços para escolher, como Gmail, Twitter, notificação push para Android, etc ...

selecione Gmail (pois precisamos enviar a foto como anexo) e preencha a configuração do nome do gmail e a id do gmail do usuário para quem o alerta deve ser enviado.

vá para meus cenários e crie um novo cenário. dê nome ao cenário (ex:ALERTA) adicione o serviço criado anteriormente.

escreva o assunto e o corpo do e-mail adequados e digite o url para tirar a captura de tela da webcam para anexar a foto. Crie diferentes cenários para diferentes alertas.

api para executar um cenário de push box é:http://api.pushingbox.com/pushingbox?devid=





ETAPA 6:Criando a habilidade Alexa usando Backendless


backendless é usado para criar a habilidade alexa. É uma programação simples de arrastar e soltar usado para criar habilidade alexa (ou qualquer programa) que pode ser acessado por API backendless.

crie uma conta no backendless:https://backendless.com/
  • Faça login em sua conta em uma conta sem backend. clique em Criar aplicativo e dê um nome ao seu aplicativo /
  • Clique no ícone Business Logic localizado na barra de ícones à esquerda. Você verá a tela API SERVICES.
  • Clique no ícone “+” para criar um novo serviço. Certifique-se de selecionar CODELESS no pop-up “Novo serviço”. Digite “AlexaService” para o nome do serviço. Clique no botão SALVAR:
  • Backendless cria o serviço de API e solicitará que você crie um método para o serviço. Este será o método que processará as solicitações de Alexa. Digite “handleRequest” para o nome do método. Certifique-se de selecionar POST para a operação REST e declare um argumento com o nome de “req” e digite “Qualquer Objeto” conforme mostrado abaixo:

Backendless cria um espaço reservado para a lógica sem código do método. Clique no botão EDITAR para iniciar a mudança para o Codeless Logic Designer.

No bloco de espaço reservado da função criada, clique na área que diz “doSomething” e altere para “sendAlexaResponse”. Esta função é usada para fazer alexa dizer algo que pode ser passado como argumento. Clique no botão SALVAR para que a função seja salva:

Clique no ícone de engrenagem localizado no bloco roxo ao lado da palavra “Função”. Adicione dois argumentos arrastando os blocos de entrada conforme mostrado na imagem abaixo. Atribua os nomes dos argumentos como “whatToSay” e “waitForResponse“. Observe que, à medida que você adiciona argumentos, a área de blocos de contexto é preenchida automaticamente com os blocos que representam os valores dos argumentos:

Modifique a lógica da função para que se pareça com a imagem abaixo. Para os blocos “Criar Objetos”, use o ícone de engrenagem para alterar o nome das propriedades do objeto. Não se esqueça de salvar seu trabalho clicando no botão SALVAR.

Agora que a função personalizada foi construída, volte para o método handleRequest do serviço AlexaService. Clique na categoria Funções personalizadas na barra de ferramentas à esquerda e arraste o bloco sendAlexaResponse para conectar com o conector de retorno do seu método de serviço:

as etapas acima também podem ser encontradas em seu site:https://backendless.com/developing-alexa-skill-without-writing-any-code-part1-codeless-in-backendless-mbaas/

https://backendless.com/developing-an-alexa-skill-without-writing-any-code-part2-slots/

Clique no nó “Adicionar Novo” em Funções na seção BROWSER. No bloco de espaço reservado da função criada, clique na área que diz “doSomething” e altere para “getIntentName”

modifique os blocos para que a função fique assim:



isso obterá o nome do intent com base em exemplos de expressões. Volte para serviços de API -> -> lidar com a solicitação na seção do navegador. Variáveis ​​e lógica são criadas a partir da seção do sistema. Crie as seguintes variáveis:

em seguida, armazenamos o nome da intenção na variável de solicitação. E então compare com as intenções. por exemplo, se a solicitação for "introdução", a variável de resposta será definida como "oi! Eu posso controlar ......." e essa resposta será lida em voz alta por alexa, finalmente.

modifique o bloco conforme mostrado abaixo:

se a solicitação for LightsOn intent, então atualizamos o canal thingspeak para '0' usando http get request e, ao mesmo tempo, atualizamos o status do dispositivo (1/0 dependendo de On / Off). A mesma coisa é repetida para LightsOff, FanOn e FanOff.

Para o tempo, lemos no canal de temperatura e umidade e armazenamos o resultado na variável de resposta. Como o canal fornece apenas valores, acrescentamos textos para tornar a resposta significativa:

para um instantâneo da sala de estar, executamos o cenário pushbox:

para o status do dispositivo, lemos informações do canal de status do thingspeak:

para notificações e alertas que lemos nos canais de alerta (incêndio, intruso e visitante):

com base nos valores que obtemos do campo de notificação, as mensagens de alerta correspondentes são armazenadas na variável respond0. se não houver notificação, nenhuma mensagem de notificação será armazenada.

assim que a notificação for lida, o '0' será atualizado nos canais de notificação para que alexa não leia a mesma notificação novamente. Então, finalmente, com base na solicitação, a variável respond0 / respond é lida em voz alta.

PS:Depois de criar o modelo necessário no backendless, clique em implantar modelo no canto superior direito da tela sem código para implantar o modelo.





PASSO 7:Configurando a habilidade Alexa no Amazon Developer Console:


vá para o console do desenvolvedor amazon e faça login usando a conta amazon. https://developer.amazon.com/

vá para o console do desenvolvedor e clique na guia ALEXA. Clique em alexa skills kit para começar.

crie um tipo de habilidade personalizado, dê nome e nome de invocação à habilidade.

as respectivas intenções e expressões de amostra são fornecidas no código a seguir.
  {"languageModel":{"intents":[{"name":"AMAZON.CancelIntent", "samples":[]}, {"name":"AMAZON.HelpIntent", "samples" :[]}, {"name":"AMAZON.StopIntent", "samples":[]}, {"name":"Camera", "samples":["envie um instantâneo da minha sala de estar", " envie um instantâneo da minha casa "," envie uma foto da minha sala "," envie uma foto da minha casa "]," slots ":[]}, {" nome ":" FanOff "," samples ":[" desligue o ventilador "," desligue o ventilador "," desligue o ventilador "," desligue o ventilador "]," slots ":[]}, {" name ":" FanOn "," samples " :["ligar a ventoinha", "ligar a ventoinha", "ligar a ventoinha", "ligar a ventoinha"], "slots":[]}, {"nome":"Introdução", "amostras":["o que você pode fazer", "o que você pode fazer", "o que você pode fazer por mim"], "slots":[]}, {"name":"LightsOff", "samples":["desligar acende "," apaga as luzes "," apaga as luzes "," apaga as luzes "]," slots ":[]}, {" name ":" LightsOn "," samples ":[" acender as luzes "," acender as luzes "," acender as luzes ", "ligar as luzes"], "slots":[]}, {"name":"Notification", "samples":["quais são as minhas notificações", "existem notificações", "existem atualizações" , "ler minhas notificações"], "slots":[]}, {"nome":"Status", "amostras":["qual é o status do meu dispositivo", "qual é o status dos meus dispositivos"], "slots":[]}, {"name":"Weather", "samples":["qual é o clima da minha casa", "qual é o clima da minha casa", "qual é o clima", "qual é a temperatura da minha casa", "qual é a temperatura"], "slots":[]}], "invocationName":"minha casa"}}  

na guia de configuração, selecione HTTPS como o tipo de ponto final do serviço e preencha a URL padrão com a URL da API sem backend.



selecione a segunda opção em Certificado para endpoint padrão no certificado SSL. Você também pode testar a habilidade usando o simulador de teste.

Após a conclusão do teste, você pode publicar a habilidade com as informações de publicação necessárias.





PASSO 8:configuração final e conclusão!


faça a conexão do circuito como mostrado abaixo



Às vezes ESP8266 irá mau funcionamento porque de insuficiente atual. Então, embora não mencionado em o circuito, isso é recomendado para alimentar o ESP8266 de 3.3v separados fonte. Se você são usando a poder banco certifique-se de reduzir a tensão de 5 V para 3,3 V usando um regulador de tensão de 3,3 V.

Faça upload do programa para ESP8266 e arduino. Eu mostrei a conexão com a lâmpada, a mesma coisa pode ser estendida para o ventilador ou quaisquer dispositivos.

Por fim, use amazon echo ou echosim.io para testar suas habilidades.

Você deve ativar o habilidade usando o invocação nome ( como é meu caso - "meu casa "). Às vezes isso não trabalho se isso é usado sem invocação nome como I tem mostrado casal de vezes em meu vídeo.

Espero que tenha gostado do tutorial!

Obrigada!

Código

  • Smart_bell_ESP8266.ino
  • Home_monitor_arduino.ino
  • Home_Monitor_ESP8266.ino
Smart_bell_ESP8266.ino Arduino
Código para ESP8266 para obter alerta sobre intruso e convidado
 / * * Este esboço é uma implementação de campainha inteligente e segurança doméstica * * / # include  #include  // ----- ------------------------------------- // variáveis ​​// -------- ---------------------------------- int intruso =0, convidado =2; // pino 0 como alerta de intruso e pino2 como alerta convidado char * ssid ="SSID"; // seu SSID de WIFIconst char * password ="password"; // senha do Wifi // ------------------------------------------- -const char * host ="api.thingspeak.com"; void setup () {Serial.begin (115200); atraso (10); // Começamos nos conectando a uma rede WiFi Serial.println (); Serial.println (); Serial.print ("Conectando a"); Serial.println (ssid); / * Definir explicitamente o ESP8266 para ser um cliente WiFi, caso contrário, por padrão, tentaria agir como um cliente e um ponto de acesso e poderia causar problemas de rede com seus outros dispositivos WiFi em sua rede WiFi. * / WiFi.mode (WIFI_STA); WiFi.begin (ssid, senha); enquanto (WiFi.status ()! =WL_CONNECTED) {atraso (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado"); Serial.println ("endereço IP:"); Serial.println (WiFi.localIP ());} valor interno =0; int x, y =0, z, k =0; loop vazio () {atraso (1000); ++ valor; Serial.print ("conectando a"); Serial.println (host); // Use a classe WiFiClient para criar conexões TCP WiFiClient client; const int httpPort =80; if (! client.connect (host, httpPort)) {Serial.println ("conexão falhou"); Retorna; } Serial.print ("Solicitando URL:"); // ==========================================================================================================================// alerta de intruso // ============================================================================================================================x =digitalRead (intruso); // Serial.println (x); if (x ==0) {y =0; } if (x ==1 &&y ==0) {Serial.println ("Enviando alerta, por favor, aguarde ..."); atraso (1000); String host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushbox? devid = HTTP / 1.1 \ r \ n" + "Host:" + host1 + "\ r \ n" + "Conexão:fechar \ r \ n \ r \ n "); // executando push box api client.print (String ("GET") + "/ update? api_key = &field1 =1 HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Conexão:fechar \ r \ n \ r \ n "); // atualizando o atraso de notificação de intruso (1000); y =1; } // ========================================================================================================================// Fim do alerta de intrusão // ==========================================================================================================================// ============================================================================================================================// alerta de convidado // ============================================================================================================================t1 longo; z =digitalRead (convidado); if (z ==0 &&(millis ()> =t1 + 300000)) // aguarde 5 min para evitar o envio de vários alertas devido a várias campainhas, pressione {k =0; } if (x ==1 &&k ==0) {t1 =millis (); // armazenando o carimbo de hora atual em t1 Serial.println ("Sending Alert Pls Wait ....."); atraso (1000); // atraso para envio de alerta e troca de debouncing String host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushbox? devid = HTTP / 1.1 \ r \ n" + "Host:" + host1 + "\ r \ n" + "Conexão:fechar \ r \ n \ r \ n "); // executando push box api client.print (String ("GET") + "/ update? api_key = &field1 =1 HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Conexão:fechar \ r \ n \ r \ n "); // atualização do atraso de notificação do convidado (1000); k =1; } // ========================================================================================================================// Fim do alerta de convidado // ==========================================================================================================================Unsigned long timeout =millis (); while (client.available () ==0) {if (millis () - timeout> 5000) {Serial.println (">>> Client Timeout!"); client.stop (); Retorna; }} //Serial.println("closing connection ");} 
Home_monitor_arduino.ino Arduino
Código para Arduino para controlar aparelhos
 // Este esboço na implementação de automação residencial #include  // importar a biblioteca serial # include  // --------- -------------------------------- // definições de pinos // ------------ ----------------------------- # define a luz 2 // pino 2 para controlar a luz # define a ventoinha 3 // pino 3 para controlar fan // ------------------------------------------ // variables // ------------------------------------------ char e; int p =0, q =0; // essas variáveis ​​evitam ligar / desligar de dispositivos já ligados / desligadosSoftwareSerial home_monitor (10, 11); // RX, TXchar control_data; // os dados transmitidos por Bluetoothvoid setup () {// coloque seu código de configuração aqui, para ser executado uma vez:home_monitor.begin (115200); Serial.begin (9600); pinMode (13, OUTPUT);} void loop () {// coloque seu código principal aqui, para executar repetidamente:if (home_monitor.available ()) {control_data =home_monitor.read (); // obtendo informações de controle de ESP8266 serialmente e =control_data; Serial.print (control_data); // ==========================================================================================================================// Controle de dispositivos // ==========================================================================================================================// Executando as operações necessárias com base no valor do canal // ------------- ------------------------------------------------ // LEVE //----------------------------------------------- -------------- if (e =='0' &&p ==0) // Luz LIGADA {digitalWrite (Luz, BAIXA); p =1; } if (e =='1' &&p ==1) // Luz desligada {digitalWrite (Luz, ALTO); p =0; } // ----------------------------------------------- -------------- // Aquecedor //------------------------------- ------------------------------ if (e =='2' &&q ==0) {digitalWrite (ventilador, ALTO); q =1; } if (e =='3' &&q ==1) {digitalWrite (ventilador, BAIXO); q =0; }}} 
Home_Monitor_ESP8266.ino Arduino
Code For ESP8266 to update humidity and temperature in thingspeak and also retrieve control information from thingspeak
/* * This sketch updates wheather information in thingspeak.com and also retrieve control information from thingspeak.com * It send the control information to arduino serially */#include #include#include "DHT.h" // including the library of DHT11 temperature and humidity sensor#define DHTTYPE DHT11 // DHT 11#define dht_dpin 2 // define GPIO2 as data input DHT dht(dht_dpin, DHTTYPE); //------------------------------------------// variables//------------------------------------------//dht DHT;char c,e; // stores the bytes coming from the serverfloat temp,h; //stores float value of temp and humididtyString humidity,temperature,line; //stores string value of temp and humididtyint co=0; //control the sending of Alertconst char* ssid ="SSID"; //your SSID of WIFIconst char* password ="password"; // password of Wifi//--------------------------------------------const char* host ="api.thingspeak.com";void setup() { dht.begin(); Serial.begin (115200); atraso (10); // We start by connecting to a WiFi network Serial.println(); Serial.println (); Serial.print("Connecting to "); Serial.println (ssid); /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default, would try to act as both a client and an access-point and could cause network-issues with your other WiFi-devices on your WiFi-network. */ WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); enquanto (WiFi.status ()! =WL_CONNECTED) {atraso (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado"); Serial.println("IP address:"); Serial.println(WiFi.localIP());}int value =0;void loop() { delay(1000); ++value; Serial.print("connecting to "); Serial.println(host); // Use WiFiClient class to create TCP connections WiFiClient client; const int httpPort =80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); Retorna; } Serial.print("Requesting URL:"); //============================================================================================================// Mini Weather Station //============================================================================================================h =dht.readHumidity(); //reads humidity and temperature temp =dht.readTemperature(); if(temp<50.0) { co=0; } if(temp>
=50.0&&co==0) // send alert if temperature is above 50 degrees and co is used to avoid multiple alert sending { Serial.println("Sending Alert please wait......."); atraso (1000); String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Connection:close\r\n\r\n"); //pushingbox api to send alert delay(1000); client.print(String("GET ") + "/update?key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); //updating thingspeak fire alert channel co=1; } humidity=String(h); temperature=String(temp); Serial.println(h); Serial.println (temp); client.print(String("GET ") + "/update?key=&field1="+humidity+" HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); //update humidity in thingspeak channel client.print(String("GET ") + "/update?key=&field1="+temperature+" HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); ////update temperature in thingspeak channel //============================================================================================================// End of Weather Station//============================================================================================================//============================================================================================================// Sending Control info to arduino Serially//============================================================================================================// This will send the request to the server client.print(String("GET ") + "/channels//field/field1/last.html HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); // get information about device control unsigned long timeout =millis(); while (client.available() ==0) { if (millis() - timeout> 5000) { Serial.println(">>> Client Timeout !"); client.stop (); Retorna; } } // Read all the lines of the reply from server and print them to Serial while(client.available()){ String line =client.readStringUntil('\r'); } Serial.print(line); // received by arduino serially //Serial.println("closing connection");}

Esquemas


Processo de manufatura

  1. Aplicações de automação residencial
  2. Usando tags RFID para monitoramento de segurança residencial
  3. Monitoramento da qualidade do ar da cidade inteligente com base em LoRa
  4. Sensor de temperatura múltipla
  5. Monitoramento de CO2 com Sensor K30
  6. Alexa, ligue ESTA lâmpada:Sensor 3D inteligente para Amazon Echo
  7. Sistema de irrigação de plantas caseiras
  8. Arduino Home Controller ativado por Alexa
  9. Monitoramento de temperatura SMART para escolas
  10. Estação meteorológica local