Tarte aux framboises

Surveillance de la température dans Raspberry Pi

Surveillance de la température dans Raspberry Pi


La surveillance des températures peut être une exigence dans bon nombre de vos projets Raspberry Pi. C'est relativement facile à faire dans Raspberry Pi et les composants requis pour ce projet ne sont pas trop coûteux.Cet article vous montre comment utiliser le module de thermomètre numérique DS18B20 pour surveiller la température à l'aide de Raspberry Pi. L'article montre également comment créer une application Web pour afficher la température.

Choses dont vous aurez besoin :

Pour essayer les exemples de cet article, vous aurez besoin des éléments suivants :

  1. Un ordinateur monocarte Raspberry Pi
  2. Un adaptateur secteur pour l'appareil Raspberry Pi
  3. Une carte microSD avec Raspberry Pi OS installé
  4. Connectivité réseau sur l'appareil Raspberry Pi
  5. Une planche à pain
  6. 3 fils de connexion femelle à femelle
  7. Certains fils de connexion mâle-mâle
  8. Une résistance de 10k
  9. Un module de thermomètre numérique DS18B20

Brochage du thermomètre numérique DS18B20

Si vous tenez le thermomètre numérique DS18B20 comme indiqué dans l'image ci-dessous, la première broche sera mise à la terre (GND), la deuxième broche sera LES DONNÉES, et la troisième broche sera VCC.

Schéma

Le schéma de circuit du moniteur de température est montré dans l'image ci-dessous.

Ici le PIN2/5V de l'appareil Raspberry Pi doit être connecté au PIN3/VCC du module thermomètre numérique.

le PIN7/GPIO4 de l'appareil Raspberry Pi doit être connecté au PIN2/DONNÉES du module thermomètre numérique.

le PIN9/GND de l'appareil Raspberry Pi doit être connecté au PIN1/GND du module thermomètre numérique.

UNE résistance 10kΩ doit être connecté entre NIP2 et NIP3 du module thermomètre numérique.

Vous devez tenir votre Raspberry Pi comme indiqué dans l'image ci-dessous. Ensuite, la broche en haut à gauche sera NIP1. L'épingle juste à côté NIP1 sera NIP2. Ensuite, si vous avancez d'une ligne, celle de gauche sera NIP3 et la bonne sera NIP4, etc.

Une fois que vous avez connecté tous les composants à votre appareil Raspberry Pi, cela devrait ressembler à ceci :

Regardez de plus près comment j'ai placé les composants sur la planche à pain.

Une fois que vous avez connecté tous les composants à votre appareil Raspberry Pi, allumez l'appareil Raspberry Pi. Ensuite, connectez-vous à votre appareil Raspberry Pi via VNC ou SSH.

Lecture des données de température du thermomètre numérique DS18B20

Le module thermomètre DS18B20 utilise le protocole de communication à 1 fil pour envoyer des données au Raspberry Pi. Par défaut, l'interface 1 fil n'est pas activée. Vous pouvez facilement activer l'interface à partir de l'outil de configuration Raspberry Pi.

Pour activer l'interface à 1 fil, exécutez raspi-config avec la commande suivante :

$ sudo raspi-config

Sélectionner Options d'interfaçage et appuyez sur .

Sélectionner 1 fil et appuyez sur .

Sélectionner et appuyez sur .

presse .

Pour sortir de la raspi-config utilitaire, appuyez sur .

Pour que les modifications prennent effet, redémarrez votre Raspberry Pi comme suit :

$ sudo redémarrer

Pour vérifier si le w1_gpio et w1_therm les modules du noyau sont chargés, exécutez la commande suivante :

$ sudo lsmod | grep w1

Si pour une raison quelconque, le w1_therm module n'est pas chargé, vous pouvez le charger manuellement avec la commande suivante :

$ sudo modprobe w1_therm

Une fois que vous avez activé Communication à 1 fil et chargé le w1_therm module, un nouvel appareil (28-00000ba693e9, dans mon cas) devrait être répertorié dans le /sys/bus/w1/devices répertoire, comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ ls /sys/bus/w1/devices/

Accédez au nouveau répertoire, comme suit :

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

Tu devrais trouver un Température fichier dans le répertoire, comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ ls -lh

le Température le fichier est un fichier texte brut. Vous pouvez lire les données de température en utilisant le chat commande, comme suit :

$ température du chat

Comme vous pouvez le voir, les données de température sont imprimées sur la console. Ici, 30375 moyens 30.375°C.

Vous pouvez utiliser un langage de programmation, tel que Python ou Node.js, pour analyser ces données de température et les utiliser sur votre application. Je vais vous montrer comment faire cela dans la prochaine section de cet article.

Pour analyser les données de température à l'aide d'un langage de programmation, vous aurez besoin du chemin absolu vers le Température déposer. Vous pouvez le trouver en utilisant le lien de lecture commande, comme suit :

$ readlink -f température

Créez une application Web pour afficher les données de température :

Dans cette section, vous apprendrez à analyser les données de température du module de thermomètre DS18B20 et à les afficher sur une application Web.

Dans cet exemple, je vais créer une API, qui analysera les données de température du module de thermomètre DS18B20 accessible depuis l'API. Je vais également créer une application Web qui récupérera les données de température de l'API et les affichera bien. je vais utiliser le nœud.langage de programmation js pour le faire. Les codes sont téléchargés dans mon référentiel GitHub shovon8/ds18b20-raspberrypi-api. Vous voudrez peut-être le vérifier si vous rencontrez des difficultés pour copier-coller les codes de cet article.

Nœud.js n'est pas installé sur Raspberry Pi OS par défaut. Mais, il est disponible dans le référentiel de packages officiel de Raspberry Pi OS. Vous pouvez facilement installer Node.js du référentiel de packages Raspberry Pi OS.

Tout d'abord, mettez à jour le cache du référentiel de packages APT avec la commande suivante :

$ sudo apt mise à jour

Ensuite, installez Node.js et NPM avec la commande suivante :

$ sudo apt installer nodejs npm

Pour confirmer l'installation, appuyez sur Oui puis appuyez sur .

Le gestionnaire de packages APT téléchargera et installera tous les packages requis. Cela peut prendre un certain temps pour terminer.

À ce stade, le nœud.js et NPM doivent être installés.

Une fois Nœud.js et NPM sont installés, vérifiez si le nœud et npm les commandes sont disponibles, comme suit :

$ nœud --version
$ npm --version

Mettez à niveau NPM avec la commande suivante :

$ sudo npm install --global npm

NPM devrait être mis à niveau.

Comme vous pouvez le voir, NPM a été mis à jour à partir de la version 5.8.0 à la version 6.14.8.

$ node --version $ npm --version

Maintenant ce nœud.js et NPM sont installés, créez le nouveau répertoire du projet ~/ds18b20, comme suit:

$ mkdir -v ~/ds18b20

Naviguez vers le ~/ds18b20 répertoire, comme suit :

$ cd ~/ds18b20

Créer le vide paquet.json fichier avec la commande suivante :

$ npm init --y

Installez le Express.js bibliothèque pour le projet avec la commande suivante :

$ npm install --save express

L'Express.js devrait maintenant être installé.

Créer le nouveau fichier serveur.js dans le répertoire du projet, comme suit :

$ nano serveur.js

Entrez les lignes de codes suivantes dans le serveur.js déposer.

let express = require('express');
let fs = require('fs');
laisser serveur = express();
const PORT = 8080 ;
const WEBROOT = './Publique';
serveur.obtenir('/', exprimer.statique(WEBROOT));
serveur.get('/temperature', (req, res) =>
let tempDataPath = '/sys/bus/w1/devices/28-00000ba693e9/temperature';
laisser température = fs.readFileSync(tempDataPath, encodage : 'utf8', indicateur : 'r') / 1000 ;
res.json(temperature, rangeStart : -55, rangeEnd : 125);
);
serveur.écouter(PORT, () =>
console.log('serveur exécuté sur le port $PORT');
);

Une fois que vous avez terminé, appuyez sur + X suivie par Oui et pour sauver le serveur.fichier js.

Ici, la ligne 1 importe Express, et la ligne 2 importe le fs module.

La ligne 4 initialise express.

Les lignes 6 et 7 définissent le PORT et RACINE WEB variables constantes, respectivement. L'API et le serveur Web fonctionneront sur PORT (lequel est 8080, dans cet article), et le serveur Web servira le contenu statique du RACINE WEB (qui est le Publique/ répertoire dans le répertoire du projet dans cet article).

La ligne 9 est utilisée pour configurer express pour servir des contenus statiques à partir du RACINE WEB.

Les lignes 11 à 15 définissent le point de terminaison de l'API /Température, qui sera utilisé pour obtenir les données de température au format JSON.

A la ligne 12, le TempDataPath variable contient le chemin absolu vers le Température fichier du module de thermomètre numérique DS18B20, présenté dans une section précédente de cet article.

A la ligne 13, les données de température sont lues à partir du Température fichier à l'aide du nœud.module js fs, et les données de température sont stockées dans le Température variable.

A la ligne 14, les données de température sont imprimées au format JSON. Le module thermomètre numérique DS18B20 peut mesurer entre les températures -55°C à 125°C. J'ai ajouté cela dans la sortie JSON en utilisant le rangeStart et fin de gamme Propriétés.

Enfin, la ligne 17-19 exécute l'API et le serveur Web sur PORT (lequel est 8080, dans cet article).

Créer un Publique/ dans le répertoire du projet, comme suit :

$ mkdir -v public

Exécutez le serveur.js programme avec la commande suivante :

serveur de nœud $.js

Le serveur doit fonctionner sur le port 8080.

Vous pouvez accéder aux données de température du module thermomètre DS18B20 à partir du /Température point de terminaison de l'API.

Pour tester si vous pouvez obtenir les données de température de l'API, exécutez boucle, comme suit:

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

Comme vous pouvez le voir, les données de température sont imprimées sur la console au format JSON. Donc, l'API fonctionne.

presse + C arrêter le serveur.

Maintenant, je vais créer une page Web qui demandera au serveur API les données de température et les affichera bien sur la page. Les données de température seront mises à jour toutes les 5 secondes.

Créer un nouveau indice.html fichier dans le Publique/ répertoire du projet, comme suit :

$ nano public/index.html

Entrez les lignes de codes suivantes dans le indice.html déposer.




Moniteur de température







00.00°C


Mises à jour de la température toutes les 5 secondes



Une fois que vous avez terminé, appuyez sur + X suivie par Oui et pour sauver le indice.html déposer.

Le fichier HTML indice.html est facile à comprendre. C'est le format dans lequel les données de température seront affichées dans l'application Web.

Ici, les lignes 53-55 sont utilisées pour afficher une barre de progression, et les lignes 57-60 sont utilisées pour afficher la température.

Les lignes 5-49 sont utilisées pour décorer joliment l'application Web en utilisant CSS (Cascading Style Sheet).

Les lignes 62-109 sont utilisées pour rendre l'application Web fonctionnelle. Les codes JavaScript sont utilisés pour animer la barre de progression, récupérer les données de température de l'API et afficher les informations.

La ligne 63 parcourt le principale fonctionner une fois l'application Web chargée dans le navigateur.

le principale la fonction est très longue. Il s'étend de la ligne 65 à la ligne 108. À l'intérieur de la fonction principale, nous avons d'autres fonctions, telles que obtenirTempérature, mettre à jour la température, Progression de la mise à jour, application, et démarrer.

le Progression de la mise à jour la fonction, aux lignes 83-86, prend le pourcentage de progression comme entrée et met à jour la barre de progression.

le mettre à jour la température la fonction des lignes 77-81 prend les données de température comme entrée et met à jour l'application Web avec les données de température.

le obtenirTempérature la fonction des lignes 66-75 fait une demande au /Température point final de l'API et obtient les données de température. Une fois les données reçues, il appelle le mettre à jour la température fonctionner avec les données. le mettre à jour la température la fonction met ensuite à jour l'application Web avec les nouvelles données de température.

le application La fonction, aux lignes 88-99, anime la barre de progression et demande les données de température à l'API toutes les 5 secondes.

le démarrer la fonction, aux lignes 101-104, démarre l'application Web.

Ouvrez le paquet.json fichier avec l'éditeur de texte nano comme suit :

Forfait nano $.json

Changer principale à serveur.js et ajouter le nouveau script servir dans le scripts section, comme indiqué dans la capture d'écran ci-dessous.

Une fois que vous avez terminé, appuyez sur + X suivie par Oui et pour sauver le paquet.json déposer.

Maintenant que tout est prêt, lancez l'application Web et l'API avec la commande suivante :

$ npm exécuter servir

Le serveur doit fonctionner sur le port 8080.

Maintenant, ouvrez un navigateur Web sur votre appareil Raspberry Pi et visitez http://localhost:8080. Les données de température du module de thermomètre numérique DS18B20 doivent être affichées sur votre navigateur Web, comme vous pouvez le voir dans la capture d'écran ci-dessous.

Les données de température doivent être mises à jour toutes les 5 secondes.

Comme vous pouvez le voir, la température change toutes les 5 secondes.

Si vous souhaitez accéder à l'application Web depuis un autre ordinateur de votre réseau, vous devrez connaître l'adresse IP de votre appareil Raspberry Pi.

Vous pouvez trouver l'adresse IP de votre appareil Raspberry Pi avec la commande suivante :

$ nom d'hôte -I

Comme vous pouvez le voir, l'adresse IP de mon appareil Raspberry Pi est 192.168.0.107. Ce sera différent pour toi. Alors, assurez-vous de remplacer l'adresse IP à partir de maintenant.

Une fois que vous connaissez l'adresse IP de votre appareil Raspberry Pi, vous devriez pouvoir accéder à l'application Web depuis n'importe quel ordinateur de votre réseau à l'aide d'un navigateur Web. Il suffit de visiter http://192.168.0.107: 8080, et l'application Web doit afficher les données de température du module de thermomètre numérique DS18B20.

Conclusion

Dans cet article, vous avez appris à utiliser le module thermomètre numérique DS18B20 dans Raspberry Pi pour mesurer la température. Vous avez également appris à créer un nœud.API js pour afficher les données de température dans une application Web, qui accède aux données de température de l'API et les affiche. Cet article devrait vous aider à démarrer avec la surveillance de la température Raspberry Pi avec le module de thermomètre numérique DS18B20 et l'IoT avec Raspberry Pi.

Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...
Comment capturer et diffuser votre session de jeu sur Linux
Dans le passé, jouer à des jeux n'était considéré qu'un passe-temps, mais avec le temps, l'industrie du jeu a connu une croissance énorme en termes de...
Meilleurs jeux à jouer avec le suivi des mains
Oculus Quest a récemment introduit l'idée géniale du suivi manuel sans contrôleurs. Avec un nombre toujours croissant de jeux et d'activités qui exécu...