Páginas

10 mayo, 2019

RaspberryPi: Captar temperatura y humedad con sensor DHT22 (AM2302) y enviar datos a ThingSpeak.com

RaspberryPi: Captar temperatura y humedad con sensor DHT22 (AM2302) y enviar datos a ThingSpeak.com.

Repositorio Github: https://github.com/adrianlois/RaspberryPi-Projects/tree/master/01.rpi-sensor-dht22-am2302-thingspeak

Requisitos previos

Instalar Python 2

sudo apt update -y
sudo apt install python-pip -y
sudo python -m pip install --upgrade pip setuptools wheel

Instalar librerías Adafruit

git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install

Esquema de conexión: Temperatura y Humedad sensor DHT22 AM2302

El sensor DHT22 AM2302 consta de 3 pines:
  • + (positivo) = Voltaje 3V (Power - pin 1)
  • - (negativo) = Tierra (Ground - pin 6)
  • out = Salida de datos (GPIO4 - pin 7)
Podemos hacer otro esquema de conexión siempre que se respete la funcionalidad de cada pin del sensor al esquema de conexión de la RaspberryPi. Hay que tener en cuenta el número de GPIO donde iría conectado el pin "out" del sensor, este nos proporciona la salida de datos captados.

En el script "thingspeak_raspi_dht22.py" establecemos el número de GPIO en la variable raspiNumGPIO.

Test de conexión del sensor DHT22 AM2302

Teniendo las librerías Adafruit ya instaladas una forma de probar la conexión entre el sensor y la RaspberryPi es ejecutar el script de ejemplo para obtener los datos de temperatura y humedad actuales.

Se le pasa como primer parámetro el modelo de sensor "2302" y el número de GPIO del pin correspondiente donde está conectado la salida de datos (out) del sensor, en este caso 4 (GPIO4).
$ python Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 4
Temperatura=21.2* Humedad=57.7%
Figura 1: Esquema de conexión GPIO Raspberry PI 3 B/B+.
Figura 2: Conexión física del sesnor dht22 am2302 a Raspberry Pi 3 B+.

Script Python para el envío de datos a la cuenta de ThingSpeak (thingspeak_raspi_dht22.py)

import sys
import urllib2
import RPi.GPIO as GPIO
import Adafruit_DHT
# Write API Key ThingSpeak.com
miWriteAPIKey = "XXXXXXXXXXXXXXXX"
# Numero GPIO de conexión out del sensor dht22 a RaspberryPi
raspiNumGPIO = "X"
def getSensorData():
   RH, T = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, raspiNumGPIO)
   return (str(RH), str(T))
def main():
   print 'Iniciando...'
   baseURL = 'https://api.thingspeak.com/update?api_key=%s' % miWriteAPIKey
   while True:
       try:
           RH, T = getSensorData()
           f = urllib2.urlopen(baseURL + "&field1=%s&field2=%s" % (RH, T))
           print f.read()
           f.close()
           sleep(5)
       except:
           print 'Terminado.'
           break
if __name__ == '__main__':
main()

Configuración de la cuenta de ThingSpeak.com

  1. Registrarse en https://thingspeak.com
  2. Si no tenemos cuenta previa en MathWorks. ThingSpeak nos redirigue, con la posibilidad de usar el mismo email, hacia el registro de https://www.mathworks.com.
  3. Crear un nuevo channel en nuestra perfil y agregar dos field chart (Temperatura y Humedad).
  4. Obtener el "Write API Key" del channel creado.
  5. Establecer el "Write API Key" en el script "thingspeak_raspi_dht22.py" en la variable miWriteAPIKey.
  6. Podemos usar y personalizar plantillas de código Matlab para la visualización de los datos registrados en los field chart del channel de ThingSpeak.

Programar el envío de datos a ThingSpeak.com (crontab)

Añadimos una tarea programada en cron (/etc/crontab) que ejecutará el script "thingspeak_raspi_dht22.py" enviando los datos captados a nuestra cuenta de ThingSpeak.
@hourly root python /thingspeak/thingspeak_raspi_dht22.py
Channel ThingSpeak: https://thingspeak.com/channels/769908/

Figura 3: Ejemplo de tablas de campo (field chart) del envío de datos a la cuenta de ThingSpeak.

Saludos!

3 comentarios

  1. hola estuve leyendo su blog, me dieron muchas ganas de hacer la prueba de enviar datos. desgraciadamente no pude hacer funcionar el Script Python para poder enviar los datos a la plataforma. me podria ayudar?

    ResponderEliminar
    Respuestas
    1. Hola Daniel, puedes concretar más el paso o el error de Python en el que te encuentras?. Un saludo.

      Eliminar
    2. el msj de error es el siguiente
      File "cloud-dht22.py", line 7
      SyntaxError: Non-ASCII character '\xc3' in file cloud-dht22.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

      Eliminar

Entradas Populares