Surveillance de la température dans la framboise Pi

Surveillance de la température dans la framboise Pi

Vidéo playerhttps: // linuxhint.com / wp-content / uploads / 2020/10/2020-09-29-20-47-25.MP400: 0000: 0000: 40 Utiliser les touches de flèches USP / Down pour augmenter ou diminuer le volume.
La surveillance des températures peut être une exigence dans bon nombre de vos projets de framboise PI. Il est relativement facile à faire à 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.

Des choses dont vous aurez besoin:

Pour essayer les exemples de cet article, vous aurez besoin de ce qui suit:

  1. Un ordinateur monomoteur Raspberry Pi
  2. Un adaptateur d'alimentation pour le périphérique Raspberry Pi
  3. Une carte microSD avec Raspberry Pi OS installée
  4. Connectivité réseau sur le périphérique Raspberry Pi
  5. Une planche à pain
  6. 3 PC de fils de connexion féminine à féminine
  7. Quelques fils de connexion masculine
  8. Une résistance de 10k
  9. Un module de thermomètre numérique DS18B20

Pinouts de 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 broyée (GND), La deuxième broche sera DONNÉES, Et la troisième épingle sera VCC.

Schéma

Le diagramme de circuit du moniteur de température est illustré dans l'image ci-dessous.

Ici le PIN2 / 5V du dispositif Raspberry Pi doit être connecté au Pin3 / VCC du module de thermomètre numérique.

Le PIN7 / GPIO4 du dispositif Raspberry Pi doit être connecté au Pin2 / données du module de thermomètre numérique.

Le Pin9 / GND du dispositif Raspberry Pi doit être connecté au Pin1 / gnd du module de thermomètre numérique.

UN Résistance de 10 kΩ doit être connecté entre Pin2 et Pin3 du module de thermomètre numérique.

Vous devez tenir votre framboise Pi comme indiqué dans l'image ci-dessous. Ensuite, la broche supérieure gauche sera Broche. La broche juste à côté de Broche sera Pin2. Ensuite, si vous avancez une ligne, celle gauche sera Pin3 Et le bon sera Pin4, et ainsi de suite.

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

Jetez 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, alimentez le périphérique Raspberry Pi. Ensuite, connectez-vous à votre appareil Raspberry Pi via VNC ou SSH.

Données de température de lecture du thermomètre numérique DS18B20

Le module du 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 presser .

Sélectionner 1 fil et presser .

Sélectionner et presser .

Presse .

Pour quitter le raspi-config utilité, presse .

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 de noyau sont chargés, exécutez la commande suivante:

$ sudo lsmod | grep w1

Si pour une raison quelconque, le W1_Therm Le module n'est pas chargé, alors 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 / appareils Répertoire, comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ ls / sys / bus / w1 / appareils /

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

$ CD / SYS / BUS / W1 / DÉPIRES / 28-00000BA693E9

Vous devriez 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 à l'aide du 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, comme Python ou Node.JS, pour analyser ces données de température et l'utiliser sur votre application. Je vais vous montrer comment faire cela dans la section suivante 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 trouver cela en utilisant le link 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 du thermomètre DS18B20 et à l'afficher sur une application Web.

Dans cet exemple, je créerai une API, qui analysera les données de température du module du thermomètre DS18B20 qui peuvent être accessibles à partir de l'API. Je vais également créer une application Web qui va récupérer les données de température de l'API et l'afficher bien. J'utiliserai le nœud.Langue 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 vérifier si vous rencontrez des difficultés à copier et à vibrer 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 officiel de package de Raspberry Pi OS. Vous pouvez facilement installer le nœud.JS du référentiel de package Raspberry Pi OS.

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

$ sudo apt mise à jour

Ensuite, installez le nœud.JS et NPM avec la commande suivante:

$ sudo apt install nodejs npm

Pour confirmer l'installation, appuyez sur Y Et 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, nœud.JS et NPM doivent être installés.

Une fois le nœud.JS et NPM sont installés, vérifiez si le nœud et NPM Les commandes sont disponibles, comme suit:

$ node --version
$ npm --version

Améliorer le NPM avec la commande suivante:

$ sudo npm install --global npm

Le NPM devrait être amélioré.

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 de projet ~ / ds18b20, comme suit:

$ mkdir -v ~ / ds18b20

Accédez à la ~ / ds18b20 Répertoire, comme suit:

$ CD ~ / DS18B20

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

$ npm init --y

Installer le Exprimer.js bibliothèque du projet avec la commande suivante:

$ install npm - Save Express

L'Express.La bibliothèque JS doit maintenant être installée.

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

$ Nano Server.js

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

Soit Express = require ('express');
Soit fs = require ('fs');
Selt Server = Express ();
Const port = 8080;
const webroot = './public';
serveur.get ('/', express.statique (webroot));
serveur.get ('/ température', (req, res) =>
Soit TempDatapath = '/ SYS / BUS / W1 / Dispositifs / 28-00000ba693e9 / Température';
Laissez la température = FS.readFileSync (tempDatapath, Encoding: 'utf8', drapeau: 'r') / 1000;
res.JSON (Température, Rangestart: -55, Rangeend: 125);
);
serveur.écouter (port, () =>
console.log ('Server en cours d'exécution sur le port $ port');
);

Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour enregistrer le serveur.fichier js.

Ici, la ligne 1 importations exprimer, et la ligne 2 importe le FS module.

La ligne 4 initialise Express.

Les lignes 6 et 7 définissent le PORT et Webroot variables constantes, respectivement. L'API et le serveur Web fonctionneront PORT (lequel est 8080, dans cet article), et le serveur Web servira le contenu statique du Webroot (qui est le public/ Répertoire à l'intérieur du répertoire du projet dans cet article).

La ligne 9 est utilisée pour configurer Express pour servir les contenus statiques à partir du Webroot.

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

Dans la ligne 12, le tempdatapath La variable contient le chemin absolu vers le température Fichier du module de thermomètre numérique DS18B20, illustré dans une section antérieure de cet article.

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

Dans la ligne 14, les données de température sont imprimées au format JSON. Le module de thermomètre numérique DS18B20 peut mesurer entre les températures de -55 ° C à 125 ° C. J'ai ajouté cela dans la sortie JSON en utilisant le rangestart et rangement 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 public/ Répertoire dans le répertoire du projet, comme suit:

$ mkdir -v public

Courir le serveur.js Programme avec la commande suivante:

$ serveur de nœud.js

Le serveur doit être exécuté sur le port 8080.

Vous pouvez accéder aux données de température du module de thermomètre DS18B20 à partir du /température point final 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 / température | JSON_PP

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

Presse + C Pour arrêter le serveur.

Maintenant, je vais créer une page Web qui demandera le serveur API pour les données de température et l'afficher 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 public/ 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 dans toutes les 5 secondes



Une fois que vous avez terminé, appuyez sur + X suivie par Y 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 l'application Web bien à l'aide de CSS (feuille de style en cascade).

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 exécute le principal fonction une fois l'application Web chargée dans le navigateur.

Le principal 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 température, Mise à jour, Progression de la mise à jour, appliquer, et commencer.

Le Progression de la mise à jour La fonction, dans les lignes 83-86, prend le pourcentage de progrès comme l'entrée et met à jour la barre de progression.

Le Mise à jour La fonction dans les 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 température Fonction dans les 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 Mise à jour fonction avec les données. Le Mise à jour La fonction met ensuite à jour l'application Web avec les nouvelles données de température.

Le appliquer La fonction, dans les lignes 88-99, anime la barre de progression et demande les données de température de l'API toutes les 5 secondes.

Le commencer La fonction, dans les lignes 101-104, démarre l'application Web.

Ouvrir le emballer.json fichier avec l'éditeur de texte nano comme suit:

$ Nano Package.json

Changement principal pour serveur.js et ajouter le nouveau script servir dans le scripts Section, comme marqué dans la capture d'écran ci-dessous.

Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le emballer.json déposer.

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

$ NPM Run Serve

Le serveur doit être exécuté 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 à partir d'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 périphérique Raspberry Pi avec la commande suivante:

$ hostname -i

Comme vous pouvez le voir, l'adresse IP de mon appareil Raspberry Pi est 192.168.0.107. Ce sera différent pour vous. 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 à partir de n'importe quel ordinateur de votre réseau à l'aide d'un navigateur Web. Visitez simplement 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 de 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 l'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.