Lectura del sensor y subida de datos a Thingspeak

Una vez se hayan creado los dos canales, lo próximo es leer datos desde el sensor y subirlos a ThingSpeak. Este apartado se puede dividir entonces en dos subapartados: lectura de datos, y subida de datos.

Lectura de datos del sensor:

Existe una librería que nos facilitará mucho el leer los datos del sensor, se encuentra en GitHub (https://github.com/adafruit/Adafruit_Python_DHT/blob/master/README.md) junto a las instrucciones de instalación.

Primero de todo, para instalar la librería, ejecutaremos ciertos comandos en la línea de comandos de la Raspberry Pi (bien estemos controlándolo directamente o indirectamente por SSH). La placa trae preinstalado la versión 2.7 de Python, pero actualizaremos el sistema por si hay alguna actualización:

        sudo apt-get update
        sudo apt-get install python-pip
        sudo python -m pip install --upgrade pip setuptools Wheel
        sudo pip install Adafruit_DHT

En caso de que no funcione el comando pip, se puede instalar desde el repositorio:

        sudo apt-get install git build-essential python-dev python-smbus
        clone https://github.com/adafruit/Adafruit_Python_DHT.git
          cd Adafruit_Python_DHT
          sudo python setup.py install

Una vez instalada la librería, hay que conectar el HW, es decir, hay que realizar las conexiones del sensor. El sensor tiene 3 conexiones: Vcc, GND y Data. Vcc puede ir a 3.3V o a 5V, pero nosotros lo conectaremos a los 3.3V, ya que es suficiente para realizar las lecturas. Como se ha explicado en las características del sensor, se usa un solo canal para transferir los datos de humedad y temperatura, por lo que solo tendremos que conectar el puerto a una conexión de la Raspberry Pi. La distribución de los pines de la placa es el siguiente:


Por lo que el Vcc del sensor lo conectaremos al pin 1, el GND al pin 6, y en nuestro caso la conexión Data al pin 7 (que corresponde al pin lógico GPIO4, el que usaremos en el código). En nuestro caso el sensor venía con la resistencia (y un condensador) soldado, por lo que no hace falta incluir una resistencia extra. En caso de que no sea así, hay que implementar una resistencia pull-up de la siguiente manera:


Donde la resistencia pull-up tendrá un valor entre los 4.7k – 10kΩ. Una vez realizados las conexiones, estamos en disposición de realizar las lecturas. Para comprobar la correcta instalación de las librerías y de las conexiones, simplemente hay que ejecutar el ejemplo que se encuentra dentro del repositorio instalado haciendo lo siguiente:

         python example.py

Una vez comprobado el funcionamiento del anterior ejemplo, se procederá a crear nuestro propio código. Primero se importarán la librería que hemos instalado y otra librería que nos permitirá usar funciones relacionadas con el tiempo. A su vez, se definirán el pin de entrada y el tipo de sensor que tenemos:


En la librería, existe una función que realizará lecturas del sensor hasta que obtenga unos valores que no sean nulos. Esta función a veces tarda cierto tiempo en realizarse, y por ello calcularemos el tiempo transcurrido para poder compensarlo después y cumplir así con la restricción de los 10 segundos. El código se repetirá de forma indefinida:


Ahora, ya tenemos un programa que haga mediciones cada 10 segundos. En el segundo subapartado se explicará cómo subir los datos a ThingSpeak mediante el protocolo MQTT.

Subida de los datos a ThingSpeak:

Se utilizará el protocol MQTT para subir los datos a ThingSpeak. Este protocolo basado en editor-subscriptor es más ligero que http y por eso se hará uso de él. Cómo establecer una conexión MQTT con ThingSpeak se especifica en el siguiente enlace https://es.mathworks.com/help/thingspeak/publishtoachannelfeed.html.

Antes de todo hay que instalar la librería MQTT. Para eso se ejecutará la siguiente línea de comando:

        sudo pip install paho-mqtt

Hay que especificar 3 apartados para establecer una comunicación:

·       Broker: El intermediario entre el editor y el subscriptor.

·       Tópico: El tema al que se subscriben los subscriptores o donde publican los editores.

·       Payload: Los datos.

El código es el siguiente:


Integrando las dos últimas líneas de código con el anterior apartado, después de la lectura del sensor, tendríamos una subida automática de los datos del sensor a ThingSpeak. Para subir los datos cada 10 segundos, necesitamos dos canales tal como se ha especificado al comienzo, por lo que, para ir alternando la subida entre los dos canales, haremos uso de un flag:


Con estas instrucciones debería de ser suficiente para subir los datos leídos de un sensor a dos canales de ThingSpeak de forma alterna.

Comentarios

Entradas populares de este blog

Thingspeak – Qué es y creación de canales

Creación de una página web HTML con datos de ThingSpeak