Cuprins:
- Provizii
- Pasul 1: Conectarea tuturor componentelor electronice
- Pasul 2: Configurarea Raspberry Pi
- Pasul 3: Crearea bazei de date
- Pasul 4: Configurarea backend-ului
- Pasul 5: Configurarea frontendului
- Pasul 6: Crearea carcasei
Video: Dispenser automat de apă pentru a urmări consumul: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
Bună!
Acum câteva luni, eram în camera mea gândindu-mă la ce fel de proiect am vrut să fac pentru o sarcină școlară. Am vrut să fac ceva care să mi se potrivească și care să mă avantajeze în viitor. Dintr-o dată, mama a intrat în cameră și a început să se plângă că nu bea suficientă apă. Am avut imediat o epifanie. Mi-a venit ideea să fac un dispenser automat de apă (ca la cinematograf) care să urmărească zilnic consumul de apă.
Cu un Raspberry Pi, câțiva senzori, o pompă și puține cunoștințe, am încercat să fac acest lucru cât mai bun posibil.
La finalul tuturor pașilor, veți avea un distribuitor de apă funcțional care vă umple flaconul de apă și care se conectează și interacționează cu Raspberry Pi. Nu numai că veți putea urmări consumul de apă pe baza unui procent, dar veți avea și posibilitatea de a vizualiza temperatura și nivelul apei din recipientul dvs. de apă. În cele din urmă, veți putea să vă verificați statisticile. Dacă acest lucru vi se pare interesant, asigurați-vă că verificați-l și încercați singur!
Depozitul GitHub:
Provizii
Microcontrolere
Raspberry Pi 4
Senzori și module
Am folosit 4 senzori:
2xHC-SR04 Senzor cu ultrasunete
Senzorii cu ultrasunete măsoară distanța utilizând unde ultrasonice. Capul senzorului emite o undă ultrasonică și primește unda reflectată înapoi de la țintă. Senzorii cu ultrasunete măsoară distanța față de țintă măsurând timpul dintre emisie și recepție. Am folosit două dintre ele pentru a verifica dacă există o sticlă în apropiere și pentru a măsura distanța până la apa din rezervor.
Fișa cu date
1x senzor de temperatură DS18B20
DS18B20 este un senzor de temperatură programabil cu 1 fir de la maxim integrat. Este utilizat pe scară largă pentru a măsura temperatura în medii dure, cum ar fi soluții chimice, mine sau sol etc. Am folosit-o pentru a măsura temperatura apei rezervorului de apă.
Fișa cu date
1x modul RFID RC522
RC522 este un modul RFID de 13,56 MHz care se bazează pe controlerul MFRC522 de la semiconductorii NXP. Modulul poate suporta I2C, SPI și UART și este livrat în mod normal cu un card RFID și un portofel. Este frecvent utilizat în sistemele de prezență și alte aplicații de identificare a persoanei / obiectelor. În acest proiect, este utilizat pentru un sistem de identificare / autentificare.
Fișa cu date
Și 2 actuatoare:
1x pompă peristaltică 12-24V
Am folosit o pompă peristaltică pentru a duce apa din rezervor la o sticlă de apă. Majoritatea pompelor erau prea lente, așa că am optat pentru o versiune de 24V pe care o alimentez cu un adaptor de alimentare de 24V.
1x ecran LCD
LCD-ul este utilizat pentru a afișa adresa IP și mesajele importante. Un afișaj cu cristale lichide (LCD) este un afișaj cu ecran plat sau alt dispozitiv optic modulat electronic care utilizează proprietățile de modulare a luminii cristalelor lichide combinate cu polarizatoare.
Fișa cu date
Carcasă
Apropo de carcasă, am făcut un DIY cu consumabile dintr-un depozit Home (în cazul meu Brico din Belgia). Am folosit placaj pe care l-am tăiat la dimensiunea potrivită. Voi vorbi despre cum mi-am susținut cazul într-un alt pas, dar iată lucrurile de care aveți nevoie:
- 3x scânduri de placaj
- 1x pâlnie mică
- 1x rezervor de apă (poți alege ce sumă dorești, am plecat pentru 10L)
- 1x tavă de scurgere
Puteți găsi toate materialele și prețurile în BOM atașat.
Pasul 1: Conectarea tuturor componentelor electronice
Acum că am rezumat toate componentele electronice, este timpul să le conectăm. Am realizat două circuite Fritzing, o placă de calcul și una schematică, pentru a vă arăta cum și unde ar trebui să fie conectate toate componentele electronice. Puteți găsi link-ul de descărcare către Fritzing aici: https://fritzing.org/download/. După cum am menționat anterior, am folosit un Raspberry Pi și am conectat un scaner RFID, doi senzori cu ultrasunete, un senzor de temperatură, un LCD și o pompă peristaltică pentru apă.
Am atașat cele două circuite într-un PDF, dacă doriți să aruncați o privire mai atentă la el.
Pasul 2: Configurarea Raspberry Pi
Vom folosi Raspberry Pi pentru a rula și controla totul: backend, frontend și bază de date.
Un Raspberry Pi nu rulează automat. Va trebui să parcurgem câțiva pași pentru a începe să îl folosim.
Pasul 1: Raspbian
Dacă utilizați un nou Raspberry Pi, veți avea nevoie de raspbian. Link-ul de descărcare și tutorialul pot fi găsite aici.
Pasul 2: Scrierea imaginii pe SD
Acum, că aveți imaginea dvs. Raspbian, veți avea nevoie de un software de scriere a imaginilor (recomand win32diskimager) pentru a scrie fișierul imagine pe cardul SD. Tutorialul complet poate fi găsit aici.
Pasul 3: conectarea la Raspberry Pi
Deschideți „Powershell” și tastați „ssh [email protected]”. Dacă totul merge bine, vă vor cere o parolă (parola implicită este întotdeauna zmeură). În mod normal, acest lucru ar trebui să vă conecteze la Raspberry Pi. Acum va trebui să facem câteva modificări la setările noastre. Tastați sudo raspi-config în terminal și apăsați Enter. Navigați la opțiunile de localizare> modificați fusul orar și setați-l la fusul dvs. orar. De asemenea, ar trebui să vă schimbați țara wi-fi în propria locație. În cele din urmă, accesați opțiunile de interfață și activați SPI, I2C și 1-wire. Acest lucru va fi important pentru a utiliza senzorii corect.
Pasul 4: Configurarea conexiunii la Internet
Vom folosi o rețea WiFi. Vă puteți adăuga rețeaua de domiciliu prin:
wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Va trebui să reporniți Pi-ul pentru a face o conexiune. Pentru a verifica dacă a funcționat, puteți utiliza ifconfig pentru a verifica dacă există o adresă IP.
Pasul 5: Configurarea serverului web și a bazei de date
În primul rând, cel mai bine este să actualizați și să actualizați sistemul cu următoarea succesiune de comenzi:
- sudo apt dist-upgrade --auto-remove -y
- sudo apt upgrade
- actualizare sudo apt
- sudo apt autoremove
Odată ce acest lucru este făcut, vom avea nevoie de următoarele pachete pentru serverul nostru web și baza de date:
Apache
sudo apt instalează apache2 -y
PHP
sudo apt instalează php
sudo apt instalează phpMyAdmin -y
Nu uitați să setați o parolă securizată MySQL, când vă solicită să setați o parolă.
MariaDB
sudo apt instalați mariadb-server mariadb-client -y
sudo apt instalează php-mysql -y
sudo systemctl reporniți apache2.service
Pasul 6: Instalarea bibliotecilor Python
Pentru backend, vom avea nevoie de câteva biblioteci pentru Python. Le vom instala folosind pip3, deoarece folosim python3.
pip3 instalează mysql-connector-python
pip3 instalează flask-socketio
pip3 instalează flask-cors
pip3 instalează gevent
pip3 instalează gevent-websocket
sudo apt instalează python3-mysql.connector -y
pip3 instalează mfrc522! (vom avea nevoie de asta pentru a folosi scanerul RFID)
Pasul 7: Pregătirea codului Visual Studio
Pentru a rula codul, vă recomand să utilizați Visual Studio Code pentru a vă conecta Raspberry Pi la. Link-ul de descărcare pentru instalarea VSC poate fi găsit aici.
Dacă nu aveți încă Dezvoltare la distanță instalată folosind SSH, puteți găsi pașii pentru a face acest lucru aici.
Pasul 3: Crearea bazei de date
Vom stoca toate datele senzorilor și datele utilizatorului într-o bază de date.
Baza mea de date este formată din 5 tabele:
Dispozitiv
Device Device are un DeviceID, care face trimitere la dispozitivul în sine. DeviceName oferă numele dispozitivului, în acest caz senzor cu ultrasunete, senzor de temperatură, … DeviceType oferă tipul dispozitivului (senzor sau actuator).
Istorie
Istoricul tabelului conține tot istoricul senzorilor, împreună cu data (HistoryDate) a fost adăugat istoricul și valoarea momentului din istorie. De asemenea, are două chei străine:
- DeviceID, pentru a conecta un jurnal specific la un dispozitiv
- UserID, pentru a conecta un anumit utilizator la un jurnal (acest lucru se datorează faptului că folosim un RFID și dorim să adăugăm jurnalul istoric unui anumit utilizator)
Utilizator
Utilizatorul de masă este utilizat pentru a crea un sistem de conectare a utilizatorului cu scanerul RFID. Se compune dintr-un pseudonim, prenume, prenume, parolă și RFID (acesta este numărul RFID al unei etichete). Fiecare utilizator este conectat la un Container (watertank) și poartă, de asemenea, ContainerID ca cheie străină.
Recipient
Containerul de masă constă din toate containerele diferite. Are un ID, un ContainerLocation (aceasta poate fi o întreprindere, acasă sau orice altceva). În cele din urmă, are un MaxLevel care reprezintă volumul maxim pe care îl are containerul.
Setări
Setările tabelului are un ID de setare și urmărește obiectivul zilnic al fiecărui utilizator + data la care a fost adăugat DailyGoal de către utilizator. Acest lucru explică ID-ul utilizatorului cheie străină.
O descărcare a bazei de date poate fi găsită în depozitul meu GitHub din baza de date.
Pasul 4: Configurarea backend-ului
Nu există un proiect fără un backend de lucru.
Backend-ul constă din 4 lucruri diferite:
ajutoare
Ajutorii sunt toate clasele utilizate pentru diferiți senzori și actuatori. Există un ajutor pentru senzorul de temperatură (DS18B20), pentru ca senzorii cu ultrasunete (HCSR05) să poată măsura distanța și pentru ca ecranul LCD să poată scrie mesaje pe ecran.
depozite
În dosarul depozite, veți găsi 2 fișiere Python:
- Database.py, care este un ajutor pentru a scoate rânduri din baza de date. Este mai ușor să executați și să citiți baza de date.
- DataRepository.py care conține toate interogările SQL care sunt utilizate în codul principal (app.py). Acestea sunt utilizate pentru obținerea, actualizarea sau ștergerea datelor din baza de date.
app.py
Acesta este principalul cod de backend al proiectului. Realizează configurarea prin definirea tuturor pinilor și modurilor și conține codul pentru funcționarea pompei, obținerea temperaturii, obținerea utilizatorului și așa mai departe. De asemenea, conține rutele utilizate pentru a prelua date din baza de date și toate socketio.on-urile. Pentru fiecare pagină HTML este un socketio.on diferit pentru a vă asigura că fiecare funcție funcționează la momentul corect.
config.py
Ne-a mai rămas un fișier: config.py. Acesta este fișierul cu opțiunile de configurare pentru a vă conecta la baza de date. Nu uitați să setați acreditările bazei de date.
Backend-ul poate fi găsit în depozitul meu sub Backend.
Pasul 5: Configurarea frontendului
Pentru Frontend, am început prin a face un design de cum ar trebui să arate serverul meu web în AdobeXD. Am folosit culorile din Logo-ul meu, care sunt portocalii și 2 nuanțe diferite de albastru. Am încercat să păstrez designul cât mai simplu posibil și am creat o picătură de apă care arată procentul în ce măsură v-ați atins obiectivul zilei.
În depozitul meu GitHub, veți găsi Frontendul meu în Cod> Frontend. Este important să lipiți acest lucru în folderul / var / html al dvs. Raspberry Pi pentru a-l face accesibil de pe serverul web.
Se compune din câteva fișiere HTML, care duc la diferite pagini. Veți găsi, de asemenea, screen.css cu toate CSS-urile de care aveți nevoie pentru a face să pară proiectul meu. În cele din urmă, veți avea diferite fișiere JavaScript sub scripturi. Aceste scripturi comunică cu backend-ul meu pentru a afișa date din baza de date sau backend-ul meu.
Backend-ul poate fi găsit în depozitul meu sub Frontend.
Pasul 6: Crearea carcasei
Dacă vorbim despre cazul meu, există două părți principale:
Carcasa exterioară
Am construit carcasa de la zero. Am folosit scânduri de placaj și le-am tăiat în dimensiunile corecte. Am înșurubat toate scândurile împreună și am forat găuri pentru LCD, buton, senzorul cu ultrasunete pentru a detecta dacă există o sticlă de apă și pâlnia pentru a distribui apa. Mi-am împărțit carcasa în diferite secțiuni pentru a menține apa și electronice separate și am folosit o tavă pentru cabluri pentru a proteja cablurile de scurgerile de apă. În videoclipul atașat, puteți vedea cele mai multe aspecte ale carcasei mele și cum am realizat-o. De asemenea, am imprimat 3D un buton, care este lipit de un buton normal. În cele din urmă, am folosit o tavă de scurgere pentru a prinde toată apa vărsată. De asemenea, am folosit balamale pentru a putea deschide și închide un panou lateral pentru a privi electronica mea. Puteți folosi oricând un distribuitor la mâna a doua sau puteți folosi și alte materiale.
Pentru măsurătorile exacte ale construcției mele, am atașat un PDF cu toate dimensiunile plăcilor utilizate în carcasă.
Rezervor de apă
Rezervorul de apă nu a fost o treabă ușoară. Am un rezervor de apă cu o gaură pe partea de jos, așa că a trebuit să-l bandez pentru a opri scurgerea. Veți avea nevoie de patru găuri: una pentru senzorul de temperatură, una pentru tubulatura pompei. una pentru tubulatura pentru reumplerea rezervorului și una pentru senzorul cu ultrasunete. Pentru acest ultim, am imprimat 3D o carcasă pentru el, care poate fi găsită aici. Acest lucru oferă senzorului mai multă protecție împotriva apei. Am forat apoi un dreptunghi în vârful rezervorului, pentru a sta pe senzor.
Recomandat:
Semnal de alarmă pentru consumul de energie Shelly: 8 pași
Semnal de alarmă pentru consumul de energie Shelly: AVERTISMENT Această instrucțiune trebuie să fie efectuată de cineva care are calificare bună ca electrician. Nu îmi asum nicio responsabilitate cu privire la pericolele pentru oameni sau lucruri. consumul depășește t
Construiți o oală de auto-udare DIY cu WiFi - Apă plante automat și trimite alerte când apa este scăzută: 19 pași
Construiți o oală de auto-udare DIY cu WiFi - Apă plantele în mod automat și trimite alerte când apa este scăzută: Acest tutorial vă arată cum să construiți o jardinieră personalizată conectată la Wi-Fi folosind o jardinieră veche, un coș de gunoi, o parte din adeziv și un auto Set de subansamble ghivece de udare de la Adosia
Dispenser automat pentru hrana pentru pisici: 7 pași (cu imagini)
Dispenser automat pentru hrana pentru pisici: dacă nu controlați cantitatea de mâncare pe care o mănâncă pisica, acest lucru poate duce la supraalimentare și la probleme cu supraponderalitatea. Acest lucru este valabil mai ales dacă sunteți departe de casă și lăsați hrană suplimentară pentru ca pisica dvs. să o consume în propriul program. Alteori poți să
Capul domnului Wallplate se întoarce pentru a vă urmări: 9 pași (cu imagini)
Head Wallplate’s Head Turns to Track You: Aceasta este o versiune mai avansată a Mr. Wallplate’s Eye Illusion Robot https://www.instructables.com/id/Mr-Wallplates-Eye-Illusion. Un senzor cu ultrasunete permite capului domnului Wallplate să vă urmărească în timp ce mergeți în fața sa. Procesul poate fi rezumat
Alimentator automat de plante WiFi cu rezervor - Configurare cultură interioară / exterioară - Plantele de apă automat cu monitorizare de la distanță: 21 de pași
Alimentator automat de plante WiFi cu rezervor - Configurare cultură interioară / exterioară - Plantele de apă automat cu monitorizare de la distanță: În acest tutorial vom arăta cum să configurați un sistem personalizat de alimentare cu plante interior / exterior care udă automat plantele și poate fi monitorizat de la distanță folosind platforma Adosia