Sistema de monitoreo meteorológico basado en IoT que utiliza fotones de partículas

Los sistemas de monitoreo del clima se utilizan para monitorear las condiciones climáticas en constante cambio. Los datos recopilados por estos dispositivos se utilizan para predecir el clima y también para mantener un registro de los cambios ambientales en un lugar. Estos datos son extremadamente útiles para estudiar la Tierra y analizar cambios en las condiciones climáticas y ambientales de un lugar. Además, los datos y análisis así recopilados se pueden utilizar en una variedad de aplicaciones, como agricultura, geología, minería y pronóstico del tiempo. En este proyecto, se diseña un sistema simple de monitoreo del clima que puede monitorear la temperatura y la humedad de un lugar.
El sistema de monitoreo del clima diseñado en este proyecto es un dispositivo IOT construido sobre Particle Photon. Particle Photon es una placa IOT compatible con Arduino. Para escribir código de programa para cualquier Photon, el desarrollador debe crear una cuenta en el sitio web de Particle y registrar la placa Photon con su cuenta de usuario. Luego, el código del programa se puede escribir en el IDE web del sitio web de Particle y transferirse a una placa IOT registrada a través de Internet. Si el tablero de partículas seleccionado, aquí Photon, está encendido y conectado al servicio de nube de partículas, el código se escribe en el tablero seleccionado por aire a través de una conexión a Internet y el tablero comienza a funcionar de acuerdo con el código transferido.
En el proyecto, el Particle Photon interactúa con el sensor de temperatura y humedad DHT-11. Los valores de temperatura y humedad medidos por el sensor se muestran en una pantalla LCD montada en el dispositivo. La placa permanece conectada a un servidor remoto mediante conexión Wi-Fi y continúa enviando datos del sensor al servicio en la nube. La aplicación Blynk se utiliza para monitorear los datos del servicio en la nube para poder acceder a los datos en tiempo real desde cualquier teléfono inteligente compatible con Android o IOS.
Blynk es una aplicación móvil de Internet de las cosas que puede funcionar con una variedad de placas IoT como Arduino, Raspberry Pi, ESP8266, SparkFun y otras. Para conectar la aplicación a una placa IOT, el usuario necesita obtener un Token de autorización (Token de autenticación). Primero, el usuario debe descargar la aplicación Blynk para Android o IOS e instalarla en un teléfono inteligente. El usuario ahora debe crear una nueva cuenta y crear un nuevo proyecto. Durante la creación del proyecto, se debe seleccionar la placa IOT (en este caso Particle Photon) y el tipo de conexión (en este caso Wi-Fi). Al crear un nuevo proyecto, el token de autenticación se envía al correo electrónico registrado del usuario. Para codificar la placa de destino, la biblioteca Blynk debe descargarse del sitio web oficial de Blynk y los archivos de la biblioteca deben agregarse a la carpeta Sketchbook del IDE de Arduino. Ahora la placa de destino se puede codificar especificando su token de autenticación en Arduino Sketch.
Protótipo de sistema de monitoramento meteorológico IOT baseado em partículas fotônicas e Blynk
Figura 1: Prototipo de sistema de monitoreo meteorológico IOT basado en partículas fotónicas y Blynk

Componentes necesarios –

Lista de componentes necessários para o sistema de monitoramento climático IOT baseado em fótons de partículas e Blynk
Fig. 2: Lista de componentes necesarios para el sistema de monitoreo meteorológico IOT basado en Particle Photon y Blynk
Diagrama de bloques -

Diagrama de blocos do sistema de monitoramento meteorológico IOT baseado em partículas fotônicas e Blynk

Fig. 3: Diagrama de bloques del sistema de monitoreo meteorológico IOT basado en partículas fotónicas y Blynk

Conexiones de circuito –

El dispositivo de monitoreo del clima está construido sobre Particle Photon. El dispositivo se ensambla interconectando el Sensor de Temperatura y Humedad DHT 11 y un LCD de 16X2 caracteres con la placa IOT. El circuito ensamblado tiene las siguientes conexiones de circuito:
Imagem de um sistema de monitoramento climático de IoT baseado em fótons de partículas e Blynk
Fig. 4: Imagen del sistema de monitoreo meteorológico IOT basado en Particle Photon y Blynk

Particle Photon: Photon es una placa IOT popular disponible en la plataforma Particle. La placa alberga el microcontrolador ARM Cortex M3 STM32F205 de 120 Mhz y cuenta con 1 MB de memoria flash, 128 Kb de RAM y 18 pines de salida de entrada de propósito general (GPIO) de señal mixta con periféricos avanzados. El módulo tiene un chip Wi-Fi Cypress BCM43362 integrado para conectividad Wi-Fi y IEEE 802.11b/g/n de banda única de 2,4 GHz para Bluetooth. La placa está equipada con 2 SPI, un I2S, un I2C, un CAN y una interfaz USB. La partícula de fotones tiene la siguiente configuración de pines:

Tabela de listagem de configuração de pinos de partículas fótons
Fig. 5: Tabla que enumera la configuración del pin de fotones de partículas
Tabela de listagem de configuração de pinos de partículas fótons
Fig. 6: Tabla que enumera la configuración del pin de fotones de partículas
Cabe señalar que 3V3 es una salida filtrada utilizada para sensores analógicos. Este pin es la salida del regulador integrado y está conectado internamente al VDD del módulo Wi-Fi. Al alimentar el Photon a través del puerto VIN o USB, este pin producirá un voltaje de 3,3 V CC. Este pin también se puede utilizar para alimentar el Photon directamente (entrada máxima de 3,3 V CC). Cuando se utiliza como salida, la carga máxima en 3V3 es de 100 mA. Las señales PWM tienen una resolución de 8 bits y funcionan a una frecuencia de 500 Hz. En el circuito, se utilizan 6 pines GPIO del módulo para interactuar con el LCD de caracteres y un pin para interactuar con el sensor de temperatura y humedad de caracteres. -11.
LCD 16X2: La pantalla LCD 16X2 se utiliza para mostrar los valores medidos de temperatura y humedad. Está conectado al Particle Photon conectando sus pines de datos D7 a D4 a los pines D0 a D3 del tablero de partículas. Los pines E y RS del LCD están conectados a los pines D5 y D6 del tablero de partículas, respectivamente. El pin LCD RW está conectado a tierra.
Tabela de listagem de conexões de circuito entre LCD de caracteres e Arduino UNO
Fig. 7: Tabla que enumera las conexiones del circuito entre el LCD de caracteres y el Arduino UNO
Sensor de temperatura y humedad DHT-11: el sensor DHT-11 lee la temperatura y humedad ambiente y transmite los datos al microcontrolador como datos digitales. El pin de datos del sensor de temperatura y humedad DHT11 está conectado al pin D4 del Particle Photon. Los pines VCC y de tierra del sensor están conectados a VCC y tierra comunes.
Fuente de alimentación – En el circuito, los módulos de partículas de fotones y sensores necesitan una corriente continua regulada de 5 V para su funcionamiento. La red de CA se utiliza como fuente primaria de energía. La alimentación de red se reduce mediante un transformador y se rectifica mediante un puente rectificador completo. La salida rectificada se regula a 5 V y 12 V mediante circuitos integrados 7805 y 7812. El pin 1 de ambos circuitos integrados reguladores de voltaje está conectado al ánodo de la batería y el pin 2 de ambos circuitos integrados está conectado a tierra. Las respectivas salidas de voltaje se toman del pin 3 de los respectivos circuitos integrados reguladores de voltaje. También se conecta un LED junto con una resistencia pull-up de 10 K Ω entre la tierra común y el pin de salida para obtener una señal visual de la continuidad de la energía.
Cómo funciona el circuito –
Después de ensamblar el circuito, el código del programa se puede cargar en el tablero de partículas usando el IDE de Arduino. Los archivos de la biblioteca de App Blynk deben incluirse en la carpeta del cuaderno de bocetos de Arduino para generar código que pueda conectarse a App Blynk. El código para el marco de destino (Particle Photon en este caso) debe tener la plantilla de código mencionada en el siguiente esquema de ejemplo:
Ejemplo de boceto de partículas de fotones para la aplicación Blynk
La plantilla de código proporcionada en el enlace anterior agrega la biblioteca Blynk a Particle Photon al exponer las variables a la nube Blynk. El nuevo código debe actualizarse al nuevo kit de desarrollo. El Photon debe estar conectado a un punto de acceso a Internet a través de Wi-Fi. El código del programa Photon se puede transferir a la placa por aire. A medida que el código se transfiere a la placa, ésta comienza a funcionar de acuerdo con él.
El sensor de temperatura y humedad DHT11 es un sensor digital con un termistor y un sensor de humedad capacitivo incorporados. Transmite una lectura de temperatura y humedad en tiempo real cada 2 segundos. El sensor funciona con una fuente de alimentación de 3,5 a 5,5 V y puede leer temperaturas entre 0° C y 50° C y humedad relativa entre 20% y 95%. El DHT11 detecta vapor de agua midiendo la resistencia eléctrica entre los dos electrodos. El componente sensor de humedad es un sustrato que atrapa la humedad con electrodos aplicados a la superficie. Cuando el sustrato absorbe vapores de agua, el sustrato libera iones, lo que aumenta la conductividad entre los electrodos. El cambio de resistencia entre los dos electrodos es proporcional a la humedad relativa. Una humedad relativa más alta disminuye la resistencia entre los electrodos, mientras que una humedad relativa más baja aumenta la resistencia entre los electrodos. El DHT11 mide la temperatura con un sensor de temperatura NTC (termistor) montado en superficie integrado en la unidad.
El Sensor DHT 11 envía datos en formato digital al pin del controlador en el protocolo de un solo cable que debe implementarse en el lado del firmware. Primero, el pin de datos se configura para la entrada y se le envía una señal de inicio. La señal de inicio comprende un BAJO durante 18 milisegundos seguido de un ALTO durante 20 a 40 microsegundos seguido de un BAJO nuevamente durante 80 microsegundos y un ALTO durante 80 microsegundos. Después de enviar la señal de inicio, el pin se configura para salida digital y se bloquean los datos de 40 bits que consisten en la lectura de temperatura y humedad. De los datos de 5 bytes, los primeros dos bytes son la parte entera y decimal de la lectura de humedad relativa respectivamente, el tercer y cuarto bytes son la parte entera y decimal de la lectura de temperatura, y el último es el byte de suma de comprobación. El protocolo de un solo cable se implementa en el firmware utilizando una biblioteca de código abierto disponible para Photon.
La temperatura y la humedad medidas a través del sensor DHT 11 se muestran en la pantalla LCD y se envían a Blynk Cloud a través de una conexión Wi-Fi. El proyecto utiliza el panel de la aplicación Blynk para mostrar la temperatura y la humedad. La aplicación emula el tablero de creación de prototipos de teléfonos inteligentes donde se pueden arrastrar y soltar botones, controles deslizantes, pantallas, gráficos y otros widgets funcionales. En cuestión de minutos, estos widgets pueden controlar y obtener datos de placas de creación de prototipos como Arduino, Raspberry Pi y, en este caso, Particle Photon. En la aplicación desarrollada para el proyecto, hay dos widgets de medidor que se utilizan para mostrar el valor de temperatura y humedad. Para obtener más información sobre cómo utilizar la aplicación Blynk, consulte el siguiente documento en el sitio web de Blynk:
Empezando con Blynk
Captura de tela móvel da interface do usuário do aplicativo Blynk para sistema de monitoramento meteorológico IOT baseado em Particle Photon
Fig. 8: Captura de pantalla móvil de la interfaz de usuario de la aplicación Blynk para el sistema de monitoreo meteorológico IOT basado en Particle Photon

Los datos se muestran en la aplicación en tiempo real y se actualizan cada 2 segundos. Consulte el código del programa para ver cómo Photon lee la temperatura y la humedad del sensor DHT-11 y lo envía a la aplicación Blynk.

Guía de programación –
En primer lugar, se importan la biblioteca de sensores DHT y la biblioteca LiquidCrystal. La biblioteca se agrega automáticamente mediante Particle Web IDE. Se define una constante para indicar el pin al que está conectado el sensor DHT 11 y se define una constante para indicar la variante del sensor DHT. Se crea una instancia de un objeto de tipo LCD y se asigna a los pines que conectan la pantalla LCD al tablero de partículas. Una función dht_wrapper se declara y se llama al crear una instancia del objeto DHT. Se declaran algunas variables para mantener el tiempo de muestreo para el sensor DHT y el valor del contador. Se declara que una matriz de caracteres contiene los datos del sensor que se enviarán a la página web. Se define otra matriz de caracteres que contiene el token de autenticación. El token de autenticación enviado al correo electrónico del usuario debe almacenarse en esta matriz de caracteres.
Captura de tela do código C incorporado usado no Particle Photon para IoT Weather Monitoring System
Fig. 9: Captura de pantalla del código C integrado utilizado en el sistema de monitoreo meteorológico Particle Photon para IoT
Se llama a la función de configuración y la velocidad en baudios para la comunicación en serie con el punto de acceso a Internet se establece en 9600 baudios por segundo. El objeto LCD se inicializa llamando al método Begin en el objeto LCD donde el objeto LCD se inicializa en una pantalla de 16X2. Algunos mensajes iniciales se muestran en la pantalla LCD y el tiempo de muestreo de DHT se establece en 0 para la primera muestra. Se expone una variable a la partícula mediante el método de variable y se envía una cadena a la nube mediante el método de publicación. La aplicación Blynk se inicializa utilizando el método Begin en el objeto Blynk, donde la variable que lleva el token de autenticación se pasa como parámetro. Dentro de la función dht_wrapper, se llama al método isrCallback en el objeto DHT que ejecuta la rutina del servicio de interrupción para el objeto.
Captura de tela da função de configuração no código C incorporado usado no Particle Photon para o sistema de monitoramento meteorológico IoT
Fig. 10: Captura de pantalla de la función de configuración en el código C integrado utilizado en el sistema de monitoreo meteorológico Particle Photon para IoT
La función de bucle se llama y se itera infinitamente. En la función de bucle, el método de ejecución se llama en el objeto Blynk. Esta función se llama para procesar los comandos recibidos y administrar la conexión Blynk. Al llamar a la función Millis, se verifica si la placa ya ha comenzado a ejecutar el código y, si lo ha hecho, se recopilan datos de muestra del sensor DHT utilizando el método de adquisición en el objeto DHT. Si la placa ya adquirió datos del sensor, los datos del sensor DHT se obtienen utilizando los métodos getCelcius y getHumidity en el objeto dht. Los datos se almacenan en variables, se agrupan en cadenas adecuadas y se envían a la URL del registro de datos mediante el método de publicación en el objeto Particle. La función Blynk.virtualwire se utiliza para transferir los datos a la nube de Blynk y se muestran en el panel de la aplicación de Android. La variable contador se incrementa para cada recolección de muestra.
Captura de tela da função Loop no código C incorporado usado no Particle Photon para o sistema de monitoramento meteorológico IoT
Fig. 11: Captura de pantalla de la función Loop en código C integrado utilizado en el sistema de monitoreo meteorológico Particle Photon para IoT
Consulte el código completo en la sección de códigos. Tome un tablero de partículas y los demás componentes, monte el circuito y comience a codificar. Este proyecto de IOT va a ser realmente divertido.

Código fuente del proyecto

 //Programa para

 // Esta declaración #include fue agregada automáticamente por Particle IDE.

 #incluir


 // Esta declaración #include fue agregada automáticamente por Particle IDE.

 #incluir


 #define BLYNK_PRINT Serial // Establece la salida en serie para impresiones de depuración

 //#define BLYNK_DEBUG // Descomentar esto para ver impresiones detalladas


 #incluir



 #definir DHTTYPE DHT11

 #definir DHTPIN 4

 #definir DHT_SAMPLE_INTERVAL 60000


 Lcd de cristal líquido (6, 5, 0, 1, 2, 3);



 vacío dht_wrapper; // debe declararse antes de la inicialización de la biblioteca


 //Creación de instancia de Lib

 PietteTech_DHT DHT(DHTPIN, DHTTYPE, dht_wrapper);


 // globales
 
sin firmar int DHTnextSampleTime; // La próxima vez que queramos empezar a muestrear

 bool bDHT iniciado; // bandera para indicar que comenzamos la adquisición

 int n; // encimera


 //esto viene de

 resultados de char (64); //Cadena para almacenar los datos del sensor


 // Deberías obtener el token de autenticación en la aplicación Blynk.

 // Vaya a la Configuración del proyecto (icono de tuerca).

 autenticación de caracteres = "0395c08357fd480ba67b172ccdfa7039";


 // Adjunte un widget de botón (modo: interruptor) al pin digital 7 y controle el LED azul incorporado.

 // Adjunte un widget de gráfico al pin analógico 1

 // Adjunte un widget de indicador al pin analógico 2


 carácter VERSIÓN(64) = "0,04";


 configuración vacía

 {

 Serie.begin(9600);



 lcd.comenzar(16,2);


 lcd.setCursor(0,0);

 lcd.print("Meteo IoT");

 lcd.setCursor(0,1);

 lcd.print("Monitoreo");

 retraso(2000);

 lcd.claro;

 lcd.setCursor(0,0);

 lcd.print("GARAJE PARA INGENIEROS");

 retraso(2000);

 lcd.claro;



 retraso(5000); // Permitir que el tablero se asiente



 DHTnextSampleTime = 0; // Iniciar la primera muestra inmediatamente
 
Partícula.variable("resultado", resultadostr, STRING);


 Particle.publish("DHT11 - versión de firmware", VERSIÓN, 60, PRIVADO);


 Blynk.begin(autenticación);

 }


 vacío dht_wrapper

 {

 DHT.isrCallback;

 }


 bucle vacío

 {

 Blynk.ejecutar;



 si (milis > DHTnextSampleTime) {



 si (!bDHTstarted) { // inicia la muestra

 DHT.adquirir;

 bDHTiniciado = verdadero;

 }



 si (!DHT.adquiriendo) { // ¿Se ha completado la muestra?


 temperatura flotante = (flotante)DHT.getCelsius;

 int temp1 = (temp - (int)temp) * 100;



 lcd.claro;

 lcd.setCursor(0,0);

 lcd.print("T:");

 lcd.print((int)temp1);

 lcd.escribir(1);

 lcd.imprimir("C");


 char tempInChar(32);

 sprintf(tempInChar,"%0d.%d", (int)temp, temp1);

 Particle.publish("La temperatura del dht11 es:", tempInChar, 60, PRIVATE);


 //el pin virtual 1 será la temperatura

 Blynk.virtualWrite(V1, tempInChar);


 //google docs puede obtener esta variable

 sprintf(resultstr, "{"t":%s}", tempInChar);


 flotar húmedo = (flotar)DHT.getHumidity;

 int húmedo1 = (húmedo - (int)húmedo) * 100;


 
lcd.claro;

 lcd.setCursor(0,0);

 lcd.print("Humedad:");

 lcd.print((int)humid1);


 sprintf(tempInChar,"%0d.%d", (int)húmedo, húmedo1);

 Particle.publish("La humedad del dht11 es:", tempInChar, 60, PRIVATE);


 //el pin virtual 2 será la humedad

 Blynk.virtualWrite(V2, tempInChar);


 n++; // contador de incrementos

 bDHTiniciado = falso; // restablecer la bandera de muestra para que podamos tomar otra

 DHTnextSampleTime = milis + DHT_SAMPLE_INTERVAL; // establecer la hora para la siguiente muestra

 }


 }

 retraso(2000);

 } 

Vídeo del proyecto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.