En este nuevo tutorial os voy a mostrar como instalar el sensor de temperatura y humedad DHT11 para usarlo con la Raspberry Pi. Usaré el lenguaje nodejs en lugar de Phyton para posteriormente comunicar con el la herramienta QNAP QIoT Suite Lite.
¿Qué componentes necesitamos?
Para realizar este tutorial y posteriormente usarlo con QNAP QIoT Suite Lite necesitamos los siguientes componentes básicos. Os adjunto al lado de cada uno el link de compra junto con el precio aproximado.
- 🛒 Raspberry Pi 3 – 35€. En principio se puede usar también con los modelos anteriores pero por comodidad he preferido usar el modelo 3 por tener Wifi ya incorporado. En el precio no está incluida la caja, tarjeta microSD ni adaptador de corriente. Nos pueden servir los que tengamos en casa.
- 🛒 Sensor temperatura\humedad DHT11 – 2€. Es uno de los más extendidos y populares. Tal vez no sea el más preciso del mundo pero para tener un primer contacto con el IoT creo que está muy bien.
- 🛒 Mini protoboard – 1€. Podríamos conectar el sensor directamente a los pines de la Raspberry Pi pero por claridad de conexionado para el tutorial vamos a usar una Protoboard pequeña.
- 🛒 Jumpers de conexión – 4€. Son los necesarios para el conexionado entre la Raspberry Pi y el sensor de temperatura DHT11 que vamos a usar.
Consideraciones previas respecto al sensor
Actualmente existen dos modelos de sensor DHT11. Podríamos decir que uno es más moderno que otro. Os comento esto porque en función del que tengamos las conexiones en los pines son diferentes. En la siguiente imagen vemos la comparativa de ambos sensores.
El de la izquierda es el nuevo sensor DHT11 y en la placa que lleva integrada incorpora una resistencia de 10k necesaria para su funcionamiento. Mientras el de la derecha (el antiguo) necesita que añadamos nosotros una resistencia externa en la protoboard. Por eso, por simplicidad os recomiendo el primero.
Configurar la Raspberry Pi via terminal
Lo primero que haremos es instalar la versión de Rabian en la microSD de nuestra Raspberry. Para ello descargaremos el .zip con la versión RASPBIAN STRETCH LITE que proporciona una interfaz sin modo gráfico. Tiene lo mínimo que necesitamos para este tutorial.
Descomprimiremos el fichero y con la utilidad Etcher grabaremos el fichero .img en la tarjeta microSD conectada al ordenador.
Colocaremos la tarjeta microSD en la Raspberry Pi y conectaremos por cable al router, al HDMI del monitor y también le conectaremos un teclado. Tranquilos esto solo es para la primera ejecución. Mi intención es mostraros cómo instalar SSH y configurar la Wifi para que desconectemos teclado, cable de red y HDMI y la administremos en remoto.
Para configurar la wifi lo primero es comprobar el nombre del SSID al que queremos conectar. Esto es posible haciéndolo con el siguiente comando
$ sudo iwlist wlan0 scan
Una vez que sabemos el nombre del SSID (nombre de nuestra Wifi) tendremos que editar el fichero wpa_supplicant.conf
ejecutando el siguiente comando:
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Añadiremos las siguientes líneas al final del fichero. Vosotros tendréis que sustituir el nombre del la Wifi y la clave de la misma por el de la red al que queráis conectar.
network={
ssid="JMRAMIREZ_2G"
psk="clavedelawifi"
}
Tendremos que reconfigurar la interfaz de red de la Raspberry Pi para que sepa de los cambios que hemos hecho en el fichero.
$ wpa_cli -i wlan0 reconfigure
Una vez hecho esto con el siguiente comando comprobaremos que el campo inet addr
tiene asignada una dirección IP. Si esto es así, ya podremos quitar el cable de red de la Rapsberry Pi.
$ ifconfig wlan0
Por último, habilitaremos el servidor SSH en la Raspberry Pi para que podamos realizar conexiones remotas desde nuestro Mac o PC. Escribiremos en un terminal el comando
$ sudo raspi-config
Después hacemos los siguientes pasos usando las teclas de dirección (flechas), el tabulador y la tecla Enter.
- Seleccionamos
Interfacing Options
- Elegimos la opción de menú
SSH
- Seleccionamos
Yes
- Seleccionamos
Ok
- Elegimos la opción
Finish
Ya lo tenemos todo preparado para comenzar con la configuración del sensor DHT11 en nuestra Raspberry Pi y poderla usar con QNAP QIoT Suite Lite.
Preparación del software DHT11
Como os resaltaba al principio del tutorial, el pilar básico de configuración del sensor DHT11 en la Raspberry Pi es nodejs. Es por ello que empezaremos por ahí nuestra configuración y tendremos que seguir los pasos que os detallo:
Actualizaremos la lista de paquetes en nuestra Raspberry Pi:
$ sudo apt-get update && sudo apt-get upgrade
Descargamos la última versión de nodejs directamente de su web oficial:
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
Una vez descargado el paquete realizamos la instalación en la Raspberry Pi:
$ sudo apt-get install nodejs
Para la posterior instalación de ciertas librerías necesarias para el sensor DHT11 necesitamos instalar el gestor de paquetes npm pero antes crearemos el fichero package.json
que contendrá la siguiente información.
{
"name": "app-temperatura-jmramirez",
"version": "1.0.0",
"description": "Preparación de la Raspberry Pi para QNAO IoT Suite Lite",
"repository": {
"type": "git",
"url": "https://github.com/jmramirez/app-temperatura-jmramirez.git"
},
"license": "ISC"
}
Si no hacemos lo anterior, la instalación de npm nos va a mostrar un mensaje de alerta. Una vez creado el fichero, ejecutamos el siguiente comando para instalar la herramienta npm.
$ sudo npm install
Esquema de conexión del sensor a la Raspberry Pi
Antes de nada nos han de quedar claros los pines de la Raspberry Pi (número y posición) que usaremos para la conexión con el sensor DHT11. En este tutorial haremos uso de los números 1, 14 y 16 situados en la posición que muestra la siguiente figura.
También, como hemos visto con anterioridad, el sensor DHT11 tiene 3 pines que de izquierda a derecha son: 1 – Signal, 2 – Vcc ( ) y 3 – Ground (-).
El esquema de conexión entre el sensor DHT11 y la Rapsberry Pi quedaría entonces de la siguiente manera:
- Pin 1 del DHT11 (Signal) conectado al Pin 16 (GPIO23) de la Raspberry Pi
- Pin 2 del DHT11 (Vcc ( )) conectado al Pin 1 (3V3/Power) de la Raspberry Pi
- Pin 3 del DHT11 (Ground (-)) conectado al Pin 14 (Ground) de la Raspberry Pi
Como dicen que una imagen vale mas que mil palabras, la siguiente os muestra el esquema de conexión del sensor DHT11 a la Raspberry Pi mediante el uso de una pequeña protoboard.
Es muy importante que os aseguréis que las conexiones están bien hechas porque si no, podemos dañar el sensor. Os pongo una imagen de cómo lo tengo yo.
Instalación de los componentes software para el sensor DHT11
El sensor DHT11 necesita dos componentes software básicos para funcionar. Por un lado la librería bcm2835
y por otro el paquete npm node-dht-sensor
. Para la instalación del primero ejecutaremos los siguientes comandos
$ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.46.tar.gz
$ tar zxvf bcm2835-1.46.tar.gz
$ cd bcm2835-1.46
$ ./configure
$ make
$ sudo make check
$ sudo make install
$ cd ..
Una vez instalado la librería bcm2835
instalaremos el paquete npm node-dht-sensor
$ sudo npm install -g --unsafe-perm node-dht-sensor
Llegado a este punto es hora de conectar el sensor DHT11 a nuestra Raspberry Pi y de crear un pequeño programa en nodejs que muestre en consola la temperatura y la humedad de la estancia en donde lo hemos colocado.
Probando el sensor DHT11 para QNAP QIoT Suite Lite
Antes de pasar a un nuevo tutorial para ver QNAP QIoT Suite Lite, vamos a escribir un pequeño programa de prueba en nodejs que lea los valores del sensor DHT11 y los muestre por pantalla. Crearemos un fichero de texto en la Raspberry Pi llamado sensor-test.js
y dentro incluiremos las siguientes líneas:
// Actualiza automáticamente los valores del sensor cada 2 segundos
setInterval(function() {
var sensor = require('/usr/lib/node_modules/node-dht-sensor');
sensor.read(11, 23, function(err, temperature, humidity) {
if (!err) {
console.log('temp: ', temperature.toFixed(1) + '°C,' + 'humidity: ', humidity.toFixed(1) + '%');
}
});
}, 2000);
Lo importante de este código, sin entrar mucho en profundidad es la función read
y los parámetros que hay que pasarle. Como veis he pasado 11 y 23 respectivamente. Eso es, 11 por el tipo de sensor DHT11 (también sirve para el DHT22) y 23 por el nombre del pin de la Raspberry Pi. Pero ojo, GPIO23, si ponéis el número 16 que es el que esta asociado no os va a funcionar.
Ahora nos vamos nuevamente al terminal y escribimos el siguiente comando:
$ sudo node ./sensor-test.js
La salida que obtendremos debe ser algo parecida a esta:
Si hemos obtenido valores distintos de 0.0 tanto en la temperatura como en la humedad hemos completado con éxito nuestro objetivo. Para detener la ejecución del comando tecleamos Ctrl C
.
En un segundo tutorial os enseñaré como mandar esos valores, usando el protocolo MQTT, a un broker situado en un servidor NAS con QNAP QIoT Suite Lite instalado. No os preocupéis por esta terminología puesto que os la explicaré cuando llegue el momento.
Vídeo tutorial para configurar el sensor DHT11 en la Raspberry
Para que nos quede todavía más claro y sobre todo para que lo veáis en vivo y en directo, os dejo este vídeo. En el os muestro la forma de hacer todo lo anterior.
Espero que os haya gustado este tutorial sobre cómo configurar el sensor de temperatura DHT11 con nodejs en la Raspberry Pi para usarlo con QNAP QIoT Suite Lite y como no, en ese caso que lo compartáis con vuestros familiares y amigos para que ellos también puedan disfrutar de una vida 1.0 más cómoda.
Si habéis llegado a esta noticia es posible que os interese también dar una lectura a las novedades que presenta la versión nueva de QTS pulsando en este enlace.
Nos leemos en un siguiente artículo.
Un saludo, JM
Referencias y enlaces
- Descargar oficialmente Raspbian
- Configurar Wifi Raspberry por terminal
- Habilitar el servidor SSH
- Establecer una IP fija en la Raspberry
- Estructura básica de un paquete json
- Web oficial de node-dht-sensor
- Web de instructables sobre el sensor DHT11 con nodejs
- Herramienta Fritzing para cerar diagramas
- Herramienta QIoT Suite Lite