Tabla de contenido:
- Paso 1: herramientas y piezas
- Paso 2: hacer la PCB
- Paso 3: hacer el recinto
- Paso 4: Montaje del monitor
- Paso 5: Configurar el servidor
- Paso 6: Programación del ESP8266
Video: Monitor de temperatura y humedad: 6 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
En este instructivo, le mostraré cómo hacer su propio monitor de temperatura y humedad para su sala de estar. El dispositivo también cuenta con capacidades WiFi, con el fin de registrar los datos en un servidor remoto (por ejemplo, una Raspberry Pi) y acceder a ellos más tarde a través de una sencilla interfaz web.
Las partes principales del dispositivo son un microcontrolador ESP8266, un sensor de temperatura y humedad DHT11 y una pantalla LCD de 16x4 caracteres. El proyecto es completamente de código abierto, así que siéntase libre de descargar el esquema, el diseño de la placa y los archivos de diseño para el gabinete y realizar los cambios que desee.
Paso 1: herramientas y piezas
Para construir el monitor, necesitará las siguientes partes:
1 x ESP-12F [2 €] - Hasta donde yo sé, ESP-12E y ESP-12F son básicamente idénticos, con la diferencia de que ESP-12F tiene una mejor antena.
1 x Sensor de temperatura y humedad DHT11 [0,80 €] - El DHT22 también funcionará, pero será necesario realizar algunos cambios en el modelo 3D de la carcasa, el DHT22 también es un poco más caro.
1 x LCD de 16x4 caracteres 5V [3.30 €] - Sí, necesitará uno de 5V ya que el PCB está diseñado para que el LCD se alimente directamente de 5V en lugar del regulador de voltaje. Esto se hizo para reducir la carga en el regulador de voltaje, pero también porque las pantallas de 5V tienden a ser más baratas. Pero no se preocupe, aunque el ESP8266 funciona a 3,3 V, seguirá funcionando bien.
1 x Regulador de voltaje LD1117V33 SMD, también conocido como LD33 (paquete SOT223) [0,80 €]
Condensador SMD cerámico 1 x 100nF (paquete 0603)
Condensador SMD de tantalio de 1 x 10uF (paquete 3528)
1 resistencia SMD de 10 K (paquete 0805)
1 olla recortadora de 10 K (orificio pasante)
1 resistencia SMD de 47 Ω (paquete 0805): esto es solo para limitar la corriente que va a la luz de fondo de la pantalla LCD. Siéntete libre de experimentar con diferentes valores de resistencia y elige la intensidad que prefieras.
1 x Interruptor momentáneo SMD [0.80 €] - El particular que utilicé es este, pero puedes usar cualquier interruptor momentáneo que desees con la misma huella. También pude encontrar los mismos interruptores en eBay por menos al obtener más de uno.
1 x conector DC de 5,5x2,1 mm (montaje en panel) [0,50 €] - El que utilicé tiene un diámetro de corte de panel de 8 mm y una longitud de 9 mm. Se puede encontrar fácilmente en eBay buscando "Conector de CC de montaje en panel" (consulte la imagen adjunta).
1 x 2,54 mm (100 mil) Encabezado de clavija macho de 40 pines (orificio pasante)
1 x 2,54 mm (100 mil) Cabezal de clavija hembra mecanizado de 40 pines (orificio pasante)
1 puente de 2,54 mm (100 mil): es el mismo que se utiliza en las placas base de las computadoras.
4 pernos M3 de 8 mm
4 insertos roscados M3 de 4x4 mm: se pueden encontrar fácilmente buscando "Insertos de cobre y latón a presión M3" en eBay (ver imagen adjunta).
4 tornillos M2 de 12 mm
4 x tuercas M2
1 x cable USB tipo A a 5,5x2,1 mm DC Plug [1,5 €] - Esto le permitirá alimentar su dispositivo desde un cargador de teléfono estándar o prácticamente cualquier computadora con un puerto USB. El dispositivo solo consume 300 mA en el peor de los casos y 250 mA en promedio, por lo que incluso un puerto USB 2.0 servirá.
1 x PCB: el grosor de la placa no es crítico, así que opte por 1,6 mm, que suele ser la opción más barata con la mayoría de los fabricantes de PCB.
3 x piezas de cable trenzado (aproximadamente 60 mm cada uno)
3 x piezas de tubería termorretráctil (aproximadamente 10 mm cada una)
Y las siguientes herramientas:
Soldador
Convertidor de USB a serie: lo necesitará para programar el ESP8266 en la placa.
Destornillador Phillips y / o llave hexagonal: según el tipo de tornillos que utilice.
Impresora 3D: si no tiene acceso a una impresora 3D, siempre puede usar una caja de proyecto de plástico genérica y hacer los recortes usted mismo con una Dremel. Las dimensiones internas mínimas para dicha caja deberán ser de 24 mm de altura, 94 mm de longitud y 66 mm de ancho. También necesitará utilizar separadores M2 de 8 mm para montar la pantalla LCD.
Dremel: solo es necesario si no opta por la carcasa impresa en 3D.
Paso 2: hacer la PCB
El primer paso es hacer la PCB. Puede hacerlo grabándolo usted mismo o simplemente yendo al sitio web de su fabricante de PCB favorito y haciendo un pedido. Si no planea realizar ningún cambio en el diseño de la placa, simplemente puede tomar el archivo ZIP que contiene los archivos gerber adjuntos en este paso y enviarlo directamente al fabricante. Sin embargo, en caso de que desee realizar cambios, aquí puede encontrar el esquema de KiCAD y los archivos de diseño de la placa.
Después de poner las manos en las placas, es hora de soldar los componentes. Esto debería ser bastante sencillo, pero hay algunas cosas que deben tenerse en cuenta. Primero, no proceda a soldar la PCB en el encabezado de la pantalla LCD todavía, esto deberá hacerse durante el ensamblaje final debido a la forma en que se diseñó el gabinete. Si está haciendo su propio cerramiento, no dude en ignorar ese consejo.
El conector U3 es donde se conectará el sensor DHT11. Idealmente, debería utilizar un cabezal de clavija hembra mecanizado en ángulo de 90 ° para ese propósito. Pero si no eres capaz de encontrar uno, solo consigue uno recto y dóblalo tú mismo. Si lo hace más tarde, los cables del DHT11 también serán un poco cortos, por lo que tendrá que soldar algunas extensiones. La distancia entre el cabezal del pin y el sensor una vez conectado debe ser de aproximadamente 5 mm.
La razón por la que desea utilizar un cabezal de clavija mecanizado es porque los orificios son más pequeños en comparación con los encabezados de clavija hembra normales. Por lo tanto, los cables del sensor pueden asentarse firmemente creando una conexión sólida. Pero también puede intentar soldar el DHT11 en una pieza de cabezal de clavija macho y conectarlo de esa manera a un encabezado de clavija hembra en ángulo regular, que debería funcionar igual de bien.
Paso 3: hacer el recinto
Ahora que la PCB está soldada, es hora de hacer la carcasa. Hay dos partes diferentes que deben imprimirse, el cuerpo principal del gabinete y la tapa. La tapa también cuenta con orificios de montaje para colocarla en la pared.
Ambas partes se pueden imprimir con una boquilla estándar de 0,4 mm a una altura de capa de 0,2 mm; en mi caso, el tiempo de impresión fue de aproximadamente 4 horas para ambas partes combinadas. Sin embargo, la tapa no requiere ningún soporte, la parte principal del armario sí, principalmente la parte debajo de los tornillos. Después de imprimir, tenga mucho cuidado al quitar los soportes, logré romper uno de los separadores de la pantalla LCD mientras hacía eso y tuve que volver a pegarlo con superglue.
El gabinete está diseñado en FreeCAD, por lo que si desea realizar algún cambio, debería ser bastante sencillo. Los archivos STL para imprimir el gabinete, así como los archivos de diseño de FreeCAD, se pueden encontrar en Thingiverse.
Paso 4: Montaje del monitor
Con el gabinete impreso, es hora de armar todo. Primero, coloque la pantalla LCD dentro de la carcasa y deslícela hacia la izquierda, de modo que quede un espacio entre ella y el orificio del sensor.
A continuación, coloque el PCB encima de él, con el sensor ya conectado en el encabezado del pin.
Después de eso, empuje el sensor en el orificio, deslice la pantalla LCD a su posición e inserte la PCB en el encabezado del pin. Ahora fije la pantalla LCD en su lugar usando tuercas y pernos M2, y suelde la PCB en el cabezal de clavija.
A continuación, coloque el conector de alimentación en su lugar, conecte algunos cables y suelde sus otros extremos a la PCB. El uso de algunos tubos termorretráctiles aquí también sería una buena idea.
El último paso es instalar los insertos roscados de metal para que la tapa se pueda atornillar en su lugar con pernos M3. Para ese propósito, necesitará usar su soldador para calentarlos, de modo que puedan introducirse en los orificios. Puede echar un vistazo a este instructivo si necesita más información sobre cómo agregar hilos de metal a sus impresiones 3D.
Paso 5: Configurar el servidor
Antes de cargar el firmware en el ESP8266, hay una cosa más que debe hacerse, que es configurar un servidor para registrar los datos recibidos por el dispositivo. Para ese propósito, puede usar prácticamente cualquier máquina Linux que desee, desde una Raspberry Pi en su red privada hasta una gota de DigitalOcean. Fui con el último, pero el proceso es prácticamente el mismo sin importar lo que elijas.
Instalación de Apache, MySQL (MariaDB) y PHP
Primero necesitamos configurar LAMP, o en otras palabras, instalar Apache, MySQL (MariaDB) y PHP en el servidor. Para eso, necesitará usar el administrador de paquetes de su distribución, por el bien del ejemplo, usaré apt, que es el administrador de paquetes utilizado por casi cualquier distribución basada en Debian, incluida Raspbian.
actualización de sudo apt
sudo apt instalar apache2 servidor mysql cliente mysql php libapache2-mod-php php-mysql
Una vez hecho esto, si coloca la dirección IP de su servidor en la barra de direcciones de su navegador, debería poder ver la página predeterminada de Apache.
Configurando la base de datos
Ahora necesitamos una base de datos para registrar los datos. Primero, conéctese a MySQL como root ejecutando, sudo mysql
Y cree la base de datos y un usuario con acceso a ella de la siguiente manera, CREAR `sensores` DE BASE DE DATOS
USE `sensores`; CREATE TABLE `temperature` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) MOTOR = InnoDB; CREATE TABLE `humedad` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) MOTOR = InnoDB; CREAR USUARIO '[nombre de usuario]' @ 'localhost' IDENTIFICADO POR '[contraseña]'; OTORGAR TODOS LOS PRIVILEGIOS DE 'sensores'. * A 'sensores' @ 'localhost'; SALIDA
Asegúrese de reemplazar [nombre de usuario] y [contraseña] con el nombre de usuario y la contraseña reales del usuario de MySQL que desee. Además, anótelos porque los necesitará para el siguiente paso.
Configuración de los scripts de la interfaz web y de registro
Cambie al directorio / var / www / html, que es la raíz del documento del host virtual predeterminado de Apache, elimine el archivo HTML que contiene la página web predeterminada y descargue los scripts de registro y de la interfaz web que contiene.
cd / var / www / html
sudo rm index.html sudo wget https://raw.githubusercontent.com/magkopian/esp-arduino-temp-monitor/master/server/log.php sudo wget https://raw.githubusercontent.com/magkopian/esp- arduino-temp-monitor / master / server / index.php
Ahora edite el script de registro usando nano, sudo nano log.php
Deberá reemplazar el [nombre de usuario] y la [contraseña] con el nombre de usuario y la contraseña del usuario de MySQL que creó en el paso anterior. Además, reemplace la [clave del cliente] con una cadena única y tome nota de ella. Esto se utilizará como contraseña para que el monitor pueda autenticarse en el servidor.
Finalmente, edite el index.php con nano, sudo nano index.php
y reemplace el [nombre de usuario] y la [contraseña] con el nombre de usuario y la contraseña del usuario de MySQL como lo hizo con el script de registro.
Configuración de HTTPS (opcional)
Esto puede ser opcional, pero si la conexión entre el ESP8266 y el servidor es a través de Internet, se recomienda encarecidamente utilizar algún cifrado.
Lamentablemente, no puede seguir adelante y usar algo como Let's Encrypt para obtener un certificado. Esto se debe a que, al menos en el momento de la escritura, la biblioteca de cliente HTTP para ESP8266 aún requiere que la huella digital del certificado se proporcione como segundo argumento al llamar a http.begin (). Esto significa que si usa algo como Let's Encrypt, tendrá que actualizar el firmware al chip cada 3 meses para actualizar la huella digital del certificado después de cada renovación.
Una forma de evitarlo sería generar un certificado autofirmado que caduca después de mucho tiempo (por ejemplo, 10 años) y mantener el script de registro en su propio host virtual con su propio subdominio. De esa manera, puede tener la interfaz web para acceder a los datos en un subdominio separado, que utilizará un certificado adecuado de una autoridad confiable. El uso de un certificado autofirmado en este caso no es un problema de seguridad, ya que la huella digital del certificado que lo identifica de forma única estará codificada en el firmware y el certificado solo será utilizado por el ESP8266.
Antes de comenzar, asumiré que ya posee un nombre de dominio y puede crear subdominios en él. Entonces, para generar un certificado que caduque después de 10 años, ejecute el siguiente comando y responda las preguntas.
sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout /etc/ssl/private/sensors.key -out /etc/ssl/certs/sensors.crt
Como se trata de un certificado autofirmado, lo que responda en la mayoría de las preguntas no importa demasiado, a excepción de la pregunta que solicita el nombre común. Aquí es donde deberá proporcionar el subdominio completo que se utilizará para este host virtual. El subdominio que proporcionará aquí deberá ser el mismo que el nombre del servidor que establecerá más adelante en la configuración de su host virtual.
A continuación, cree una nueva configuración de host virtual, sudo nano /etc/apache2/sites-available/sensors-ssl.conf
con los siguientes contenidos, ServerName [subdominio] DocumentRoot / var / www / sensers SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Opciones + FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG-_DIR} error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log combinado
Nuevamente, asegúrese de reemplazar el [subdominio] con el mismo subdominio que utilizó con el certificado. En este punto, deberá deshabilitar el host virtual predeterminado de Apache, sudo a2dissite 000-predeterminado
cambiar el nombre del directorio raíz del documento, sudo mv / var / www / html / var / www / sensores
y finalmente habilite el nuevo host virtual y reinicie Apache, sudo a2ensite sensores-ssl
sudo systemctl reiniciar apache2
Lo último que debe hacer es obtener la huella digital del certificado, porque deberá usarlo en el código de firmware.
openssl x509 -noout-huella dactilar -sha1 -inform pem -in /etc/ssl/certs/sensors.crt
El http.begin () espera que los delimitadores entre los bytes de la huella digital sean espacios, por lo que deberá reemplazar los dos puntos con espacios antes de usarlo en su código.
Ahora, si no desea utilizar un certificado autofirmado para la interfaz web, configure un nuevo subdominio y cree una nueva configuración de host virtual, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf
con los siguientes contenidos, Nombre del servidor [subdominio] DocumentRoot / var / www / sensores #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomain]/privkey.pem #SSLCertificateC=es /letsencrypt/live/[subdomain]/chain.pem Opciones + FollowSymlinks - Índices AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access-ssl.log combinado
Asegúrese de reemplazar el [subdominio] con el subdominio que ha configurado para la interfaz web. A continuación, habilite el nuevo host virtual, reinicie Apache, instale certbot y obtenga un certificado para el nuevo subdominio de Let's Encrypt, sudo a2ensite sensores-web-ssl
sudo systemctl reiniciar apache2 sudo apt update sudo apt install certbot sudo certbot certonly --apache -d [subdominio]
Después de obtener el certificado, edite la configuración del host virtual nuevamente para descomentar las líneas SSLEngine, SSLCertificateFile, SSLCertificateKeyFile y SSLCertificateChainFile, y reinicie Apache.
Y ahora puede usar el primer subdominio que usa el certificado autofirmado para enviar los datos del ESP8266 al servidor, mientras que usa el segundo para acceder a la interfaz web desde su navegador. Certbot también se encargará de renovar automáticamente su certificado Let's Encrypt cada 3 meses, utilizando un temporizador systemd que debería estar habilitado de forma predeterminada.
Paso 6: Programación del ESP8266
Finalmente, lo único que queda por hacer es cargar el firmware en el microcontrolador. Para hacerlo, descargue el código fuente del firmware desde aquí y ábralo usando el IDE de Arduino. Deberá reemplazar [SSID] y [Contraseña] con el SSID y la contraseña reales de su red WiFi. También deberá reemplazar [ID de cliente] y [Clave de cliente] en la llamada a la función sprintf con las que utilizó en el script PHP en el servidor. Finalmente, deberá reemplazar el [Host] con el nombre de dominio o la dirección IP del servidor. Si está utilizando HTTPS, también deberá proporcionar la huella digital de su certificado como segundo argumento en la llamada de función de http.begin (). Expliqué cómo obtener la huella digital del certificado en la sección "Configuración de HTTPS" en el paso anterior.
A continuación, si aún no lo ha hecho, deberá instalar el paquete principal de la comunidad ESP8266 utilizando el Board Manager del IDE de Arduino. Una vez hecho esto, seleccione NodeMCU 1.0 (Módulo ESP-12E) en el menú de placas. A continuación, deberá instalar la biblioteca SimpleDHT utilizando el Administrador de bibliotecas. Finalmente, presione el botón Verificar en la esquina superior izquierda de su ventana IDE para asegurarse de que el código se compile sin errores.
Y ahora, finalmente es el momento de grabar el firmware en el microcontrolador. Para hacerlo mueva el jumper JP1 a la derecha, así GPIO0 del ESP8266 se conectará a tierra lo que habilitará el modo de programación. Luego, conecte su convertidor de USB a serie usando cables de puente al encabezado de programación que está etiquetado como P1. El pin 1 del encabezado de programación está conectado a tierra, el pin 2 es el pin de recepción del ESP8266 y el pin 3 es el de transmisión. Necesita la recepción del ESP8266 para ir a la transmisión de su convertidor de USB a serie, la transmisión a la recepción y, por supuesto, la tierra a tierra.
Finalmente, encienda el dispositivo con 5V usando su cable USB a conector DC y conecte el convertidor USB a serie a su computadora. Ahora debería poder ver el puerto serie virtual donde está conectado el ESP8266, tan pronto como abra el menú de herramientas en su IDE. Ahora, simplemente presione el botón Cargar y listo. Si todo salió como se esperaba, debería poder ver las lecturas de temperatura y humedad en la pantalla LCD del dispositivo. Después de que el ESP8266 se conecte a su red y comience a comunicarse con el servidor, la fecha y hora actuales también deberían aparecer en la pantalla.
Después de unas horas, cuando el servidor haya recopilado una buena cantidad de datos, debería poder ver las tablas de temperatura y humedad visitando http (s): // [host] /index.php?client_id= [id del cliente]. Donde [host] es la dirección IP de su servidor o el subdominio que está usando para la interfaz web, y [id de cliente] la identificación de cliente del dispositivo, que si lo deja en su valor predeterminado, debería ser 1.
Recomendado:
Medidor de temperatura y humedad de IoT con pantalla OLED: 5 pasos (con imágenes)
Medidor de temperatura y humedad de IoT con pantalla OLED: verifique la temperatura y la humedad en una pantalla OLED en cualquier momento que desee y al mismo tiempo recopile esos datos en una plataforma de IoT.La semana pasada publiqué un proyecto llamado Medidor de temperatura y humedad de IoT más simple. Ese es un buen proyecto porque puedes c
¡Automatizando un invernadero con LoRa! (Parte 1) -- Sensores (temperatura, humedad, humedad del suelo): 5 pasos
¡Automatizando un invernadero con LoRa! (Parte 1) || Sensores (temperatura, humedad, humedad del suelo): en este proyecto les mostraré cómo automaticé un invernadero. Eso significa que les mostraré cómo construí el invernadero y cómo conecté la electrónica de potencia y automatización. También te mostraré cómo programar una placa Arduino que usa L
Monitoreo de temperatura y humedad con Raspberry Pi: 6 pasos (con imágenes)
Monitoreo de temperatura y humedad con Raspberry Pi: Se acerca el verano, y quienes no tengan aire acondicionado deben estar preparados para controlar la atmósfera en interiores manualmente. En esta publicación, estoy describiendo la forma moderna de medir los parámetros más importantes para el confort humano: temperatura y humedad. T
Monitor meteorológico M5Stack M5stick C basado en ESP32 con DHT11 - Monitoree la temperatura, la humedad y el índice de calor en M5stick-C con DHT11: 6 pasos
Monitor meteorológico M5Stack M5stick C basado en ESP32 con DHT11 | Monitoree la temperatura, la humedad y el índice de calor en M5stick-C con DHT11: Hola chicos, en este instructivo aprenderemos cómo conectar el sensor de temperatura DHT11 con m5stick-C (una placa de desarrollo de m5stack) y mostrarlo en la pantalla de m5stick-C. Entonces en este tutorial leeremos la temperatura, la humedad & calor yo
Monitor de humedad inalámbrico (ESP8266 + Sensor de humedad): 5 pasos
Monitor de humedad inalámbrico (ESP8266 + Sensor de humedad): compro perejil en maceta y la mayor parte del día la tierra estaba seca. Así que decido hacer este proyecto, sobre la detección de la humedad del suelo en una maceta con perejil, para comprobar cuándo necesito verter el suelo con agua. Creo que este sensor (sensor capacitivo de humedad v1.2) es bueno porque