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

ARTIK + MKR1000 + DHT11 + MQTT

Componentes y suministros

Arduino MKR1000
× 2
Sensor de temperatura y humedad DHT11 (4 pines)
× 1
LED (genérico)
× 2

Aplicaciones y servicios en línea

Samsung ARTIK Cloud para IoT
Arduino IDE

Acerca de este proyecto

Este proyecto utiliza dos MKR1000 con DHT11 como sensor y LED como actuadores de metáfora. Los verdaderos actuadores podrían ser el aire acondicionado y el ventilador de techo. El dispositivo de temperatura y humedad DHT11 envía datos a la nube ARTIK. Se han establecido reglas para enviar comandos a los LED rojo y amarillo.

Configurar Arduino IDE

Con el Administrador de bibliotecas de Arduino IDE, instale las siguientes bibliotecas.

Instale WiFi101 (consulte esta guía)

Instalar MQTT de Joel Gaehwiler

Instalar ArduinoJson

Nota:consulte mi publicación anterior para conocer detalles sobre cómo trabajar con ARTIK cloud.

Configure el sensor de temperatura y humedad DHT11

Cree un tipo de dispositivo ( Sensor DHT11 )

Conectar un dispositivo ( Sensor DHT11 A1 )

Conecte los dispositivos físicos

.

Configure los parámetros de ARTIK Cloud MQTT

  char mqttCloudServer [] ="api.artik.cloud"; int mqttCloudPort =8883; char mqttCloudClientName [] ="ARTIK-Arduino"; char mqttCloudUsername [] ="[id-dispositivo]"; char mqttCloudPassword [] ="[token de dispositivo]"; char mqttCloudDataOut [] ="/v1.1/messages/[device-id]"; WiFiSSLClient ipCloudStack; MQTTClient mqttCloudClient;  

Envío de mensajes a la nube ARTIK.

  void sendToArtikCloud (temperatura de flotación, humedad de flotación) {loadBuffer (temperatura, humedad); // carga los valores actuales en el búfer mqttCloudClient.publish (mqttCloudDataOut, buf); } void loadBuffer (temperatura de flotación, humedad de flotación) {StaticJsonBuffer <200> jsonBuffer; JsonObject &dataPair =jsonBuffer.createObject (); dataPair ["temperatura"] =temperatura; dataPair ["humedad"] =humedad; dataPair.printTo (buf, tamaño de (buf)); }  

Configure los actuadores LED de temperatura y humedad

Cree un tipo de dispositivo ( Actor DHT11 )

Conectar un dispositivo ( DHT11 Actor A1 )

Conecte los dispositivos físicos

Configurar los parámetros de ARTIK cloud MQTT

  // ARTIK Cloud MQTT params char mqttCloudServer [] ="api.artik.cloud"; int mqttCloudPort =1883; char mqttCloudClientName [] ="ARTIK-Arduino"; char mqttCloudUsername [] ="[id-dispositivo]"; char mqttCloudPassword [] ="[token de dispositivo]"; char mqttCloudActionsIn [] ="/v1.1/actions/[device-id]"; WiFiClient ipCloudStack; MQTTClient mqttCloudClient;  

Recibiendo acciones MQTT.

  void messageReceived (tema de cadena, carga útil de cadena, char * bytes, longitud int sin firmar) {Serial.print ("tema ="); Serial.println (tema); Serial.print ("carga útil ="); Serial.println (carga útil); Serial.print ("bytes ="); Serial.println (bytes); Serial.print ("longitud ="); Serial.println (longitud); parseBuffer (carga útil); }  

Analizar y procesar las acciones desde ARTIK cloud.

  void parseBuffer (String payload) {StaticJsonBuffer <200> jsonBuffer; String json =carga útil; JsonObject &root =jsonBuffer.parseObject (json); const char * nameparam =root ["acciones"] [0] ["nombre"]; const int actionLEDRed =root ["acciones"] [0] ["parámetros"] ["led_red"]; const int actionLEDYellow =root ["acciones"] [0] ["parámetros"] ["led_yellow"]; Serial.print ("nombre ="); Serial.println (nombreparam); Serial.print ("led_red ="); Serial.println (actionLEDRed); Serial.print ("led_yellow ="); Serial.println (actionLEDYellow); Serial.println (); if (actionLEDRed ==1) {if (SavedRedValue! =actionLEDRed) {digitalWrite (LED_RED_PIN, HIGH); SavedRedValue =actionLEDRed; } SavedRedTime =millis (); } else {if (SavedRedValue! =actionLEDRed) {if (millis () - SavedRedTime> RED_DELAY) {digitalWrite (LED_RED_PIN, LOW); SavedRedValue =actionLEDRed; }}} if (actionLEDYellow ==1) {if (SavedYellowValue! =actionLEDYellow) {digitalWrite (LED_YELLOW_PIN, HIGH); SavedYellowValue =actionLEDYellow; } SavedYellowTime =millis (); } else {if (SavedYellowValue! =actionLEDYellow) {if (millis () - SavedYellowTime> YELLOW_DELAY) {digitalWrite (LED_YELLOW_PIN, LOW); SavedYellowValue =actionLEDYellow; }}}}  

Crear reglas

Hay 4 reglas:

  • SI La temperatura del sensor A1 DHT11 es superior a 32 y la humedad es superior a 34 ENTONCES envíe al Actor A1 DHT11 la acción setValue con led_red =1, led_yellow =1‌
  • SI La temperatura del sensor A1 DHT11 es superior a 32 y la humedad es inferior a 35 ENTONCES envíe al Actor A1 DHT11 la acción setValue con led_red =1, led_yellow =0‌
  • SI La temperatura del sensor A1 DHT11 es inferior a 33 y la humedad es superior a 34 ENTONCES envíe al Actor A1 DHT11 la acción setValue con led_red =0, led_yellow =1
  • SI La humedad del sensor A1 DHT11 es inferior a 35 y la temperatura es inferior a 33 ENTONCES envíe al Actor A1 DHT11 la acción setValue con led_red =0, led_yellow =0‌

Video de demostración

Tenga en cuenta que deberá esperar a que la temperatura se caliente (LED encendido) y se enfríe (LED apagado). El LED rojo se enciende a los 37 segundos y se apaga a las 1:13 segundos. El video de demostración muestra solo los cambios de temperatura. Usé un secador de pelo para cambiar la temperatura alrededor del sensor DHT11.

.

Código

  • artik_dht11_sensor.ino
  • artik_led_actor.ino
artik_dht11_sensor.ino C / C ++
 #include  #include  #include  #include "DHT.h" #define DHTPIN 2 // a qué pin digital estamos conectados # define DHTTYPE DHT11 / / DHT 11DHT dht (DHTPIN, DHTTYPE); const char * _SSID ="[Wi-Fi SSID]"; const char * _PASSWORD ="[Wi-Fi Password]"; // ARTIK Cloud MQTT paramschar mqttCloudServer [] ="api.artik.cloud"; int mqttCloudPort =8883; char mqttCloudClientName [] ="ARTIK-Arduino"; char mqttCloudUsername [] ="[id-dispositivo]"; char mqttCloudPassword [] ="[token de dispositivo]"; char mqttCloudDataOut [] ="/v1.1/messages/[device-id]"; WiFiSSLClient ipCloudStack; MQTTClient mqttCloudClient; char buf [128]; temperatura de flotación, humedad; int n =0; void getNextSample (float * Temperature, float * Humidity) {// Espere unos segundos entre mediciones. retraso (2000); // ¡La lectura de la temperatura o la humedad tarda unos 250 milisegundos! // Las lecturas del sensor también pueden tener hasta 2 segundos de antigüedad (es un sensor muy lento) * Humidity =dht.readHumidity (); // Leer la temperatura como Celsius (por defecto) * Temperature =dht.readTemperature (); // Lee la temperatura como Fahrenheit (isFahrenheit =true) // float f =dht.readTemperature (true); //printf("Temp=%.2f, Pres =%. 2f, Humi =%. 2f \ n ", Temp_c__f, Pres_hPa__f, Humi_pct__f); Serial.print ("Temperatura ="); Serial.println (* Temperatura); Serial.print ("Humedad ="); Serial.println (* Humedad);} void setup () {Serial.begin (57600); dht.begin (); // Configuración de Wifi WiFi.begin (_SSID, _PASSWORD); while (WiFi.status ()! =WL_CONNECTED) {retraso (500); Serial.print ("."); } Serial.println (); Serial.println ("WiFi conectado"); Serial.print ("dirección IP:"); Serial.println (WiFi.localIP ()); mqttCloudClient.begin (mqttCloudServer, mqttCloudPort, ipCloudStack); Serial.println ("iniciar ARTIK Cloud connect"); Serial.println (); while (! mqttCloudClient.connect (mqttCloudClientName, mqttCloudUsername, mqttCloudPassword)) {Serial.print ("*"); retraso (500); }} void messageReceived (tema de cadena, carga útil de cadena, char * bytes, longitud int sin firmar) {} void sendToArtikCloud (temperatura de flotación, humedad de flotación) {loadBuffer (temperatura, humedad); // carga los valores actuales en el búfer mqttCloudClient.publish (mqttCloudDataOut, buf);} void loadBuffer (temperatura de flotación, humedad de flotación) {StaticJsonBuffer <200> jsonBuffer; JsonObject &dataPair =jsonBuffer.createObject (); dataPair ["temperatura"] =temperatura; dataPair ["humedad"] =humedad; dataPair.printTo (buf, sizeof (buf));} void loop () {if (++ n> 10) {Serial.println ("Detenido"); salir (0); } mqttCloudClient.loop (); retraso (1000); getNextSample (&temperatura y humedad); Serial.println ("Publicando ..."); Serial.println (); sendToArtikCloud (temperatura, humedad); retraso (15000);} 
artik_led_actor.ino C / C ++
 #include  #include  #include  #define LED_RED_PIN 11 # define LED_YELLOW_PIN 13 # define RED_DELAY 5000 # define YELLOW_DELAY 10000const char * _SSID =" ] "; const char * _PASSWORD =" [Contraseña de Wi-Fi] "; // ARTIK Cloud MQTT paramschar mqttCloudServer [] ="api.artik.cloud"; int mqttCloudPort =1883; char mqttCloudClientName [] ="ARTIK-Arduino"; char mqttCloudUsername [] ="[id-dispositivo]"; char mqttCloudPassword [] ="[token de dispositivo]"; char mqttCloudActionsIn [] ="/v1.1/actions/[device-id]"; WiFiClient ipCloudStack; MQTTClient mqttCloudClient; char buf [128]; int SavedRedValue, SavedYellowValue; unsigned long SavedRedTime, SavedYellowTime; void setup () {Serial.begin (57600); pinMode (LED_RED_PIN, SALIDA); pinMode (LED_YELLOW_PIN, SALIDA); SavedRedValue =SavedYellowValue =0; // Configuración de Wifi WiFi.begin (_SSID, _PASSWORD); while (WiFi.status ()! =WL_CONNECTED) {retraso (500); Serial.print ("."); } Serial.println (); Serial.println ("WiFi conectado"); Serial.print ("dirección IP:"); Serial.println (WiFi.localIP ()); mqttCloudClient.begin (mqttCloudServer, mqttCloudPort, ipCloudStack); Serial.println ("iniciar ARTIK Cloud connect"); Serial.println (); while (! mqttCloudClient.connect (mqttCloudClientName, mqttCloudUsername, mqttCloudPassword)) {Serial.print ("*"); retraso (500); } mqttCloudClient.subscribe (mqttCloudActionsIn);} void messageReceived (String topic, String payload, char * bytes, unsigned int length) {Serial.print ("topic ="); Serial.println (tema); Serial.print ("carga útil ="); Serial.println (carga útil); Serial.print ("bytes ="); Serial.println (bytes); Serial.print ("longitud ="); Serial.println (longitud); parseBuffer (carga útil);} void parseBuffer (carga útil de cadena) {StaticJsonBuffer <200> jsonBuffer; String json =carga útil; JsonObject &root =jsonBuffer.parseObject (json); const char * nameparam =root ["acciones"] [0] ["nombre"]; const int actionLEDRed =root ["acciones"] [0] ["parámetros"] ["led_red"]; const int actionLEDYellow =root ["acciones"] [0] ["parámetros"] ["led_yellow"]; Serial.print ("nombre ="); Serial.println (nombreparam); Serial.print ("led_red ="); Serial.println (actionLEDRed); Serial.print ("led_yellow ="); Serial.println (actionLEDYellow); Serial.println (); if (actionLEDRed ==1) {if (SavedRedValue! =actionLEDRed) {digitalWrite (LED_RED_PIN, HIGH); SavedRedValue =actionLEDRed; } SavedRedTime =millis (); } else {if (SavedRedValue! =actionLEDRed) {if (millis () - SavedRedTime> RED_DELAY) {digitalWrite (LED_RED_PIN, LOW); SavedRedValue =actionLEDRed; }}} if (actionLEDYellow ==1) {if (SavedYellowValue! =actionLEDYellow) {digitalWrite (LED_YELLOW_PIN, HIGH); SavedYellowValue =actionLEDYellow; } SavedYellowTime =millis (); } else {if (SavedYellowValue! =actionLEDYellow) {if (millis () - SavedYellowTime> YELLOW_DELAY) {digitalWrite (LED_YELLOW_PIN, LOW); SavedYellowValue =actionLEDYellow; }}}} bucle vacío () {mqttCloudClient.loop (); retraso (500); } 

Proceso de manufactura

  1. Sensor DHT11 con LED y altavoz piezoeléctrico
  2. Arduino Spybot
  3. FlickMote
  4. Televisión casera B-Gone
  5. Reloj maestro
  6. Encuéntrame
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Cuadrúpedo
  10. Cómo leer la temperatura y la humedad en Blynk con DHT11
  11. Mkr1000 Pinout:una opción preferida para proyectos de IoT