DHT11, DHT22 + Raspberry pi en Python leer temperatura y humedad

Hoy realizaremos un proyecto muy sencillo leyendo temperatura y humedad con un sensor DHT11 desde nuestra raspberry pi, aunque en la red ya hay miles de tutoriales de este tipo no todos son muy claros, parte de este pequeño proyecto ha sido llevado en conjunto con David Saldarriaga Velasquez, sin más que decir empecemos.



DESARROLLO COMPLETO DEL PROYECTO

Mira un vídeo de este ligero proyecto


Veremos todo lo necesario desde código, diagrama de conexión, instalaciones de herramientas extra y demás para que nada quede en el aire y sea fácil de desarrollar.

1. Materiales y componentes

Para este sencillo proyecto será necesario:

- x1 Raspberry pi (Nosotros usaremos la versión 3b+).
- Raspbian montado en micro SD (Tutorial aquí).
- x1 Adaptador de corriente 5v - 2.5A.
- x1 Sensor DHT11 o DHT22.
- x3 Cables jumpers para conexión del sensor a la raspberry.
- Software IDLE python 3.0 para programar en dicho lenguaje. 

¡Listo! ya podemos empezar.

2. Configuración y entorno raspberry 

Instalaremos el IDLE de python 3.0 en nuestro sistema raspbian (si ya lo tienes puedes omitir este paso).

2.1. Abrimos el LXTerminal y ejecutamos el siguiente comando: 
sudo apt-get install idle3

Luego de ejecutar el comando en cierto punto de la instalación nos preguntará algo pondremos que sí solo dejando la "S" y la descarga continuará.

2.2. Una vez hecho lo anterior iremos al menú de raspberry > Programación > Python 3 (IDLE) por ahora lo podemos dejar abierto:



3. Montaje y conexiones

Este será el diagrama de conexión para el sensor DHT11 a la raspberry pi dentro de la imagen se pueden ver los pines correspondientes:

Clic para ampliar

4. Instalación de librería DHT11 y comprobación del sensor

Ahora será necesario instalar la librería de nuestro sensor para que sea compatible con Python que ya se instaló previamente en el paso 2.1. necesitamos ejecutar una serie de comandos, para ello se debe hacer todo el proceso y no habrán errores.

4.1. Abrimos LXTerminal y ejecutamos el siguiente comando:
git clone https://github.com/adafruit/Adafruit_python_DHT.git

Si todo sale bien debería verse algo así: 



4.2. Hecho lo anterior, inmediatamente en las carpetas de nuestra raspberry veremos una llamada "Adafruti_python_DHT":


Vamos de nuevo al LXTerminal y escribiremos lo siguiente para acceder a la carpeta:
cd Adafruit_python_DHT

Luego el siguiente, para ejecutar el archivo necesario en python:
sudo python3 setup.py install

Si todo sale bien debería verse algo así en consola:


4.3. Vamos de nuevo a la carpeta "Adafruit_python_DHT" vista en la imagen del paso anterior, luego abrimos la carpeta examples y abrimos el archivo llamado "AdafruitDHT.py":


Este archivo tendrá todo el código para que nuestro sensor funcione, podemos referenciar que trabajamos en python tres colocando el número "3"en la línea 1:
#!usr/bin/python3


Guardamos el archivo y lo cerramos.

4.4. Ahora vamos a comprobar que el sensor esté funcionando ejecutando los ejemplos de Adafruit, escribimos en el terminal:
cd examples

Luego:
sudo ./AdafruitDHT.py 11 4 

Donde el 11 es el sensor DHT11 y el 4 el pin donde se está conectando en la raspberry, ahora en el terminal debería verse la temperatura y humedad de nuestro sensor con las siguientes variables Temp y Humidity así:


Lo que nos dice que la librería reconoce el sensor y muestra sus datos sin problema.

 5. Creando nuestro propio código en Python

Finalmente vamos a crear un archivo .py propio para trabajar sobre el mismo como código base del proyecto que se quiera desarrollar, vamos al programa Python 3(IDLE) que dejamos abierto en el paso 2.2. y pegaremos el siguiente código: 
import Adafruit_DHT  
import time  

while True:
  sensor = Adafruit_DHT.DHT11 #Cambia por DHT22 y si usas dicho sensor
  pin = 4 #Pin en la raspberry donde conectamos el sensor
  humedad, temperatura = Adafruit_DHT.read_retry(sensor, pin)

  print ('Humedad: ' , humedad)
  print ('Temperatura: ' , temperatura)
 
  time.sleep(1) #Cada segundo se evalúa el sensor

5.1. Guardamos el código con cualquier nombre y la extensión .py, ahora presionamos la tecla "F5" para ejecutarlo y ver el sensor:


Finalmente el sensor debería variar si le ponemos algo de calor, dicha variación se hará cada segundo y eso sería todo en este post.

¿Alguna duda? comenta, 📢
Compartir:

Instalar y configurar Raspbian en micro SD Raspberry pi 2019

Hoy aprenderemos como montar la imagen de cualquier versión de raspbian en una micro SD para usarla en nuestra raspberry PI el objetivo completó será probar si el sistema operativo funciona correctamente cuando encendamos nuestra tarjeta por primera vez con la SD.



INSTALANDO RASPBIAN EN MICRO SD PARA RASPBERRY PI

¿Qué usaremos?

Para la instalación y comprobación del funcionamiento de nuestro sistema raspbian en raspberry pi será necesario tener:

- x1 Tarjeta micro SD prefiriblemente 32GB clase 10
- x1 Lector para micro SD
- x1 Raspberry pi (para el ejemplo se usará la versión 3b+)
- x1 Adaptador de corriente 5V - 2.5A
- x1 Mouse y teclado
- x1 Cable HDMI 
- x1 Monitor puede ser Tv con entrada HDMI 

A nivel de software requerimos:

- Programa SD card formatter (Descargar)
- ISO de raspbian (Descargar)
- Programa Balena Etcher (Descargar)


Paso a paso...

1. Inicialmente vamos a descargar la imagen ISO del sistema raspbian para ello damos clic aquí, luego seleccionamos la versión "Raspbian Buster with desktop and recommended software" en versión .ZIP:


La descarga puede tardar de 30 minutos a 1 hora todo depende de la velocidad de internet que tengamos.
 

2. Ahora vamos a formatear nuestra tarjeta micro SD, para el ejemplo usaremos una SD clase 10 de 32Gb, será necesario tener el software SD card formatter (clic aquí  para descargarlo), luego abrimos el archivo comprimido y ejecutamos el ".exe":


3. Una vez instalado se abrirá el programa automáticamente, si ya tenemos la micro SD insertada se detectará de inmediato en caso contrario sólo insertamos la SD y damos en "Refresh":


Ahora formatearemos la SD, seleccionamos "Overwrite Format" luego en "Format" y esperamos, este proceso puede tardar hasta media hora en completarse.


4. Descargamos el programa Balena Etcher (clic aquí) y lo ejecutamos para luego montar la imagen ISO de raspbian en la SD:

Se abrirá la interfaz y buscamos la imagen del ISO de raspbian, luego seleccionamos la micro SD y finalmente pulsamos en "Flash!":


  Ahora sólo esperamos que inicie y cargue raspbian en nuestra SD:

 

Una vez el proceso ha terminado saldrá una alerta donde debemos formatear la SD simplemente se ignorará y cerraremos la pestaña:


5. Una vez montada la imagen retiramos la micro SD del equipo y será colocada en la ranura SD de nuestra raspberry pi, encedemos la tarjeta y si todo sale bien debería iniciar el sistema:



Luego de un par de minutos finalmente se carga el escritorio de raspbian como se verá a continuación:




CONFIGURACIÓN RASPBIAN WIFI, IDIOMA Y OTROS

6. Finalmente configuraremos nuestro sistema operativo, es fácil lograrlo pero detallaremos aquí lo que se debe hacer:


Damos en Next y configuraremos el idioma, país y zona:



Lo siguiente es configurar una contraseña para nuestro sistema:



Damos en Next y habilitamos la opción que se muestra:



7. Conectaremos nuestra raspberry a WiFi seleccionando nuestra red y luego de dar Next ingresaremos la clave:



8. Finalmente nos preguntará si deseamos actualizar el software en raspbian, no es una obligación hacerlo pero sí se hace el proceso puede tardar hasta 1 hora esto no afecta que queramos hacer otro tipo de tareas en nuestra raspberry:


Si no queremos realizar actualización alguna sólo omitimos en "Skip" y esto sería todo, nuestra raspberry pi está lista para ser trabajada al 100%:



Hast aquí todo el proceso para instalar y usar raspbian, este tutorial ha sido desarrollado en conjunto con David Saldarriaga Velasquez. ¿Alguna duda? comenta.
Compartir:

loT con Arduino NodeMcu ESP8266 + Potenciometro en internet 2019

Usaremos una plataforma IoT (gratis) para ver desde cualquier parte del mundo el valor que un potenciómetro tiene al variarlo, esto con la tarjeta NodeMcu basada en el ESP8266 conectada a internet.


Y todo este proceso tendrá su explicación paso a paso porque aquí nadie nace aprendido y los detalles más pequeños pueden ser de mucha ayuda para aquellos que recién empiezan con el tema de IoT y similares.

Haciendo IoT con NodeMcu + Potenciómetro

Como ya había hecho mención párrafos arriba el objetivo variar un potenciómetro que estará conectado a nuestra tarjeta NodeMcu, dicho dato será visualizado en una plataforma de IoT tal que desde cualquier parte del mundo alguien pueda ver como se comporta en vivo, sin más que decir empecemos:

1. ¿Qué usaremos?

- x1 Tarjeta NodeMcu v3.0 de LoLin (si tienes otra versión no hay lío)
- x1 Potenciómetro de 5K
- Cables de conexión (Hembra-Hembra ó Hembra-macho)
- x1 Cable micro USB (Con el que cargamos el celular servirá)
- Plataforma IoT Asksensors 
- IDE Arduino

¡Listo! Con lo anterior podemos hacer el tutorial rápidamente.


2. Crear y configurar cuenta IoT en Asksensors 

En internet  hay cientos de plataformas para IoT sin embargo he decidido tomar esta por su extrema facilidad pues es casi un "Plug & Play" y es lo que buscamos en SkullTrap al compartir un tutorial o proyecto, que sea claro, preciso  y lo más fácil posible, aunque otras plataformas IoT tienen mejores funciones y son más avanzadas, usar Asksensors será suficiente para ver una o más variables graficarlas, exportar dichos datos y tratarlos así que veamos:

2.1. Nos registraremos en asksensors seleccionando la cuenta gratis (Click para ir), una vez nos registramos vamos al dashboard de asksensors:


2.2. Ya en el dashboard vamos a crear un nuevo sensor dando click en "+New sensor" asignamos un nombre, ahora creamos un módulo dando en "+Add module" deberá quedarnos un módulo agregado así:

Module1 creado

2.3. Hecho lo anterior bajamos un poco y guardamos cambios en "Save", luego nos cargará los detalles de nuestro sensor "Sensors details" de estos datos por ahora sólo necesitaremos la API key in, así que la copiaremos para usarla más adelante:


2.4. Agregaremos el sistema de gráficos que nos mostrará el comportamiento del potenciómetro al variarlo, como se ve en la imagen anterior vamos a la pestaña (2) Modules luego a "+Add graph" y dejaremos en Type "Line" para registrar todo el comportamiento del potenciómetro, finalmente damos click en "Save": 


Y nos saldrá un cuadro de gráfico vacío pero con el espacio listo para tratar los datos (Cosa que haremos cuando programemos nuestra nodeMcu):



3. Cómo conectar potenciómetro 5k a NodeMcu

Sabemos que lo que proporcionará el potenciómetro será un dato análogo entonces requerimos un pin análogo de la NodeMcu (Que sólo trae uno) para ello la identificación de todos los pines está en esta imagen:
Clic en imagen para ampliar
El pin conversor Análogo-Digital será el A0 en la tarjeta ¡Fácil! además hay que recordar que la resolución de dicho conversor es de 10 bits lo que se traduce en que podremos manejar y ver valores entre 0 a 1023.

3.1. Sabido lo anterior la conexión a realizar será simple y estará lista así:

Clic en imagen para ampliar

4. Programar NodeMcu para IoT usando API

Nota: Si compraste tu NodeMcu pero es la primera vez que la conectas a tu pc debes instalar el driver de la tarjeta y configurarla con el IDE de Arduino para programarla, da click aquí para ir al tutorial que tenemos para ello.

4.1. Ya con la tarjeta NodeMcu configurada podemos ir al siguiente paso, abrimos el IDE de Arduino y como he mencionado al principio usaré la tarjeta NodeMcu v3.0 si tienes esta entonces vamos a Herramientas > Placa > NodeMcu 1.0(ESP-12E Module) luego seleccionamos Upload Speed > 115200 conectamos la tarjeta y escogemos el puerto COM correspondiente que nos salga:


4.2. ¡Importante! Lo siguiente será instalar la librería ESP8266WiFi, entonces vamos a Programa > Incluir Librería > Administrar Bibliotecas escribimos ESP8266WiFi e instalamos la que dice IoTtweet by Isaranu Janthong:



4.3. Con la librería lista finalmente programaremos nuestra NodeMcu con el siguiente código:
/*API DESARROLLADA POR AskSensors código traducido 
y modificado al español por Andrés Lozano 
de SkullTrap Electronics - www.skulltrap.co */

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>

// Configuración Inicial
const char* wifi_ssid = "NOMBRE RED WIFI";     // SSID - Nombre red Wifi
const char* wifi_password = "CLAVE RED WIFI";  // Clave Wifi
const char* apiKeyIn = "AQUI VA LA API KEY";   // API KEY IN
const unsigned int writeInterval = 300;   // Tiempo de actualización (en ms)

// Configuración API asksensors
String host = "http://api.asksensors.com";  // Host de API
    
ESP8266WiFiMulti WiFiMulti;

void setup() {

  Serial.begin(115200);
  Serial.println("*****************************************************");
  Serial.println("********** Programa Inicial :  ESP8266 a AskSensors sobre HTTP");
  Serial.println("Esperando WiFi... ");
  Serial.print("********** Conectando al WiFi : ");
  Serial.println(wifi_ssid);
  WiFi.begin(wifi_ssid, wifi_password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("");
  Serial.println("-> Conectado al WiFi");
  Serial.println("-> Direccion IP: ");
  Serial.println(WiFi.localIP());

//Lectura Inicial de Potenciómetro  
pinMode(A0, INPUT); 
}

void loop() {

int POT = analogRead(A0);
Serial.print("Pot-5K = ");
  Serial.println(POT); //Imprimo valor de Potenciómetro

    // Espera para la conexión WiFi
  if (WiFi.status() == WL_CONNECTED){

        HTTPClient http;

        Serial.print("[HTTP] Iniciando...n");
        
        // Creo la URL para enviar la petición concatenando los datos
        String url = "";
        url += host;
        url += "/write/";
        url += apiKeyIn;
        url += "?module1=";
        url += POT;        // Variable del potenciometro concatenada en la URL
        
        Serial.print("********** solicitando URL: ");
        Serial.println(url);
        http.begin(url); //HTTP
        
        Serial.println("> Solicitud enviada a ASKSENSORS");

        Serial.print("[HTTP] GET...n");
        // Inicio la conexión y envío peticion GET
        int httpCode = http.GET();

        if(httpCode > 0) {
           Serial.printf("[HTTP] GET... codigo: %dn", httpCode);
            if(httpCode == HTTP_CODE_OK) {
                String payload = http.getString();
                Serial.println(payload);
            }
        } else {
            Serial.printf("[HTTP] GET... fallido, error: %sn", http.errorToString(httpCode).c_str());
        }

        http.end();

        Serial.println("********** Fin ");
        Serial.println("*****************************************************");
    }

    delay(writeInterval);   // Espera el tiempo de actualización
}

Sobre el código

- ¡Importante! En las líneas 11, 12 y 13 se debe reemplazar respectivamente el texto entre las comillas dobles por el nombre exacto de nuestra red WiFi, la clave WiFi y la Api Key In que obtuvimos en el paso 2.3.

- Línea 14 se establece el intervalo de actualización en milisegundos esto irá directamente ligado a cada cuánto se enviará el dato del potenciómetro a la plataforma IoT.

- Línea 17 contiene la URL a la que se conecta en este caso allí se validará la API Key ingresada en la línea 13, no se debe modificar.

- Línea 46 a 48  a cargo de leer el valor del potenciómetro y mostrarlo en monitor serial.

- Línea 58 a la 63 he creado un STRING para concatenar porciones que crearán mi URL final que se conectará por peticiones HTTP, en la línea 63 se almacena el valor en la variable POT que se graficará finalmente en el module1 indicado en la línea 62 en el paso 2.2 agregamos dicho módulo con ese nombre "Module1" por defecto.

4.4. Hechas las modificaciones ahora hay que cargar el código en la tarjeta, mientras lo hace el led del ESP8266 de la NodeMcu titilará y en el IDE de Arduino una vez carga por completo el código, saldrá algo así:


Vamos a la tarjeta para presionar el botón de reset (rst) y verificamos en el monitor serial (La comunicación debe estar en 115200 baudios) como se está comportando el programa, allí podremos ver si la conexión se ha logrado o no, entonces:


Hemos comprobado que nuestra tarjeta se conecta a internet y establece un vínculo con la API de la plataforma IoT enviando el valor actual que tenga el potenciómetro, recordemos que para este código el tiempo se actualizará cada 300ms pero este puede ser cambiado a gusto del programador.

5. Ver valor potenciómetro en gráfica IoT AskSensors

Para ver en vivo como se comporta nuestro potenciómetro en la plataforma IoT vamos de nuevo a Asksensors y damos en "visualize":


Nos cargará el mismo cuadro de gráfica que sacamos en el paso 2.4 para finalmente ver el comportamiento de nuestro potenciómetro ¡La magia ocurre cuando lo variamos! y vemos como actualiza cada cierto tiempo en vivo:


5.1. Hasta lo anterior ya logramos conectar un potenciómetro al mundo de Internet lo cual está bien: IoT que le llaman, aunque es algo muy básico son buenas bases para ir adquiriendo nivel y hacer cosas más complejas, pero por ahora el paso final será tener la opción de que cualquier persona pueda ver el comportamiento de nuestro componente:
Como decirle a un amigo "Abre este link y mira como varío un potenciómetro en vivo desde mi casa" y tu amigo está a 100 kilómetros de ti
Entonces, en la misma gráfica de asksensor le damos click al cuarto ícono que dice "open chart" y listo ese link en una nueva ventana se lo podremos enviar a alguien más para que observe todo:

 

Si abro el link en modo incógnito/privado o lo envío a alguien más para que observe no requerirá ingresar a mi cuenta de asksensors lo cuál es bueno ya que sólo podrán ver más no modificar o alterar mi gráfica:

Cualquier persona con el link verá algo así esté donde esté

¡Felicidades 😼 hiciste IoT con Arduino NodeMcu y un Potenciómetro!



🔔 Aclaraciones y dudas:

🔰 ¿Puedo mostrar el estado de otro elemento o componente?

Sí, desde un sensor hasta un pulsador todo depende de nuestra creatividad programando,este código es una base para establecer conexión a internet y hacer IoT.

 🔰 ¿Se puede cambiar el estilo de gráfica usada, no usar línea?

Sí, sólo usamos línea para el ejemplo pero como expliqué en el paso 2.4 en Type tenemos múltiples opciones (Sólo las resaltadas en amarillo):


 🔰 ¿Es del todo gratis AskSensors?

No, como cualquier servicio en la red poseen planes de pago y el gratis que hemos creado al inicio tiene validez de 1 año pero, no pasa nada si el año se cumple creamos otra cuenta y se repite el proceso sin problema. 


Es todo en este 1er post sobre IoT muy completo y dinámico, ¿Alguna duda? Comentar es gratis 😉.

Compartir:

Configurar - Descargar Driver NodeMcu V3.0 en IDE Arduino 2019

En estos días se me ha dado por trabajar con la tarjeta NodeMcu en su versión V3.0 de Lolin que como todas las anteriores ya traen el ESP8266 y para empezar con una serie de tutoriales es importante instalar y configurar la tarjeta con el IDE de Arduino para dejarla lista y que sólo sea escribir código, cargar y probar, así que ese será el objetivo de este post.



CONFIGURAR - PROGRAMAR NODEMCU EN IDE ARDUINO

¿Qué usaremos?

Para este paso a paso lo que se requiere es fácil de encontrar, considerando que ya tienes la NodeMcu, entonces es:

- x1 Tarjeta NodeMcu preferiblemente la V3.0 (Si tienes otra no hay lío)
- x1 Cable MicroUSB (Con el que cargas tu celular sirve)
- IDE de Arduino (Descargar)
- Driver CH340G/CH341SER de la NodeMcu (Descargar)

Paso a paso...

1. Inicialmente vamos a instalar el ESP8266 en nuestro IDE de Arduino, para ello vamos a configurar la URL del paquete que permite la compatibilidad del IDE con las ESP8266.

Vamos al IDE de Arduino > Archivo > Preferencias y en "Gestor de URLs Adicionales de Tarjetas" hacemos clic en el pequeño botón de la derecha:

 


2. En la ventana que aparece luego de hacer clic al cuadro, pegaremos la siguiente URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Damos en OK y todo debe marchar tal y como se ve en la imagen:

 


3. Ahora vamos a Configuración > Placa > Gestor de Tarjetas:

 


Y buscamos el paquete de tarjeta basadas en ESP8266 para luego instalarlo:

 


4. Ahora verificamos que estén disponibles las tarjetas de desarrollo basadas en el ESP8266:


Instalación del Driver

Este proceso es importante ya que la tarjeta aún después de realizar todo lo anterior al momento de conectarla no será reconocida por nuestro PC, y lo único que nos falta es instalar el Driver, para ello lo pueden descargar aquí. y el proceso de instalación es el siguiente:

5. Se descomprime el archivo .rar y luego ejecutamos "SETUP":


No hace falta modificar nada en el proceso de instalación, sólo queda dar clic en "INSTALL" y esperar unos breves segundos, si todo sale bien deberá decirnos que el proceso ya fue realizado:


En la siguiente imagen relaciono la configuración que le dejo a la mía a la hora de programar, realmente solo hace falta cambiar la placa escogiendo "NodeMCU 1.0 (ESP - 12E Module)" y la velocidad en sus respectivos 115200 es con la que mejor me va:

Configuración establecida para mi NodeMcu

Y con esto habremos terminado la configuración e instalación de la NodeMcu para programarla desde el IDE de Arduino, en un próximo post empezaremos a trabajarla con código y un poco de IoT.


Compartir:

SkullTrapers

Posts más vistos

 

CLICK AQUI PARA IR A NUESTRA TIENDA ON LINE ARDUINO, ELECTRÓNICA, COMPONENTES