Tabla de contenido:

Registrador de temperatura WiFi (con ESP8266): 11 pasos (con imágenes)
Registrador de temperatura WiFi (con ESP8266): 11 pasos (con imágenes)

Video: Registrador de temperatura WiFi (con ESP8266): 11 pasos (con imágenes)

Video: Registrador de temperatura WiFi (con ESP8266): 11 pasos (con imágenes)
Video: ✅ WIFI Modulo ESP8266 Conectarse y enviar datos por Internet ❗Comandos AT❗ 2024, Mes de julio
Anonim
Image
Image
Materiales
Materiales

Hola, me alegro de verte aquí. Espero que en este instructivo encuentres información útil. No dudes en enviarme sugerencias, preguntas,… Aquí tienes algunos datos básicos y una descripción general rápida del proyecto. Para usuarios de dispositivos móviles: Video. Déjame saber lo que piensas del proyecto en la sección de comentarios, gracias. Recientemente compré una placa NodeMcu (basada en esp8266) solo para probarla, por lo que este no es un proyecto realmente avanzado. Pero funciona y es lo que necesito, así que está bien. La función principal de este registrador de datos es recolectar la temperatura y guardarla en un servidor. Esto permite a los usuarios verificar datos y gráficos en línea incluso cuando no se encuentran en la misma ubicación del registrador (por ejemplo, para una estación meteorológica). Otra característica útil es la actualización OTA incluida en el código que permite al usuario actualizar y personalizar el software fácilmente. Analizaré dos sensores y su método de adquisición relacionado para hacer un balance de todos los pros y contras.

Spoiler: después de algunas pruebas, descubrí que un sensor digital como DS18B20 es la mejor solución porque ofrece estabilidad y mayor precisión. Ya es impermeable y con cable.

Paso 1: Materiales

Materiales
Materiales
Materiales
Materiales
Materiales
Materiales

Este es un proyecto mínimo con solo unos pocos componentes externos, por lo que la lista de BOM será realmente corta. Sin embargo, veamos qué material se solicita:

  • NodeMcu V3 (o cualquier procesador μ ESP8266 compatible);
  • LED RGB (ánodo común);
  • Resistencias para led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (termómetro integrado Maxim);
  • LM35 (termómetro de instrumentos de Texas);
  • Batería externa (opcional);
  • Cable;
  • Conector (para hacerlo más "avanzado");
  • Box (opcional, nuevamente para hacerlo más "avanzado");
  • Soporte de led (opcional);

Nota: Como dije, debe elegir uno de los dos métodos. Si elige el termómetro LM35, necesitará algunos otros componentes:

  • Attiny45 / 85;
  • Programador AVR (o Arduino como ISP);
  • Resistencia (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Conector de tira de 2,54 mm (opcional)
  • Diodo (2x1N914)
  • Perfboard o PCB;

Paso 2: elegir el sensor

Elegir el sensor
Elegir el sensor

Elegir el sensor puede ser un paso difícil: hoy en día hay toneladas de transductores (TI ofrece 144 elementos diferentes) tanto analógicos como digitales con diferentes rangos de temperatura, precisión y carcasa. Sensores analógicos (46 piezas disponibles de TI): Ventajas:

  • El registrador de datos se puede cambiar fácilmente de temperatura a otra cantidad (voltaje, corriente,…);
  • Puede ser un poco más económico;
  • Fácil de usar ya que no requiere ninguna biblioteca especial;

Contras:

  • Requiere ADC (que puede influir en la precisión de la medición) y otros componentes externos. Dado que esp8266 tiene solo un ADC (y no es realmente preciso), sugeriría usar uno externo.
  • Necesita cable dedicado con rechazo de ruido ya que cualquier voltaje inducido puede cambiar el resultado.

Después de pensarlo un poco, decidí usar LM35, un sensor lineal con un factor de escala de + 10mV / ° C con una precisión de 0.5 ° C y una corriente muy baja (aproximadamente 60uA) con un voltaje de operación de 4V a 30V. Para más detalles sugiero ver la hoja de datos: LM35.

Sensores digitales (muy recomendado) Pros:

Casi todos los componentes externos necesarios;

ADC integrado

Contras:

Solicitar biblioteca o software para decodificar la señal digital (I2C, SPI, Serial, One Wire,…);

Más caro;

Elegí DS18B20 porque encontré un conjunto de 5 sensores a prueba de agua en Amazon y porque está ampliamente documentado en Internet. La característica principal es la medición de 9-12 bits, bus de 1 cable, voltaje de suministro de 3.0 a 5.5, precisión de 0.5 ° C. Nuevamente, para obtener más detalles, aquí está la hoja de datos: DS18B20.

Paso 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Analicemos cómo he implementado el ADC externo y otras funciones para el termómetro LM35. Encontré un cable con tres hilos, uno con blindaje y dos sin él. Decidí agregar un capacitor de desacoplamiento para estabilizar el voltaje de suministro cerca del sensor. Para convertir la temperatura analógica a digital, he usado el microprocesador Attiny85 en un paquete dip8 (nuevamente para obtener más información, consulte la hoja de datos: attiny85). Lo más importante para nosotros es el ADC de 10 bits (no es realmente el mejor pero lo suficientemente preciso para mí). Para comunicarme con Esp8266 decidí usar la comunicación serial teniendo en cuenta que esp8266 funciona con 3.3V y attiny85 a 5V (ya que necesita alimentar el sensor). Para lograr eso, utilicé un divisor de voltaje simple (ver esquema). Para leer la temperatura negativa necesitamos agregar algunos componentes externos (2x1N914 y 1x18k de resistencia), ya que no quiero usar una fuente de alimentación negativa. Aquí está el código: Repositorio TinyADC. Nota: para compilar este código necesitará instalar attiny to ide (inserte esto en la opción: https://drazzy.com/package_drazzy.com_index.json), si no sabe cómo hacerlo, simplemente busque en Google o cargue el archivo.hex directamente.

Paso 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Compré esos sensores en Amazon (5 cuesta unos 10 €). Llegó con una cubierta de acero inoxidable y un cable de 1 m de longitud. Este sensor puede devolver datos de temperatura de 9 a 12 bits. Se pueden conectar muchos sensores en el mismo pin ya que todos tienen un ID único. Para conectar el DS18B20 a esp8266, simplemente siga el esquema (segunda foto). Desde que decidí que mi registrador tendría tres sondas, tuve que distinguir cuál es cuál. Así que pensé en darles un color asociado mediante software a su dirección. He usado un tubo termoencogible (tercera foto).

Paso 5: Código ESP8266

Código ESP8266
Código ESP8266
Código ESP8266
Código ESP8266

Como soy nuevo en este mundo, decidí usar muchas bibliotecas. Como se dijo en la introducción, las características principales son:

  • Actualización OTA: no necesita conectar esp8266 a su computadora cada vez que necesite cargar el código (debe hacerlo solo la primera vez);
  • Administrador inalámbrico, si cambia la red inalámbrica, no es necesario volver a cargar el boceto. Simplemente puede configurar nuevamente los parámetros de red que se conectan al punto de acceso esp8266;
  • Transmisión de datos de Thingspeak;
  • Compatible con LM35 y DS18B20;
  • Interfaz de usuario simple (el LED RGB indica información útil);

Por favor, discúlpeme porque mi software no es el mejor y no está realmente bien ordenado. Antes de realizar la carga en el dispositivo, debe cambiar algunos parámetros para ajustar el código a su configuración. Aquí puede descargar el software Configuración común de LM35 y DS18B20 Debe cambiar la definición de pin, el token, el número de canal, el usuario y la contraseña para la actualización OTA. Línea de la 15 a la 23.

#define el rojo YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char * host = "seleccionar dirección de host"; // no es realmente necesario, puede dejar esp8266-webupdate const char * update_path = "/ firmware"; // para cambiar la dirección de actualización ex: 192.168.1.5/firmware const char * update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Paso 6: Código ESP8266: Usuario LM35

Debe conectar la placa attiny a esp8266, para alimentar la unidad ADC use el pin VU y el pin G. Debe elegir qué pin desea usar para la comunicación en serie (para mantener libre la serie de hardware para fines de depuración). El pin Tx debe seleccionarse pero no se usa realmente. (Línea 27). SoftwareSerial mySerial (RXPIN, TXPIN); En la parte superior debe agregar: #define LM35USER

Paso 7: Código ESP8266: Usuario DS18B20

Como primera operación, debe identificar la dirección del dispositivo para cada sensor. Compile y programe este código en esp y busque en serie los resultados. El código se puede encontrar aquí (busque este título en la página: «Leer direcciones internas individuales de DS18B20»). Conecte solo un sensor para obtener la dirección, los resultados deberían ser algo como esto (¡número aleatorio aquí! Solo como ejemplo): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Entonces necesitas cambiar mi código en la sección " Configuración para DS18B20 "(línea 31 a 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (de 9 a 12) #define delayDallas READINTERVAL // (en milisegundos, el mínimo es 15s o 15000mS) DeviceAddress blueSensor = {0x11, 0x33, 0x22, 0x12}; // CAMBIAR CON SU DIRECCIÓN DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // CAMBIAR CON SU DIRECCIÓN DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // CAMBIAR CON SU DIRECCIÓN En la parte superior debe agregar: #define DSUSER

Paso 8: Pequeño truco ESP8266

ESP8266 Pequeño truco
ESP8266 Pequeño truco

Después de algunas pruebas, descubrí que si conecta esp8266 sin programar, no ejecutará el código hasta que presione restablecer una vez. Para resolver este problema, después de investigar un poco, descubrí que debe agregar una resistencia pull-up de 3.3V a D3. Esto le indicará al procesador que cargue el código desde la memoria flash. Con este método, D3 se puede utilizar directamente para la entrada de datos para los sensores DS18B20.

Paso 9: Operación por primera vez

Operación por primera vez
Operación por primera vez
Operación por primera vez
Operación por primera vez

Si ha cargado el código correctamente pero nunca usa la biblioteca del administrador de Wifi, es hora de configurar su conexión wifi. Espere hasta que vea el LED RGB parpadeando más rápido que antes, luego busque con su móvil o PC la red wifi llamada "AutoConnectAp" y conéctese. Después de la conexión, abra un navegador web e ingrese 192.168.4.1, encontrará la interfaz GUI del administrador de wifi (ver fotos) y presione "Configurar Wifi". Espere a que esp8266 busque redes wifi y seleccione la deseada. Inserte la contraseña y presione "guardar". Esp8266 se reiniciará (no importa el led RGB esta vez porque generará información aleatoria) y se conectará a la red.

Paso 10: Conclusión

Conclusión
Conclusión
Conclusión
Conclusión
Conclusión
Conclusión
Conclusión
Conclusión

Al final, aquí hay un gráfico tomado del registrador de datos en acción mientras registra la temperatura de mi congelador. En naranja está el DS18B20 y en azul el LM35 y su circuito. Puede ver la mayor diferencia en la precisión del sensor digital al analógico (con mi pobre "circuito ADC") que dan algunos datos no físicos. Resumiendo, si desea construir este registrador, sugiero usar el sensor de temperatura digital DS18B20 ya que es más fácil de leer y casi "plug and play", es más estable y preciso, funciona a 3.3V y solo requiere un pin para muchos sensores. Gracias por la atención, espero que este proyecto sea bueno para ti y Encontré información útil. Y para quien quiera darse cuenta, deseo haberle dado toda la información necesaria. Si no, no dudes en preguntar todo, estaré encantado de responder a todas las preguntas. Como no hablo inglés, si algo está mal o no es comprensible, hágamelo saber. Si le gustó este proyecto, vote por los concursos y / o deje un comentario ☺. Me animará a seguir actualizando y publicando nuevos contenidos. Gracias.

Recomendado: