Cuprins:

Dispenser automat de apă pentru a urmări consumul: 6 pași
Dispenser automat de apă pentru a urmări consumul: 6 pași

Video: Dispenser automat de apă pentru a urmări consumul: 6 pași

Video: Dispenser automat de apă pentru a urmări consumul: 6 pași
Video: CARE E APA HRĂNITOARE, APA CARE VINDECĂ - CLAUDIA BENEA - iTHINK cu IUSTI FUDULU 2024, Iulie
Anonim
Dispenser automat de apă pentru a urmări consumul
Dispenser automat de apă pentru a urmări consumul
Dispenser automat de apă pentru a urmări consumul
Dispenser automat de apă pentru a urmări consumul

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

Conectarea tuturor componentelor electronice
Conectarea tuturor componentelor electronice
Conectarea tuturor componentelor electronice
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:

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

Crearea bazei de date
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

Configurarea frontendului
Configurarea frontendului
Configurarea frontendului
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

Crearea carcasei
Crearea carcasei
Crearea carcasei
Crearea carcasei
Crearea carcasei
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: