Archivo de la categoría: NodeMCU

NodeMcu Esp3266 y display TFT ST7789

Objetivos

  • probar el display desde un nodemcu y visualizar diferentes mensajes e imágenes

Material requerido

esp8266.jpg
  • NodeMCU
shieldNodeMCU
  • shield NodeMCU
AR1717-TFT-Display-LCD-1.3-ST7735-v3-500x500
  • Pantalla TFT
Img_3_6-300x185
  • Cables

Repasemos funcionamientos

Para comenzar vamos a poner el enlace a la entrada donde se explican algunos conceptos para programar un NODEMCU.

Esquema.

El esquema del circuito del proyecto se muestra a continuación.

El módulo TFT ST7789 que se muestra en el esquema de circuito tiene 7 pines: (de derecha a izquierda):

  • GND (tierra),
  • VCC,
  • SCL (reloj en serie),
  • SDA (datos en serie),
  • RES (restablecimiento),
  • DC (o D/C : datos/comando)
  • BLK (luz de fondo).
  • La conexión del pin BLK es opcional. La luz de fondo se apaga cuando el pin BLK se conecta a tierra (GND).

esp8266-nodemcu-st7789-spi-tft-circuit

El módulo de pantalla TFT ST7789 está conectado a la placa NodeMCU de la siguiente manera:

  • GND está conectado al pin GND de la placa NodeMCU,
  • VCC y BL están conectados al pin 3V3,
  • El pin SCL está conectado a D5 (ESP8266EX GPIO14),
  • El pin SDA está conectado a D7 (ESP8266EX GPIO13),
  • El pin RES está conectado a D2 (ESP8266EX GPIO4),
  • El pin de CC está conectado a D1 (ESP8266EX GPIO5).

Si el módulo de visualización tiene un pin CS (selección de chip), debe conectarse al pin D8 de NodeMCU (GPIO15).

Los pines D5 (GPIO14) y D7 (GPIO13) son pines del módulo SPI de hardware del microcontrolador ESP8266EX respectivamente para SCK (reloj en serie) y MOSI (salida maestra-esclavo).

El programa de control

El siguiente código requiere dos bibliotecas de Adafruit Industries:

  • La primera biblioteca es un controlador para la pantalla TFT ST7789 que se puede instalar desde el administrador de bibliotecas IDE de Arduino (Sketch -> Incluir biblioteca -> Administrar bibliotecas…, en el cuadro de búsqueda escriba «st7789» e instale el de Adafruit).
  • La segunda biblioteca es la biblioteca de gráficos Adafruit que también se puede instalar desde el administrador de la biblioteca Arduino IDE.

Las 2 bibliotecas estarán incluidas en el código principal.

#include <Adafruit_GFX.h> // Biblioteca de gráficos central
#include <Adafruit_ST7789.h> // Biblioteca específica de hardware para ST7789

Las conexiones de los pines del módulo ST7789 TFT (CS, RST y DC) se definen como se muestra a continuación:
// Conexiones del módulo TFT ST7789
#define TFT_DC   D1 // El pin TFT DC está conectado al pin NodeMCU D1 (GPIO5)
#define TFT_RST D2 // El pin TFT RST está conectado al pin NodeMCU D2 (GPIO4)
#define TFT_CS    D8 // El pin TFT CS está conectado al pin NodeMCU D8 (GPIO15)

Los otros pines de pantalla (SDA y SCL) están conectados a los pines SPI del hardware NodeMCU (respectivamente D7 y D5).

La biblioteca Adafruit ST7789 se inicializa con esta línea:
// Inicializar la biblioteca Adafruit ST7789 TFT
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

Y la pantalla TFT se inicializa con el siguiente comando:
// si la pantalla tiene un pin CS, intente con SPI_MODE0
tft.init(240, 240, SPI_MODE2); // Pantalla de inicio ST7789 240×240 píxeles

Es posible que la pantalla no funcione si tiene un pin CS, intente con SPI_MODE0, que es el modo predeterminado de la biblioteca, o simplemente use: tft.init (240, 240);

El resto del código se describe a través de comentarios.

 

Sigue leyendo

Dispensador de medicinas programable

Objetivos

  • construir un dispensador de pastillas.
  • que sea programable desde un móvil.

Material requerido

esp8266.jpg
  • NodeMCU
shieldNodeMCU
  • shield NodeMCU
FT68TVVHMMF4Z5P.LARGE_
  • Motor paso a paso 28BYJ-48 y adaptador
sg90
  • servo motor
Captura de pantalla 2022-01-24 a las 7.34.18
  • Display 16×2 con I2C
ds3231
  • Reloj RTC
pulsador
  • Un pulsador
buzzer
  • Un buzzer
D_NQ_NP_952506-MLM43973337619_112020-W
  • batería
cargador
  • Cargador de batería
Img_3_6-300x185
  • Cables

Repasemos funcionamientos

Para comenzar vamos a poner los enlaces a las entradas donde se explican los componentes por separado:

Esquema.

pilldispensor_bb

El programa de control

Paso 1: haremos un método o función para que cuando se le llame el motor paso a paso gire los grados deseados.

pill01

Sigue leyendo

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