Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Anschließen der gesamten Elektronik
- Schritt 2: Einrichten des Raspberry Pi
- Schritt 3: Erstellen der Datenbank
- Schritt 4: Einrichten des Backends
- Schritt 5: Einrichten des Frontends
- Schritt 6: Erstellen des Gehäuses
Video: Automatischer Wasserspender zur Erfassung des Verbrauchs - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Hi!
Vor ein paar Monaten habe ich in meinem Zimmer überlegt, was ich für ein Projekt für eine Schulaufgabe machen möchte. Ich wollte etwas machen, das zu mir passt und von dem ich in Zukunft profitieren würde. Plötzlich betrat meine Mutter den Raum und fing an, sich darüber zu beschweren, nicht genug Wasser zu trinken. Ich hatte sofort eine Epiphanie. Mir kam die Idee, einen automatischen Wasserspender (wie im Kino) zu bauen, der Ihren Wasserverbrauch täglich erfasst.
Mit einem Raspberry Pi, ein paar Sensoren, einer Pumpe und wenig Wissen habe ich versucht, dies so gut wie möglich zu machen.
Am Ende aller Schritte haben Sie einen funktionierenden Wasserspender, der Ihre Wasserflasche füllt und sich mit Ihrem Raspberry Pi verbindet und mit ihm interagiert. Sie können nicht nur Ihren Wasserverbrauch prozentual verfolgen, sondern auch die Temperatur und den Wasserstand Ihres Wasserbehälters einsehen. Schließlich können Sie Ihre Statistiken überprüfen. Wenn das für Sie interessant klingt, schauen Sie es sich an und probieren Sie es selbst aus!
Das GitHub-Repository:
Lieferungen
Mikrocontroller
Raspberry Pi 4
Sensoren und Module
Ich habe 4 Sensoren verwendet:
2xHC-SR04Ultraschallsensor
Ultraschallsensoren messen die Entfernung mithilfe von Ultraschallwellen. Der Sensorkopf sendet eine Ultraschallwelle aus und empfängt die vom Ziel reflektierte Welle. Ultraschallsensoren messen die Entfernung zum Ziel, indem sie die Zeit zwischen Senden und Empfangen messen. Ich habe zwei davon verwendet, um zu überprüfen, ob eine Flasche in der Nähe ist, und um den Abstand zum Wasser im Tank zu messen.
Datenblatt
1x DS18B20 Temperatursensor
Der DS18B20 ist ein 1-Draht programmierbarer Temperatursensor von maxim integriert. Es wird häufig verwendet, um die Temperatur in harten Umgebungen wie in chemischen Lösungen, Minen oder Böden usw. zu messen. Ich habe es verwendet, um die Wassertemperatur des Wassertanks zu messen.
Datenblatt
1x RC522 RFID-Modul
Das RC522 ist ein 13,56 MHz RFID-Modul, das auf dem MFRC522-Controller von NXP Semiconductors basiert. Das Modul unterstützt I2C, SPI und UART und wird normalerweise mit einer RFID-Karte und einem Schlüsselanhänger geliefert. Es wird häufig in Anwesenheitssystemen und anderen Personen-/Objektidentifikationsanwendungen verwendet. In diesem Projekt wird es für ein Identifikations-/Login-System verwendet.
Datenblatt
Und 2 Aktoren:
1x Schlauchpumpe 12-24V
Ich benutzte eine peristaltische Pumpe, um das Wasser aus dem Tank in eine Wasserflasche zu bringen. Die meisten Pumpen waren zu langsam, also habe ich mich für eine 24V-Version entschieden, die ich mit einem 24V-Netzteil betreibe.
1x LCD-Anzeige
Das LCD dient zur Anzeige der IP-Adresse und wichtiger Meldungen. Ein Flüssigkristalldisplay (LCD) ist ein Flachbildschirm oder ein anderes elektronisch moduliertes optisches Gerät, das die lichtmodulierenden Eigenschaften von Flüssigkristallen kombiniert mit Polarisatoren nutzt.
Datenblatt
Gehäuse
Apropos Gehäuse, ich habe ein DIY mit Zubehör aus einem Home-Depot (in meinem Fall Brico in Belgien) gemacht. Ich habe Sperrholz verwendet, das ich auf die richtige Größe geschnitten habe. Ich werde in einem weiteren Schritt darüber sprechen, wie ich meinen Fall vorgebracht habe, aber hier sind die Dinge, die Sie benötigen:
- 3x Sperrholzbretter
- 1x kleiner Trichter
- 1x Wassertank (Sie können wählen, welche Menge Sie möchten, ich habe 10L genommen)
- 1x Tropfschale
Alle Materialien und Preise finden Sie in der beigefügten Stückliste.
Schritt 1: Anschließen der gesamten Elektronik
Nachdem wir die gesamte Elektronik zusammengefasst haben, ist es an der Zeit, sie anzuschließen. Ich habe zwei Fritzing-Schaltungen, ein Steckbrett und einen Schaltplan, erstellt, um Ihnen zu zeigen, wie und wo die gesamte Elektronik angeschlossen werden sollte. Den Downloadlink zu Fritzing finden Sie hier: https://fritzing.org/download/. Wie bereits erwähnt, habe ich einen Raspberry Pi verwendet und einen RFID-Scanner, zwei Ultraschallsensoren, einen Temperatursensor, ein LCD und eine Schlauchpumpe für das Wasser angeschlossen.
Die beiden Schaltungen habe ich in einem PDF angehängt, falls ihr es euch genauer anschauen wollt.
Schritt 2: Einrichten des Raspberry Pi
Wir werden unseren Raspberry Pi verwenden, um alles auszuführen und zu steuern: Backend, Frontend und Datenbank.
Ein Raspberry Pi läuft nicht automatisch. Wir müssen einige Schritte durchlaufen, um mit der Verwendung zu beginnen.
Schritt 1: Raspbian
Wenn Sie einen brandneuen Raspberry Pi verwenden, benötigen Sie Raspbian. Den Downloadlink und das Tutorial finden Sie hier.
Schritt 2: Bild auf SD schreiben
Nachdem Sie nun Ihr Raspbian-Image haben, benötigen Sie eine Image-Schreibsoftware (ich empfehle win32diskimager), um die Image-Datei auf die SD-Karte zu schreiben. Das vollständige Tutorial finden Sie hier.
Schritt 3: Einloggen in den Raspberry Pi
Öffnen Sie "Powershell" und geben Sie "ssh [email protected]" ein. Wenn alles richtig läuft, werden Sie nach einem Passwort gefragt (das Standardpasswort ist immer raspberry). Normalerweise sollten Sie sich damit beim Raspberry Pi anmelden. Jetzt müssen wir einige Änderungen an unseren Einstellungen vornehmen. Geben Sie im Terminal sudo raspi-config ein und drücken Sie die Eingabetaste. Navigieren Sie zu Lokalisierungsoptionen > Zeitzone ändern und stellen Sie sie auf Ihre Zeitzone ein. Sie sollten auch Ihr WLAN-Land auf Ihren eigenen Standort ändern. Gehen Sie schließlich zu den Schnittstellenoptionen und aktivieren Sie SPI, I2C und 1-Wire. Dies ist wichtig, um die Sensoren richtig zu verwenden.
Schritt 4: Einrichten der Internetverbindung
Wir werden ein WiFi-Netzwerk verwenden. Sie können Ihr Heimnetzwerk hinzufügen über:
wpa_passphrase "IhrNetzwerk" "IhreSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Sie müssen Ihren Pi neu starten, um eine Verbindung herzustellen. Um zu überprüfen, ob es funktioniert hat, können Sie mit ifconfig prüfen, ob eine IP-Adresse vorhanden ist.
Schritt 5: Einrichten des Webservers und der Datenbank
Zuerst aktualisieren und aktualisieren Sie das System am besten mit der folgenden Befehlsfolge:
- sudo apt dist-upgrade --auto-remove -y
- sudo apt upgrade
- sudo apt-Update
- sudo apt autoremove
Danach benötigen wir folgende Pakete für unseren Webserver und unsere Datenbank:
Apache
sudo apt install apache2 -y
PHP
sudo apt installiere php
sudo apt install phpMyAdmin -y
Vergessen Sie nicht, ein sicheres MySQL-Passwort festzulegen, wenn Sie nach einem Passwort gefragt werden.
MariaDB
sudo apt install mariadb-server mariadb-client -y
sudo apt install php-mysql -y
sudo systemctl Neustart apache2.service
Schritt 6: Python-Bibliotheken installieren
Für das Backend benötigen wir einige Bibliotheken für Python. Wir werden diese mit pip3 installieren, da wir python3 verwenden.
pip3 installiere mysql-connector-python
pip3 installflakon-socketio
pip3 install Flask-Cors
pip3 install gevent
pip3 install gevent-websocket
sudo apt install python3-mysql.connector -y
pip3 installieren mfrc522! (wir benötigen dies, um den RFID-Scanner zu verwenden)
Schritt 7: Visual Studio-Code vorbereiten
Zum Ausführen des Codes empfehle ich die Verwendung von Visual Studio Code, um Ihren Raspberry Pi zu verbinden. Den Download-Link zur Installation von VSC finden Sie hier.
Wenn Sie Remote Development noch nicht mit SSH installiert haben, finden Sie die Schritte dazu hier.
Schritt 3: Erstellen der Datenbank
Wir speichern alle unsere Sensordaten und Benutzerdaten in einer Datenbank.
Meine Datenbank besteht aus 5 Tabellen:
Gerät
Table Device hat eine DeviceID, die auf das Gerät selbst verweist. Der DeviceName gibt den Namen des Gerätes an, in diesem Fall Ultraschallsensor, Temperatursensor, … DeviceType gibt den Typ des Gerätes (Sensor oder Aktor) an.
Geschichte
Die Tabelle Historie enthält die gesamte Sensorhistorie, zusammen mit dem Datum (HistoryDate), der Historie, in der die Historie hinzugefügt wurde, und dem Wert des Moments in der Historie. Es hat auch zwei Fremdschlüssel:
- DeviceID, um ein bestimmtes Protokoll mit einem Gerät zu verknüpfen
- UserID, um einen bestimmten Benutzer mit einem Protokoll zu verknüpfen (das liegt daran, dass wir ein RFID verwenden und das Verlaufsprotokoll einem bestimmten Benutzer hinzufügen möchten)
Benutzer
Table User wird verwendet, um ein Benutzer-Login-System mit dem RFID-Scanner zu erstellen. Es besteht aus Nickname, FirstName, LastName, Password und RFID (dies ist die RFID-Nummer eines Tags). Jeder Benutzer ist mit einem Container (Wassertank) verknüpft und trägt auch die ContainerID als Fremdschlüssel.
Container
Table Container besteht aus all den verschiedenen Containern. Es hat eine ID, eine ContainerLocation (dies kann ein Unternehmen, ein Zuhause oder etwas anderes sein). Schließlich hat es ein MaxLevel, das für das maximale Volumen des Containers steht.
Einstellungen
Table Settings hat eine SettingsID und verfolgt das DailyGoal jedes Benutzers + das Datum, an dem das DailyGoal vom Benutzer hinzugefügt wurde. Dies erklärt die Fremdschlüssel-Benutzer-ID.
Einen Dump der Datenbank finden Sie in meinem GitHub-Repository unter Database.
Schritt 4: Einrichten des Backends
Es gibt kein Projekt ohne ein funktionierendes Backend.
Das Backend besteht aus 4 verschiedenen Dingen:
Helfer
Die Helfer sind alle Klassen, die für die verschiedenen Sensoren und Aktoren verwendet werden. Es gibt einen Helfer für den Temperatursensor (DS18B20), für die Ultraschallsensoren (HCSR05) um den Abstand zu messen und für das LCD um Meldungen auf den Bildschirm schreiben zu können.
Repositorys
Im Ordner Repositorys finden Sie 2 Python-Dateien:
- Database.py, die ein Helfer ist, um Zeilen aus Ihrer Datenbank zu holen. Es erleichtert das Ausführen und Lesen der Datenbank.
- DataRepository.py, das alle SQL-Abfragen enthält, die im Hauptcode (app.py) verwendet werden. Sie dienen zum Abrufen, Aktualisieren oder Löschen von Daten aus der Datenbank.
app.py
Dies ist der Haupt-Backend-Code des Projekts. Es führt die Einrichtung durch, indem es alle Pins und Modi definiert und den Code enthält, um die Pumpe zum Laufen zu bringen, die Temperatur zu erhalten, den Benutzer zu erhalten und so weiter. Es enthält auch die Routen, die verwendet werden, um Daten aus der Datenbank und allen socketio.ons abzurufen. Für jede HTML-Seite gibt es eine andere socketio.on, um sicherzustellen, dass jede Funktion zur richtigen Zeit funktioniert.
config.py
Wir haben noch eine Datei übrig: config.py. Dies ist die Datei mit den Konfigurationsoptionen für die Verbindung mit Ihrer Datenbank. Vergessen Sie nicht, Ihre Datenbankanmeldeinformationen festzulegen.
Das Backend finden Sie in meinem Repository unter Backend.
Schritt 5: Einrichten des Frontends
Für das Frontend habe ich zunächst ein Design entworfen, wie mein Webserver in AdobeXD aussehen sollte. Ich habe die Farben in meinem Logo verwendet, die orange und 2 verschiedene Blautöne sind. Ich habe versucht, das Design so einfach wie möglich zu halten und habe einen Wassertropfen kreiert, der zeigt, wie prozentual du dein Tagesziel erreicht hast.
In meinem GitHub-Repository finden Sie mein Frontend unter Code > Frontend. Es ist wichtig, dass Sie dies in Ihren /var/html-Ordner Ihres Raspberry Pi einfügen, damit es vom Webserver aus zugänglich ist.
Es besteht aus ein paar HTML-Dateien, die zu den verschiedenen Seiten führen. Sie finden auch meine screen.css mit allem CSS, das Sie benötigen, damit es wie mein Projekt aussieht. Schließlich haben Sie verschiedene JavaScript-Dateien unter Skripten. Diese Skripte kommunizieren mit meinem Backend, um Daten aus meiner Datenbank oder meinem Backend anzuzeigen.
Das Backend findet sich in meinem Repository unter Frontend.
Schritt 6: Erstellen des Gehäuses
Wenn wir über meinen Fall sprechen, gibt es zwei Hauptteile:
Außengehäuse
Ich habe das Gehäuse von Grund auf neu gebaut. Ich habe Sperrholzbretter verwendet und sie in den richtigen Größen gesägt. Ich habe alle Bretter zusammengeschraubt und Löcher für das LCD, den Knopf, den Ultraschallsensor, um zu erkennen, ob eine Wasserflasche vorhanden ist, und den Trichter zum Verteilen des Wassers gebohrt. Ich habe mein Gehäuse in verschiedene Abschnitte unterteilt, um das Wasser und die Elektronik getrennt zu halten, und ich habe eine Kabelwanne verwendet, um die Kabel vor Wasseraustritt zu schützen. Im angehängten Video sehen Sie die meisten Aspekte meines Gehäuses und wie ich es gemacht habe. Ich habe auch einen Knopf 3D gedruckt, der auf einen normalen Knopf geklebt ist. Schließlich habe ich eine Auffangschale verwendet, um das verschüttete Wasser aufzufangen. Ich habe auch Scharniere verwendet, um eine Seitenwand öffnen und schließen zu können, um meine Elektronik zu betrachten. Sie können immer einen gebrauchten Spender verwenden oder auch andere Materialien verwenden.
Für die genauen Maße meines gebauten habe ich ein PDF mit allen Größen der im Koffer verwendeten Platten beigefügt.
Wassertank
Der Wassertank war keine leichte Aufgabe. Ich habe einen Wassertank mit einem Loch am Boden, also musste ich ihn abkleben, um das Auslaufen zu stoppen. Sie benötigen vier Löcher: eines für den Temperatursensor, eines für den Schlauch Ihrer Pumpe. einen für den Schlauch zum Nachfüllen des Tanks und einen für den Ultraschallsensor. Für letzteres habe ich ein Gehäuse dafür in 3D gedruckt, das hier zu finden ist. Dies gibt dem Sensor mehr Schutz vor Wasser. Ich bohrte dann ein Rechteck in die Oberseite des Tanks, um den Sensor darauf zu ruhen.
Empfohlen:
Automatischer Anrufbeantworter V1.0: 17 Schritte (mit Bildern)
Automated Answering System V1.0: Manchmal habe ich einfach keine Lust, ans Telefon zu gehen. Okay, okay… die meiste Zeit ist es mir wirklich egal, ans Telefon zu gehen. Was soll ich sagen, ich bin ein beschäftigter Mann. Ich habe mir schon lange ein System gewünscht, das dem ähnlich ist, das die Telefongesellschaft für die
Automatischer Sucher: 4 Schritte
Auto-Searcher: Also las ich eines Tages Fanfiction in meinem Bett, um meinen Stress abzubauen. Aber ich hatte das Gefühl, dass es ein bisschen mühsam war, die Seite weiter zu scrollen, um weiterzulesen. Ich muss auch klicken, um das nächste Kapitel zu sehen und das Ganze vorher suchen
Automatischer Gartenbewässerer - 3D gedruckt - Arduino: 10 Schritte (mit Bildern)
Automatischer Gartenbewässerer | 3D gedruckt | Arduino: Ich bin ein begeisterter Gärtner, aber Ihre Pflanzen während Trockenperioden von Hand zu gießen, dauert einige Zeit. Dieses Projekt befreit mich vom Gießen, damit ich an meinen anderen Projekten arbeiten kann. Es ist auch großartig, sich um den Garten zu kümmern, während Sie nicht zu Hause sind, und die Pflanze
Verwendung von Mikrocontrollern zum Betrieb und zur Überwachung des Fernbewässerungssystems : 4 Schritte
Einsatz von Mikrocontrollern zum Betrieb und zur Überwachung des Fernbewässerungssystems : Landwirte und Gewächshausbetreiber für ein kostengünstiges automatisches Bewässerungssystem. In diesem Projekt integrieren wir einen elektronischen Bodenfeuchtesensor mit einem Mikrocontroller, um Pflanzen automatisch ohne menschliches Zutun zu bewässern, wenn der Boden zu trocken ist
Vollständige Anleitung zur Verwendung des Bodenfeuchtesensors mit praktischem Beispiel: 7 Schritte
Vollständige Anleitung zur Verwendung des Bodenfeuchtigkeitssensors mit praktischem Beispiel: Sie können dieses und andere erstaunliche Tutorials auf der offiziellen Website von ElectroPeak lesen.ÜbersichtIn diesem Tutorial erfahren Sie, wie Sie einen Bodenfeuchtigkeitssensor verwenden. Es werden auch praktische Beispiele bereitgestellt, die Ihnen helfen, den Code zu beherrschen. Was Sie lernen werden: Wie Boden