Mostrando entradas con la etiqueta ESP8266. Mostrar todas las entradas
Mostrando entradas con la etiqueta ESP8266. Mostrar todas las entradas

viernes, 6 de octubre de 2023

ESPHome: Control de un led

En este artículo voy a explicar como controlar un led desde Home Assistant utilizando un dispositivo con ESPHome instalado.


jueves, 13 de enero de 2022

ESPHome: Medida de temperatura y humedad.

En este artículo voy a configurar el ESP2866 en el que realizamos la configuración inicial en el anterior artículo con un módulo DHT11 para mediar la temperatura y la humedad y mostrar los resultados en Home Assistant.

En la web de ESPHome nos viene información de cómo configurar los sensores de temperatura y humedad DHT. En el se explica como conectar el sensor y las variables que podemos programar. El esquema sería el siguiente:


ESPHome: Configuración inicial de un dispositivo

En este artículo voy a describir como emparejar nuestro primer dispositivo ESP con ESPHome y Home Assistant. Este primer dispositivo será un módulo ESP8266.

Si hemos configurado que se muestre ESPHome en el menú lateral o desde Configuración - Complementos, Copias de seguridad y Supervisor - ESPHome - Abrir la interfaz web  podemos añadir un nuevo dispositivo. 

lunes, 3 de enero de 2022

Duino-Coin: Minado con ESP8266

En este artículo voy a describir cómo se realiza el minado de la criptomoneda Duino-Coin utilizando una tarjeta ESP8266. Este dispositivo tiene una potencia superior a un Arduino UNO pero, como veremos más adelante, eso no significa que sea más eficiente minando DUCOs.

lunes, 27 de febrero de 2017

DoITCar Kit - Programación con Arduino

En este artículo vamos a empezar a programar el módulo ESP8266 del DoIT CarKit con el IDE de Arduino. La base del control, además del propio módulo, es el NodeMcu Motor Shield.
Este shield nos permite montar el NodeMCU V2 en la plataforma e incluye un chip L293D que se utiliza para el control de un par de motores de corriente continua CC.

sábado, 11 de febrero de 2017

Proyecto DoitCar kit

Hace algún tiempo adquirí un kit para montarme un pequeño "coche robot" y lo he tenido abandonado hasta ahora. 


En este primer artículo voy a explicar el montaje del kit y la utilización del software oficial (versión 1) que acompaña al mismo.

domingo, 5 de febrero de 2017

EMC - Índice de artículos

En esta entrada se muestran los artículos relacionados con el proyecto EMC (Estación Meteorológica Casera) que he venido desarrollando en los últimos meses y que espero seguir ampliándolo.


sábado, 4 de febrero de 2017

Interacción con ESP8266 a través de thinger.io

En artículos anteriores hemos podido comprobar como thinger.io es capaz de mostrar los valores obtenidos a través de los sensores conectados a nuestro módulo ESP8266 pero en esta ocasión el sentido de la comunicación será diferente, veremos como controlar el dispositivo a través de la plataforma.

En este artículo vamos a controlar simplemente el encendido y el apagado de un led a través de thinger.io. Es interesante tener en cuenta que no es necesario disponer de una IP fija para controlar los dispositivos conectados a nuestro módulo. El esquema es el siguiente:

sábado, 28 de enero de 2017

Modo deep-sleep en ESP8266

Si utilizamos el módulo ESP8266 en algún proyecto donde existan muchos periodos de inactividad (por ejemplo, debemos enviar ciertos datos cada x minutos) y más si la alimentación del módulo se realiza con baterías, es interesante que el consumo sea muy bajo en los periodos de inactividad. Para ello, el módulo ESP8266 cuenta con varios modos de sleep.

sábado, 14 de enero de 2017

Stream de datos con thinger.io

En el artículo Introducción a thinger.io se indica que es la propia plataforma thinger quien solicita los datos a periodos determinados a nuestro módulo ESP8266 (el módulo actúa en modo esclavo) pero también podemos hacer que sea nuestro módulo quien tenga el control en el envío de los datos a la plataforma para su almacenamiento o visualización.

domingo, 8 de enero de 2017

Almacenamiento de datos en thinger.io

Hasta ahora solo hemos podido mostrar los datos en tiempo real de los sensores conectados al módulo ESP8266 en la plataforma thinger.io pero lo interesante es poder almacenar dichos datos. Para esto tenemos la opción denominada Data Bucket.

martes, 27 de diciembre de 2016

Integración de Blynk con la Estación Meteorológica Casera

En este artículo vamos a integrar Blynk con la Estación Meteorológica Casera publicada en el blog hace unos días. El esquema será el mismo pero en vez de utilizar thinger.io para mostrar los resultados utilizaremos Blynk:


lunes, 26 de diciembre de 2016

Introducción a Blynk

Blynk es una aplicación para smartphone que permite interactuar con hardware conectado a Internet. Funciona con una amplia variedad de plataformas incluyendo Raspberry Pi, Arduino + Ethernet Shield, y ESP8266.


domingo, 18 de diciembre de 2016

Estación meteorológica casera

Este es un proyecto que, aunque oficialmente lo publico hoy, llevo ya algún tiempo realizando artículos sobre varios sensores que miden parámetros como la temperatura, la presión o la humedad relativa. En las fuentes de este artículo incluiré todos aquellos que guardan relación con este proyecto.

La idea es realizar una estación meteorológica que mida parámetros como los ya mencionados y que sean accecibles a través de internet.

Inicialmente, voy a medir la temperatura, la humedad relativa, la presión atmosférica y la altitud utilizando un DHT22 y un BMP180. Será controlado por un módulo ESP8266 y subirá los datos obtenidos a la plataforma thinger.io

El esquema es el siguiente:

domingo, 11 de diciembre de 2016

Introducción a thinger.io

Cuando creamos proyectos IoT con Arduino, tenemos varias maneras de monitorizar los datos que captamos a través de los sensores. La más básica y que requiere tener el dispositivo conectado a un ordenador es a través del monitor serie. Si tenemos algún display como un LCD o una pantalla TFT, ya podremos desconectar el Arduino del ordenador y llevarlo a cualquier sito. Pero existe una tercera opción, quizás la más idónea, para poder ver los datos y la información, utilizar una plataforma para proyectos del IoT.

Yo ya he utilizado en alguna ocasión la plataforma Thingspeak pero ahora voy a realizar las primeras pruebas con thinger.io

viernes, 9 de diciembre de 2016

Diodos LED RGB

En este artículo vamos a "jugar" un poco con los diodos led RGB.

Un LED RGB es en realidad la unión de tres LEDs de los colores básicos (Red-Green-Blue), en un encapsulado común, compartiendo el Ground (cátodo).  En función de la tensión que pongamos en cada pin podemos conseguir la mezcla de color que deseemos con relativa sencillez.



miércoles, 7 de diciembre de 2016

NodeMCU dev kit v3 de LoLin

NodeMCU dev kit v3 de LoLin ha sido el módulo que he estado utilizando desde hace tiempo y es la base de los artículos que he publicado sobre los módulos ESP8266. En este artículo voy a tratar de explicar de forma resumida qué son los módulos ESP8266 y en que se diferencia el NodeMCU dev kit v3 de LoLin del resto de módulos.


sábado, 3 de diciembre de 2016

Sensor de presión atmosférica BMP180

El sensor BMP180 es un sensor de presión atmosférica de alta precisión diseñado para ser conectado directamente a un microcontrolador a través de un bus I2C. 

La presión atmosférica es la fuerza que ejerce el aire (atmósfera) sobre la superficie de la tierra por lo que a mayor altura la presión atmosférica es menor. La presión atmosférica también varía con el clima, principalmente con la temperatura, pues esta hace cambiar la densidad del aire, que se ve reflejado en un cambio en el peso y por consiguiente en un cambio de presión. Otros factores que influyen es la humedad y el viento que también influye en la presión pero su influencia es mucho menor y se suele discriminar.

El sensor BMP180 es capaz de leer presión barométrica (absoluta) y temperatura. Por medio de cálculos matemáticos es capaz de detectar diferencias de alturas ya que, como mencionamos, la presión atmosférica es inversamente proporcional a la altura sobre el nivel del mar, es decir, a medida que nos elevamos decrece la presión. 




miércoles, 30 de noviembre de 2016

Medida de Temperatura/Humedad y publicación en Thingspeak

Esta práctica ya la he realizado utilizando LUA pero en este artículo voy a programar el módulo ESP8266 con el IDE de Arduino. El esquema es sencillo:


Yo dispongo de este módulo que solo dispone de tres conectores pero no he encontrado su esquema:


Si deseas más información sobre estos módulos consulta este artículo 

Para programarlo utilizo la librería SimpleDHT11 que puedes instalar haciendo click en Programa - Incluir librerías - Gestionar librerías. Buscamos dht y elegimo SimpleDHT:


Para añadirlo a nuestro proyecto:
#include <SimpleDHT.h>

Hemos conectado el pin DATA del módulo DHT11 en el puerto D0 del módulo ESP8266 que corresponde con GPIO16.
int pinDHT11 = 16;

A continuación declaramos una instancia de la librería para comunicarnos con el sensor:
SimpleDHT11 dht11;

En loop definimos dos variables tipo byte t y h:
byte t = 0;
byte h = 0;


Para leer los datos del sesor utilizamos:
dht11.read(pinDHT11, &t, &h, NULL)

y luego la mostramos por el puerto serie. El código completo es el siguiente:

#include <SimpleDHT.h>

int pinDHT11 = 16; // Puerto D0 entrada de datos
SimpleDHT11 dht11; // Modelo de sensor

void setup() {
  Serial.begin(9600);
  delay(500);
}

void loop() {
  byte t = 0;
  byte h = 0;
  if (dht11.read(pinDHT11, &t, &h, NULL)) {
    Serial.print("Error en la lectura.");
    return;
  }
  // Muestra por el puerto serie las medidas obtenidas
  Serial.print("Humedad relativa: ");
  Serial.print((int)h);
  Serial.print(" %\t");
  Serial.print("Temperatura: ");
  Serial.print((int)t);
  Serial.println(" *C");
  //El sensor realiza la lectura cada 20 segundos
  delay(20000);
}


Con este código obtenemos las siguientes lecturas:



Publicación en Thingspeak
ThingSpeak es una plataforma Open Source para conectar productos y servicios al Internet de las Cosas (IoT). Permite a los desarrolladores interactuar con los dispositivos utilizando tecnologías Web estándar.

En este artículo obtendrás más información de esta plataforma y de cómo darte de alta.

Vamos instalar la librería de ThingSpeak en el IDE de arduino. Hacemos click Programa - Incluir librería - Gestionar Librerías y en búsqueda escribimos thingspeak


Hacemos click en instalar y listo. Ahora, para añadir la librería a nuestro proyecto:
#include <ThingSpeak.h>

Además, incluimos la librería ESP8266WiFi:
#include <ESP8266WiFi.h>

Definimos los valores de nuestra wifi y creamos una instancia de WiFiClient:
const char* ssid = "WLAN_E17C";
const char* password = "ced0ccb58c84e525e35f";
WiFiClient  client;


Ademas definimos los valores de nuestro canal en ThingSpeak:
unsigned long myChannelNumber = NUMERO_CANAL;
const char* myWriteAPIKey = "API_kEY";

En NUMERO_CANAL y API_KEY teneis que introducir los datos de vuestro canal

En setup() establecemos la conexión wifi e inicializamos ThinkSpeak:
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {   // wait for WiFi
  delay(500);
  Serial.print(".");
}
ThingSpeak.begin(client);


Para enviar los datos de temperatura y humedad a ThingSpeak utilizamos:
ThingSpeak.setField(1,(int)t);
ThingSpeak.setField(2,(int)h);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);


Si solo necesitamos enviar un dato (por ejemplo la temperatura) podríamos utilizar:
ThingSpeak.writeField(myChannelNumber, 1, (int)t, myWriteAPIKey);

ThingSpeak solo acepta actualizaciones cada 15 segundas como mínimo

El código completo es el siguiente:

#include <SimpleDHT.h>
#include <ThingSpeak.h>
#include <ESP8266WiFi.h>

const char* ssid = "SSID";
const char* password = "PASSWORD";
WiFiClient  client;
unsigned long myChannelNumber = NUMERO_CANAL;
const char* myWriteAPIKey = "API_KEY"; // API Key del canal
int pinDHT11 = 16; // Puerto D0 entrada de datos
SimpleDHT11 dht11;

void setup() {
  Serial.begin(9600);
  WiFi.mode(WIFI_STA); //Establece el módulo como cliente wifi
  WiFi.disconnect(); //Se desconecta de cualquier WiFi conectado
  delay(100);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {   // wait for WiFi
    delay(500);
    Serial.print(".");
  }
  ThingSpeak.begin(client);
}

void loop() {
  byte t = 0;
  byte h = 0;
  if (dht11.read(pinDHT11, &t, &h, NULL)) {
    Serial.print("Error en la lectura.");
    return;
  }
  // Muestra por el puerto serie las medidas obtenidas
  Serial.print("Humedad relativa: ");
  Serial.print((int)h);
  Serial.print(" %\t");
  Serial.print("Temperatura: ");
  Serial.print((int)t);
  Serial.println(" *C");

  // Envía los datos a ThinkSpeak
  ThingSpeak.setField(1, (int)t);
  ThingSpeak.setField(2, (int)h);
  ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); 

  delay(20000);
}


El resultado que obtenemos es el siguiente:


Fuentes:
Enlaces:

sábado, 26 de noviembre de 2016

ESP8266: Diagnóstico WiFi y dirección MAC

El siguiente código muestra por el puerto serie un diagnóstico de estado del Wifi y la dirección MAC del dispositivo ESP8266:

#include <ESP8266WiFi.h>

void setup() {
  Serial.begin(115200);

  Serial.print("\nDiagnóstico...\n");
  WiFi.printDiag(Serial);
  Serial.println();


  Serial.printf("MAC Address = %s\n", WiFi.softAPmacAddress().c_str());
}

void loop() {
}

El diagnóstico utilizan el comando WiFi.printDiag(Serial). En mi caso, me devuelve por el puerto serie:

Diagnostic...
Mode: STA+AP
PHY mode: N
Channel: 1
AP id: 0
Status: 1
Auto connect: 1
SSID (10): arduino-er
Passphrase (8): 12345678
BSSID set: 0

MAC: 18:FE:34:E0:3A:58

Mode: Nos indica el modo de funcionamiento del módulo WiFi. Puede tomar tres valores:
  • STA (Station): Modo Estación o modo cliente.
  • AP (Access Point): Modo punto de acceso
  • STA+AP: Mixto
Para establecer el modo de funcionamiento se utiliza la instrucción WiFi.mode(valor); donde valor puede tener los valores:
  • WIFI_STA  : Modo estación
PHY mode: nos indica el estándar 802.11 (el que regula las redes locales inalámbricas) configurado en el módulo. Puede tomar los valores:
  • B: 802.11b
  • G: 802.11g
  • N: 802.11n
Channel: Nos indica el canal que está utilizando el módulo Wifi. Cuando se definió el standard IEEE 802.11 se especificó también los tres rangos de frecuencia disponibles para los dispositivos que desearan emitir de esta forma: 2.4 GHz, 3.6 GHz y 5 GHz. La mayoría de dispositivos actuales operan, por defecto, en la franja de frecuencias cercana a 2.4 GHz, Cada rango de frecuencias fue subdividido, a su vez, en multitud de canales. Para 2.4 GHz, estamos hablando de 14 canales, separados por 5 MHz. Eso sí, cada país y zona geográfica aplica sus propias restricciones al número de canales disponibles. Por ejemplo, en Norteamérica tan sólo se utilizan los 11 primeros, mientras que en Europa disponemos de 13. El problema de esta distribución es que cada canal necesita 22MHz de ancho de banda para operar, y esto produce un solapamiento de varios canales contiguos como se parecía en la siguiente figura:

AP id:

Status: estado de la conexión. Puede tener los siguientes valores:
  • 0 : WL_IDLE_STATUS cuando el Wi-Fi está en proceso de cambiar de estado
  • 1 : WL_NO_SSID_AVAIL en caso de que el SSID configurado no pueda ser alcanzado
  • 3 : WL_CONNECTED después de establecer una conexión satisfactoriamente
  • 4 : WL_CONNECT_FAILED si la contraseña es incorrecta
  • 6 : WL_DISCONNECTED si el módulo no está configurado en el modo de estación
Auto connect:

SSID (n): Nos indica el nombre de la red Wifi configurada en nuestro módulo cuando se establece en modo AP. n nos indica la longitud de dicho nombre

Passphrase (n): Password configurado en el módulo wifi. n nmos indica la longitud de dicho password

BSSID set: es el identificador único de una red wifi y se forma a partir de su dirección MAC

Para obtener la dirección MAC utilizamos la instrucción WiFi.softAPmacAddress().

Fuentes:
ESP8266WiFi Library
https://es.wikipedia.org/wiki/Printf
Módulo wifi