Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Monitoreo de hogares inteligentes basado en Alexa

Componentes y suministros

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Sensor de temperatura y humedad DHT11 (4 pines)
× 1
ControlEverything.com CONTROLADOR DE RELÉ DE 4 CANALES PARA I2C
× 1
sensor de obstáculos por infrarrojos
× 1
cámara
× 1
Cables de puente (genéricos)
× 1

Aplicaciones y servicios en línea

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

Acerca de este proyecto

Introducción:

En el mundo actual, las personas pasan más tiempo en el lugar de trabajo que en sus hogares. Por lo tanto, existe la necesidad de un sistema de monitoreo del hogar donde las personas puedan conocer las condiciones de la casa mientras están en el trabajo. Sería aún mejor si uno pudiera simplemente preguntarle a "alguien" sobre su casa durante el horario laboral. Esto se puede lograr utilizando Amazon Alexa como asistente que puede brindar al usuario la información necesaria sobre su hogar.

No solo Work Place, los usuarios pueden conocer el estado de la casa en cualquier lugar del mundo siempre que tengan una conexión a Internet y un dispositivo Amazon Alexa.

Las siguientes funciones se implementan en este proyecto:

1) Controle los dispositivos domésticos como el ventilador y la luz

2) Indica el estado de los dispositivos

3) Indica las condiciones climáticas de la casa (temperatura y humedad)

4) Envía la instantánea del interior de la casa al usuario a través de Gmail cuando sea necesario.

5) Envía notificación en caso de -

* Intruso (también envía foto)

* Fuego

* Invitado (también envía foto)

Pasos involucrados en el proyecto:

PASO 1:Programación de Arduino y ESP8266

Descargue el IDE de Arduino del sitio web oficial:https://www.arduino.cc/en/Main/Software

Abra Arduino IDE y vaya a archivo-> preferencias-> en el tipo de URL del administrador de placa adicional:http://arduino.esp8266.com/stable/package_esp8266com_index.json

Vaya a herramientas -> tableros -> Board Manager -> e instale el paquete esp8266 encontrado por fin.

Para programar arduino simplemente conecte el cable USB del arduino a la computadora y seleccione Arduino / Genuino UNO en herramientas-> placas. También asegúrese de seleccionar los puertos COM con derechos en Herramientas (el número de puerto COM se puede encontrar en el Administrador de dispositivos). Escriba el programa requerido, compílelo y haga clic en cargar si no hay errores.

Para programar ESP8266 haga la conexión como se muestra en el diagrama

conecte el usb de arduino a la computadora. En herramientas-> tablero-> seleccione Generic ESP8266 y también seleccione el puerto COM derecho. Escriba el programa requerido, compílelo y haga clic en cargar si no hay errores. Asegúrese de conectar Arduino RST a GND (arduino actúa como un programador para ESP8266).

En este proyecto Primero se programa el ESP8266 y luego se eliminan las conexiones del circuito. Luego, el circuito se vuelve a conectar como se muestra en la figura denominada "Conexiones del circuito". Y luego el arduino es programado

PASO 2:Configuración de thingspeak.com

Cree una cuenta en thingspeak.com.

Hacemos uso de canales en thingspeak para almacenar la información de control del dispositivo y enrutarla a arduino / alexa. también almacenamos los valores de temperatura y humedad en los canales. Es como un lugar de almacenamiento para la información.

ve a canales -> mis canales y crea un nuevo canal. Da nombre y descripción a tus canales.

en nuestro proyecto necesitamos 8 canales (puede hacer el trabajo usando menos canales pero será un poco complicado durante la programación). También thingspeak tiene una limitación de tiempo al actualizar un canal. Debe haber un intervalo de 10 a 15 segundos entre las actualizaciones sucesivas de un canal en particular.

A continuación se muestran ocho canales con sus valores y significado

nombre del canal (valor1-significado, valor2-significado, etc.):

1) Control de dispositivo (0 -luz encendida, 1- luz apagada, 2- ventilador encendido, 3- ventilador apagado)

2) estado de la luz (0- luz apagada, 1- luz encendida)

3) estado del ventilador (0- ventilador apagado, 1 ventilador encendido)

4) humedad (valor de la humedad)

5) temperatura (valor de la temperatura)

6) notificación de intrusos (1 alerta de intruso)

7) notificación de incendio (1- alerta de incendio)

8) notificación de invitado (1 alerta de invitado)

cuando hace clic en cualquier canal, puede ver su ID de canal y escribir claves API en la pestaña de claves API. Se requiere la identificación del canal para obtener la información / valor en el canal. y se requiere una clave de escritura para almacenar un valor en el canal.

La solicitud http para actualizar un canal es:

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

se reemplaza por las claves de escritura correspondientes del canal y el valor puede ser (0/1 en caso de control del dispositivo o valores de temperatura / humedad)

La solicitud http para leer el valor de un canal es:

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

se reemplaza por el id de canal particular del canal del cual queremos leer.

PASO 3:El programa

El programa se divide en 3 partes:

A) Programa para Arduino :el programa para arduino es muy simple. Recibe los datos del ESP8266 en serie y, en función de los datos recibidos, se controlan los dispositivos. Más información sobre el programa se encuentra en los comentarios en el propio programa.

B) Programa para ESP8266 : el programa para ESP8266 implica 3 cosas

1) actualización de la temperatura y la humedad mediante la solicitud http

  client.print (String ("GET") + "/ update? key = &field1 =" + humedad + "HTTP / 1.1 \ r \ n" + "Host:" + host + " \ r \ n "+" Conexión:cerrar \ r \ n \ r \ n "); // actualizar la humedad client.print (String ("GET") + "/ update? key = &field1 =" + temperature + "HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Conexión:cerrar \ r \ n \ r \ n "); // actualiza la temperatura  

la se reemplaza por la tecla de escritura correspondiente que se encuentra en el canal de habla para la humedad y la temperatura, respectivamente. y el anfitrión es api.thingspeak.com.

descargue la biblioteca dht desde:https://github.com/adafruit/DHT-sensor-library

2) leer de los canales correspondientes de thingspeak y controlar el dispositivo en función de los valores obtenidos:

  client.print (String ("GET") + "/ channels /  /field/field1/last.html HTTP / 1.1 \ r \ n" + "Host:" + host + " \ r \ n "+" Conexión:cerrar \ r \ n \ r \ n ");  

donde se reemplaza por el ID de canal correspondiente que se encuentra en Thingspeak.

3) Envío de alerta en caso de alta temperatura mediante caja de empuje

  String host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushbox? devid = HTTP / 1.1 \ r \ n" + "Host :"+ host1 +" \ r \ n "+" Conexión:cerrar \ r \ n \ r \ n ");  

donde es reemplazado por su ID de dispositivo en Pushbox.

PASO 4:Configuración de linkit smart 7688 duo y cámara web

Yo En este proyecto, la cámara web y el linkit smart 7688 duo se utilizan para capturar la foto requerida y enviársela al usuario. También puede usar el módulo de la cámara arduino e interconectarlo con arduino o usar cualquier cámara IP.

mantenga presionado el botón wifi en el linkit smart 7688 durante 20 segundos para restablecer la placa. Luego, después de restablecer la configuración de wifi, podrá ver el nombre de su punto de acceso en las conexiones de red inalámbrica. Ahora conecta la computadora a esa red.

después de conectarlo, abra el navegador y escriba 192.168.100.1 en la barra de direcciones. Podrás ver su portal.

establezca una contraseña para iniciar sesión en su portal.

Después de iniciar sesión, vaya a la pestaña de red y seleccione el modo de estación (lo necesitamos (linkit smart 7688 duo) para acceder a Internet) y conéctelo a su red Wifi y presione Configurar y reiniciar.

Una vez que la placa se reinició, se le asignará una dirección IP local. Averigüe la dirección utilizando cualquier herramienta de IP o el portal de su enrutador. En mi caso fue 192.168.1.4.

Ahora escriba la dirección IP local en la barra de direcciones del navegador. asegúrese de que la computadora esté conectada a la misma red que el linkit smart. Se le pedirá que inicie sesión nuevamente.

Para habilitar la transmisión desde la cámara web, debe habilitar el transmisor MJPG (mjpg-streamer es una aplicación de línea de comandos que copia fotogramas JPEG de uno o más complementos de entrada a múltiples complementos de salida). Para hacer esto en el portal, vaya a la ubicación de OpenWrt en la parte superior derecha. debe iniciar sesión nuevamente.

Después de iniciar sesión, vaya a la pestaña de servicio y marque habilitar el transmisor MJPG y asigne un número de puerto para este servicio. He asignado 4440. Haga clic en guardar y aplicar.

Después de la configuración, puede conectar su cámara web al host usb linkit smart 7688 duo a través de un cable OTG.

Ahora, para ver la transmisión, abra el navegador y escriba : en la barra de direcciones. en mi caso es 192.168.1.4:4400

para tomar la instantánea, escriba el comando :? action =snapshot

Ahora, esta imagen está disponible localmente, pero necesitamos que esté disponible para el servicio de caja de empuje. Para lograr esto, necesitamos hacer reenvío de puertos. El reenvío de puertos se puede realizar en el portal del enrutador. La identificación del proceso es diferente para diferentes enrutadores. Solo busque en Google para saber cómo reenviar el puerto para un enrutador específico. Por lo general, está disponible bajo el servicio NAT.

Después de su puerto de reenvío, el uso puede acceder a este puerto (es decir, 4440) desde su IP externa. La IP externa se puede encontrar vinculando "cuál es mi IP" en Google.

Debe poner esta dirección, es decir, http:// :? Action =snapshot en Pushbox (que se explica en el siguiente paso) para que Pushbox pueda acceder a esta imagen y adjuntarla al correo y enviárselo cuando sea necesario.

También puede almacenar la imagen en una tarjeta SD, ya que Linkit smart 7688 duo también viene con una ranura para tarjeta SD para almacenar información.

se puede encontrar más información sobre esto en:https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/get-started/get-started-with-the-linkit-smart-7688-duo -placa-de-desarrollo /

PASO 5:Configuración de PushingBox

pushbox se usa para enviar notificaciones sobre diferentes alertas en el proyecto a gmail.

inicie sesión en Pushbox con la cuenta de Google:https://www.pushingbox.com/

vaya a mis servicios -> agregar servicio. Hay muchos servicios para elegir, como Gmail, Twitter, notificaciones push para Android, etc.

seleccione Gmail (ya que necesitamos enviar una foto como archivo adjunto) y complete la configuración de nombre de Gmail apropiada y la identificación de Gmail del usuario al que se debe enviar la alerta.

ve a mis escenarios y crea un nuevo escenario. dar nombre al escenario (ej .:ALERTA) agregar el servicio creado previamente.

escriba el asunto y el cuerpo adecuados del correo e ingrese la URL para tomar la captura de pantalla de la cámara web para adjuntar la foto. Cree diferentes escenarios para diferentes alertas.

api para ejecutar un escenario push box es:http://api.pushingbox.com/pushingbox?devid=

PASO 6:Creando Alexa Skill usando Backendless

backendless se utiliza para crear la habilidad alexa. Es una programación simple de arrastrar y soltar se utiliza para crear la habilidad de alexa (o cualquier programa) a la que se puede acceder mediante una API sin backendless.

cree una cuenta en backendless:https://backendless.com/

  • Inicie sesión en su cuenta en una cuenta backendless. haga clic en Crear aplicación y asigne un nombre a su aplicación /
  • Haga clic en el ícono Business Logic ubicado en la barra de íconos a la izquierda. Verá la pantalla SERVICIOS API.
  • Haga clic en el icono "+" para crear un nuevo servicio. Asegúrese de seleccionar SIN CÓDIGO en la ventana emergente "Nuevo servicio". Ingrese "AlexaService" para el nombre del servicio. Haga clic en el botón GUARDAR:
  • Backendless crea el servicio API y le pedirá que cree un método para el servicio. Este será el método que procesará las solicitudes de Alexa. Ingrese "handleRequest" para el nombre del método. Asegúrese de seleccionar POST para la operación REST, declare un argumento con el nombre de "req" y escriba "Cualquier objeto" como se muestra a continuación:

Backendless crea un marcador de posición para la lógica sin código del método. Haga clic en el botón EDITAR para comenzar a cambiar al Diseñador de lógica sin código.

En el bloque de marcador de posición de función creado, haga clic en el área que dice "hacer algo" y cámbielo a "sendAlexaResponse". Esta función se usa para hacer que alexa diga algo que se puede pasar como argumento. Haga clic en el botón GUARDAR para guardar la función:

Haga clic en el icono de engranaje ubicado en el bloque morado junto a la palabra "Función". Agregue dos argumentos arrastrando los bloques de entrada como se muestra en la imagen a continuación. Asigne los nombres de los argumentos como "whatToSay" y "waitForResponse". Tenga en cuenta que a medida que agrega argumentos, el área de Bloques de contexto se completa automáticamente con los bloques que representan los valores de los argumentos:

Modifique la lógica de la función para que se vea como en la imagen de abajo. Para los bloques "Crear objetos", use el icono de engranaje para cambiar el nombre de las propiedades del objeto. No olvide guardar su trabajo haciendo clic en el botón GUARDAR.

Ahora que la función personalizada está construida, vuelva al método handleRequest del servicio AlexaService. Haga clic en la categoría Funciones personalizadas en la barra de herramientas de la izquierda y arrastre el bloque sendAlexaResponse para conectarse con el conector de retorno de su método de servicio:

los pasos anteriores también se pueden encontrar en su sitio web: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/

Haga clic en el nodo "Agregar nuevo" en Funciones en la sección NAVEGADOR. En el bloque de marcador de posición de función creado, haga clic en el área que dice "hacer algo" y cámbielo a "getIntentName"

modificar los bloques para que la función se vea así:

esto obtendrá el nombre de la intención basado en expresiones de muestra. Regrese a los servicios api -> -> maneje la solicitud en la sección del navegador. Las variables y la lógica se crean a partir de la sección del sistema. Cree las siguientes variables:

a continuación, almacenamos el nombre de la intención para solicitar la variable. Y luego compare con las intenciones. por ejemplo, si la solicitud es "introducción", la variable de respuesta se establece en "¡hola! Puedo controlar ......." y esta respuesta la lee en voz alta por fin.

modificar el bloque como se muestra a continuación:

si la solicitud es la intención de LightsOn, actualizamos el canal thingspeak a '0' usando http get request y, al mismo tiempo, actualizamos el estado del dispositivo (1/0 dependiendo de On / Off). Lo mismo se repite de LightsOff, FanOn y FanOff.

Para el clima, leemos del canal de temperatura y humedad y almacenamos el resultado en la variable de respuesta. Como el canal solo proporciona valores, agregamos textos para que la respuesta sea significativa:

para obtener una instantánea de la sala de estar, ejecutamos el escenario Pushbox:

para el estado del dispositivo, leemos información del canal de estado de thingspeak:

para notificaciones y alertas que leemos de los canales de alerta (incendio, intruso e invitado):

en función de los valores que obtenemos del campo de notificación, los mensajes de alerta correspondientes se almacenan en la variable respond0. si no hay notificación, no se almacena ningún mensaje de notificación.

una vez que se lee la notificación, el '0' se actualiza en los canales de notificación para que alexa no vuelva a leer la misma notificación. Luego, por fin, según la solicitud, se lee en voz alta la variable respond0 / respond.

PD:después de crear el modelo requerido en backendless, haga clic en implementar modelo en la parte superior derecha de la pantalla sin código para implementar el modelo.

PASO 7:Configuración de la habilidad de Alexa en la Consola para desarrolladores de Amazon:

vaya a la consola de desarrollador de Amazon e inicie sesión con una cuenta de Amazon. https://developer.amazon.com/

vaya a la consola del desarrollador y haga clic en la pestaña ALEXA. Haga clic en el kit de habilidades de alexa para comenzar.

cree un tipo de habilidad personalizado, asigne un nombre y un nombre de invocación a la habilidad.

las intenciones respectivas y expresiones de muestra se dan en el siguiente código.

  {"languageModel":{"intents":[{"name":"AMAZON.CancelIntent", "samples":[]}, {"name":"AMAZON.HelpIntent", "samples" :[]}, {"name":"AMAZON.StopIntent", "samples":[]}, {"name":"Camera", "samples":["por favor envía una instantánea de mi sala de estar", " envíe una instantánea de mi casa "," envíe una foto de mi sala de estar "," envíe una foto de mi casa "]," ranuras ":[]}, {" nombre ":" FanOff "," muestras ":[" apagar el ventilador "," apagar el ventilador "," apagar el ventilador "," apagar el ventilador "]," ranuras ":[]}, {" nombre ":" FanOn "," muestras " :["enciende el ventilador", "enciende el ventilador", "enciende el ventilador", "enciende el ventilador"], "ranuras":[]}, {"nombre":"Introducción", "muestras":["qué puedes hacer", "qué puedes hacer", "qué puedes hacer por mí"], "slots":[]}, {"name":"LightsOff", "samples":["apagar luces "," apaga las luces "," apaga las luces "," apaga las luces "]," ranuras ":[]}, {" name ":" LightsOn "," samples ":[" enciende las luces "," enciende las luces "," enciende las luces ", "enciende las luces"], "ranuras":[]}, {"nombre":"Notificación", "muestras":["cuáles son mis notificaciones", "¿hay alguna notificación", "hay alguna actualización" , "leer mis notificaciones"], "ranuras":[]}, {"nombre":"Estado", "muestras":["cuál es el estado de mi dispositivo", "cuál es el estado de mis dispositivos"], "slots":[]}, {"name":"Weather", "samples":["cuál es el estado del tiempo de mi casa", "cuál es el tiempo de mi casa", "cuál es el tiempo", "cuál es la temperatura de mi casa", "cuál es la temperatura"], "ranuras":[]}], "invocationName":"mi casa"}}  

en la pestaña de configuración, seleccione HTTPS como tipo de punto final del servicio, complete la URL predeterminada con la URL de la API desde backendless.

seleccione la segunda opción en Certificado para el punto final predeterminado en el certificado SSL. También puede probar la habilidad con el simulador de prueba.

Una vez finalizada la prueba, puede publicar la habilidad con la información de publicación requerida.

PASO 8:¡Configuración final y finalización!

Realice la conexión del circuito como se muestra a continuación

A veces ESP8266 lo hará mal funcionamiento porque de insuficiente actual. Entonces, aunque no mencionado en el circuito, eso es recomendado para alimentar el ESP8266 desde 3,3 V independientes fuente. Si usted son usando a poder banco asegúrese de reducir el voltaje de 5v a 3.3v con un regulador de voltaje de 3.3v.

Sube el programa a ESP8266 y arduino. He mostrado la conexión a la bombilla, lo mismo se puede extender al ventilador o cualquier dispositivo.

Finalmente, use amazon echo o echosim.io para probar su habilidad.

debe activar el habilidad usando el invocación nombre ( como es mi caso - "mi casa "). A veces eso no lo hará trabajo si eso es usado sin invocación nombre como Yo tener mostrado pareja de veces en mi video.

¡Espero que hayas disfrutado del tutorial!

¡Gracias!

Código

  • Smart_bell_ESP8266.ino
  • Home_monitor_arduino.ino
  • Home_Monitor_ESP8266.ino
Smart_bell_ESP8266.ino Arduino
Código para ESP8266 para recibir alertas sobre intrusos e invitados
 / * * Este boceto es una implementación de timbre inteligente y seguridad del hogar * * / # incluye  #include  // ----- ------------------------------------- // variables // -------- ---------------------------------- int intruso =0, invitado =2; // pin 0 como alerta de intruso y pin2 como alerta de invitadoconst char * ssid ="SSID"; // su SSID de WIFIconst char * contraseña ="contraseña"; // contraseña de Wifi // ------------------------------------------- -const char * host ="api.thingspeak.com"; void setup () {Serial.begin (115200); retraso (10); // Empezamos por conectarnos a una red WiFi Serial.println (); Serial.println (); Serial.print ("Conectando a"); Serial.println (ssid); / * Configure explícitamente el ESP8266 para que sea un cliente WiFi; de lo contrario, de forma predeterminada, intentaría actuar como cliente y como punto de acceso y podría causar problemas de red con sus otros dispositivos WiFi en su red WiFi. * / WiFi.mode (WIFI_STA); WiFi.begin (ssid, contraseña); while (WiFi.status ()! =WL_CONNECTED) {retraso (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado"); Serial.println ("dirección IP:"); Serial.println (WiFi.localIP ());} int valor =0; int x, y =0, z, k =0; bucle vacío () {retraso (1000); ++ valor; Serial.print ("conectando a"); Serial.println (host); // Utilice la clase WiFiClient para crear conexiones TCP cliente WiFiClient; const int httpPort =80; if (! client.connect (host, httpPort)) {Serial.println ("error de conexión"); regreso; } Serial.print ("URL de solicitud:"); // ========================================================================================================// alerta de intruso // ==========================================================================================================x =digitalRead (intruso); // Serial.println (x); si (x ==0) {y =0; } if (x ==1 &&y ==0) {Serial.println ("Enviando alerta por favor espere ....."); retraso (1000); String host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushbox? devid = HTTP / 1.1 \ r \ n" + "Host:" + host1 + "\ r \ n" + "Conexión:cerrar \ r \ n \ r \ n "); // ejecutando push box api client.print (String ("GET") + "/ update? api_key = &field1 =1 HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Conexión:cerrar \ r \ n \ r \ n "); // actualización de la demora de notificación de intrusos (1000); y =1; } // ========================================================================================================// Fin de la alerta de intruso // ==========================================================================================================// ========================================================================================================// alerta de invitado // ========================================================================================================largo t1; z =digitalRead (invitado); if (z ==0 &&(millis ()> =t1 + 300000)) // espere 5 minutos para evitar el envío de alertas múltiples debido a la presión de varios timbres {k =0; } si (x ==1 &&k ==0) {t1 =milis (); // almacenando la marca de tiempo actual en t1 Serial.println ("Enviando alerta por favor espere ....."); retraso (1000); // retraso en el envío de alerta y eliminación de rebotes de conmutación String host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushbox? devid = HTTP / 1.1 \ r \ n" + "Host:" + host1 + "\ r \ n" + "Conexión:cerrar \ r \ n \ r \ n "); // ejecutando push box api client.print (String ("GET") + "/ update? api_key = &field1 =1 HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Conexión:cerrar \ r \ n \ r \ n "); // actualización de la demora de notificación de invitados (1000); k =1; } // ========================================================================================================// Fin de la alerta de invitado // ========================================================================================================tiempo de espera largo sin firmar =millis (); while (client.available () ==0) {if (millis () - timeout> 5000) {Serial.println (">>> Client Timeout!"); client.stop (); regreso; }} //Serial.println("closing connection ");} 
Home_monitor_arduino.ino Arduino
Código para que Arduino controle los electrodomésticos
 // Este boceto en la implementación de la automatización del hogar #include  // Importa la biblioteca serial #incluye  // --------- -------------------------------- // Definiciones de pines // ------------ ----------------------------- # define Light 2 // pin 2 para controlar la luz # define ventilador 3 // pin 3 para controlar ventilador // ------------------------------------------ // variables // ------------------------------------------ char e; int p =0, q =0; // estas variables evitan el encendido / apagado de dispositivos ya encendidos / apagadosSoftwareSerial home_monitor (10, 11); // RX, TXchar control_data; // los datos transmitidos a través de Bluetoothvoid setup () {// ponga su código de configuración aquí, para que se ejecute una vez:home_monitor.begin (115200); Serial.begin (9600); pinMode (13, OUTPUT);} void loop () {// ponga su código principal aquí, para que se ejecute repetidamente:if (home_monitor.available ()) {control_data =home_monitor.read (); // obteniendo información de control de ESP8266 en serie e =control_data; Serial.print (control_data); // ========================================================================================================// Control de dispositivo // ==========================================================================================================// Performing required operations based on the value of channel //------------- ------------------------------------------------ // LIGHT //----------------------------------------------- -------------- if(e=='0'&&p==0) //Light ON { digitalWrite(Light,LOW); p=1; } if(e=='1'&&p==1) //Light off { digitalWrite(Light,HIGH); p=0; } //------------------------------------------------------------- // Heater //------------------------------------------------------------- if(e=='2'&&q==0) { digitalWrite(fan,HIGH); q=1; } if(e=='3'&&q==1) { digitalWrite(fan,LOW); q=0; }}} 
Home_Monitor_ESP8266.inoArduino
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); retraso (10); // We start by connecting to a WiFi network Serial.println(); Serial.println (); Serial.print ("Conectando a"); 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, contraseña); while (WiFi.status ()! =WL_CONNECTED) {retraso (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"); regreso; } 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......."); retraso (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 (); regreso; } } // 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


Proceso de manufactura

  1. Aplicaciones de automatización del hogar
  2. Uso de etiquetas RFID para supervisar la seguridad del hogar
  3. Monitoreo de la calidad del aire de ciudades inteligentes basado en LoRa
  4. Sensor de temperatura múltiple
  5. Monitoreo de CO2 con sensor K30
  6. Alexa, enciende ESTA lámpara:Sensor 3D inteligente para Amazon Echo
  7. Sistema de riego de plantas domésticas
  8. Controlador Arduino Home activado por Alexa
  9. Monitoreo SMART de temperatura para escuelas
  10. Estación meteorológica local
  11. Pulsera inteligente