Inhaltsverzeichnis:

Automatischer Wasserspender zur Erfassung des Verbrauchs - Gunook
Automatischer Wasserspender zur Erfassung des Verbrauchs - Gunook

Video: Automatischer Wasserspender zur Erfassung des Verbrauchs - Gunook

Video: Automatischer Wasserspender zur Erfassung des Verbrauchs - Gunook
Video: So einfach Heizkosten sparen - Heizkörper Wärmeabgabe verbessern, Heizungsventilatoren SpeedComfort 2024, November
Anonim
Automatischer Wasserspender zur Überwachung des Verbrauchs
Automatischer Wasserspender zur Überwachung des Verbrauchs
Automatischer Wasserspender zur Überwachung des Verbrauchs
Automatischer Wasserspender zur Überwachung des Verbrauchs

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

Anschließen der gesamten Elektronik
Anschließen der gesamten Elektronik
Anschließen der gesamten Elektronik
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:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt upgrade
  3. sudo apt-Update
  4. 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

Erstellen der Datenbank
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

Einrichten des Frontends
Einrichten des Frontends
Einrichten des Frontends
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

Gehäuse erstellen
Gehäuse erstellen
Gehäuse erstellen
Gehäuse erstellen
Gehäuse erstellen
Gehäuse erstellen

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: