Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Anschließen des HC-SR04
- Schritt 2: Mosquitto und Paho MQTT
- Schritt 3: Python-Programm für Ultraschallsensor
- Schritt 4: Knoten-RED
- Schritt 5: Protokollieren von Daten
- Schritt 6: Layout
- Schritt 7: Fazit
Video: Müllsystem - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
Wir haben uns entschieden, einen Weg zu finden, entweder die Müllbefüllung einer Nachbarschaft oder einen Sensor in jedem Müll in der Nachbarschaft zu verfolgen, um zu versuchen, die Müllentsorgung effizienter zu gestalten. Wir dachten, wenn alle zwei Wochen ein LKW zur Abholung kommt, was wäre, wenn ich oder mein Nachbar am Ende nur ein bisschen rausschmeißen. Wäre es nicht ineffizient, einen Lastwagen dorthin zu schicken, wo die Hälfte der Nachbarschaft keine vollen Mülleimer schickte? Es wäre toll, wenn es möglich wäre, den Mülleimer unserer Nachbarn zu füllen und dann ihren Müll zu verwenden, wenn meiner voll und ihrer leer war und umgekehrt. Wir haben uns entschieden, den Ultraschallsensor HC-SR04 zusammen mit einem Himbeer-Pi zu verwenden, um dieses Projekt anzugehen.
Lieferungen
Ultraschallsensor (HC-SR04)
Raspberry Pi (wir haben Pi 4 Model B verwendet)
Steckbrett
Überbrückungskabel
Paar Widerstände (3 x 1k Ohm)
Schritt 1: Anschließen des HC-SR04
Da wir den Raspberry Pi verwenden, müssen wir einen Spannungsteiler verwenden, um die Spannung zu regulieren, die in die GPIO-Pins des Pi geht, da diese nur 3,3 V zulassen. Der HC-SR04 verwendet 5V, muss aber beim Anschluss an den Pi auf 3,3V heruntergefahren werden. Verbinden Sie jeweils die 5V- und Masse-Pins und befestigen Sie die Echo- und Trigger-Pins gemäß Ihrem Programm an den entsprechenden Pins. In unserem Programm haben wir Pin 23 und 24 für Echo bzw. Trigger verwendet.
Schritt 2: Mosquitto und Paho MQTT
Bevor wir mit der Programmierung in Python beginnen, damit der Ultraschallsensor mit dem Pi funktioniert, sollten wir diese Anwendungen installieren, damit der Ultraschallsensor mit unserer Programmiersoftware Node-RED kommuniziert. Mosquitto ist ein MQTT-Broker, den Sie auf dem Pi verwenden können, während Paho MQTT die Bibliothek ist, mit der Sie in Python codieren können, damit der Sensor mit dem MQTT-Broker kommuniziert. Um beides zu installieren, geben Sie diese Befehle auf Ihrem Pi-Terminal ein
sudo apt-Update
sudo apt install -y mosquitto mosquitto-clients
sudo apt-get install python3-pip
sudo pip3 install paho-mqtt
Schritt 3: Python-Programm für Ultraschallsensor
Dies ist das Programm, mit dem ich die eingehenden Daten vom Sensor gelesen und auch an den MQTT-Broker veröffentlicht habe.
Schritt 4: Knoten-RED
Einige Knoten sind im Programm nicht vorinstalliert, sodass Sie es möglicherweise über die Paletten installieren müssen. Diejenigen, die Sie installieren müssen, sind node-red-dashboard und node-red-node-sqlite.
Hier setzen wir unsere Programmiersoftware und den Sensor ein. Der erste Knoten, den Sie benötigen, ist der MQTT-in-Knoten, der es uns ermöglicht, unseren Sensor zu verwenden, der das Programm von oben ausführt, um Daten an diese Software zu senden. Der von uns verwendete Bereichsknoten dreht die Werte, die wir haben (dh 5 cm sind vom Programm voll, also drehen wir ihn auf 100%). Nach dem Bereichsknoten haben wir 2 Funktionsknoten, einen zum Anzeigen der Nachricht in unserem Dashboard und einen zum Anzeigen, dass der Müll voll ist. Die Programme für die Funktionsknoten sind beigefügt.
Wenn möglich, könnte dieser Fluss für mehrere Ultraschallsensoren verwendet werden. Für unser Projekt mussten wir jedoch Simulationsdaten erstellen, da wir keine weiteren Sensoren in die Finger bekamen. Die Vorgehensweise ist sehr ähnlich, aber wir haben Schaltflächen, auf die der Benutzer klicken kann, um nach dem Zufallsprinzip 1-10 Prozent des Mülls in jeden der Mülleimer hinzuzufügen. Wir haben 2 Schaltflächen verwendet, eine zum Hinzufügen von Müll und eine zum Löschen. Das Messgerät, die Meldungen und die Anzeige sind immer noch genau gleich, der Code zum Zählen und Zählen des Mülls ist jedoch etwas anders.
Schritt 5: Protokollieren von Daten
Wir haben beschlossen, dass es eine gute Idee wäre, zu protokollieren, wie voll der Müll ist, wenn der LKW kommt, um den Müll zu leeren. Mit Hilfe des sqlite-Knotens können wir Daten lesen und schreiben, die sie auch auf dem Pi speichern. Sie müssen diesen Knoten installieren, wie ich bereits sagte.
Die Schritte zum Erstellen und Protokollieren von Daten sind wie folgt:
1. Erstellen Sie die Datenbank
2. Protokollieren Sie die Daten
3. Ziehen Sie die Daten ab, um sie auf unserem Dashboard anzuzeigen
4. Löschen und löschen Sie die Daten
SQL funktioniert so, dass Sie die Themen CREATE TABLE, INSERT INTO, SELECT FROM und DELETE FROM erstellen müssen. Mit Zeitstempelknoten können wir Themen zum SQLite-Knoten ausführen, der jede dieser Funktionen ausführt (Erstellen, Einfügen, Auswählen und Löschen). Wir müssen die Datenbank nur einmal erstellen und können dann Daten darin protokollieren. Sobald die Datenbank erstellt ist, können wir Daten protokollieren und wir haben erneut Benutzereingaben verwendet, um zu protokollieren, wann der LKW gekommen ist. Wir haben es so gemacht, dass Sie keine Daten protokollieren können, bis der LKW kommen darf, was 5 Müll bei 80% Kapazität (als voll betrachtet) entspricht. Wir haben auch den Bereichsknoten erneut verwendet, um die 500 wieder auf 0-100% zu skalieren. Wir haben dann die Möglichkeit, alle Daten aus der Datenbank zu löschen, wenn wir möchten. Der UI-Tabellenknoten ist ein Knoten, mit dem wir die Tabelle in unserem Dashboard schön formatiert sehen können.
Schritt 6: Layout
Nachdem dies abgeschlossen ist, können Sie mit Hilfe von Node-RED Ihr gewünschtes Layout erstellen. Auf der seitlichen Registerkarte können Sie sie nach Belieben platzieren und es gibt viele weitere Anpassungsoptionen. Anbei ist auch mein Flow für mein gesamtes Programm.
Schritt 7: Fazit
Nach Abschluss dieses Projekts gibt es Bereiche, in denen das Programm weiter ausgebaut werden kann. Ich habe nie eine Möglichkeit gefunden, die Protokollierung automatisch durchzuführen, da wir nur in Intervallen protokollieren konnten und wir keine Wiederholungsnummern benötigen würden, wenn der Müllwagen einmal käme. Ich denke, dies liegt zum Teil daran, dass wir uns entschieden haben, es stark von den Funktionsknoten und der Programmierung abhängig zu machen, da wir mit dieser Programmierung vertrauter sind. Nach der Erkundung, nachdem wir fertig waren, war klar, dass es Knoten für alles gibt und es hätte das Leben viel einfacher machen können, wenn wir die Funktion von Switch- und Rbe-Knoten früher gefunden hätten. Es gab auch einen Knoten für Ultraschallsensoren, den wir nicht zum Laufen gebracht haben. Es hätte die Dinge einfacher gemacht, da kein MQTT oder das Python-Programm erforderlich wäre, da es sich nur um einen Knoten mit den Trigger- und Echo-Pins handelt. Wir haben uns entschieden, dies zu umgehen, indem wir das Python-Programm wie oben beschrieben erstellt haben. Ein großer Tipp für jeden, der in Node-RED eintauchen möchte, ist, dass Sie viele Debug-Knoten verwenden sollten, um herauszufinden, ob jeder Flow funktioniert und ausgibt, was Sie wollen / brauchen.