Iniciación ESP8266
https://www.aprendiendoarduino.com/2018/01/23/video-iniciacion-a-esp8266-hardware/
Preparación IDE Arduino para ESP8266
https://www.aprendiendoarduino.com/2018/01/27/video-preparacion-ide-arduino-para-esp8266/
Primeros Pasos con ESP8266
https://www.aprendiendoarduino.com/2018/03/03/video-primeros-pasos-con-esp8266/
Conectar ESP8266 a Internet. WifiClient
https://www.aprendiendoarduino.com/2018/03/22/video-conectar-esp8266-a-internet-wificlient/
Mandar Datos a un Servidor con ESP8266
Vamos a conectar Arduino a un servidor y mandar datos para que los muestre en una gráfica. Mandar datos a https://www.aprendiendoarduino.com/servicios/datos/graficas.html
Conexión:
![](https://programarfacil.com/wp-content/uploads/2016/03/Potenciomentro_monitor_serie_bb-1024x395.jpg)
Usar este código en Arduino: https://github.com/jecrespo/aprendiendoarduino-servicios/blob/master/arduino_code/data_logger_temperatura_DHCP_ESP/data_logger_temperatura_DHCP_ESP.ino
Ver los datos en:
Mandar Datos a una Raspberry Pi con ESP8266
Vamos a usar ESP8266 y mandar datos de luminosidad de la sala usando un LDR a una Raspberry Pi que tiene un servidor LAMP instalado.
Una fotorresistencia o LDR (por sus siglas en inglés “light-dependent resistor”) es un componente electrónico cuya resistencia varía en función de la luz.
Se trata de un sensor que actúa como una resistencia variable en función de la luz que capta. A mayor intensidad de luz, menor resistencia: el sensor ofrece una resistencia de 1M ohm en la oscuridad, alrededor de 10k ohm en exposición de luz ambiente, hasta menos de 1k ohm expuesto a la luz del sol. Aunque estos valores pueden depender del modelo de LDR.
![](https://www.luisllamas.es/wp-content/uploads/2015/03/ldr-gl55.png)
El LDR actúa como una resistencia variable. Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir la tensión de salida del mismo. Para ello utilizaremos un divisor de tensión, colocando el punto de lectura para Vout entre ambas resistencias. De esta forma:
![](https://electronicavm.files.wordpress.com/2011/11/divisor-de-tensic3b3n.png?w=625)
Dónde Vout es el voltaje leído por el PIN analógico del ESP8266 y será convertido a un valor digital, Vin es el voltaje de entrada (5v), R2 será el valor de la resistencia fija colocada (10k ohm generalmente) y R1 es el valor resistivo del sensor LDR. A medida que el valor del sensor LDR varía, obtendremos una fracción mayor o menor del voltaje de entrada Vin.
Instalación:
![](https://i0.wp.com/westsideelectronics.com/content/images/2017/01/wemos_ldr-2.jpg)
Más información https://www.luisllamas.es/medir-nivel-luz-con-arduino-y-fotoresistencia-ldr/
Crear una base de datos llamada “DatosArduino” con una tabla llamada “luminosidad” que tenga 4 campos: “id” auto incremental y sea el campo clave, “fecha” de tipo timestamp y que se actualice al actualizar, un campo “arduino” de tipo entero y un campo “IntensidadLuminosa” que sea de tipo entero.
![](https://aprendiendoarduino.wordpress.com/wp-content/uploads/2018/11/mysql.png?w=625)
O con la query:
CREATE TABLE `luminosidad` (
`id` int(11) NOT NULL,
`fecha` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`arduino` int(11) NOT NULL,
`IntensidadLuminosa` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `luminosidad`
ADD PRIMARY KEY (`id`);
ALTER TABLE `luminosidad`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
Subir por FTP seguro los ficheros Graba_GET.php y Graba_POST.php a Raspberry Pi al directorio /var/www/html
Ejecutar en Arduino estos sketches para GET o POST para mandar cada 5 segundos el dato de luminosidad:
Ver en la web de phpmyadmin los datos que se están subiendo y descargar en formato csv los datos guardados en unos minutos.
NOTA: Para ver los errores de PHP activar en /etc/php/7.0/apache2/php.ini la línea:
MQTT y ESP8266
Para trabajar con MQTT es interesante instalar primero en el ordenador un cliente como MQTT.fx para hacer debug: https://mqttfx.jensd.de/
Para conseguir una comunicación MQTT con ESP8266 o Arduino, emplearemos una librería. Existen muchas disponibles gracias a la comunidad que existe alrededor de Arduino. Concretamente, nosotros emplearemos una de las más conocidas y la más estable y flexible, lo que facilita su uso en proyectos que queramos realizar donde intervengan Arduino y MQTT.
Dicha librería es Arduino Client for MQTT y nos provee de un sencillo cliente que nos permite tanto subscribirnos como publicar contenido usando MQTT. Internamente, usa la API de Arduino Ethernet Client lo que lo hace compatible con un gran número de ‘shields’ y placas como:
- Arduino Ethernet
- Arduino YUN
- Arduino WiFi Shield
- Intel Galileo/Edison
- ESP8266
Web: https://pubsubclient.knolleary.net/
Instalar la librería mediante el gestor de librerías:
![](https://programarfacil.com/wp-content/uploads/2018/02/libreria-pubsubclient.png)
PubSubClient es una librería compatible con Arduino y ESP8266. Básicamente hace que nuestra placa se comporte como un cliente MQTT es decir, que podamos publicar mensajes y suscribirnos a un topic o varios para recibir mensajes. Da lo mismo si utilizas un Arduino o un ESP8266, el código es prácticamente el mismo. La diferencia reside en cómo nos conectamos a la red WiFi o Ethernet, cada placa utiliza su propia librería.
Github PubSubClient: https://github.com/knolleary/pubsubclient
Documentación: https://pubsubclient.knolleary.net/api.html
Enviando un mensaje a través del protocolo MQTT con Wemos D1 Mini
Vamos a partir de uno de los ejemplos que vienen dentro de la librería. Lo encontrarás en Archivo>Ejemplos>PubSubClient>mqtt_esp8266. Esta opción te abre el siguiente código: https://github.com/knolleary/pubsubclient/blob/master/examples/mqtt_esp8266/mqtt_esp8266.ino
Configurar el SSID y el password de la red. En mqtt_server poner la IP de la Raspberry Pi donde se ha instalado el broker Mosquitto.
NOTA: tener en cuenta que si usamos usuario y contraseña debemos usar connect (clientID, username, password) en lugar de connect (clientID) https://pubsubclient.knolleary.net/api.html#connect3
Código: https://github.com/jecrespo/Curso-IoT-Open-Source/blob/master/mqtt_esp8266/mqtt_esp8266.ino
Este sketch publica un mensaje «hello world #x” consecutivo cada 2 segundos en el topic “outTopic” y se suscribe al topic “inTopic”. Además cuando se recibe un mensaje se dispara la función callback que si es un 1 enciendo el led integrado y en caso contrario se desactiva.
Probando la aplicación MQTT con ESP8266 y Raspberry Pi
Por último nos queda probar todo el sistema. No te olvides de cargar el código en la placa con las modificaciones necesarias en cada sketch con SSID, password, IP servidor mosquitto, usuario mosquitto y contraseña mosquitto.
Desde mqtt.fx suscribirse a los topic “inTopic” y “outTopic” para recibir los cambios que se producen.
Más información:
Interesante sobre MQTT: http://hackaday.com/2016/06/02/minimal-mqtt-power-and-privacy/
MQTT y ESP8266 https://www.sparkfun.com/news/2111