Archivo de la categoría: ESP8266

Uso ESP8266 WiFi Shields

Shield para wemos D1 mini relé

Comprar:  https://www.amazon.es/Ils-Piezas-Escudo-Versi%C3%B3-ESP8266/dp/B07F6D4SC9/

Web: https://wiki.wemos.cc/products:d1_mini_shields:relay_shield

Esquematico: https://wiki.wemos.cc/_media/products:d1_mini_shields:sch_relay_v2.0.0.pdf

Se maneja con el Pin D1

Ejemplo: https://github.com/wemos/D1_mini_Examples/blob/master/examples/04.Shields/Relay_Shield/BlinkWithoutDelay/BlinkWithoutDelay.ino

Shield para wemos D1 mini neopixel

Comprar: https://diyprojects.io/deal-shield-point-led-driver-ws2812b-wemos-d1-mini-compatible-adafruit-neopixel/

Web: https://wiki.wemos.cc/products:d1_mini_shields:rgb_led_shield

  • 7 RGB LEDs (WS2812B-mini) each wtih 24-bit RGB color
  • 9 optional control pins (Default: D4/GPIO2)

Ejemplo de uso: https://github.com/wemos/D1_mini_Examples/blob/master/examples/04.Shields/RGB_LED_Shield/simple/simple.ino

shield para wemos D1 mini oled

Comprar: https://www.amazon.es/Ils-Piezas-Shield-V2-0-0-Botones/dp/B07FM8HH4K/

Web: https://wiki.wemos.cc/products:d1_mini_shields:oled_shield

Get started: https://wiki.wemos.cc/tutorials:shields:get_started_with_oled_shield

Librería: https://github.com/mcauser/Adafruit_SSD1306/tree/esp8266-64×48

Ejemplo simple: http://automatedhome.party/2017/04/17/connect-an-inexpensive-oled-display-to-a-esp8266wemos-d1-mini/Reloj Wifi: http://jorgesanz.es/reloj-wemos-esp8266-pantalla-oled/

Anuncios

Access Point con ESP8266

Ya hemos visto cómo usar el ESP8266 como un cliente/estación WiFi (WIFI_STA), vemos ahora como configurarlo para usarlo como un Punto de Acceso (AP) WiFi y que cree una red WiFi propia.

Veamos el ejemplo WiFiAccessPoint que podemos encontrar en Archivos – Ejemplos – ESP8266WiFi – WiFiAccessPoint.

En este ejemplo se configura el ESP8266 como un punto de acceso y ofrece una web embebida, es decir, va a dar una red WiFi a otros dispositivos como nuestro móvil o portátil. Es un Soft Access Point “software enabled access point” https://en.wikipedia.org/wiki/SoftAP  

El máximo de estaciones conectadas al SoftAP es 5.

El modo soft-AP se usa a menudo como un paso intermedio antes de conectar el ESP8266 a un Wi-Fi en modo de estación. Esto es cuando el SSID y la contraseña de dicha red no se conocen por adelantado. ESP8266 primero arranca en modo soft-AP, para que podamos conectarnos a él usando un portátil o un teléfono móvil. Luego, podemos proporcionar credenciales a la red objetivo. Una vez hecho ESP8266, se cambia al modo de estación y se puede conectar al Wi-Fi objetivo.

Para configurar un ESP8266 como Access Point, se usa la instrucción WiFi.softAP(ssid, password); de la clase Access Point.

Más información:

Además este ejemplo muestra una web y para ello usa la clase ESP8266WebServer https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer que facilita las tareas de hacer un servidor web. Más adelante veremos  cómo usar esta librería.

Una vez iniciado el ESP8266, nos conectamos con nuestro móvil a la WiFi “ESPap” con la contraseña “thereisnospoon” y accedemos a la IP “192.168.4.1”, nos estaremos conectando al ESP8266 y veremos los siguiente:

Ejercicio Propuesto: modifica el ejemplo para crear un SoftAP con una SSID oculta en el canal 6 y con la IP 192.168.100.1.

Solución: https://github.com/jecrespo/aprendiendoarduino-curso-esp8266-youtube/blob/master/WiFiAccessPointMejorado/WiFiAccessPointMejorado.ino

Para ocultar el SSID y seleccionar el canal, hay que ver las diferentes opciones de WiFi.softAP() y para usar una IP es necesario llamar a WiFi.softAPConfig() antes de WiFi.softAP(). Toda la información en  http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-class.html

Servidor Web con ESP8266

Ya sabemos como usar un cliente WiFi para conectarnos a Internet y poder recoger datos o ejecutar acciones sobre servidores con el ESP8266. Veamos ahora cómo configurar el ESP8266 como un servidor web y poder manejarlo remotamente.

Para ello veamos el ejemplo WiFiWebServer que podemos encontrar en Archivos – Ejemplos – ESP8266WiFi – WiFiWebServer.

Este ejemplo muestra  cómo hacer un servidor web en el ESP8266 y mostrar una web una vez el ESP8266 se ha conectado a una red WiFi de un punto de acceso.

La clase server crea servidores que proporcionan información a los clientes conectados:

Una vez conectado el ESP8266 a una wifi se inicia el servidor con server.begin(); y para saber la IP asignada uso la instrucción Serial.println(WiFi.localIP());

Dentro de loop, para saber cuando un cliente se conecta al servidor iniciado uso la instrucción WiFiClient client = server.available(); https://www.arduino.cc/en/Reference/WiFiServerAvailable y en la variable client corresponde al cliente conectado a nuestro servidor.

Una vez se ha conectado un cliente uso la instrucción String req = client.readStringUntil(‘\r’); donde guardo en req lo que manda el cliente que en este caso es el navegador que se ha conectado a nuestro ESP8266.

En función de la petición hecha, el ESP8266 enciende o apaga el led colocado en el pin 2.

Una vez ejecutada la acción solicitada manda la respuesta con una página web simple:

HTTP/1.1 200 OK
Content-Type: text/html
<!DOCTYPE HTML>
<html>
GPIO is now on
</html>

Ejercicio Propuesto: modifica el ejemplo para que encienda y apague el led integrado en la placa que es LED_BUILTIN y si sabes un poco de html, hacerlo con un botón mostrado por el servidor.

Solución: https://github.com/jecrespo/aprendiendoarduino-curso-esp8266-youtube/blob/master/WiFiWebServerMejorado/WiFiWebServerMejorado.ino

En este caso la web mostrada por el ESP8266 es:

 <!DOCTYPE html>
<html>
<body>
<p>LED APAGADO</p>
<form action=”” method=”post”>
<input type=”submit” value=”Enciende Led” />
</form>
</body>
</html>

Cuando se solicita la web se hace mediante GET y cuando se pulsa el botón se hace mediante POST, de esta forma se diferencian las acciones. También se hace una función muestraWeb() encarga de mandar la web cuando se solicite.

Presentación Taller Wifi Arduino

Dentro del Arduino Day 2019 La Rioja https://www.aprendiendoarduino.com/talleres-arduino/arduino-day-logrono-2019/ celebrado en Logroño celebrado el 16 de marzo de 2019 se realiza el taller “Wifi Arduino”, donde vemos cómo conectar por wifi nuestros Arduinos o dispositivos compatibles.

El objetivo de este taller el conocer las posibilidades de Arduino con Wifi y conectarlo a Internet para comunicar entre dispositivos o con plataformas locales o en la nube. También es muy útil para domotizar la casa.

Veremos las diferentes opciones de conectar Arduino a Wifi o crear una red Wifi así como el uso de las librerías Wifi. Nos centraremos en el uso de los dispositivos basados en el chip ESP8266 de https://www.espressif.com/.

Además este taller sirve como introducción a otros talleres que se realizarán el 30 de marzo dentro del “Arduino Day Extension 2019 La Rioja”:

  • Taller “Ok Google… enciende la luz! Creando electrónica para el Asistente de Google” – @kikeelectronico
  • Taller “Ok Google… enciende la luz! Creando electrónica para el Asistente de Google” – @kikeelectronico

Material Utilizado

El material para el taller es:

Además como servidor local usaremos:

Acerca de Enrique Crespo

El autor del taller es Enrique Crespo. Llevo trabajando con Arduino desde el año 2011 y en el año 2014 empecé mi andadura como profesor de Arduino y otros temas relacionados. Desde entonces he impartido muchos cursos presenciales de Arduino, talleres y conferencias en diversos lugares.

Todos los cursos, talleres y conferencias que he impartido puedes verlos en https://www.aprendiendoarduino.com/, donde publico toda la documentación y código.

Twitter @jecrespo: https://twitter.com/jecrespom

Linkedin: https://www.linkedin.com/in/enriquecrespo/

Para cualquier consulta durante el curso y en cualquier otro momento mediante email: aprendiendoarduino@gmail.com

Thingspeak

ThingSpeak es un plataforma de Internet of Things (IoT) que permite recoger y almacenar datos de sensores en la nube y desarrollar aplicaciones IoT. Thinkspeak también ofrece aplicaciones que permiten analizar y visualizar tus datos en MATLAB y actuar sobre los datos. Los datos de los sensores pueden ser enviados desde Arduino, Raspberry Pi, BeagleBone Black y otro HW.

Web: https://thingspeak.com/

Thingspeak es parte de Mathworks https://en.wikipedia.org/wiki/MathWorks que es la empresa de entre otros Matlab y Simulink.

Uso comercial: https://thingspeak.com/pages/commercial_learn_more

Precios: https://thingspeak.com/prices

Features Thingspeak:

También puede acceder a los recursos de MATLAB y Simulink con una cuenta gratuita de MathWorks.

Apps de Thingspeak, son los servicios de la plataforma IoT: https://thingspeak.com/apps

Librería Thingspeak para Arduino, ESP8266 y ESP32: https://github.com/mathworks/thingspeak-arduino

La estructura de Thingspeak es:

  • Canales (Channels): los datos que recogemos en los dispositivos se guardan en canales.
  • En cada canal se disponen de una serie de campos para guardar datos, así como otra información adicional
  • Los canales pueden ser públicos o privados.
  • Dentro de cada canal podemos añadir visualizaciones o Widgets
  • Los datos del canal se pueden importar o exportar
  • En la pestaña de API keys está la información con las contraseñas (API Keys) para usar con las APIs.

Tutoriales Thingspeak: https://community.thingspeak.com/tutorials/

Tutoriales Arduino:

Tutoriales ESP8266:

Tutoriales Raspberry Pi.

Documentación: https://www.mathworks.com/help/thingspeak/

Getting started con Thingspeak: https://www.mathworks.com/help/thingspeak/getting-started-with-thingspeak.html

Ejemplos: https://www.mathworks.com/help/thingspeak/examples.html

Restful y MQTT APIs: https://www.mathworks.com/help/thingspeak/channels-and-charts-api.html

Alertas: https://www.mathworks.com/help/thingspeak/monitor-channel-inactivity-using-multiple-thingSpeak-apps.html

Más información:

Cliente MQTT Thingspeak

ThingSpeak ahora es compatible con la publicación MQTT, que le permite enviar datos a ThingSpeak desde cualquier dispositivo o servicio compatible con el estándar MQTT.

Puede seguir enviando hasta 3 millones de mensajes al año de forma gratuita. Para determinar cuántos mensajes utiliza, puede iniciar sesión y ver el uso de su cuenta.

Tutoriales para usar MQTT con Arduino:

Ejemplo con Thingspeak

Instalar con el gestor de librerías la librería thinkspeak o manualmente desde https://github.com/mathworks/thingspeak-arduino

Crear un nuevo canal: temperatura casa

Los canales guardan todos los datos que una aplicación Thingspeak recoge. Cada canal incluye 8 campos que pueden almacenar cualquier tipo de dato, además de tres campos para localización del dispositivo y uno para el estado de los datos. Una vez los datos son recogidos en un canal, es posible usarlos con las apps de Thingspeak para analizarlos y visualizarlos.

API: https://es.mathworks.com/help/thingspeak/channels-and-charts.html

Thingspeak apps: https://thingspeak.com/apps

Tutorial: https://es.mathworks.com/help/thingspeak/getting-started-with-thingspeak.html

Analizar datos: https://es.mathworks.com/help/thingspeak/analyze-your-data.html

Actuar con tus datos: https://es.mathworks.com/help/thingspeak/act-on-your-data.html

Código con IP fija y sin librería: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio65-Thingspeak

Código con IP fija y librerías: https://github.com/jecrespo/aprendiendoarduino-iot/tree/master/01-Thingspeak/Temp-y-Hum

Canal público: https://thingspeak.com/channels/242341

Usar MQTT con Thingspeak: http://blogs.mathworks.com/iot/2017/01/20/use-mqtt-to-send-iot-data-to-thingspeak/

Repositorio: https://github.com/jecrespo/aprendiendoarduino-iot/tree/master/01-Thingspeak

Analizar

Ejemplos: https://es.mathworks.com/help/thingspeak/examples.html

Tutorial: https://es.mathworks.com/help/thingspeak/analyze-your-data.html  

Actuar

Con webhooks http, thinghttp: https://thingspeak.com/apps/thinghttp

React: https://thingspeak.com/apps/reacts

React app: https://es.mathworks.com/help/thingspeak/react-app.html

Manual Thinghttp APP: https://es.mathworks.com/help/thingspeak/thinghttp-app.html

Tutorial: http://community.thingspeak.com/tutorials/arduino/cheerlights-with-arduino-and-the-fastled-library/

Restduino: https://github.com/sirleech/RestduinoThingspeak

Time control:

Canal público: https://thingspeak.com/channels/242341