Temperatura de monitoreo en Raspberry Pi

Temperatura de monitoreo en Raspberry Pi

Video Playerhttps: // Linuxhint.com/wp-content/uploads/2020/10/2020-09-29-20-47-25.MP400: 0000: 0000: 40 Utilice las teclas de flecha hacia arriba/hacia abajo para aumentar o disminuir el volumen.
El monitoreo de las 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 requeridos para este proyecto no son demasiado costosos.Este artículo le muestra cómo usar el módulo del termómetro digital DS18B20 para monitorear la temperatura utilizando Raspberry Pi. El artículo también demuestra cómo crear una aplicación web para mostrar la temperatura.

Cosas que necesitarás:

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

  1. Una computadora de una sola tabla de frambuesa Pi
  2. Un adaptador de alimentación para el dispositivo Raspberry Pi
  3. Una tarjeta microSD con Raspberry Pi OS instalada
  4. Conectividad de red en el dispositivo Raspberry Pi
  5. Un tablero
  6. 3 PC de cables de conexión femenina a mujer
  7. Algunos cables de conexión de hombre a hombre
  8. Una resistencia de 10k
  9. Un módulo de termómetro digital DS18B20

Pinots del termómetro digital DS18B20

Si sostiene el termómetro digital DS18B20 como se muestra en la imagen a continuación, el primer pin será molido (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 imagen a continuación.

Aquí el PIN2/5V del dispositivo Raspberry Pi debe conectarse al PIN3/VCC del módulo del termómetro digital.

El PIN7/GPIO4 del dispositivo Raspberry Pi debe conectarse al PIN2/datos del módulo del termómetro digital.

El PIN9/GND del dispositivo Raspberry Pi debe conectarse al PIN1/GND del módulo del termómetro digital.

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

Debe sostener su Raspberry Pi como se muestra en la imagen a continuación. Entonces, el pin superior izquierdo será PIN1. El pin justo al lado de PIN1 será PIN2. Entonces, si avanza una fila, la izquierda será Pina Y el correcto será PIN4, etcétera.

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

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

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.

Datos de temperatura de lectura del termómetro digital DS18B20

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

Para habilitar la interfaz de 1 cable, ejecute config Con el siguiente comando:

$ sudo raspi-config

Seleccionar Opciones de interfaz y presionar .

Seleccionar 1 cable y presionar .

Seleccionar y presionar .

Prensa .

Salir de la config utilidad, prensa .

Para que los cambios entren en vigencia, reinicie su Raspberry Pi de la siguiente manera:

$ sudo reinicio

Para verificar 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 El 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 cable y cargó el W1_THERM módulo, un nuevo dispositivo (28-00000BA693E9, en mi caso) debe aparecer en el /Sys/Bus/W1/Dispositivos Directorio, como puede ver en la captura de pantalla a continuación.

$ ls/sys/bus/w1/dispositivos/

Navegue al nuevo directorio, como sigue:

$ 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

El temperatura El archivo es un archivo de texto sin formato. Puede leer los datos de temperatura utilizando el gato Comando, como sigue:

$ Cat Temperatura

Como puede ver, los datos de temperatura se imprimen en la consola. Aquí, 30375 medio 30.375 ° C.

Puede usar 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 hacer eso en la siguiente sección de este artículo.

Para analizar los datos de temperatura utilizando un lenguaje de programación, necesitará la ruta absoluta al temperatura archivo. Puedes encontrar esto usando el readlink Comando, como sigue:

$ readlink -f temperatura

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

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

En este ejemplo, crearé una API, que analizará los datos de temperatura del módulo del 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á muy bien. Usaré el nodo.JS Language de programación para hacerlo. Los códigos se cargan en mi repositorio de GitHub Shovon8/DS18B20-Raspberrypi-API. Es posible que desee consultar si tiene dificultades para copiar y pasar los códigos de este artículo.

Nodo.JS no está instalado en Raspberry Pi OS de forma predeterminada. Pero, está disponible en el repositorio oficial de paquetes de Raspberry Pi OS. Puede instalar fácilmente el nodo.JS desde el repositorio de paquetes Raspberry Pi OS.

Primero, actualice el caché del repositorio del paquete APT con el siguiente comando:

$ sudo apt actualización

A continuación, instale el nodo.JS y NPM con el siguiente comando:

$ sudo apt instalación nodejs npm

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

El Administrador de paquetes APT descargará e instalará todos los paquetes requeridos. Puede tomar un tiempo completar.

En este punto, nodo.JS y NPM deben instalarse.

Una vez nodo.JS y NPM están instalados, verifique si el nodo y npm Los comandos están disponibles, como sigue:

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

Actualizar NPM con el siguiente comando:

$ sudo npm instalación -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 de proyectos ~/DS18B20, como sigue:

$ mkdir -v ~/ds18b20

Navegar al ~/DS18B20 Directorio, como sigue:

$ CD ~/DS18B20

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

$ npm init -y

Instala el Expresar.js Biblioteca para el proyecto con el siguiente comando:

Instalación de $ NPM --Save Express

El expreso.La biblioteca JS ahora debe instalarse.

Crea el nuevo archivo servidor.js En el directorio del proyecto, como sigue:

$ Nano Server.js

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

Let Express = require ('express');
Sea fs = requerir ('fs');
Let Server = Express ();
Puerto const = 8080;
const Webroot = './público';
servidor.Get ('/', Express.static (Webroot));
servidor.get ('/temperatura', (req, res) =>
Deje tempdatapath = '/sys/bus/w1/disposition/28-00000BA693E9/temperatura';
Sea temperatura = FS.readFilesync (tempDatapath, codificación: 'utf8', flag: 'r') / 1000;
resonancia.json (temperatura, rangeStart: -55, rangeend: 125);
);
servidor.escuchar (puerto, () =>
consola.log ('servidor que se ejecuta en el puerto $ puerto');
);

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

Aquí, la línea 1 importaciones expresar, y la línea 2 importa el FS módulo.

La línea 4 inicializa express.

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

La línea 9 se usa para configurar Express para servir contenidos estáticos del Raíz web.

Las líneas 11-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 mantiene el camino absoluto al temperatura Archivo del módulo del 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 desde el temperatura Archivo usando el nodo.módulo JS 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 del termómetro digital DS18B20 puede medir entre las temperaturas -55 ° C a 125 ° C. He agregado que en la salida JSON usando el rangeSt 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, como sigue:

$ mkdir -v público

Ejecutar el servidor.js programa con el siguiente comando:

Servidor de nodo $.js

El servidor debe estar ejecutándose en el puerto 8080.

Puede acceder a los datos de temperatura del módulo del 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/temperatura | JSON_PP

Como puede ver, los datos de temperatura se imprimen 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á el servidor API para los datos de temperatura y lo 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, como sigue:

$ nano público/índice.html

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




Monitor de temperatura







00.00 ° C


Actualizaciones de temperatura en cada 5 segundos



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

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

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

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

Las líneas 62-109 se utilizan para que la aplicación web funcione. 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 ejecuta el principal función una vez que la aplicación web se carga en el navegador.

El principal la función es muy larga. Se extiende desde la línea 65 a la línea 108. Dentro de la función principal, tenemos algunas otras funciones, como emperadera de getT, updateTemperatura, progreso de actualización, aplicación, y comenzar.

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

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

El emperadera de getT La 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 updateTemperatura función con los datos. El updateTemperatura La función luego actualiza la aplicación web con los nuevos datos de temperatura.

El 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.

El comenzar La 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

Cambiar principal a servidor.js y agregar 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 archivo.

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

Servicio de ejecución de $ npm

El servidor debe estar ejecutándose 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 del 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 está cambiando cada 5 segundos.

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

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

$ hostname -i

Como puede ver, la dirección IP de mi dispositivo Raspberry Pi es 192.168.0.107. Esto será diferente para ti. Entonces, asegúrese de reemplazar la dirección IP de ahora en adelante.

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

Conclusión

En este artículo, aprendió cómo usar el módulo del termómetro digital DS18B20 en Raspberry Pi para medir la temperatura. También aprendiste a crear un nodo.API JS 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 del termómetro digital DS18B20 y IoT con Raspberry Pi.