Archivo de la categoría: IOT

ThingSpeak, NodeMCU y sensores LDR y DTH11.

Vamos a diseñar, cablear y programar una aplicación de manera que el microcontrolador NodeMCU ESP8266 lea la salida analógica del módulo del sensor de iluminación LDR.

También deberá leer la humedad relativa del aire y la temperatura en grados Celsius del módulo del sensor DTH11.

Toda esta información se mostrará de forma ordenada por el Monitor Serie del IDE de Arduino a intervalos de 20 segundos.

Cuando la lectura analógica del módulo LDR, esté por encima de 600 (luminosidad baja), mostraremos además el mensaje Iluminación: Desactivada y si está por debajo de 600 (luminosidad alta), mostraremos Iluminación: Activada. La salida del Monitor Serie podría tener el siguiente aspecto:

Captura de pantalla 2022-02-06 a las 20.22.36

Sigue leyendo

ThingSpeak y NodeMCU ESP8266

¿Qué es ThingSpeak?

ThingSpeak es una plataforma de Análisis de datos para Internet de las Cosas IoT, podría analizar cualquier tipo de dato numérico, está en la nube y te permite de una manera muy intuitiva agregar y visualizar datos.

Puedes hacer más cosas, si subes tu propio código. MATLAB, es el lenguaje que hace la magia en ThingSpeak.

Algunas características:

  • Configura fácilmente los dispositivos para enviar datos usando los protocolos populares de IoT.
  • Visualiza los datos de tu sensor en tiempo real.
  • Datos agregados bajo demanda de fuentes de terceros.
  • Utiliza la potencia de MATLAB para darle sentido a tus datos IoT.
  • Ejecuta tus análisis de IoT automáticamente en función de los horarios o eventos.
  • Prototipado y creación de sistemas IoT sin configurar servidores o desarrollar software web.
  • Actúa automáticamente sobre tus datos y se comunica contigo empleando servicios de terceros como Twilio® o Twitter®.

¿Es gratis?

Si y no, para nosotros usuarios domésticos que nos gustaría ver nuestros datos gráficamente sí que lo es, con alguna reserva que te detallo.

Tu opción es la licencia FREE que te permite hasta 3 millones de mensajes/año o 8200 mensajes/día. La siguiente opción personal es la licencia HOME que multiplica por 10 casi todos los conceptos.

Las restricciones que tiene la versión FREE abarca otros puntos importantes:

  • El límite en el intervalo de envío de mensajes: entendiendo por mensajes cualquier tipo de dato que tú quieras subir a la nube de ThingSpeak, en la versión FREE son 15 segundos, este es tu máximo intervalo.
  • Número de Canales: los channels, ThingSpeak los ha llamado canales como los podía haber llamada cajas. Define una comunicación en la que se puede subir datos, que se agrupan, almacenan, analizan y finalmente publican para poder consumirlos a través de un simple navegador.
  • En la versión FREE el límite son 4 canales, la recomendación es que cada dispositivo tenga su canal particular.
  • Con la versión FREE solo se pueden compartir 3 canales con el público.

¿Cómo funciona ThingSpeak?

Parte ThingSpeak

  • Primero debes registrarte en la web de ThingSpeak.
  • Configurar un canal (channel). Esta parte es muy importante, porque define los datos que voy a recibir. Cada canal admite 8 campos de datos, 8 posibles datos que vas a poder subir a través de este canal.
    En este artículo voy a subir datos de latencia y calidad de una conexión wifi, pero podrían ser cualquiera, por ejemplo:
    • Temperatura
    • Humedad
    • Presión barométrica
    • Velocidad del viento
    • Dirección del viento
    • Lluvia
    • Nivel de luz
    • Nivel de batería
  • Una vez creado el canal, los datos que necesitas para transferir información desde nuestro dispositivo, son el Channel ID y la APIKeys, quédate con estos dos nombres.

Parte Dispositivo

  • Los datos:
    • Latencia, ping al DNS de Google que es 8.8.8.8, para medir la latencia que es el tiempo en milisegundos de lo que tarda una señal/paquete en ir al DNS de Google y volver a mi dispositivo.
    • Intensidad de la señal WiFi en dBm.
  • Librerías para nuestro ESP8266
    • ESP8266WiFi: vamos a enviar datos a una nube de internet, necesitamos un cliente HTTP.
    • ESP8266Ping: una librería muy sencilla para hacer ping tanto a IP como HOST y que nos devuelve la latencia en milisegundos. Este es su contenedor en GitHub.
    • ThingSpeak: esta librería está desarrollada por MathWorks que es la empresa que esta detrás de ThingSpeak, en su contenedor de GitHub tienes toda la información. Nosotros añadiremos la librería desde el propio IDE Arduino.
    • Por último, un temporizador que nos gestiona la extracción de datos cada 15/20 segundos, aquí voy a utilizar la función millis().

El resumen: utilizando un NodeMCU configurado en nuestro IDE Arduino, capturo cada 15/20 segundos los datos de latencia e intensidad wifi y los envío a ThingSpeak gracias a una librería desarrollada por la misma MathWorks. Previamente, te has dado de alta en ThingSpeak y configurado un canal. Una vez se empiece a subir datos, podrás visualizarlos vía la web de ThingSpeak.

Ejemplo con ThingSpeak y ESP8266

Paso 1. Comprar el dispositivo

Paso 2. Configurar el dispositivo ESP8266 en el IDE Arduino

Paso 3. Programación de los datos a subir a ThingSpeak

ATENCIÓN: 2 tipos de datos que vamos a subir a ThingSpeak.

  • Ping al servidor DNS de Google, que es una prueba muy típica cuando queremos comprobar si estamos conectados a Internet, mediremos la latencia que son los milisegundos que tarda en volver un paquete al DNS de Google con esta herramienta que existe en todos los sistemas operativos.

ts_programacion01

  • Intensidad de la señal Wifi RSSI en dBm (decibelios relativos al milivatio), lo que nos indicara la calidad de la cobertura. Os paso esta tabla:
Intensidad de la señal Calificador Usos adecuados
     
-30 dBm Excelente Esta es la máxima intensidad de señal alcanzable y será apropiada para cualquier situación de uso.
-50 dBm Excelente Este excelente nivel de señal es adecuado para todos los usos de la red.
65 dBm Muy bueno Recomendado para smartphones y tablets.
-67 dBm Muy bueno Esta intensidad de señal será suficiente para voz sobre IP y streaming de vídeo.
-70 dBm Aceptable Este nivel es la intensidad mínima de la señal requerida para asegurar una entrega de paquetes fiable y le permitirá navegar por la web e intercambiar correos electrónicos.
-80 dBm Malo Permite la conectividad básica, pero la entrega de paquetes no es fiable.
-90 dBm Muy malo Un ruido que inhibe la mayoría de las funciones.
-100 dBm Peor Ruido total.

Bien, vamos a por el código.

Lo único que debes de tener en cuenta es que la librería ESP8266Ping no viene por defecto en el IDE de Arduino tienes que instalarla.

Muy fácil, vete a su contenedor GitHub y descárgate la librería en un fichero ZIP.

Ten cuidado porque existe otra librería que se llama ESP8266-ping que incluye la librería Pinger.h que no es la que se utiliza aquí.

En la pagina web de GitHub clic en CODE + Download ZIP.

ts_programacion02-1

Se descarga este fichero ESP8266Ping-master.zip, puedes renombrarlo ESP8266Ping.zip

Ya solo queda incluirlo en el IDE de Arduino en Programa + Incluir Librería + Añadir biblioteca .ZIP, buscamos el fichero ESP8266Ping.zip con el explorador.

ts_programacion03

Y si todo te ha ido bien debe de aparecer ejemplos de código con esta librería en Archivo + Ejemplos.

Captura-de-pantalla-2022-01-26-a-las-17.34.23

Sigue leyendo