Frambuesa pi

Monitoreo de temperatura en Raspberry Pi

Monitoreo de temperatura en Raspberry Pi


El monitoreo de temperaturas puede ser un requisito en muchos de sus proyectos de Raspberry Pi. Es relativamente fácil de hacer en Raspberry Pi y los componentes necesarios para este proyecto no son demasiado costosos.Este artículo le muestra cómo usar el módulo de termómetro digital DS18B20 para monitorear la temperatura usando Raspberry Pi. El artículo también demuestra cómo crear una aplicación web para mostrar la temperatura.

Cosas que necesitará:

Para probar los ejemplos de este artículo, necesitará lo siguiente:

  1. Una computadora de placa única Raspberry Pi
  2. Un adaptador de corriente para el dispositivo Raspberry Pi
  3. Una tarjeta microSD con el sistema operativo Raspberry Pi instalado
  4. Conectividad de red en el dispositivo Raspberry Pi
  5. Una placa de pruebas
  6. 3 piezas de cables de conexión hembra a hembra
  7. Algunos cables de conexión macho a macho
  8. Una resistencia de 10k
  9. Un módulo de termómetro digital DS18B20

Configuración de pines del termómetro digital DS18B20

Si sostiene el termómetro digital DS18B20 como se muestra en la imagen a continuación, el primer pin estará conectado a tierra (GND), el segundo pin será DATOS, y el tercer pin será VCC.

Diagrama de circuito

El diagrama de circuito del monitor de temperatura se muestra en la siguiente imagen.

Aquí el PIN2 / 5V del dispositivo Raspberry Pi debe estar conectado a la PIN3 / VCC del módulo de termómetro digital.

La PIN7 / GPIO4 del dispositivo Raspberry Pi debe estar conectado a la PIN2 / DATOS del módulo de termómetro digital.

La PIN9 / GND del dispositivo Raspberry Pi debe estar conectado a la PIN1 / GND del módulo de termómetro digital.

A Resistencia de 10 kΩ debe estar conectado entre PIN2 y PIN3 del módulo de termómetro digital.

Debe sostener su Raspberry Pi como se muestra en la imagen a continuación. Entonces, el pin de arriba a la izquierda será PIN1. El alfiler justo al lado de PIN1 estarán PIN2. Entonces, si avanza una fila, la de la izquierda será PIN3 y el correcto será PIN4, y así.

Una vez que haya conectado todos los componentes a su dispositivo Raspberry Pi, debería verse así:

Eche un vistazo más de cerca a cómo coloqué los componentes en la placa de pruebas.

Una vez que haya conectado todos los componentes a su dispositivo Raspberry Pi, encienda el dispositivo Raspberry Pi. Luego, conéctese a su dispositivo Raspberry Pi a través de VNC o SSH.

Lectura de datos de temperatura del termómetro digital DS18B20

El módulo de termómetro DS18B20 utiliza el protocolo de comunicación de 1 cable para enviar datos a la Raspberry Pi. De forma predeterminada, la interfaz de 1 cable no está habilitada. Puede habilitar fácilmente la interfaz desde la herramienta de configuración Raspberry Pi.

Para habilitar la interfaz de 1 cable, ejecute raspi-config con el siguiente comando:

$ sudo raspi-config

Seleccione Opciones de interfaz y presione .

Seleccione 1 hilo y presione .

Seleccione y presione .

prensa .

Para salir de la raspi-config utilidad, prensa .

Para que los cambios surtan efecto, reinicie su Raspberry Pi de la siguiente manera:

$ sudo reiniciar

Para comprobar si el w1_gpio y w1_therm Los módulos del kernel están cargados, ejecute el siguiente comando:

$ sudo lsmod | grep w1

Si por alguna razón, el w1_therm módulo no está cargado, entonces puede cargarlo manualmente con el siguiente comando:

$ sudo modprobe w1_therm

Una vez que haya habilitado Comunicación de 1 hilo y cargó el w1_therm módulo, un nuevo dispositivo (28-00000ba693e9, en mi caso) debe figurar en el / sys / bus / w1 / dispositivos directorio, como puede ver en la captura de pantalla a continuación.

$ ls / sys / bus / w1 / devices /

Navegue hasta el nuevo directorio, de la siguiente manera:

$ cd / sys / bus / w1 / devices / 28-00000ba693e9

Deberías encontrar un temperatura archivo en el directorio, como puede ver en la captura de pantalla a continuación.

$ ls -lh

La temperatura el archivo es un archivo de texto sin formato. Puede leer los datos de temperatura utilizando el gato comando, de la siguiente manera:

$ temperatura del gato

Como puede ver, los datos de temperatura están impresos en la consola. Aquí, 30375 medio 30.375 ° C.

Puede utilizar un lenguaje de programación, como Python o Node.js, para analizar estos datos de temperatura y usarlos en su aplicación. Te mostraré cómo hacerlo en la siguiente sección de este artículo.

Para analizar los datos de temperatura usando un lenguaje de programación, necesitará la ruta absoluta al temperatura expediente. Puede encontrar esto usando el readlink comando, de la siguiente manera:

$ readlink -f temperatura

Cree una aplicación web para mostrar datos de temperatura:

En esta sección, aprenderá a analizar los datos de temperatura del módulo de termómetro DS18B20 y a mostrarlos en una aplicación web.

En este ejemplo, crearé una API, que analizará los datos de temperatura del módulo de termómetro DS18B20 al que se puede acceder desde la API. También crearé una aplicación web que obtendrá los datos de temperatura de la API y los mostrará de forma agradable. Usaré el nodo.lenguaje de programación js para hacerlo. Los códigos se cargan en mi repositorio de GitHub shovon8 / ds18b20-raspberrypi-api. Es posible que desee comprobarlo si tiene dificultades para copiar y pegar códigos de este artículo.

Nodo.js no está instalado en el sistema operativo Raspberry Pi de forma predeterminada. Pero está disponible en el repositorio oficial de paquetes de Raspberry Pi OS. Puede instalar fácilmente Node.js del repositorio de paquetes del sistema operativo Raspberry Pi.

Primero, actualice la caché del repositorio de paquetes APT con el siguiente comando:

actualización de $ sudo apt

A continuación, instale Node.js y NPM con el siguiente comando:

$ sudo apt install nodejs npm

Para confirmar la instalación, presione Y y luego presione .

El administrador de paquetes de APT descargará e instalará todos los paquetes necesarios. Puede que tarde un poco en completarse.

En este punto, Node.js y NPM deben estar instalados.

Once Node.js y NPM están instalados, compruebe si el nodo y npm los comandos están disponibles, de la siguiente manera:

$ nodo --versión
$ npm --version

Actualice NPM con el siguiente comando:

$ sudo npm install --global npm

NPM debe actualizarse.

Como puede ver, NPM se ha actualizado desde la versión 5.8.0 a la versión 6.14.8.

$ nodo --versión $ npm --versión

Ahora ese nodo.js y NPM están instalados, cree el nuevo directorio del proyecto ~ / ds18b20, como sigue:

$ mkdir -v ~ / ds18b20

Navega al ~ / ds18b20 directorio, de la siguiente manera:

$ cd ~ / ds18b20

Crea el vacío paquete.json archivo con el siguiente comando:

$ npm init --y

Instala el Rápido.js biblioteca para el proyecto con el siguiente comando:

$ npm install --save express

El expreso.La biblioteca js ahora debería estar instalada.

Crea el nuevo archivo servidor.js en el directorio del proyecto, de la siguiente manera:

$ nano servidor.js

Ingrese las siguientes líneas de códigos en el servidor.js expediente.

let express = require ('express');
deje fs = require ('fs');
dejar servidor = expreso ();
PUERTO constante = 8080;
const WEBROOT = './público';
servidor.obtener ('/', expresar.estático (WEBROOT));
servidor.get ('/ temperature', (req, res) =>
let tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperature';
deje que la temperatura = fs.readFileSync (tempDataPath, codificación: 'utf8', bandera: 'r') / 1000;
res.json (temperatura, inicio de rango: -55, fin de rango: 125);
);
servidor.escuchar (PUERTO, () =>
consola.log ('servidor ejecutándose en el puerto $ PORT');
);

Una vez que haya terminado, presione + X seguido por Y y para salvar el servidor.archivo js.

Aquí, la línea 1 importa Rápido, y la línea 2 importa el fs módulo.

La línea 4 inicializa express.

Las lneas 6 y 7 definen el PUERTO y WEBROOT variables constantes, respectivamente. La API y el servidor web se ejecutarán PUERTO (cual es 8080, en este artículo), y el servidor web servirá contenido estático desde el WEBROOT (Cuál es el público/ directorio dentro del directorio del proyecto en este artículo).

La línea 9 se utiliza para configurar express para que sirva contenido estático desde el WEBROOT.

Las líneas 11 a 15 definen el punto final de la API /temperatura, que se utilizará para obtener los datos de temperatura en formato JSON.

En la línea 12, el tempDataPath La variable contiene la ruta absoluta a la temperatura archivo del módulo de termómetro digital DS18B20, que se muestra en una sección anterior de este artículo.

En la línea 13, los datos de temperatura se leen del temperatura archivo usando el nodo.js módulo fs, y los datos de temperatura se almacenan en el temperatura variable.

En la línea 14, los datos de temperatura se imprimen en formato JSON. El módulo de termómetro digital DS18B20 puede medir entre las temperaturas de -55 ° C a 125 ° C. He agregado eso en la salida JSON usando el rangeStart y rangeEnd propiedades.

Finalmente, la línea 17-19 ejecuta la API y el servidor web en PUERTO (cual es 8080, en este articulo).

Crear un público/ directorio en el directorio del proyecto, de la siguiente manera:

$ mkdir -v público

Ejecutar el servidor.js programa con el siguiente comando:

$ servidor de nodo.js

El servidor debería estar ejecutándose en el puerto 8080.

Puede acceder a los datos de temperatura del módulo de termómetro DS18B20 desde el /temperatura punto final de la API.

Para probar si puede obtener los datos de temperatura de la API, ejecute rizo, como sigue:

$ curl -s http: // localhost: 8080 / temperature | json_pp

Como puede ver, los datos de temperatura están impresos en la consola en formato JSON. Entonces, la API está funcionando.

prensa + C para detener el servidor.

Ahora, crearé una página web que solicitará al servidor API los datos de temperatura y los mostrará bien en la página. Los datos de temperatura se actualizarán cada 5 segundos.

Crear un nuevo índice.html archivo en el público/ directorio del proyecto, de la siguiente manera:

$ nano public / index.html

Ingrese las siguientes líneas de códigos en el índice.html expediente.




Monitor de temperatura







00.00 ° C


Actualizaciones de temperatura cada 5 segundos



Una vez que haya terminado, presione + X seguido por Y y para salvar el índice.html expediente.

El archivo HTML índice.html es fácil de entender. Es el formato en el que se mostrarán los datos de temperatura en la aplicación web.

Aquí, las líneas 53-55 se usan para mostrar una barra de progreso, y las líneas 57-60 se usan para mostrar la temperatura.

Las líneas 5-49 se utilizan para decorar la aplicación web de forma agradable utilizando CSS (hoja de estilo en cascada).

Las líneas 62-109 se utilizan para hacer que la aplicación web sea funcional. Los códigos JavaScript se utilizan para animar la barra de progreso, obtener los datos de temperatura de la API y mostrar la información.

La línea 63 pasa por principal función una vez que la aplicación web está cargada en el navegador.

La principal la función es muy larga. Se extiende desde la línea 65 hasta la línea 108. Dentro de la función principal, tenemos algunas otras funciones, como getTemperature, updateTemperature, progreso de actualización, aplicación, y comienzo.

La progreso de actualización La función, en las líneas 83-86, toma el porcentaje de progreso como entrada y actualiza la barra de progreso.

La updateTemperature La función en las líneas 77-81 toma los datos de temperatura como entrada y actualiza la aplicación web con los datos de temperatura.

La getTemperature función en las líneas 66-75 hace una solicitud al /temperatura punto final de la API y obtiene los datos de temperatura. Una vez que se reciben los datos, llama al updateTemperature función con los datos. La updateTemperature La función luego actualiza la aplicación web con los nuevos datos de temperatura.

La aplicación La función, en las líneas 88-99, anima la barra de progreso y solicita los datos de temperatura de la API cada 5 segundos.

La comienzo función, en las líneas 101-104, inicia la aplicación web.

Abre el paquete.json archivo con el editor de texto nano de la siguiente manera:

$ paquete nano.json

Cambio principal a servidor.js y agregue el nuevo script atender en el guiones sección, como se marca en la captura de pantalla a continuación.

Una vez que haya terminado, presione + X seguido por Y y para salvar el paquete.json expediente.

Ahora que todo está listo, ejecute la aplicación web y la API con el siguiente comando:

$ npm ejecutar servir

El servidor debe ejecutarse en el puerto 8080.

Ahora, abra un navegador web en su dispositivo Raspberry Pi y visite http: // localhost: 8080. Los datos de temperatura del módulo de termómetro digital DS18B20 deben mostrarse en su navegador web, como puede ver en la captura de pantalla a continuación.

Los datos de temperatura deben actualizarse cada 5 segundos.

Como puede ver, la temperatura cambia cada 5 segundos.

Si desea acceder a la aplicación web desde otra computadora en su red, necesitará saber la dirección IP de su dispositivo Raspberry Pi.

Puede encontrar la dirección IP de su dispositivo Raspberry Pi con el siguiente comando:

$ nombre de host -I

Como puede ver, la dirección IP de mi dispositivo Raspberry Pi es 192.168.0.107. Esto será diferente para ti. Por lo tanto, asegúrese de reemplazar la dirección IP a partir de ahora.

Una vez que sepa la dirección IP de su dispositivo Raspberry Pi, debería poder acceder a la aplicación web desde cualquier computadora en su red usando un navegador web. Visite http: // 192.168.0.107: 8080, y la aplicación web debe mostrar los datos de temperatura del módulo de termómetro digital DS18B20.

Conclusión

En este artículo, aprendió cómo usar el módulo de termómetro digital DS18B20 en Raspberry Pi para medir la temperatura. También aprendiste a crear un nodo.js API para mostrar los datos de temperatura en una aplicación web, que accede a los datos de temperatura de la API y los muestra. Este artículo debería ayudarlo a comenzar con el monitoreo de temperatura de Raspberry Pi con el módulo de termómetro digital DS18B20 e IoT con Raspberry Pi.

Tutorial de Battle for Wesnoth
The Battle for Wesnoth es uno de los juegos de estrategia de código abierto más populares que puedes jugar en este momento. Este juego no solo ha esta...
0 A.D. Tutorial
De los muchos juegos de estrategia que existen, 0 A.D. logra destacarse como un título completo y un juego táctico muy profundo a pesar de ser de códi...
Tutorial de Unity3D
Introducción a Unity 3D Unity 3D es un potente motor de desarrollo de juegos. Es multiplataforma, es decir, te permite crear juegos para dispositivos ...