Πίνακας περιεχομένων:

Αυτόματος διανομέας νερού για την παρακολούθηση της κατανάλωσης: 6 βήματα
Αυτόματος διανομέας νερού για την παρακολούθηση της κατανάλωσης: 6 βήματα

Βίντεο: Αυτόματος διανομέας νερού για την παρακολούθηση της κατανάλωσης: 6 βήματα

Βίντεο: Αυτόματος διανομέας νερού για την παρακολούθηση της κατανάλωσης: 6 βήματα
Βίντεο: [Τι τρώω σε μια εβδομάδα] Ιαπωνικό σπιτικό πρωινό και δείπνο για 7 ημέρες 2024, Ιούλιος
Anonim
Αυτόματος διανομέας νερού για την παρακολούθηση της κατανάλωσης
Αυτόματος διανομέας νερού για την παρακολούθηση της κατανάλωσης
Αυτόματος διανομέας νερού για την παρακολούθηση της κατανάλωσης
Αυτόματος διανομέας νερού για την παρακολούθηση της κατανάλωσης

Γεια σου!

Πριν από μερικούς μήνες, ήμουν στο δωμάτιό μου και σκεφτόμουν τι είδους έργο ήθελα να κάνω για μια σχολική εργασία. Wantedθελα να φτιάξω κάτι που μου ταιριάζει και που θα με ωφελήσει στο μέλλον. Ξαφνικά, η μαμά μου μπήκε στο δωμάτιο και άρχισε να παραπονιέται ότι δεν έπινε αρκετό νερό. Αμέσως έκανα θεοφάνεια. Μου ήρθε η ιδέα να φτιάξω έναν αυτόματο διανομέα νερού (όπως στην κινηματογραφική αίθουσα) που παρακολουθεί την κατανάλωση νερού σε καθημερινή βάση.

Με ένα Raspberry Pi, μερικούς αισθητήρες, μια αντλία και λίγες γνώσεις, προσπάθησα να το κάνω όσο το δυνατόν καλύτερο.

Στο τέλος όλων των βημάτων, θα έχετε έναν διανεμητή νερού που γεμίζει το μπουκάλι σας και συνδέεται και αλληλεπιδρά με το Raspberry Pi. Όχι μόνο θα μπορείτε να παρακολουθείτε την κατανάλωση νερού με βάση ένα ποσοστό, αλλά θα έχετε επίσης τη δυνατότητα να δείτε τη θερμοκρασία και τη στάθμη του νερού του δοχείου νερού. Τέλος, θα μπορείτε να ελέγξετε τα στατιστικά σας στοιχεία. Εάν αυτό σας ακούγεται ενδιαφέρον, φροντίστε να το δείτε και να το δοκιμάσετε μόνοι σας!

Το αποθετήριο GitHub:

Προμήθειες

Μικροελεγκτές

Raspberry Pi 4

Αισθητήρες και μονάδες

Χρησιμοποίησα 4 αισθητήρες:

2xHC-SR04Υπερηχητικός αισθητήρας

Οι αισθητήρες υπερήχων μετρούν την απόσταση χρησιμοποιώντας υπερηχητικά κύματα. Η κεφαλή του αισθητήρα εκπέμπει ένα υπερηχητικό κύμα και λαμβάνει το κύμα που αντανακλάται πίσω από τον στόχο. Οι αισθητήρες υπερήχων μετρούν την απόσταση από τον στόχο μετρώντας το χρόνο μεταξύ της εκπομπής και της λήψης. Χρησιμοποίησα δύο από αυτά για να ελέγξω αν υπάρχει μπουκάλι κοντά και να μετρήσω την απόσταση από το νερό στη δεξαμενή.

Φύλλο δεδομένων

1x DS18B20 Αισθητήρας θερμοκρασίας

Ο DS18B20 είναι ένας προγραμματιζόμενος αισθητήρας θερμοκρασίας 1 καλωδίου ενσωματωμένος στο μέγιστο. Χρησιμοποιείται ευρέως για τη μέτρηση της θερμοκρασίας σε σκληρά περιβάλλοντα όπως σε χημικά διαλύματα, ορυχεία ή χώμα κλπ. Το χρησιμοποίησα για τη μέτρηση της θερμοκρασίας του νερού της δεξαμενής νερού.

Φύλλο δεδομένων

1x μονάδα RC522 RFID

Το RC522 είναι μια μονάδα RFID 13.56MHz που βασίζεται στον ελεγκτή MFRC522 από τους ημιαγωγούς NXP. Η μονάδα μπορεί να υποστηρίζει I2C, SPI και UART και συνήθως αποστέλλεται με κάρτα RFID και κλειδί. Χρησιμοποιείται συνήθως σε συστήματα παρακολούθησης και άλλες εφαρμογές αναγνώρισης προσώπου/αντικειμένου. Σε αυτό το έργο, χρησιμοποιείται για σύστημα αναγνώρισης/σύνδεσης.

Φύλλο δεδομένων

Και 2 ενεργοποιητές:

1x Περισταλτική Αντλία 12-24V

Χρησιμοποίησα μια περισταλτική αντλία για να πάρω το νερό από τη δεξαμενή σε ένα μπουκάλι νερό. Οι περισσότερες αντλίες ήταν πολύ αργές, οπότε πήρα μια έκδοση 24V που τροφοδοτώ με προσαρμογέα ρεύματος 24V.

1x οθόνη LCD

Η οθόνη LCD χρησιμοποιείται για την εμφάνιση της διεύθυνσης IP και των σημαντικών μηνυμάτων. Η οθόνη υγρών κρυστάλλων (LCD) είναι μια οθόνη επίπεδης οθόνης ή άλλη ηλεκτρονικά διαμορφωμένη οπτική συσκευή που χρησιμοποιεί τις ιδιότητες ρύθμισης του φωτός των υγρών κρυστάλλων σε συνδυασμό με τους πολωτές.

Φύλλο δεδομένων

Θήκη

Μιλώντας για το περίβλημα, έκανα ένα DIY με προμήθειες από ένα Home depo (στην περίπτωσή μου το Brico στο Βέλγιο). Χρησιμοποίησα κόντρα πλακέ που έκοψα στο σωστό μέγεθος. Θα μιλήσω για το πώς έκανα την υπόθεσή μου σε ένα περαιτέρω βήμα, αλλά εδώ είναι τα πράγματα που θα χρειαστείτε:

  • 3x σανίδες από κόντρα πλακέ
  • 1x Μικρή χοάνη
  • 1x Δεξαμενή νερού (μπορείτε να επιλέξετε ποια ποσότητα θέλετε, πήγα για 10L)
  • 1x δίσκος στάγδην

Μπορείτε να βρείτε όλα τα υλικά και τις τιμές στο συνημμένο BOM.

Βήμα 1: Σύνδεση όλων των ηλεκτρονικών

Σύνδεση όλων των ηλεκτρονικών
Σύνδεση όλων των ηλεκτρονικών
Σύνδεση όλων των ηλεκτρονικών
Σύνδεση όλων των ηλεκτρονικών

Τώρα που συνοψίσαμε όλα τα ηλεκτρονικά, ήρθε η ώρα να τα συνδέσουμε. Έφτιαξα δύο κυκλώματα Fritzing, ένα breadboard και ένα σχηματικό, για να σας δείξω πώς και πού πρέπει να συνδεθούν όλα τα ηλεκτρονικά. Μπορείτε να βρείτε τον σύνδεσμο λήψης για το Fritzing εδώ: https://fritzing.org/download/. Όπως αναφέρθηκε προηγουμένως, χρησιμοποίησα ένα Raspberry Pi και σύνδεσα έναν σαρωτή RFID, δύο αισθητήρες υπερήχων, έναν αισθητήρα θερμοκρασίας, μια οθόνη LCD και μια περισταλτική αντλία για το νερό.

Επισυνάπτω τα δύο κυκλώματα σε PDF, αν θέλετε να το ρίξετε μια πιο προσεκτική ματιά.

Βήμα 2: Ρύθμιση του Raspberry Pi

Θα χρησιμοποιήσουμε το Raspberry Pi για να τρέξουμε και να ελέγξουμε τα πάντα: backend, frontend και βάση δεδομένων.

Ένα Raspberry Pi δεν λειτουργεί αυτόματα. Θα πρέπει να περάσουμε από κάποια βήματα για να αρχίσουμε να το χρησιμοποιούμε.

Βήμα 1: Raspbian

Εάν χρησιμοποιείτε ένα ολοκαίνουργιο Raspberry Pi, θα χρειαστείτε raspbian. Ο σύνδεσμος λήψης και το σεμινάριο μπορείτε να βρείτε εδώ.

Βήμα 2: Γράψτε την εικόνα σε SD

Τώρα που έχετε την εικόνα Raspbian, θα χρειαστείτε ένα λογισμικό γραφής εικόνας (προτείνω το win32diskimager) για να γράψετε το αρχείο εικόνας στην κάρτα SD. Το πλήρες σεμινάριο μπορείτε να το βρείτε εδώ.

Βήμα 3: Σύνδεση στο Raspberry Pi

Ανοίξτε το "Powershell" και πληκτρολογήστε "ssh [email protected]". Εάν όλα πάνε σωστά, θα σας ζητήσουν έναν κωδικό πρόσβασης (ο προεπιλεγμένος κωδικός πρόσβασης είναι πάντα βατόμουρο). Κανονικά, αυτό θα πρέπει να σας συνδέσει στο Raspberry Pi. Τώρα θα πρέπει να κάνουμε κάποιες αλλαγές στις ρυθμίσεις μας. Πληκτρολογήστε sudo raspi-config στο τερματικό και πατήστε enter. Μεταβείτε στις επιλογές τοπικοποίησης> αλλάξτε ζώνη ώρας και ορίστε τη στη ζώνη ώρας σας. Θα πρέπει επίσης να αλλάξετε τη χώρα Wi-Fi στη δική σας τοποθεσία. Τέλος, μεταβείτε στις επιλογές διασύνδεσης και ενεργοποιήστε τα SPI, I2C και 1-wire. Αυτό θα είναι σημαντικό για τη σωστή χρήση των αισθητήρων.

Βήμα 4: Ρύθμιση της σύνδεσης στο Διαδίκτυο

Θα χρησιμοποιούμε δίκτυο WiFi. Μπορείτε να προσθέσετε το οικιακό σας δίκτυο μέσω:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Θα πρέπει να επανεκκινήσετε το Pi σας για να κάνετε μια σύνδεση. Για να ελέγξετε αν λειτούργησε, μπορείτε να χρησιμοποιήσετε το ifconfig για να ελέγξετε εάν υπάρχει διεύθυνση IP.

Βήμα 5: Ρύθμιση του διακομιστή ιστού και της βάσης δεδομένων

Πρώτον, είναι καλύτερο να ενημερώσετε και να αναβαθμίσετε το σύστημα με την ακόλουθη ακολουθία εντολών:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt αναβάθμιση
  3. sudo apt ενημέρωση
  4. sudo apt αυτόματη μετακίνηση

Μόλις γίνει αυτό, θα χρειαστούμε τα ακόλουθα πακέτα για τον διακομιστή ιστού και τη βάση δεδομένων μας:

Απάχης

sudo apt install apache2 -y

PHP

sudo apt εγκατάσταση php

sudo apt εγκατάσταση phpMyAdmin -y

Μην ξεχάσετε να ορίσετε έναν ασφαλή κωδικό πρόσβασης MySQL, όταν ζητά να ορίσετε έναν κωδικό πρόσβασης.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt εγκατάσταση php -mysql -y

sudo systemctl επανεκκίνηση apache2.service

Βήμα 6: Εγκατάσταση βιβλιοθηκών Python

Για το backend, θα χρειαστούμε κάποιες βιβλιοθήκες για την Python. Θα τα εγκαταστήσουμε χρησιμοποιώντας pip3, επειδή χρησιμοποιούμε python3.

pip3 εγκαταστήστε mysql-connector-python

pip3 install flask-socketio

pip3 εγκαταστήστε φιάλη-κορμούς

pip3 εγκατάσταση gevent

pip3 εγκαταστήστε το gevent-websocket

sudo apt install python3 -mysql.connector -y

pip3 εγκαταστήστε το mfrc522! (θα το χρειαστούμε για να χρησιμοποιήσουμε τον σαρωτή RFID)

Βήμα 7: Προετοιμασία Visual Studio Code

Για την εκτέλεση του κώδικα, συνιστώ να χρησιμοποιήσετε τον Visual Studio Code για να συνδέσετε το Raspberry Pi σας. Ο σύνδεσμος λήψης για την εγκατάσταση του VSC μπορεί να βρεθεί εδώ.

Εάν δεν έχετε εγκαταστήσει ακόμα το Remote Development χρησιμοποιώντας SSH, μπορείτε να βρείτε τα βήματα για να το κάνετε εδώ.

Βήμα 3: Δημιουργία βάσης δεδομένων

Δημιουργία βάσης δεδομένων
Δημιουργία βάσης δεδομένων

Θα αποθηκεύσουμε όλα τα δεδομένα αισθητήρων και δεδομένων χρήστη σε μια βάση δεδομένων.

Η βάση δεδομένων μου αποτελείται από 5 πίνακες:

Συσκευή

Η συσκευή Table έχει ένα DeviceID, το οποίο αναφέρεται στην ίδια τη συσκευή. Το DeviceName δίνει το όνομα της συσκευής, σε αυτήν την περίπτωση αισθητήρα υπερήχων, αισθητήρα θερμοκρασίας,… Το DeviceType δίνει τον τύπο της συσκευής (αισθητήρας ή ενεργοποιητής).

Ιστορία

Το Ιστορικό πίνακα περιέχει όλο το ιστορικό αισθητήρων, μαζί με την ημερομηνία (HistoryDate), το ιστορικό προστέθηκε και η τιμή της στιγμής στο ιστορικό. Έχει επίσης δύο εξωτερικά κλειδιά:

  • Αναγνωριστικό συσκευής, για να συνδέσετε ένα συγκεκριμένο αρχείο καταγραφής σε μια Συσκευή
  • UserID, για σύνδεση ενός συγκεκριμένου χρήστη με ένα αρχείο καταγραφής (αυτό συμβαίνει επειδή χρησιμοποιούμε ένα RFID και θέλουμε να προσθέσουμε το αρχείο καταγραφής ιστορικού σε έναν συγκεκριμένο χρήστη)

Χρήστης

Ο πίνακας χρήστης χρησιμοποιείται για τη δημιουργία συστήματος σύνδεσης χρήστη με το σαρωτή RFID. Αποτελείται από ψευδώνυμο, όνομα, επώνυμο, κωδικό πρόσβασης και RFID (αυτός είναι ο αριθμός RFID μιας ετικέτας). Κάθε χρήστης συνδέεται με ένα κοντέινερ (δεξαμενή νερού) και φέρει επίσης το ContainerID ως ξένο κλειδί.

Δοχείο

Το Table Container αποτελείται από όλα τα διαφορετικά δοχεία. Διαθέτει αναγνωριστικό, ContainerLocation (αυτό μπορεί να είναι επιχείρηση, σπίτι ή οτιδήποτε άλλο). Τέλος, έχει ένα MaxLevel που αντιπροσωπεύει τη μέγιστη ένταση που έχει το δοχείο.

Ρυθμίσεις

Ο πίνακας ρυθμίσεων διαθέτει ένα αναγνωριστικό ρυθμίσεων και παρακολουθεί το DailyGoal κάθε χρήστη + την ημερομηνία προσθήκης του DailyGoal από τον χρήστη. Αυτό εξηγεί το ξένο κλειδί UserID.

Μπορείτε να βρείτε μια χωματερή βάση δεδομένων στο αποθετήριο GitHub μου στο Database.

Βήμα 4: Ρύθμιση του Backend

Δεν υπάρχει έργο χωρίς λειτουργικό backend.

Το backend αποτελείται από 4 διαφορετικά πράγματα:

βοηθοί

Οι βοηθοί είναι όλες οι κατηγορίες που χρησιμοποιούνται για τους διαφορετικούς αισθητήρες και ενεργοποιητές. Υπάρχει ένας βοηθός για τον αισθητήρα θερμοκρασίας (DS18B20), για τους αισθητήρες υπερήχων (HCSR05) για να μπορούν να μετρήσουν την απόσταση και για την οθόνη LCD να μπορεί να γράφει μηνύματα στην οθόνη.

αποθετήρια

Στο φάκελο αποθετηρίων, θα βρείτε 2 αρχεία Python:

  • Database.py που είναι βοηθός για να βγάλετε σειρές από τη βάση δεδομένων σας. Διευκολύνει την εκτέλεση και ανάγνωση της βάσης δεδομένων.
  • DataRepository.py που περιέχει όλα τα ερωτήματα SQL, που χρησιμοποιούνται στον κύριο κώδικα (app.py). Χρησιμοποιούνται για τη λήψη, ενημέρωση ή διαγραφή δεδομένων από τη βάση δεδομένων.

app.py

Αυτός είναι ο κύριος κωδικός υποστήριξης του έργου. Κάνει τη ρύθμιση καθορίζοντας όλες τις ακίδες και τις λειτουργίες και περιέχει τον κώδικα για να λειτουργήσει η αντλία, να πάρει τη θερμοκρασία, να πάρει τον χρήστη και ούτω καθεξής. Περιέχει επίσης τις διαδρομές που χρησιμοποιούνται για την ανάκτηση δεδομένων από τη βάση δεδομένων και όλα τα socketio.on's. Για κάθε σελίδα HTML υπάρχει διαφορετικό socketio.on για να βεβαιωθείτε ότι κάθε λειτουργία λειτουργεί τη σωστή στιγμή.

config.py

Μας απομένει ένα αρχείο: config.py. Αυτό είναι το αρχείο με τις επιλογές διαμόρφωσης για σύνδεση με τη βάση δεδομένων σας. Μην ξεχάσετε να ορίσετε τα διαπιστευτήριά σας στη βάση δεδομένων.

Το backend μπορεί να βρεθεί στο αποθετήριο μου στο Backend.

Βήμα 5: Ρύθμιση του Frontend

Ρύθμιση του Frontend
Ρύθμιση του Frontend
Ρύθμιση του Frontend
Ρύθμιση του Frontend

Για το Frontend, ξεκίνησα κάνοντας ένα σχέδιο για το πώς πρέπει να είναι ο διακομιστής ιστού μου στο AdobeXD. Χρησιμοποίησα τα χρώματα στο λογότυπό μου, τα οποία είναι πορτοκαλί και 2 διαφορετικές αποχρώσεις του μπλε. Προσπάθησα να κρατήσω το σχέδιο όσο το δυνατόν πιο απλό και δημιούργησα μια σταγόνα νερού που δείχνει το ποσοστό σε ποιο βαθμό έχετε πετύχει τον στόχο σας της ημέρας.

Στο αποθετήριο GitHub, θα βρείτε το Frontend μου κάτω από Κωδικός> Frontend. Είναι σημαντικό να το επικολλήσετε στο /var /html φάκελό σας Raspberry Pi για να είναι προσβάσιμο από τον διακομιστή ιστού.

Αποτελείται από δύο αρχεία HTML, τα οποία οδηγούν σε διαφορετικές σελίδες. Θα βρείτε επίσης το screen.css μου με όλα τα CSS που θα χρειαστείτε για να μοιάζει με το έργο μου. Τέλος, θα έχετε διαφορετικά αρχεία JavaScript κάτω από σενάρια. Αυτά τα σενάρια επικοινωνούν με το backend μου για να εμφανίζουν δεδομένα από τη βάση δεδομένων μου ή το backend.

Το backend μπορεί να βρεθεί στο αποθετήριο μου στο Frontend.

Βήμα 6: Δημιουργία περιβλήματος

Δημιουργώντας το περίβλημα
Δημιουργώντας το περίβλημα
Δημιουργία του περιβλήματος
Δημιουργία του περιβλήματος
Δημιουργώντας το περίβλημα
Δημιουργώντας το περίβλημα

Αν μιλάμε για την περίπτωσή μου, υπάρχουν δύο βασικά μέρη:

Εξωτερικό περίβλημα

Έφτιαξα τη θήκη από την αρχή. Χρησιμοποίησα σανίδες από κόντρα πλακέ και τις πριόνισα στα σωστά μεγέθη. Βίδωσα όλες τις σανίδες μαζί και άνοιξα τρύπες για την οθόνη LCD, το κουμπί, τον αισθητήρα υπερήχων για να διαπιστώσω αν υπάρχει ένα μπουκάλι νερό και το χωνί για τη διανομή του νερού. Χώρισα τη θήκη μου σε διαφορετικά τμήματα για να διατηρήσω το νερό και τα ηλεκτρονικά χωριστά και χρησιμοποίησα ένα δίσκο καλωδίων για να προστατέψω τα καλώδια από διαρροή νερού. Στο συνημμένο βίντεο, μπορείτε να δείτε τις περισσότερες πτυχές του περιβλήματος μου και πώς το έφτιαξα. Εκτύπωσα επίσης 3D ένα κουμπί, το οποίο είναι κολλημένο σε ένα κανονικό κουμπί. Τέλος, χρησιμοποίησα ένα δίσκο στάγδην για να πιάσω όλο το χυμένο νερό. Χρησιμοποίησα επίσης μεντεσέδες για να μπορώ να ανοίγω και να κλείνω ένα πλαϊνό πλαίσιο για να κοιτάζω τα ηλεκτρονικά μου. Μπορείτε πάντα να χρησιμοποιήσετε μεταχειρισμένο διανομέα ή μπορείτε να χρησιμοποιήσετε και άλλα υλικά.

Για τις ακριβείς μετρήσεις της κατασκευής μου, επισυνάπτω ένα PDF με όλα τα μεγέθη των πλακών που χρησιμοποιούνται στη θήκη.

Δεξαμενή νερού

Η δεξαμενή νερού δεν ήταν εύκολη δουλειά. Πήρα μια δεξαμενή νερού με μια τρύπα στο κάτω μέρος, οπότε έπρεπε να την κολλήσω με ταινία για να σταματήσει η διαρροή. Θα χρειαστείτε τέσσερις οπές: μία για τον αισθητήρα θερμοκρασίας, μία για τη σωλήνωση της αντλίας σας. ένα για τη σωλήνωση για να ξαναγεμίσει τη δεξαμενή και ένα για τον αισθητήρα υπερήχων. Για αυτό το τελευταίο, εκτύπωσα 3D μια θήκη για αυτό, το οποίο μπορείτε να βρείτε εδώ. Αυτό δίνει στον αισθητήρα μεγαλύτερη προστασία από το νερό. Στη συνέχεια τρυπούσα ένα ορθογώνιο στην κορυφή της δεξαμενής, για να ακουμπήσω τον αισθητήρα.

Συνιστάται: