Table des matières:

Serveur de données IoT à double température : 12 étapes (avec images)
Serveur de données IoT à double température : 12 étapes (avec images)

Vidéo: Serveur de données IoT à double température : 12 étapes (avec images)

Vidéo: Serveur de données IoT à double température : 12 étapes (avec images)
Vidéo: L’analyse des données IoT a portée de Synapse 2024, Juin
Anonim
Serveur de données IoT à double température
Serveur de données IoT à double température

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

Matériel
Matériel
Matériel
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

Configuration du logiciel Raspberry Pi OS
Configuration du logiciel Raspberry Pi OS
Configuration du logiciel Raspberry Pi OS
Configuration du logiciel Raspberry Pi OS
Configuration du logiciel Raspberry Pi OS
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

Configurer Dataplicity pour autoriser l'accès à distance
Configurer Dataplicity pour autoriser l'accès à distance
Configurer Dataplicity pour autoriser l'accès à distance
Configurer Dataplicity pour autoriser l'accès à distance
Configurer Dataplicity pour autoriser l'accès à distance
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

Pare-feu UFW
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

Envoi des données de température au format JSON
Envoi des 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

Envoyer des données à partir des deux capteurs
Envoyer des données à partir 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

Démarrage automatique
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)

Afficher les données sur Freeboard.io (1)
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)

Afficher les données sur Freeboard.io (2)
Afficher les données sur Freeboard.io (2)
Afficher les données sur Freeboard.io (2)
Afficher les données sur Freeboard.io (2)
Afficher les données sur Freeboard.io (2)
Afficher les données sur Freeboard.io (2)
Afficher les données sur Freeboard.io (2)
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

Construire le projet dans une boîte
Construire le projet dans une boîte
Construire le projet dans une boîte
Construire le projet dans une boîte
Construire le projet dans une boîte
Construire le projet dans une boîte
Construire le projet dans une boîte
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é

Fini
Fini
Fini
Fini

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é: