Inhaltsverzeichnis:

IoT Dual Temperature Data Server - Gunook
IoT Dual Temperature Data Server - Gunook

Video: IoT Dual Temperature Data Server - Gunook

Video: IoT Dual Temperature Data Server - Gunook
Video: ESP32 DHT Web Server Project 2024, November
Anonim
IoT Dual-Temperature-Datenserver
IoT Dual-Temperature-Datenserver

Dies ist mein erster Versuch, ein Instructable zu schreiben, und gehen Sie bitte leicht auf mich! Wenn Sie das nicht so schlecht finden, dann stimmen Sie bitte für mich beim Erstautorenwettbewerb.

Dies ist mein Lock-Down-Projekt, um 2 Temperaturen in einem Gewächshaus aus der Ferne zu überwachen, eine auf Bodenhöhe und eine direkt unter dem Dach. Obwohl ich zuvor Raspberry Pis (RPi) verwendet hatte, umfasste dieses Projekt mehrere Elemente, die ich nicht verwendet hatte, und auf dem Weg fand ich mehrere Tutorials, die veraltet oder einfach falsch waren. Dies ist meine Wissenssammlung, um einen funktionierenden Dual-Remote-Temperaturmonitor aus einem Pi Zero & 2 DS18B20 + One-Wire-Digital-Temperatursensoren herzustellen, die auf dem Weg erworben wurden.

Dinge, die ich gelernt habe:

  • Bereitstellung von Daten von einem Gerät als Teil des Internets der Dinge (IoT)
  • 1-Wire-Schnittstelle mit 2 Geräten
  • Datenplizität
  • JSON-Daten
  • Einrichten der UFW-Firewall
  • Verwenden von Freeboard.io zum Anzeigen der Daten
  • Konfigurieren des RPi zum automatischen Ausführen des Programms

Es gibt riesige Datenmengen, die mit einer einfachen Suche zu all diesen Themen gefunden werden können, aber was nicht so klar ist, ist die Kombination all dieser einzelnen Elemente.

Lieferungen

  • Sie benötigen einen Raspberry Pi (mit Monitor, Maus & Tastatur zum Einrichten, aber nicht zum Ausführen des fertigen Projekts)
  • Eine funktionierende Internetverbindung.
  • Ein Netzteil mit einem Micro-USB-Anschluss
  • 2 der digitalen Eindraht-Temperatursensoren DS18B20+. Ich fand Amazon das billigste
  • 4K7 Ohm Widerstand oder ich habe 2 10K Ohm Widerstände verwendet.
  • Kleines Steckbrett und ein paar männliche / weibliche Drähte zum Testen auf der Werkbank
  • Kleines Stück Stripboard für die Endmontage
  • Einfache Werkzeuge zum Löten und Abisolieren.
  • Kleine Plastikbox zur Unterbringung des fertigen Designs

Schritt 1: Hardware

Hardware
Hardware
Hardware
Hardware

Ich hatte bereits einen Raspberry Pi Zero W (mit Wireless), aber ich bin mir sicher, dass dieses einfache Projekt auf jedem der RPIs gut laufen wird. Die Box mit seltsamen elektronischen Bits in meiner Werkstatt hatte alles andere (Breadboard, Kabel, Netzteil usw.) und so musste ich nur zwei 2 x DS18B20-Sensoren von Amazon kaufen. Das sind die normalen DS18B20 Chips einfach praktisch montiert in einem wasserdichten Gehäuse und 3m Kabel. Es gibt 3 Adern vom Kabel:

  • Rot – Strom – an den 3,3-V-Pin 1. anschließen
  • Schwarz – Rücklauf – an Massestift 6. anschließen
  • Gelb – Daten – Verbindung zum GPIO4 Pin 7

Die Sensoren verwenden die 1-Wire-Schnittstelle und waren sehr einfach anzuschließen und Daten zu erhalten. Es gibt mehrere Seiten im Web mit Details zum Anschluss von 1 Gerät, aber sehr wenig zum Anschluss von 2 (oder mehr).

Zum Testen auf dem Prüfstand wurde die Schaltung mit einem Steckbrett zusammengebaut. In den Tutorials, die ich gefunden habe, wurde angegeben, dass ein 4K7-Widerstand verwendet wird, um die Datenleitung vorzuspannen, aber ich konnte keinen finden und verwendete 2 * 10K parallel und es funktionierte einwandfrei. Es gibt viele Ressourcen im Web, um ein Steckbrett zum Zusammenbauen von RPi-Schaltungen zu verwenden, und daher werde ich sie hier nicht wiederholen.

Diagramm erstellt mit Circuit Diagram

Schritt 2: Raspberry Pi OS Software-Setup

Raspberry Pi OS Software-Setup
Raspberry Pi OS Software-Setup
Raspberry Pi OS Software-Setup
Raspberry Pi OS Software-Setup
Raspberry Pi OS Software-Setup
Raspberry Pi OS Software-Setup

Da ich dieses RPi zuvor verwendet hatte, entschied ich mich, mit einer Neuinstallation des Betriebssystems zu beginnen, ich formatierte die SD-Karte neu und installierte eine saubere Version von NOOBS. Ich habe dann die vollständige Desktop-Version von Raspian (die Top-Option) installiert, da dies auch PIP & GIT installieren würde, die die Lite-Version nicht tut. Obwohl ich die grafische Benutzeroberfläche (GUI) für das Projekt nicht benötigt habe, ist es eine einfache Möglichkeit, alle Optionen einzurichten und mit einer 16-GB-SD-Karte gab es keinen Platzmangel.

Ich habe den WI-FI-Zugang eingerichtet, dann die vollständige Installation ausgeführt und dann den Assistenten mit Updates und Upgrades usw. ausgeführt. Mit der GUI richte ich das RPI nach Bedarf ein, nur weil die Verwendung der GUI einfacher ist als die der Befehlszeilenschnittstelle (CLI). Ich ging vom Menü zum Konfigurationsfenster und dann:

  • Auf der Registerkarte System habe ich das Passwort geändert, das Booten auf CLI eingestellt und das Häkchen bei der automatischen Anmeldung entfernt
  • Auf der Registerkarte Schnittstellen habe ich 1-Wire aktiviert
  • Auf OK geklickt und neu gestartet

Wenn Sie jederzeit zur GUI zurückkehren müssen, geben Sie einfach startx in der CLI ein

startx

Schritt 3: Richten Sie Dataplicity ein, um den Fernzugriff zuzulassen

Dataplicity einrichten, um Fernzugriff zuzulassen
Dataplicity einrichten, um Fernzugriff zuzulassen
Dataplicity einrichten, um Fernzugriff zuzulassen
Dataplicity einrichten, um Fernzugriff zuzulassen
Dataplicity einrichten, um Fernzugriff zuzulassen
Dataplicity einrichten, um Fernzugriff zuzulassen

Ich habe einen wirklich hilfreichen Blogeintrag auf der Dataplicity-Site unter https://blog.dataplicity.com/how-to-build-a-raspb… gefunden und einige Teile davon verwendet. Abschnitt 3 des Blogs beschreibt die Einrichtung von Dataplicity für den Fernzugriff auf das RPi. Ich habe Dataplicity noch nie zuvor verwendet, muss aber sagen, dass ich es als sehr einfaches Fernzugriffstool uneingeschränkt empfehlen kann. Obwohl die Screenshots (im Blog oben) etwas veraltet sind, ist das Prinzip in Ordnung.

Gehen Sie auf Ihrem PC zu Dataplicity.com und erstellen Sie ein Konto (Sie könnten den Browser in der GUI verwenden, aber auf dem RPi Zero eher langsam). Klicken Sie dann auf die Schaltfläche „Neues Gerät hinzufügen“und eine Codezeile wird im Popup-Fenster angezeigt. Gehen Sie dann zur CLI auf dem RPi und geben Sie die Textzeile ein. Wenn alles in Ordnung ist, wird das Dataplicity-Logo angezeigt und das Installationsprogramm wird ausgeführt.

Zurück auf Ihrem PC sollte das neue Gerät nun auf der Dataplicity-Website erscheinen. Klicken Sie auf das Gerät und Sie sollten einen Terminalbildschirm für Ihr RPi sehen.

Hier sind einige Dinge zu beachten:

  • Um sich anzumelden, geben Sie "su pi" (für Superuser-Zugriff) ein und Sie werden nach dem Passwort gefragt (wie zuvor festgelegt).
  • Sie müssen Wurmloch aktivieren (zur späteren Verwendung)
  • Du benötigst die Wurmloch-Adresse, um die Daten später anzuzeigen (Rechtsklick zum Kopieren bei Bedarf)

Sie können diesen Fernzugriff für alle folgenden Schritte nutzen und ist zum Kopieren von Daten, Programmen etc. wesentlich einfacher als direkt auf dem RPi.

Schritt 4: Überprüfen Sie die Sensoren

Sie können Dataplicity jetzt für alle nächsten Abschnitte aus der Ferne auf RPI zugreifen.

Wenn jetzt alles in Ordnung ist, sollten Sie die Temperaturen sehen können, die von den DS18B20 zurückgegeben werden. Ich habe das Pi Hut-Tutorial durchgearbeitet, aber das meiste davon war nicht erforderlich. Wenn Sie die vollständigen Details wünschen, finden Sie diese hier:

Die wichtigen Bits sind, in das Geräteverzeichnis zu gehen und sicherzustellen, dass 2 verschiedene Sensoren angezeigt werden.

cd /sys/bus/w1/geräte/

Hier sollten 2 Geräte beginnend mit 28- und der Busmaster angezeigt werden. Meine zeigt:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Diese 2 ID-Nummern sind wichtig und werden später benötigt! Wechseln Sie dann in eines der Sensorverzeichnisse:

cd 28-011453ebfdaa

(zum Beispiel) und dann den Wert vom Sensor abzulesen

Katze w1_slave

Es sollten 2 Textzeilen angezeigt werden:

53 01 4b 46 7f ff 0c 10 2d: crc=2d JA

53 01 4b 46 7f ff 0c 10 2d t=21187

Das JA zeigt an, dass der Sensor korrekt misst und der 21187 zeigt eine Temperatur in Celsius von 21,187 (dividiert durch 1000) Wiederholen Sie dies, um den zweiten Sensor zu überprüfen. Wenn beide ok lesen, können wir mit dem Lesen der Daten mit Python3 fortfahren.

Ich habe den folgenden Code kopiert und angepasst, den ich im Web gefunden habe, aber ich kann mich nicht erinnern, woher. Wenn dies wie Ihr Code aussieht, entschuldige ich mich, da kein Plagiat beabsichtigt war; Bitte lassen Sie es mich wissen und ich werde Ihre Arbeit anerkennen.

Erstellen Sie ein Verzeichnis namens projects und wechseln Sie in dieses Verzeichnis.

mkdir ~/projects

cd ~/projekte

Verwenden Sie in diesem Verzeichnis den Texteditor (nano), um eine Datei namens thermo-test.py zu erstellen und zu bearbeiten

sudo nano thermo-test.py

Dies sollte den Editor geöffnet haben und da Sie Dataplicity verwenden, können Sie einfach den folgenden Code unten (thermo-test.py) kopieren und in den Editor einfügen. Sie müssen die 2 Gerätenamen (beginnend mit 28-…) in die oben angegebenen ändern. Wenn alles richtig aussieht, drücken Sie Strg+X zum Beenden, Y zum Speichern und kehren Sie zurück, um den vorhandenen Namen zu verwenden. Wenn Sie es vorziehen, die GUI zu verwenden, wird Thonny dasselbe tun.

So führen Sie das Testprogramm aus:

sudo python3 thermo-test.py

Wenn alles in Ordnung ist, sollte dies die Datei mit Python 3 ausführen und alle 10 Sekunden die 2 Temperaturen auf dem Bildschirm ausgeben. Sie können testen, ob alles in Ordnung ist, indem Sie 1 Sensor in Eiswasser legen oder mit einem Haartrockner vorsichtig erwärmen. Wenn alles in Ordnung scheint, können wir weitermachen!

Schritt 5: UFW-Firewall

UFW-Firewall
UFW-Firewall

Da dieses RPi permanent mit dem Internet verbunden sein sollte, entschied ich mich, eine Firewall wäre eine gute Idee und eine einfach zu verwendende ist Uncomplicated Firewall (ufw). Es gibt ein sehr einfaches Tutorial hier

Ich gehe nicht in die Tiefe, da dies nicht der Zweck dieses Instructable ist, aber kurz gesagt:

Installieren Sie die Firewall mit:

sudo apt-get install ufw

Legen Sie die Standardregeln fest:

sudo ufw standardmäßig ausgehende zulassen

sudo ufw default eingehende verweigern

Öffnen Sie Port 80 für Dataplicity

sudo ufw erlauben 80

Aktivieren Sie die Firewall

sudo ufw aktivieren

Überprüfen Sie den Status und stellen Sie sicher, dass alles läuft

sudo ufw-Status

Schritt 6: Senden der Temperaturdaten als JSON

Senden der Temperaturdaten als JSON
Senden der Temperaturdaten als JSON

Zurück zu Tim Fernandos Blog und Abschnitt 5.

Befolgen Sie die angegebenen Schritte (außer wir haben das Projektverzeichnis bereits erstellt) und alles sollte gut funktionieren. Mit GIT laden Sie Tims Anwendungsdateien herunter und das PIP stellt sicher, dass alle erforderlichen Programme auf Ihrem RPi installiert sind. Ich stellte dann fest, dass ich neu starten musste, um sicherzustellen, dass alle Pakete richtig eingerichtet waren.

Führen Sie dann Tims Programm aus und Ihr RPi sollte dann JSON-Daten für den ersten Sensor bereitstellen.

cd home/pi/projects/temperatur-serve-pi

sudo gunicorn temperatur:app -b 0.0.0.0:80

Sie können durch den Blog zu Abschnitt 6 weitergehen, wo Sie Daten für einen der Sensoren finden.

Sie können auch den JSON Viewer verwenden, um die Daten anzuzeigen https://codebeautify.org/jsonviewer Klicken Sie auf die Schaltfläche „URL laden“und fügen Sie die zuvor notierte Wormhole-Adresse ein. Im linken Bereich sollten Sie zwei Einträge sehen, einen für Celsius und einen für Fahrenheit.

Schritt 7: Daten von beiden Sensoren senden

Daten von beiden Sensoren senden
Daten von beiden Sensoren senden

Basierend auf dem Code in temperature.py und thermo-test.py habe ich 2temps.py erstellt. Wie zuvor im Verzeichnis /projects/temperature-serve-pi bearbeitet, in den Code eingefügt und gespeichert. ich bin dann gelaufen

sudo gunicorn 2temps:app -b 0.0.0.0:80

Wenn ich jetzt den JSON Viewer erneut ausführe, habe ich Werte für temp1 und temp2 erhalten

Erfolg:)

Schritt 8: Autostart

Auto-Start
Auto-Start

Da die Stromversorgung des Gewächshauses gelegentlich unterbrochen wird, wollte ich, dass das RPi das Programm automatisch lädt und mit der Prüfung der Daten beginnt. Der einfachste Weg scheint zu sein, die Datei rc.local zu bearbeiten und den erforderlichen Code unten direkt über der Zeile Exit 0 hinzuzufügen.

CD usw

sudo nan rc.local

dann hinzufügen

Schlaf 10

cd home/pi/projects/temperature-serve-pi sudo gunicorn temp04:app -b 0.0.0.0:80 &

  • Das & am Ende weist den Computer an, das Skript in einer Sub-Shell auszuführen, damit Ihr Computer nicht auf das Ende der Funktion wartet und mit dem Booten fortfährt
  • Sleep 10 [Sekunden] stellt sicher, dass alle vorherigen Vorgänge abgeschlossen sind, bevor der Dienst gestartet wird.

Beenden und speichern Sie wie zuvor. Starten Sie dann den JSON Viewer neu und führen Sie ihn erneut aus, um zu überprüfen, ob alles in Ordnung ist.

Wenn Sie weitere Informationen zu automatisch ausgeführten Programmen wünschen, finden Sie hier ein großartiges Tutorial

Schritt 9: Zeigen Sie die Daten auf Freeboard.io an (1)

Zeigen Sie die Daten auf Freeboard.io an (1)
Zeigen Sie die Daten auf Freeboard.io an (1)

Zusammenfassend lässt sich sagen, dass die Schritte in Tims Blog gut funktionieren. erstelle ein Konto bei www.freeboard.io und erstelle dann ein neues Freeboard, ich nannte meins SHEDTEMPERATURES.

Fügen Sie zunächst eine Datenquelle hinzu, klicken Sie oben rechts auf HINZUFÜGEN und wählen Sie im Popup-Fenster JSON als Typ aus, geben Sie der Datenquelle einen NAMEN, fügen Sie die frühere Wurmlochadresse als URL hinzu und klicken Sie auf NEIN für TRY THINGPROXY. Die Temperaturen ändern sich nur sehr langsam und daher ist ALLE 15 SEKUNDEN REFRESH in Ordnung. Klicken Sie auf SPEICHERN.

Schritt 10: Zeigen Sie die Daten auf Freeboard.io an (2)

Zeigen Sie die Daten auf Freeboard.io an (2)
Zeigen Sie die Daten auf Freeboard.io an (2)
Zeigen Sie die Daten auf Freeboard.io an (2)
Zeigen Sie die Daten auf Freeboard.io an (2)
Zeigen Sie die Daten auf Freeboard.io an (2)
Zeigen Sie die Daten auf Freeboard.io an (2)
Zeigen Sie die Daten auf Freeboard.io an (2)
Zeigen Sie die Daten auf Freeboard.io an (2)

Klicken Sie auf FELD HINZUFÜGEN und dann auf das +, um das erste Widget hinzuzufügen. Sie können verschiedene TYPEn auswählen und damit spielen, aber ich fand, dass Gauge in Ordnung war. Geben Sie einen geeigneten TITEL, EINHEITEN (C), MINIMUM und MAXIMUM für Ihre Anwendung ein. Klicken Sie für die DATENQUELLE auf das + und die oben erstellte Quelle wird angezeigt.

Die Dropdown-Liste sollte jetzt die 2 zuvor erstellten JSON-Datenquellen (temp2 & temp2) anzeigen. Wählen Sie die entsprechende Quelle aus und klicken Sie auf Speichern.

Wiederholen Sie dies für die zweite Spur und wir sind fertig.

Die Daten sollten nun auf den 2 Messgeräten angezeigt werden und wenn Sie den PRi noch an einen Monitor angeschlossen haben, sollten Sie die Anfragen von Freeboard.io sehen, sobald sie eintreffen.

Schritt 11: Bauen Sie das Projekt in eine Box ein

Bauen Sie das Projekt in eine Box ein
Bauen Sie das Projekt in eine Box ein
Bauen Sie das Projekt in eine Box ein
Bauen Sie das Projekt in eine Box ein
Bauen Sie das Projekt in eine Box ein
Bauen Sie das Projekt in eine Box ein
Bauen Sie das Projekt in eine Box ein
Bauen Sie das Projekt in eine Box ein

Bis zu diesem Zeitpunkt wurden das RPi und die anderen Komponenten alle mit einem Steckbrett auf der Werkbank montiert. Ein kleines Stück Stripboard wurde dann verwendet, um das Steckbrett zu ersetzen und die Leitungen alle an Ort und Stelle zu verlöten.

Gefunden wurde eine knallpinke kleine Lego-Aufbewahrungsbox, die viel Platz hatte und in der der RPI nicht zu heiß werden würde. Löcher wurden in die Seiten der Box gebohrt und 3mm Nylon-Montagesäulen wurden verwendet, um das RPi und das Stripboard an Ort und Stelle zu halten.

Es sind nur 3 Verbindungen vom GPIO erforderlich, 3.3v, GND & Daten.

  • 3.3vdc-Stift 1
  • GND-Pin 6
  • Daten (GPIO4) Pin 7

In der Box wurden auch Löcher für USB-Strom und Kabel zu den Temperatursensoren hinzugefügt. Nachdem alles montiert war, wurde eine kleine Menge Silikondichtungsmittel hinzugefügt, um sicherzustellen, dass Spinnen nicht dachten, es sei ein schöner warmer Ort, um den Winter zu verbringen!

Schritt 12: Fertig

Fertig
Fertig
Fertig
Fertig

Die Box wurde in das Gewächshaus gestellt und über ein USB-Ladegerät mit Strom versorgt. Die beiden Sensoren wurden einer in der Nähe der Oberseite des Gewächshauses und der andere auf einem Blumentopf platziert, um zu überprüfen, wie kalt die Sämlinge nachts wurden.

Dies ist mein erstes Instructable und ich hoffe, Sie denken, es ist in Ordnung. Wenn Sie Fehler finden, lassen Sie es mich bitte wissen und ich werde sie bei Bedarf korrigieren. Der nächste Schritt könnte darin bestehen, die Daten alle (sagen wir) 60 Sekunden zu protokollieren, aber das kommt später.

Empfohlen: