INHOUDSOPGAWE:

Outomatiese waterdispenser om verbruik op te spoor: 6 stappe
Outomatiese waterdispenser om verbruik op te spoor: 6 stappe

Video: Outomatiese waterdispenser om verbruik op te spoor: 6 stappe

Video: Outomatiese waterdispenser om verbruik op te spoor: 6 stappe
Video: BYD SEAL Premium ขับ กรุงเทพฯ - เชียงใหม่ แวะชาร์จแค่ 30 นาที 2024, November
Anonim
Outomatiese waterdispenser om die verbruik op te spoor
Outomatiese waterdispenser om die verbruik op te spoor
Outomatiese waterdispenser om die verbruik op te spoor
Outomatiese waterdispenser om die verbruik op te spoor

Haai daar!

'N Paar maande gelede het ek in my kamer gedink oor watter projek ek vir 'n skoolopdrag wil doen. Ek wou iets maak wat my pas en wat my in die toekoms sal baat. Skielik kom my ma die kamer binne en begin kla dat sy nie genoeg water drink nie. Ek het dadelik 'n epifanie gehad. Die idee het by my opgekom om 'n outomatiese waterdispenser te maak (soos in die bioskoop) wat daagliks u waterverbruik volg.

Met 'n Raspberry Pi, 'n paar sensors, 'n pomp en min kennis, het ek probeer om dit so goed as moontlik te maak.

Aan die einde van al die stappe het u 'n werkende waterdispenser wat u waterbak vul en wat verbind word met u Framboos Pi. U kan u waterverbruik nie net op 'n persentasie volg nie, maar u kan ook die temperatuur en watervlak van u waterhouer sien. Uiteindelik kan u u statistieke nagaan. As dit vir u interessant klink, kyk gerus daarna en probeer dit self!

Die GitHub -bewaarplek:

Voorrade

Mikrobeheerders

Framboos Pi 4

Sensors en modules

Ek het 4 sensors gebruik:

2xHC-SR04 Ultrasoniese sensor

Ultrasoniese sensors meet afstand deur ultrasoniese golwe te gebruik. Die sensorhoof gee 'n ultrasoniese golf af en ontvang die golf wat van die teiken af weerkaats word. Ultrasoniese sensors meet die afstand tot die teiken deur die tyd tussen die uitstoot en ontvangs te meet. Ek het twee daarvan gebruik om te kyk of daar 'n bottel naby is en om die afstand tot die water in die tenk te meet.

Gegewensblad

1x DS18B20 Temperatuursensor

Die DS18B20 is 'n 1-draads programmeerbare temperatuursensor van maksimum geïntegreerde. Dit word wyd gebruik om temperatuur in moeilike omgewings te meet, soos in chemiese oplossings, myne of grond, ens. Ek het dit gebruik om die watertemperatuur van die watertenk te meet.

Gegewensblad

1x RC522 RFID -module

Die RC522 is 'n 13.56MHz RFID -module wat gebaseer is op die MFRC522 -beheerder van NXP -halfgeleiers. Die module kan I2C, SPI en UART ondersteun en word gewoonlik met 'n RFID -kaart en sleutelhouer gestuur. Dit word algemeen gebruik in bywoningsisteme en ander persoon/voorwerp -identifikasie -toepassings. In hierdie projek word dit gebruik vir 'n identifikasie-/aanmeldstelsel.

Gegewensblad

En 2 aandrywers:

1x Peristaltiese pomp 12-24V

Ek het 'n peristaltiese pomp gebruik om die water uit die tenk na 'n waterbottel te bring. Die meeste pompe was te stadig, so ek het gekies vir 'n 24V -weergawe wat ek met 'n 24V -kragadapter gebruik.

1x LCD -skerm

Die LCD word gebruik om die IP -adres en belangrike boodskappe te vertoon. 'N Liquid-crystal display (LCD) is 'n platskerm of 'n ander elektronies gemoduleerde optiese toestel wat die ligmodulerende eienskappe van vloeibare kristalle in kombinasie met polarisators gebruik.

Gegewensblad

Omhulsel

Van die omhulsel gepraat, ek het 'n selfdoen gedoen met voorraad van 'n Home -depot (in my geval die Brico in België). Ek het laaghout gebruik wat ek in die regte grootte gesny het. Ek sal in 'n verdere stap praat oor hoe ek my saak gemaak het, maar hier is die dinge wat u nodig het:

  • 3x laaghout planke
  • 1x Klein tregter
  • 1x watertenk (u kan kies watter hoeveelheid u wil hê, ek het 10L gekos)
  • 1x Drupbak

U vind al die materiaal en pryse in die aangehegte stembus.

Stap 1: Koppel alle elektronika aan

Koppel al die elektronika
Koppel al die elektronika
Koppel al die elektronika
Koppel al die elektronika

Noudat ons al die elektronika saamgevat het, is dit tyd om dit aan te sluit. Ek het twee Fritzing -kringe gemaak, een broodbord en een skematiese, om jou te wys hoe en waar al die elektronika verbind moet word. U kan die aflaai -skakel na Fritzing hier vind: https://fritzing.org/download/. Soos voorheen genoem, het ek 'n Raspberry Pi gebruik en 'n RFID -skandeerder, twee ultrasoniese sensors, een temperatuursensor, 'n LCD en 'n peristaltiese pomp vir die water gekoppel.

Ek het die twee stroombane in 'n PDF aangeheg, as u dit van nader wil bekyk.

Stap 2: Die opstel van die Raspberry Pi

Ons sal ons Raspberry Pi gebruik om alles te bestuur en te beheer: backend, frontend en databasis.

'N Framboos Pi werk nie outomaties nie. Ons sal 'n paar stappe moet ondergaan om dit te begin gebruik.

Stap 1: Raspbian

As u 'n splinternuwe Raspberry Pi gebruik, benodig u raspbian. Die aflaai skakel en handleiding kan hier gevind word.

Stap 2: Skryf die prent na SD

Noudat u u Raspbian -beeld het, benodig u 'n sagteware vir beeldskryf (ek beveel win32diskimager aan) om die prentlêer op die SD -kaart te skryf. Die volledige tutoriaal kan hier gevind word.

Stap 3: Meld aan by die Raspberry Pi

Maak "Powershell" oop en tik "ssh [email protected]". As alles reg verloop, vra hulle u 'n wagwoord (standaard wagwoord is altyd framboos). Normaalweg behoort dit u by die Raspberry Pi aan te meld. Nou moet ons ons instellings verander. Tik sudo raspi-config in die terminale en druk enter. Gaan na lokaliseringsopsies> verander tydsone en stel dit in op u tydsone. U moet ook u Wi-Fi-land na u eie ligging verander. Gaan uiteindelik na koppelvlakopsies en aktiveer SPI, I2C en 1-draad. Dit is belangrik om die sensors korrek te gebruik.

Stap 4: Die opstel van die internetverbinding

Ons sal 'n WiFi -netwerk gebruik. U kan u tuisnetwerk byvoeg deur:

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

U moet u Pi herlaai om verbinding te maak. Om te kyk of dit werk, kan u ifconfig gebruik om te kyk of daar 'n IP -adres is.

Stap 5: Die opstel van die webbediener en databasis

Eerstens is dit die beste om die stelsel op te dateer en op te gradeer met die volgende opdragreeks:

  1. sudo apt dist-upgrade-outo-verwyder -y
  2. sudo apt -opgradering
  3. sudo apt -opdatering
  4. sudo apt outomaties verwyder

Sodra dit gedoen is, benodig ons die volgende pakkette vir ons webserver en databasis:

Apache

sudo apt installeer apache2 -y

PHP

sudo apt installeer php

sudo apt installeer phpMyAdmin -y

Moenie vergeet om 'n veilige MySQL -wagwoord in te stel wanneer dit vra om 'n wagwoord in te stel nie.

MariaDB

sudo apt installeer mariadb-server mariadb-client -y

sudo apt installeer php -mysql -y

sudo systemctl herbegin apache2.service

Stap 6: Installeer Python -biblioteke

Vir die backend benodig ons 'n paar biblioteke vir Python. Ons installeer dit met behulp van pip3, want ons gebruik python3.

pip3 installeer mysql-connector-python

pip3 installeer flask-socketio

pip3 installeer fles-kors

pip3 installeer gevent

pip3 installeer gevent-websocket

sudo apt installeer python3 -mysql.connector -y

pip3 installeer mfrc522! (ons benodig dit om van die RFID -skandeerder gebruik te maak)

Stap 7: Voorbereiding van Visual Studio -kode

Om die kode uit te voer, beveel ek aan dat u Visual Studio Code gebruik om u Raspberry Pi aan te sluit. Die aflaai skakel om VSC te installeer kan hier gevind word.

As u nog nie Remote Development geïnstalleer het met SSH nie, kan u die stappe hiervoor vind.

Stap 3: Skep die databasis

Die skep van die databasis
Die skep van die databasis

Ons sal al ons sensordata en gebruikersdata in 'n databasis stoor.

My databasis bestaan uit 5 tabelle:

Toestel

Tafeltoestel het 'n DeviceID, wat verwys na die toestel self. Die DeviceName gee die naam van die toestel, in hierdie geval ultrasoniese sensor, temperatuursensor, … DeviceType gee die tipe toestel (sensor of aktuator).

Geskiedenis

Tabelgeskiedenis bevat al die sensorgeskiedenis, tesame met datum (HistoryDate) is die geskiedenis bygevoeg en die waarde van die oomblik in die geskiedenis. Dit het ook twee Foreign Keys:

  • DeviceID, om 'n spesifieke logboek aan 'n toestel te koppel
  • UserID, om 'n spesifieke gebruiker aan 'n logboek te koppel (dit is omdat ons 'n RFID gebruik, en ons wil die geskiedenislogboek by een spesifieke gebruiker voeg)

Gebruiker

Tabelgebruiker word gebruik om 'n gebruikersaanmeldstelsel met die RFID -skandeerder te skep. Dit bestaan uit 'n bynaam, voornaam, van, wagwoord en RFID (dit is die RFID -nommer van 'n etiket). Elke gebruiker is gekoppel aan 'n houer (watertank) en dra ook die ContainerID as 'n vreemde sleutel.

Houer

Tafelhouer bestaan uit al die verskillende houers. Dit het 'n ID, 'n ContainerLocation (dit kan 'n onderneming, huis of enigiets anders wees). Laastens het dit 'n MaxLevel wat staan vir die maksimum volume wat die houer het.

Instellings

Tabelinstellings het 'n Instellings -ID en volg die DailyGoal van elke gebruiker + die datum waarop die DailyGoal deur die gebruiker bygevoeg is. Dit verduidelik die Foreign Key UserID.

U kan 'n storting van die databasis in my GitHub -bewaarplek onder Database vind.

Stap 4: Die opstel van die agterkant

Daar is nie 'n projek sonder 'n werkende backend nie.

Die agterkant bestaan uit 4 verskillende dinge:

helpers

Die helpers is al die klasse wat gebruik word vir die verskillende sensors en aandrywers. Daar is 'n helper vir die temperatuursensor (DS18B20), vir die ultrasoniese sensors (HCSR05) om die afstand te kan meet en die LCD om boodskappe op die skerm te kan skryf.

bewaarplekke

In die map met bewaarplekke vind u 2 Python -lêers:

  • Database.py, wat 'n hulpmiddel is om rye uit u databasis te haal. Dit maak dit makliker om die databasis uit te voer en te lees.
  • DataRepository.py wat al die SQL -navrae bevat wat gebruik word in die hoofkode (app.py). Dit word gebruik om data uit die databasis te haal, by te werk of te verwyder.

app.py

Dit is die belangrikste backend -kode van die projek. Dit doen die opstelling deur al die penne en modusse te definieer en bevat die kode om die pomp te laat werk, die temperatuur te kry, die gebruiker te kry, ensovoorts. Dit bevat ook die roetes wat gebruik word om data uit die databasis en al die socketio.on's op te haal. Vir elke HTML -bladsy is 'n ander socketio.on om seker te maak dat elke funksie op die regte tyd werk.

config.py

Ons het nog 'n lêer oor: config.py. Dit is die lêer met die konfigurasie -opsies om met u databasis te verbind. Moenie vergeet om u databasisbewyse op te stel nie.

Die backend kan gevind word in my bewaarplek onder Backend.

Stap 5: Die opstel van die frontend

Die opstel van die frontend
Die opstel van die frontend
Die opstel van die frontend
Die opstel van die frontend

Vir die Frontend het ek begin met die ontwerp van hoe my webserver in AdobeXD moet lyk. Ek het gebruik gemaak van die kleure in my logo, wat oranje en 2 verskillende blou skakerings is. Ek het probeer om die ontwerp so eenvoudig as moontlik te hou en 'n waterdruppel gemaak wat die persentasie toon in watter mate u u doel van die dag bereik het.

In my GitHub -bewaarplek vind u my Frontend onder Code> Frontend. Dit is belangrik dat u dit in u /var /html -lêergids van u Raspberry Pi plak om dit toeganklik te maak vanaf die webserver.

Dit bestaan uit 'n paar HTML -lêers wat na die verskillende bladsye lei. U vind ook my screen.css met al die CSS wat u benodig om dit soos my projek te laat lyk. Laastens sal u verskillende JavaScript -lêers onder skrifte hê. Hierdie skrifte kommunikeer met my backend om data van my databasis of backend te wys.

Die agterkant kan gevind word in my bewaarplek onder Frontend.

Stap 6: Skep die omhulsel

Skep die omhulsel
Skep die omhulsel
Skep die omhulsel
Skep die omhulsel
Skep die omhulsel
Skep die omhulsel

As ons oor my saak praat, is daar twee hoofdele:

Buite omhulsel

Ek het die kas van nuuts af gebou. Ek het laaghoutplanke gebruik en dit in die regte groottes gesaag. Ek het al die planke aanmekaar geskroef en gate geboor vir die LCD, die knoppie, die ultrasoniese sensor om vas te stel of daar 'n bottel is en die tregter om die water te versprei. Ek het my omhulsel in verskillende dele verdeel om die water en die elektronika geskei te hou, en ek het 'n kabelbak gebruik om die kabels teen waterlekkasie te beskerm. In die aangehegte video kan u die meeste aspekte van my omhulsel sien en hoe ek dit gemaak het. Ek het ook 'n 3D -knoppie gedruk wat op 'n normale knoppie vasgeplak is. Uiteindelik het ek 'n lekbak gebruik om al die gemorste water op te vang. Ek het ook skarniere gebruik om 'n sypaneel oop en toe te maak om na my elektronika te kyk. U kan altyd 'n tweedehandse dispenser gebruik, of u kan ook ander materiaal gebruik.

Vir die presiese afmetings van my gebou, het ek 'n PDF aangeheg met al die groottes van die plate wat in die kas gebruik is.

Watertenk

Die watertenk was nie 'n maklike taak nie. Ek het 'n watertank met 'n gat aan die onderkant gekry, so ek moes dit plak om die lekkasie te stop. U benodig vier gate: een vir die temperatuursensor, een vir die buis van u pomp. een vir die buis om die tenk weer vol te maak en een vir die ultrasoniese sensor. Vir hierdie laaste een het ek 'n saak daarvoor in 3D gedruk, wat u hier kan vind. Dit gee die sensor meer beskerming teen water. Ek boor toe 'n reghoek in die bokant van die tenk om die sensor op te sit.

Aanbeveel: