Archivo de la categoría: thingspeak

Práctica 3: Wifi con ESP8266

Configurar la wifi del Wemos D1 mini para mandar datos de los sensores.

Esquema:

Resultado de imagen de thingspeak esp8266

Tareas a realizar:

Solución

Escaner wifi: https://github.com/jecrespo/aprendiendoarduino-curso-esp8266-youtube/blob/master/WiFiScanMejorado/WiFiScanMejorado.ino 

Escaner wifi + oled: https://github.com/jecrespo/Curso-Node-RED/blob/master/Remote%20Nodes%20Firmware/wifi_scanner%2Boled/wifi_scanner%2Boled.ino 

Conectar por HTTP a aprendiendoarduino.com: https://github.com/jecrespo/aprendiendoarduino-curso-esp8266-youtube/blob/master/WiFiClientBasicMejorado/WiFiClientBasicMejorado.ino 

Instalar librería MQTT para arduino, “PubSubClient”, mediante el gestor de librerías:

Web: https://pubsubclient.knolleary.net/

Ejemplo mqtt_esp8266: https://github.com/knolleary/pubsubclient/blob/master/examples/mqtt_esp8266/mqtt_esp8266.ino 

Comprobar que manda y recibe mensajes y que se enciende y apaga el led.

Thingspeak

Instalar la librería “thingspeak” del gestor de librerías de Arduino

Darse de alta en Thingspeak. Web: https://thingspeak.com/users/sign_up

Crear cuenta:

Crear un Nuevo Canal llamado: “Curso IoT”

Crear 4 Fields en el canal:

  • Temperatura – Guarda los datos de temperatura
  • Humedad – Guarda los datos de humedad
  • Presión – Guarda las aperturas de puerta
  • Iluminación – Guarda las aperturas de puerta

Guarda la API Key y el número de canal

Abrir el ejemplo Thingspeak — ESP8266 — program board directly — WriteMultipleFiledsSecure de la librería thingspeak

Completar los datos del fichero secrets.h (segunda pestaña):

  • SSID – SSID de la Wifi que usemos
  • SECRET_PASS — Password de la Wifi
  • SECRET_CH_ID — ID del canal creado
  • SECRET_WRITE_APIKEY — API key de Thingspeak

Ejecutar el ejemplo y comprobar en el monitor serie que manda datos. Comprobar que se conecta y sale el mensaje “Channel update successful.” cada 2’ segundos

Crear una vista privada y visualizar los datos de los 4 campos creados.

Conectar el shield DS18B20 y oled al Wemos D1 mini.

Cargar el  programa modificado para que mande los datos de temperatura del sensor DS18B20 al field 1 y lo muestre por la pantalla OLED: https://github.com/jecrespo/Curso-Node-RED/blob/master/Remote%20Nodes%20Firmware/Thingspeak_WriteMultipleFieldsSecure/Thingspeak_WriteMultipleFieldsSecure.ino

Anuncio publicitario

IoT en 90 Minutos

Vamos a crear un sistema IoT sencillo utilizando una placa basada en ESP8266, la plataforma Thingspeak para registrar los datos y la APP Blynk para controlar y monitorizar desde el móvil.

El objetivo es:

  • Monitorizar la temperatura y humedad de una sala remotamente desde el móvil
  • Encender desde el móvil la iluminación de la sala
  • Registrar todos los datos históricos de temperatura y humedad
  • Registrar las veces que se abre una puerta
  • Mandar avisos por alta temperatura. 
  • Mandar avisos cuando el sensor de puerta se abra.

Los avisos o notificaciones pueden ser:

Material Necesario

Hardware:

  • Wemos D1 mini
  • Sensor DHT11
  • Led + resistencia 220 ohms (para simular la iluminación) o Relé para la iluminación
  • Pulsador + Resistencia 10 kohms  (para simular la apertura de la puerta) o sensor magnético/infrarrojos.

Coste aproximado: 5 – 20 € dependiendo del material usado.

Software:

Coste del software y licencias: 0 €

Conexión Hardware

Esquema de conexión:

Pines utilizados:

  • D4: Led y también es el led integrado de la placa
  • D3: pulsador/puerta, tiene una resistencia de pull up integrada: OJO, este pin va al GPIO0 que control el arranque, asegurarse de no estar a masa/pulsado al reiniciar o cargar un nuevo programa
  • D2: sonda DHT11

El pulsador simula la apertura de la puerta y el led simula la iluminación de la sala.

Blynk

Blynk es una plataforma que permite que cualquiera pueda controlar fácilmente su proyecto Arduino con un dispositivo con sistema iOS o Android. Los usuarios tendrán ahora la posibilidad de crear una interfaz gráfica de usuario de “arrastrar y soltar” para su proyecto en cuestión de minutos y sin ningún gasto extra.

Blynk vendría a ser como tener una protoboard en tu dispositivo móvil, tablet o teléfono, que cuenta con todo lo que necesites usar, desde deslizadores y pantallas a gráficos y otros widgets funcionales que se pueden organizar en la pantalla un Arduino. Además te da la opción de poder recopilar datos de los sensores que montes en un proyecto. Funciona nada más sacarlo de la caja y conectarlo a la placa por Internet.

Arquitectura de Blynk:

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/

Precios: https://thingspeak.com/prices

Pasos a seguir

Crear una cuenta en Thingspeak y configurar

Web: https://thingspeak.com/users/sign_up

Tutoriales:

Crear cuenta:

Crear un Nuevo Canal llamado: “Curso IoT”

Crear 3 Fields:

  • Temperatura – Guarda los datos de temperatura
  • Humedad – Guarda los datos de humedad
  • Puerta – Guarda las aperturas de puerta

Guarda la API Key y el número de canal

Instalar Blynk 

Getting Started: https://blynk.io/en/getting-started

Docs: https://docs.blynk.cc/

Instalar Blynk en el móvil: https://blynk.io/

Crear una cuenta en Blynk

Crear un nuevo proyecto llamado “IoT en 90 minutos”

Elegir Hardware, en este caso “Wemos D1 Mini”

Guardar el Auth Token. Auth Token es un identificador único que se necesita para conectar su hardware a su smartphone. Cada nuevo proyecto que cree tendrá su propio Auth Token. Obtendrá Auth Token automáticamente en su correo electrónico después de la creación del proyecto. También se puede copiar manualmente.

Añadir 3 widgets:

  • Un botón (Conectado al Pin D4)
  • Dos Gauge en los pines Virtuales V0 y V1 para temperatura y humedad

Virtual Pin: http://help.blynk.cc/en/articles/512061-what-is-virtual-pins

Configuración del Gauge:

  • Temperatura pin virtual V0
  • Humedad pin virtual V1
  • Modo push
  • Label: C para temperatura y % para Humedad

Configuración del Botón. poner en modo switch:

Aspecto final de la APP:

Ejecutar el programa

 

Preparar IDE Arduino

Instalar el IDE de Arduino:

Instalar el soporte para las placas basadas en ESP8266 en el IDE de Arduino

Instalar librerías necesarias en IDE Arduino desde el gestor de librerías:

 Realizar montaje de Wemos D1 mini

Personalizar el Firmware y Ejecutarlo

Configurar la Vista Pública en Thingspeak

Crear una vista pública, para ello en el canal ir a “sharing” y seleccionar “Share channel view with everyone”

Configurar la vista pública de Thingspeak, es una especie de dashboard donde pondremos:

  • Gráfica de Temperatura (Tipo Spline)
  • Display numérico Temperatura
  • Gráfica de Humedad  (Tipo Spline)
  • Display numérico Humedad
  • Gráfica apertura de puerta (Tipo Step)
  • Lamp Indicator, para ver el estado de la puerta abierto/cerrado
  • Un histograma para ver la variación de la temperatura

La vista debe quedar como esta: https://thingspeak.com/channels/635134

Configurar las Notificaciones en Thingspeak

Configurar avisos en Thingspeak cuando la temperatura sea mayor de 24 grados y cuando se abra la puerta. Para ello usaremos estas utilidades de thingspeak.

Notificaciones posibles:

  • Mandar un mensaje al panel: https://www.aprendiendoarduino.com/servicios/mensajes/index.html, servicio de #aprendiendoarduino para hacer una demo.
  • Enviar un mensaje a Telegram mediante un bot al canal https://t.me/aprendiendoarduino. Para ello es necesario crear un bot, añadirlo al canal y usar su API KEY desde thingspeak con ThingHTTP
  • Enviar un mensaje al canal #arduino_iot de https://aprendiendoarduino.slack.com/
  • Mandar un tweet usando ThingTweet, para ello debemos enlazar nuestra cuenta de Twitter.
  • Mandar un email con mailgun https://www.mailgun.com/, para ello debemos darnos de alta en mailgun y usar la API Key para que dispare el webhook configurado en ThingHTTP y mande un email
  • Para cualquier otra interacción se puede usar IFTTT. Se crea un webhook que se usa desde ThingHTTP y desde IFTTT disparamos el servicio que queramos.
  • Y cualquier otra que disponga de un webhook o API

Primero debe configurarse ThingHTTP para que llame a una API o webhook que dispare la notificación que deseamos. Para ello deberemos darnos de alta en el servicio que deseemos.

Para mandar un mensaje al panel: https://www.aprendiendoarduino.com/servicios/mensajes/index.html debo llamar a esta API:

Crear un nuevo ThingHTTP llamado “Manda Mensaje Alta Temperatura” y poner:

Crear un nuevo ThingHTTP llamado “Manda Mensaje Puerta Abierta” y poner:

NOTA: si no funciona la llamada al servicio de mensajes, mandar un correo a aprendiendoarduino@gmail.com

Una vez creados los elementos ThingHTTP que dispara la notificación queda crear los react, que son las condiciones en la que se disparan las notificaciones, donde diremos en qué condiciones se mandan las notificaciones. En nuestro caso:

  • Temperatura > 24 grados solo la primera vez que pase (Run action only the first time the condition is met: Trigger the action if the condition was previously false and is currently true.)
  • El valor del canal es 1 (Puerta abierta) cada vez que pase.

Crear un nuevo react llamado “Alta Temperatura IoT 90 minutos” con los siguientes parámetros:

Crear un nuevo react llamado “Puerta Abierta IoT 90 minutos” con los siguientes parámetros:

Probar que se muestran los mensajes en el panel https://www.aprendiendoarduino.com/servicios/mensajes/index.html

Si quisiéramos mandar un tweet, simplemente seleccionar en Action “ThingTweet” y poner el texto del tweet.

Identificación Horizontales Demo

Las horizontales o Building Blocks usados en IoT:

Para la demo:

  • Devices: Wemos D1 mini + sensor temperatura + pulsador + led + relé
  • Infraestructura de comunicación: Wifi
  • Gateway: Punto de Acceso Wifi
  • Protocolo: API HTTP y MQTT (transparente al usar las librerías de Blynk y Thingspeak)
  • Plataforma: Thingspeak y Blynk
  • Servicios: Almacenamiento de datos, gráficas, disparo de eventos y análisis de datos por Thingspeak, monitorización móvil por Blynk, notificaciones por IFTTT o plataforma propia.

Limitaciones de la solución utilizada:

  • Máximo número de envíos a plataforma: 15 segundos
  • Datos almacenados solo hasta un año o 3 millones de registros
  • Límite en el cálculo de datos
  • Gráficas simples
  • Depender de terceros para las notificaciones

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