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)
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
- Registrarse en https://thingspeak.com
- 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.
- Crear un nuevo channel en nuestra perfil y agregar dos field chart (Temperatura y Humedad).
- Obtener el "Write API Key" del channel creado.
- Establecer el "Write API Key" en el script "thingspeak_raspi_dht22.py" en la variable miWriteAPIKey.
- 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.pyChannel 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!
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?
ResponderEliminarHola Daniel, puedes concretar más el paso o el error de Python en el que te encuentras?. Un saludo.
Eliminarel msj de error es el siguiente
EliminarFile "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