Table des matières:
- Fournitures
- Étape 1: Matériel
- Étape 2: Configuration du logiciel Raspberry Pi OS
- Étape 3: Configurer Dataplicity pour autoriser l'accès à distance
- Étape 4: Vérifiez les capteurs
- Étape 5: Pare-feu UFW
- Étape 6: envoyer les données de température au format JSON
- Étape 7: envoyer les données des deux capteurs
- Étape 8: Démarrage automatique
- Étape 9: Afficher les données sur Freeboard.io (1)
- Étape 10: Afficher les données sur Freeboard.io (2)
- Étape 11: Construire le projet dans une boîte
- Étape 12: Terminé
Vidéo: Serveur de données IoT à double température : 12 étapes (avec images)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Il s'agit de ma première tentative d'écriture d'un Instructable et donc s'il vous plaît allez-y doucement sur moi ! Si vous pensez que ce n'est pas trop mal, alors s'il vous plaît votez pour moi dans le concours d'auteur pour la première fois.
Ceci est mon projet Lock-Down pour surveiller à distance 2 températures dans une serre, une au niveau du sol et une juste sous le toit. Bien que j'avais déjà utilisé Raspberry Pi (RPi), ce projet impliquait plusieurs éléments que je n'avais pas utilisés et en cours de route, j'ai trouvé plusieurs tutoriels obsolètes ou tout simplement faux. Ceci est ma collection de connaissances pour faire un double moniteur de température à distance fonctionnel à partir d'un capteur de température numérique Pi Zero & 2 DS18B20+ One Wire qui a été acquis en cours de route.
Ce que j'ai appris:
- Rendre les données disponibles à partir d'un appareil dans le cadre de l'Internet des objets (IoT)
- Interface à 1 fil avec 2 appareils
- Dataplicité
- Données JSON
- Configuration du pare-feu UFW
- Utiliser Freeboard.io pour afficher les données
- Configurer le RPi pour exécuter automatiquement le programme
Il existe d'énormes quantités de données qui peuvent être trouvées avec une simple recherche sur tous ces sujets, mais ce qui n'est pas si clair, c'est comment combiner tous ces éléments séparés.
Fournitures
- Vous aurez besoin d'un Raspberry Pi (avec un moniteur, une souris et un clavier pour la configuration mais pas lors de l'exécution du projet terminé)
- Une connexion Internet fonctionnelle.
- Un bloc d'alimentation avec un connecteur Micro USB
- 2 des capteurs de température numériques à un fil DS18B20+. J'ai trouvé qu'Amazon était le moins cher
- Résistance 4K7 ohm ou j'ai utilisé 2 résistances 10K ohm.
- Petite planche à pain et quelques fils mâle/femelle pour les tests sur banc
- Petit morceau de stripboard pour l'assemblage final
- Des outils simples pour le soudage et le dénudage des fils.
- Petite boîte en plastique pour loger le design fini
Étape 1: Matériel
J'avais déjà un Raspberry Pi Zero W (avec sans fil) mais je suis sûr que ce projet simple fonctionnera bien sur n'importe lequel des RPI. La boîte de bits électroniques impairs de mon atelier contenait tout le reste (planche à pain, fil, bloc d'alimentation, etc.) et je n'avais donc qu'à acheter deux capteurs 2 x DS18B20 d'Amazon. Ce sont les puces DS18B20 normales juste montées de manière pratique dans un boîtier étanche et un câble de 3 m. Il y a 3 fils du câble:
- Rouge - alimentation - connectez-vous à la broche 1 3.3v
- Noir – retour – connecter à la broche de terre 6
- Jaune - données - se connecter à la broche GPIO4 7
Les capteurs utilisent l'interface 1-Wire et étaient très faciles à connecter et à obtenir des données. Il existe plusieurs pages sur le Web avec des détails pour la connexion d'un appareil mais très peu sur la connexion de 2 (ou plus).
Pour les tests sur banc, le circuit a été assemblé à l'aide d'une maquette. Les tutoriels que j'ai trouvés indiquaient d'utiliser une résistance 4K7 pour polariser la ligne de données, mais je n'en ai pas trouvé et j'ai donc utilisé 2 * 10K en parallèle et cela a très bien fonctionné. Il existe de nombreuses ressources sur le Web pour utiliser une maquette pour assembler des circuits RPi et je ne les répéterai donc pas ici.
Diagramme créé à l'aide de Circuit Diagram
Étape 2: Configuration du logiciel Raspberry Pi OS
Comme j'avais déjà utilisé ce RPi, j'ai décidé de commencer par une installation propre de l'OS, j'ai reformaté la carte SD et installé une version propre de NOOBS. J'ai ensuite installé la version de bureau complète de Raspian (l'option supérieure) car cela installerait également PIP & GIT que la version allégée ne fait pas. Même si je n'avais pas besoin de l'interface utilisateur graphique (GUI) pour le projet, c'est un moyen facile de configurer toutes les options et avec une carte SD de 16 Go, l'espace ne manquait pas.
J'ai configuré l'accès WI-FI, puis j'ai exécuté l'installation complète, puis l'assistant avec les mises à jour et les mises à niveau, etc. À l'aide de l'interface graphique, j'ai configuré le RPI au besoin simplement parce que l'utilisation de l'interface graphique est plus simple que l'interface de ligne de commande (CLI). Je suis allé dans la fenêtre de configuration depuis le menu puis:
- Dans l'onglet système, j'ai changé le mot de passe, configuré pour démarrer sur CLI et décoché la connexion automatique
- Dans l'onglet interfaces, j'ai activé 1-wire
- J'ai cliqué sur ok et j'ai redémarré
Si vous avez besoin de revenir à l'interface graphique à tout moment, tapez simplement startx sur la CLI
startx
Étape 3: Configurer Dataplicity pour autoriser l'accès à distance
J'ai trouvé une entrée de blog très utile sur le site Dataplicity à l'adresse https://blog.dataplicity.com/how-to-build-a-raspb… et j'en ai utilisé quelques parties. La section 3 du blog décrit la configuration de Dataplicity pour l'accès à distance au RPi. Je n'ai jamais utilisé Dataplicity auparavant, mais je dois dire que je le recommande vivement comme outil d'accès à distance très simple. Bien que les captures d'écran (dans le blog ci-dessus) soient un peu dépassées, le principe est bon.
Sur votre PC, allez sur Dataplicity.com et créez un compte (vous pouvez utiliser le navigateur dans l'interface graphique, mais plutôt lent sur le RPi Zero). Cliquez ensuite sur le bouton « Ajouter un nouvel appareil » et une ligne de code s'affiche dans la fenêtre contextuelle. Accédez ensuite à la CLI sur le RPi et saisissez la ligne de texte. Si tout va bien, le logo Dataplicity s'affichera et le programme d'installation s'exécutera.
De retour sur votre PC, le nouvel appareil devrait maintenant apparaître sur le site Web de Dataplicity. Cliquez sur l'appareil et vous devriez voir un écran de terminal pour votre RPi.
Il y a quelques choses à noter ici:
- Pour vous connecter, tapez "su pi" (pour l'accès superutilisateur) et vous serez invité à saisir le mot de passe (tel que défini précédemment)
- Vous devez activer Wormhole (à utiliser plus tard)
- Vous aurez besoin de l'adresse du trou de ver pour afficher les données plus tard (clic droit pour copier si nécessaire)
Vous pouvez utiliser cet accès à distance pour toutes les étapes suivantes et est beaucoup plus facile pour copier des données, des programmes etc que directement sur le RPi.
Étape 4: Vérifiez les capteurs
Vous pouvez maintenant utiliser Dataplicity pour accéder à distance au RPI pour toutes les sections suivantes.
Si tout est maintenant connecté correctement, vous devriez pouvoir voir les températures renvoyées par les DS18B20. J'ai suivi le didacticiel Pi Hut, mais la plupart de cela n'était pas nécessaire. Si vous voulez tous les détails, ils peuvent être trouvés ici:
Les bits importants sont d'aller dans le répertoire des appareils et de s'assurer que 2 capteurs différents sont affichés.
cd /sys/bus/w1/devices/
Cela devrait montrer 2 appareils commençant par 28- et le maître de bus. La mienne montre:
28-011453ebfdaa 28-0114543d5daa w1_bus_master1
Ces 2 numéros d'identification sont importants et seront nécessaires plus tard ! Passez ensuite à l'un des répertoires de capteurs:
cd 28-011453ebfdaa
(par exemple) puis de lire la valeur du capteur
chat w1_esclave
Il devrait y avoir 2 lignes de texte affichées:
53 01 4b 46 7f ff 0c 10 2d: crc=2d OUI
53 01 4b 46 7f ff 0c 10 2d t=21187
Le OUI indique que le capteur lit correctement et le 21187 affiche la température en Celsius de 21,187 (diviser par 1000). Répétez cette opération pour vérifier le deuxième capteur. Si les deux lisent bien, nous pouvons passer à la lecture des données avec Python3.
J'ai copié et adapté le code suivant que j'ai trouvé sur le Web mais je ne me souviens plus d'où. Si cela ressemble à votre code, alors je m'excuse car aucun plagiat n'était prévu; s'il vous plaît laissez-moi savoir et je reconnais votre travail.
Créez un répertoire appelé projets et accédez à ce répertoire.
mkdir ~/projets
cd ~/projets
Dans ce répertoire, utilisez l'éditeur de texte (nano) pour créer et éditer un fichier appelé thermo-test.py
sudo nano thermo-test.py
Cela devrait avoir ouvert l'éditeur et comme vous utilisez Dataplicity, vous pouvez simplement copier le code suivant ci-dessous (thermo-test.py) et le coller dans l'éditeur. Vous devrez modifier les 2 noms d'appareils (commençant 28-…) à ceux indiqués ci-dessus. Lorsque tout semble correct, appuyez sur ctrl + X pour terminer, Y pour enregistrer et revenir pour utiliser le nom existant. Si vous préférez utiliser l'interface graphique, Thonny fera de même.
Pour exécuter le programme de test:
sudo python3 thermo-test.py
Tout va bien, cela devrait exécuter le fichier en utilisant python 3 et imprimer à l'écran les 2 températures toutes les 10 secondes. Vous pouvez tester que tout va bien en plaçant 1 capteur dans de l'eau glacée ou en réchauffant doucement avec un sèche-cheveux. Si tout va bien, alors nous pouvons passer à autre chose !
Étape 5: Pare-feu UFW
Comme ce RPi allait être connecté en permanence à Internet, j'ai décidé qu'un pare-feu serait une bonne idée et qu'un pare-feu simple à utiliser est un pare-feu simple (ufw). Il y a un tutoriel très simple ici
Je ne vais pas dans les grandes profondeurs car ce n'est pas le but de cet Instructable, mais en bref:
Installez le pare-feu avec:
sudo apt-get install ufw
Définissez les règles par défaut:
sudo ufw par défaut autoriser les sorties
sudo ufw par défaut nier entrant
Ouvrir le port 80 pour Dataplicity
sudo ufw autoriser 80
Activer le pare-feu
sudo ufw activer
Vérifiez l'état et assurez-vous que tout fonctionne
statut sudo ufw
Étape 6: envoyer les données de température au format JSON
Retour au blog de Tim Fernando et à la section 5.
Suivez les étapes indiquées (sauf que nous avons déjà créé le répertoire des projets) et tout devrait fonctionner correctement. En utilisant GIT, vous téléchargerez les fichiers d'application de Tim et le PIP s'assurera que tous les programmes requis sont installés sur votre RPi. J'ai ensuite découvert que je devais redémarrer pour m'assurer que tous les packages étaient correctement configurés.
Exécutez ensuite le programme de Tim et votre RPi devrait alors fournir des données JSON pour le premier capteur.
cd home/pi/projects/temperature-serve-pi
sudo gunicorn temperature:app -b 0.0.0.0:80
Vous pouvez continuer à travers le blog jusqu'à la section 6 où vous trouverez des données fournies pour l'un des capteurs.
Vous pouvez également utiliser JSON Viewer pour voir les données https://codebeautify.org/jsonviewer Cliquez sur le bouton "charger l'URL" et collez l'adresse Wormhole notée précédemment. Dans le volet de gauche, vous devriez voir deux entrées, une pour Celsius et une pour Fahrenheit.
Étape 7: envoyer les données des deux capteurs
Sur la base du code dans les températures.py et thermo-test.py, j'ai créé 2temps.py Edité comme précédemment dans le répertoire /projects/temperature-serve-pi, collé dans le code et enregistré. j'ai ensuite couru
sudo gunicorn 2temps:app -b 0.0.0.0:80
Maintenant, lorsque j'ai réexécuté JSON Viewer, j'ai obtenu des valeurs pour temp1 et temp2
Succès:)
Étape 8: Démarrage automatique
Comme l'alimentation de la serre est occasionnellement coupée, je voulais que le RPi charge automatiquement le programme et commence à prouver les données. Le moyen le plus simple semble être d'éditer le fichier rc.local et d'ajouter le code requis en bas juste au-dessus de la ligne exit 0.
cd etc.
sudo nan rc.local
puis complément
dormir 10
cd home/pi/projects/temperature-serve-pi sudo gunicorn temp04:app -b 0.0.0.0:80 &
- Le & à la fin indique à l'ordinateur d'exécuter le script dans un sous-shell afin que votre ordinateur n'attende pas la fin de la fonction et poursuive le démarrage
- Sleep 10 [seconds] s'assure que toutes les opérations précédentes sont terminées avant de démarrer le service.
Quittez et enregistrez comme avant. Ensuite, redémarrez et réexécutez JSON Viewer pour vérifier que tout va bien.
Si vous voulez plus d'informations sur les programmes à exécution automatique, il y a un excellent tutoriel ici
Étape 9: Afficher les données sur Freeboard.io (1)
Les étapes du blog de Tim fonctionnent bien, en résumé; créez un compte sur www.freeboard.io puis créez un nouveau Freeboard, j'ai appelé le mien SHEDTEMPERATURES.
Tout d'abord, ajoutez une source de données, cliquez sur AJOUTER en haut à droite et dans la fenêtre contextuelle, sélectionnez JSON comme type, attribuez un NOM à la source de données, ajoutez l'adresse de trou de ver précédente comme URL et cliquez sur NON pour ESSAYER THINGPROXY. Les températures ne changent que très lentement et donc RAFRAICHIR TOUTES LES 15 SECONDES est bien. Cliquez sur ENREGISTRER.
Étape 10: Afficher les données sur Freeboard.io (2)
Cliquez sur AJOUTER UN PANNEAU puis sur le + pour ajouter le premier widget. Vous pouvez sélectionner et jouer avec divers TYPE, mais j'ai trouvé que Gauge était très bien. Donnez un TITRE, des UNITÉS (C), un MINIMUM et un MAXIMUM adaptés à votre application. Pour la DATASOURCE, cliquez sur le + et la source créée ci-dessus apparaîtra.
La liste déroulante devrait maintenant afficher les 2 sources de données JSON (temp2 et temp2) créées précédemment. Sélectionnez la source appropriée et cliquez sur Enregistrer.
Répétez cette opération pour la deuxième jauge et nous sommes tous prêts.
Les données devraient maintenant être affichées sur les 2 jauges et si vous avez toujours le PRi connecté à un moniteur, vous devriez voir les demandes de Freeboard.io au fur et à mesure qu'elles arrivent.
Étape 11: Construire le projet dans une boîte
Jusqu'à ce point, le RPi et les autres composants avaient tous été assemblés sur le banc à l'aide d'une planche à pain. Un petit morceau de stripboard a ensuite été utilisé pour remplacer la maquette et les fils tous soudés en place.
Une petite boîte de rangement Lego rose vif a été trouvée qui avait beaucoup d'espace et où le RPI ne deviendrait pas trop chaud. des trous ont été percés dans les côtés de la boîte et des piliers de montage en nylon de 3 mm ont été utilisés pour maintenir le RPi et le stripboard en place.
Il n'y a que 3 connexions requises du GPIO, 3.3v, GND et données.
- 3.3vdc broche 1
- GND broche 6
- Données (GPIO4) broche 7
Des trous ont également été ajoutés dans la boîte pour l'alimentation USB et les câbles des capteurs de température. Une fois que tout a été monté en place, une petite quantité de mastic silicone a été ajoutée pour s'assurer que les araignées ne pensent pas que c'était un bel endroit chaud pour passer l'hiver !
Étape 12: Terminé
La boîte a été placée dans la serre et alimentée par un chargeur USB. Les deux capteurs ont été placés l'un près du sommet de la serre et l'autre sur un pot de fleurs pour vérifier le froid des semis la nuit.
Il s'agit de mon premier Instructable et j'espère que vous pensez que tout va bien. Si vous trouvez des erreurs s'il vous plaît laissez-moi savoir et je vais modifier si nécessaire. La prochaine étape pourrait être d'enregistrer les données toutes les (disons) 60 secondes, mais cela viendra plus tard.
Conseillé:
Comment faire un enregistreur de données en temps réel d'humidité et de température avec Arduino UNO et carte SD - Simulation d'enregistreur de données DHT11 dans Proteus : 5 étapes
Comment faire un enregistreur de données en temps réel d'humidité et de température avec Arduino UNO et carte SD | Simulation de l'enregistreur de données DHT11 dans Proteus : Introduction : salut, c'est Liono Maker, voici le lien YouTube. Nous réalisons un projet créatif avec Arduino et travaillons sur des systèmes embarqués. Enregistreur de données : un enregistreur de données (également un enregistreur de données ou un enregistreur de données) est un appareil électronique qui enregistre des données au fil du temps avec
Point d'accès (AP) NodeMCU ESP8266 pour serveur Web avec capteur de température DT11 et température et humidité d'impression dans le navigateur : 5 étapes
Point d'accès (AP) NodeMCU ESP8266 pour serveur Web avec capteur de température DT11 et température et humidité d'impression dans le navigateur : salut les gars dans la plupart des projets que nous utilisons ESP8266 et dans la plupart des projets, nous utilisons ESP8266 comme serveur Web afin que les données soient accessibles sur n'importe quel appareil via wifi en accédant au serveur Web hébergé par ESP8266, mais le seul problème est que nous avons besoin d'un routeur fonctionnel pour
Arduino envoie des données de température et d'humidité au serveur MySQL (PHPMYADMIN): 5 étapes
Arduino envoie des données de température et d'humidité au serveur MySQL (PHPMYADMIN): Dans ce projet, j'ai interfacé DHT11 avec arduino, puis j'envoie des données de dht11 qui sont l'humidité et la température à la base de données phpmyadmin. Ici, nous utilisons un script PHP pour pousser les données vers la base de données phpmyadmin
Affichage de la température et de l'humidité et collecte de données avec Arduino et traitement : 13 étapes (avec images)
Affichage de la température et de l'humidité et collecte de données avec Arduino et traitement : introduction : il s'agit d'un projet qui utilise une carte Arduino, un capteur (DHT11), un ordinateur Windows et un programme de traitement (téléchargeable gratuitement) pour afficher les données de température, d'humidité en numérique et sous forme de graphique à barres, afficher l'heure et la date et exécuter un compte à rebours
Centre de collecte de données de capteurs IoT avec ESP8266 et PubNub : 9 étapes (avec images)
Centre de collecte de données de capteurs activé par l'IoT avec ESP8266 et PubNub : la plupart des didacticiels sur ESP8266 sont soit au niveau débutant (clignotant à distance une led) soit trop complexes pour quelqu'un qui cherche quelque chose à améliorer et à mettre à niveau sur ses compétences de clignotant led.Ceci instructable vise à combler cet écart pour créer