Unos del los parámetros más útiles a la hora de domotizar tu casa son la temperatura y la humedad tanto del exterior, como de las habitaciones, pero es complicado encontrar sensores que entreguen los datos de manera que puedas usarlos como quieras después… y cuando los encuentras, suelen ser caros.
¡Pues venga, háztelos tu mismo!
DSC_0116

1. Materiales
– 1 x ESP8266-01 – 2.67€: Un  microcontrolador con WiFi integrado. No es tan sencillo como un arduino, pero es una solución mucho más completa.
– 1 x DHT22 – 2.29€: Esto es un sensor de humedad y temperatura con buena resolución y muy bien documentado. Aquí tenéis un Datasheet bastante bueno.
– 1 x AMS1117 – 0.037€: Un DC-DC de 3.3V con un rango de entrada bastante amplio. Es realmente util para todo tipo de proyectos en los que haya un ESP8266 de por medio o cualquier componente de 3.3V Así que os aconsejo que compréis el paquete de 100 por 3.70€
– 1 x Molex 2p – 0.046€: Este será el conector de alimentación. Es la mejor manera de conectar vuestros circuitos. Compráos los paquetes de 100 porque también vienen siempre bien. El modelo en concreto es KF2510.
– 1 x Molex 3p – 0.046€: Igual que el anterior, pero de 3 pines para el puerto serie.
– 2 x Pines sueltos – 0.029€: A la hora de programar es necesario conectar un pin del ESP8266 a masa. Esta es la manera más limpia de hacerlo.
– 1 x Placa de topos – 0.29€: Veréis que yo fabricaré el circuito impreso con la insoladora, así que tenéis tres opciones:
a. Montáis el circuito en una placa de topos como la del enlace: Es poco reproducible, pero muy fácil.
b. Reveláis el circuito con una insoladora o con el método de la plancha: Hace falta material y experiencia.
c. Me escribís, e intento enviaros alguna placa revelada para que la montéis.
En cualquier caso, en este tutorial vais a encontrar todos los esquemas eléctricos y los archivos para que lo montéis como mejor os parezca.
– 1 x USB-Serie: Esto lo deberíais tener ya de algún otro proyecto, pero si necesitáis comprar uno, os recomiendo este

2. Circuito
 2.1 Esquema:
Export
El circuito no tiene mucho de lo que podamos hablar, pero estaré encantado de comentar cualquier duda que surja.
2.2 PCB
Así es como queda el circuito impreso a una sola cara y revelado con una insoladora hecha a mano de la que ya os hablaré más adelante.
 DSC_0105

3 Entorno de desarrollo (ESP8266 + SDK):

Vamos a preparar el entorno de desarrollo del ESP8266.
3.1 Kit de desarrollo de Espressif de Mikhail Grigoriev:
– Mikhail ha hecho un trabajo increíblemente bueno y “ser agradecidos es de bien nacidos”, así que os dejo un enlace para que podáis hacerle algún donativo por paypal.
3.2 JRE: Para descargarlo hay que aceptar la licencia.
3.3 Eclipse Luna: Es el entorno de programación que usaremos más adelante.
– Lo podéis bajar de su web oficial aquí.
3.4 MinGW: Este es el compilador para hacer los binarios que cargaremos en el ESP8266. Durante la instalación podéis desmarcar la opción de “also install support for the graphical user interface”.
3.5 Scripts de automatización: El mismo Mikhail Grigoriev ha hecho unos cuantos scripts para instalar algunos módulos necesarios para el compilador.
– Descomprímelo en cualquier directorio.
– Ejecuta el archivo install-mingw-package.bat.
3.6 Arranca el entorno de programación:
– Ejecuta C:\eclipse\eclipse.exe
– Selecciona File –> Import –> General –> Existing Project into Workspace
– Como directorio raíz, escribe C:\Espressif\examples e importa todos los proyectos de ejemplo.
Al terminar tendréis el Eclipse abierto con un aspecto similar a este:
ns_attach_image_67341434839679900

4. Preparamos la cuenta de Thingspeak:

Thingspeak es un sustituto de la futura base de datos local que tendremos instalada en casa. Básicamente, te permite enviar datos a sus servidores y ellos se encargan de guardarlos y de facilitarte las herramientas de visualización y gestión.
4.1 Abre una cuenta en Thingspeak
4.2 Crea un nuevo Canal en Channles –> My Channels –> New Channel y rellena los datos que consideres oportunos.
ns_attach_image_68951434841463286
4.3 Copia la clave de escritura del canal:
– API Keys –> Write API Key. En mi caso es DDT2W7J4P60U0P6T
(Hackers del mundo, este canal no está en activo, así que no os molestéis en usar esa clave)
ns_attach_image_69871434841991043
Ya está listo Thingspeak para recibir los datos que vamos a enviar del sensor.

5 Firmware: ESP8266 + Thingspeak

En Eclipse –> Project Explorer hay un montón de proyectos, casi todos desarrollados por Mikhail Grigoriev (Ya veis por qué se merece un donativo, ¿no?)
Ahora sólo tenemos que modificar uno de los ejemplos y cargar el firmware.
5.1 Configuración del Firmware
– En la sección de Project Explorer, selecciona el proyecto dht22_thingspeak, que será el código que le subiremos al ESP8266 más adelante.
– Abre el proyecto y ve a include –> user_config.h donde verás el siguiente código:
ns_attach_image_68461434840791395
– Modifica las siguientes variables con tus datos:
WIFI_CLIENTSSID: El nombre de tu red WiFi.
WIFI_CLIENTPASSWORD: La clave de tu red WiFi
THINGSPEAK_API_KEY: La API Key que copiasteis en el paso 4.3
– No te olvides de salvar el archivo! Si aparece con un * en el nombre, es que no lo has guardado aun.
5.2 Configuración del puerto serie:
– Conecta el conversor USB-Serie y comprueba el número de puerto que se le ha asignado.
Lo puedes ver en Panel de control de Windows –> Administración de Dispositivos –> Puertos COM y LPT. En mi caso se le ha asignado el COM3.
ns_attach_image_70601434842770376
– En Eclipse, ve al proyecto en el que estabas (dht22_thingspeak) y abre el archivo Makefile
ns_attach_image_70731434842925505
– En la línea 22 viene seleccionado el COM2 por defecto. simplemente escribe el correspondiente al tuyo.
– Salva el archivo (Ctrl+s)
5.3 Compila el firmware:
– En la parte derecha de Eclipse tendrás una pestaña titulada Make Target. Si no está, ve a Window –> Show View –> Make Target
– Expande la carpeta del proyecto con el que estamos trabajando (dht22_thingspeak)
– Ejecuta el comando all haciendo doble click.
– Tras unos segundos, verás en la parte inferior que ha terminado de compilar. Si no ves la consola, puedes mostrarla en Window –> Show View –> Console
5.4 Carga el firmware:
– Conecta un jumper en los pines PROG de tu placa. Esto simplemente pone el pin GPIO_0 a masa
– Conecta el puerto Serial de la placa a los pines TX, RX y GND de tu adaptador USB-Serie. No te preocupes si lo conectas del revés, simplemnete no funcionará la carga y podrás probar invirtiendo TX y RX.
– Alimenta la placa. Verás que el ESP8266 se enciende y se queda un led fijo.
– En Eclipse –> Make Target –> dht22_thingspeak Ejecuta el comando flash haciendo doble click.
Si ves algún error en la consola, lo más probable es que tengas TX y RX cruzados.
Con esto ya tienes un sensor que te ha costado 5.40€ enviando datos a “La nube” y podrás verlos desde cualquier lado. Más adelante veremos como integrarlos con el sistema domótico de tu casa y qué puedes hacer con ellos. Mientras tanto, te dejo una gráfica en tiempo real de la temperatura exterior de mi casa:

2 Respuestas a “Humedad y Temperatura por WiFi con ESP8266 y Thingspeak”
  1. Miguel Angel dice:

    Hola muy buen trabajo, lo estoy intentando instalar pero me da un error, sabes por que puede ser?

    12:18:15 **** Build of configuration Default for project dht22_thingspeak ****
    mingw32-make.exe -f C:/Espressif/examples/dht22_thingspeak/Makefile flash
    c:/Espressif/utils/esptool.exe -p COM3 -b 115200 write_flash -ff 40m -fm qio -fs 4m 0x00000 firmware/eagle.flash.bin 0x40000 firmware/eagle.irom0text.bin
    Connecting…
    Traceback (most recent call last):
    File “esptool.py”, line 558, in
    File “esptool.py”, line 160, in connect
    Exception: Failed to connect
    C:/Espressif/examples/dht22_thingspeak/Makefile:313: recipe for target ‘flash’ failed
    mingw32-make.exe: *** [flash] Error 255

  2. Parece que no está siendo capaz de conectar con el ESP8266.
    Prueba estas cosas:
    1. Asegurate de que estás poniendo el GPIO0 a masa
    2. Prueba a cambiar RX con TX

Deja una Respuesta