Turinys:

Automatinis vandens dozatorius suvartojimo stebėjimui: 6 žingsniai
Automatinis vandens dozatorius suvartojimo stebėjimui: 6 žingsniai

Video: Automatinis vandens dozatorius suvartojimo stebėjimui: 6 žingsniai

Video: Automatinis vandens dozatorius suvartojimo stebėjimui: 6 žingsniai
Video: Automatinis bekontaktis skysto muilo dozatorius Zyle 2024, Lapkritis
Anonim
Automatinis vandens dozatorius, skirtas stebėti suvartojimą
Automatinis vandens dozatorius, skirtas stebėti suvartojimą
Automatinis vandens dozatorius, skirtas stebėti suvartojimą
Automatinis vandens dozatorius, skirtas stebėti suvartojimą

Sveiki!

Prieš porą mėnesių aš savo kambaryje galvojau, kokį projektą norėčiau atlikti mokyklai. Norėjau sukurti tai, kas man tiktų ir būtų naudinga ateityje. Staiga į kambarį įėjo mama ir pradėjo skųstis, kad negeria pakankamai vandens. Iškart turėjau epifaniją. Man kilo idėja pasigaminti automatinį vandens dozatorių (pvz., Kino teatre), kuris seka jūsų vandens suvartojimą kasdien.

Turėdamas „Raspberry Pi“, kelis jutiklius, siurblį ir mažai žinių, stengiausi tai padaryti kuo geriau.

Baigę visus veiksmus, turėsite veikiantį vandens dozatorių, kuris užpildys jūsų vandens buteliuką ir sujungs jūsų „Raspberry Pi“ir sąveikaus su juo. Galėsite ne tik sekti savo vandens suvartojimą procentais, bet ir peržiūrėti vandens talpos temperatūrą ir vandens lygį. Galiausiai galėsite patikrinti savo statistiką. Jei tai jums atrodo įdomu, būtinai patikrinkite ir išbandykite patys!

„GitHub“saugykla:

Prekės

Mikrovaldikliai

Raspberry Pi 4

Jutikliai ir moduliai

Naudojau 4 jutiklius:

2xHC-SR04 Ultragarsinis jutiklis

Ultragarsiniai jutikliai matuoja atstumą ultragarso bangomis. Jutiklio galvutė skleidžia ultragarso bangą ir priima bangą, atsispindinčią nuo taikinio. Ultragarso jutikliai matuoja atstumą iki taikinio, matuojant laiką tarp spinduliavimo ir priėmimo. Naudojau du iš jų, norėdamas patikrinti, ar netoliese yra butelis, ir išmatuoti atstumą iki vandens rezervuare.

Duomenų lapas

1x DS18B20 temperatūros jutiklis

DS18B20 yra 1 laidų programuojamas temperatūros jutiklis iš maksimaliai integruoto. Jis plačiai naudojamas temperatūrai matuoti sudėtingoje aplinkoje, pavyzdžiui, cheminiuose tirpaluose, kasyklose ar dirvožemyje ir tt. Aš jį naudoju vandens bako vandens temperatūrai matuoti.

Duomenų lapas

1x RC522 RFID modulis

RC522 yra 13,56 MHz RFID modulis, pagrįstas NXP puslaidininkių valdikliu MFRC522. Modulis gali palaikyti I2C, SPI ir UART ir paprastai tiekiamas su RFID kortele ir raktų pakabuku. Jis dažniausiai naudojamas lankomumo sistemose ir kitose asmens/objekto identifikavimo programose. Šiame projekte jis naudojamas identifikavimo/prisijungimo sistemai.

Duomenų lapas

Ir 2 pavaros:

1x 12-24V peristaltinis siurblys

Aš naudoju peristaltinį siurblį, kad vanduo iš rezervuaro patektų į vandens butelį. Dauguma siurblių buvo per lėti, todėl pasirinkau 24 V versiją, kurią maitinu 24 V maitinimo adapteriu.

1x LCD ekranas

Skystųjų kristalų ekranas naudojamas IP adresui ir svarbiems pranešimams rodyti. Skystųjų kristalų ekranas (LCD) yra plokščiaekranis ekranas arba kitas elektroniniu būdu moduliuojamas optinis įtaisas, kuriame naudojamos skystųjų kristalų ir poliarizatorių šviesą moduliuojančios savybės.

Duomenų lapas

Korpusas

Kalbėdamas apie korpusą, aš pasidariau „pasidaryk pats“su reikmenimis iš namų sandėlio (mano atveju - „Brico“Belgijoje). Aš naudojau fanerą, kurią supjaustiau tinkamo dydžio. Aš kalbėsiu apie tai, kaip aš padariau savo bylą kitame žingsnyje, tačiau štai ko jums reikės:

  • 3x faneros lentos
  • 1x mažas piltuvas
  • 1x vandens bakas (galite pasirinkti norimą kiekį, aš išėjau 10L)
  • 1x lašinimo padėklas

Visas medžiagas ir kainas rasite pridedamame BOM.

1 žingsnis: Prijunkite visą elektroniką

Visos elektronikos prijungimas
Visos elektronikos prijungimas
Visos elektronikos prijungimas
Visos elektronikos prijungimas

Dabar, kai mes apibendrinome visą elektroniką, laikas jas prijungti. Aš padariau dvi „Fritzing“grandines, vieną duonos lentą ir vieną schemą, kad parodytumėte, kaip ir kur turi būti prijungta visa elektronika. „Fritzing“atsisiuntimo nuorodą rasite čia: https://fritzing.org/download/. Kaip minėta anksčiau, aš naudoju „Raspberry Pi“ir prijungiau vandeniui RFID skaitytuvą, du ultragarsinius jutiklius, vieną temperatūros jutiklį, skystųjų kristalų ekraną ir peristaltinį siurblį.

Pridėjau dvi grandines į PDF, jei norite atidžiau pažvelgti.

2 veiksmas: nustatykite „Raspberry Pi“

Mes naudosime „Raspberry Pi“, kad paleistume ir valdytume viską: vidinę, priekinę ir duomenų bazę.

„Raspberry Pi“neveikia automatiškai. Norėdami pradėti naudoti, turėsime atlikti tam tikrus veiksmus.

1 žingsnis: Raspbian

Jei naudojate visiškai naują Raspberry Pi, jums reikės raspbian. Atsisiuntimo nuorodą ir pamoką rasite čia.

2 veiksmas: įrašykite vaizdą į SD

Dabar, kai turite „Raspbian“vaizdą, jums reikės vaizdo įrašymo programinės įrangos (rekomenduoju „win32diskimager“), kad galėtumėte įrašyti vaizdo failą į SD kortelę. Visą pamoką rasite čia.

3 žingsnis: Prisijunkite prie „Raspberry Pi“

Atidarykite „Powershell“ir įveskite „ssh [email protected]“. Jei viskas bus gerai, jie paprašys jūsų slaptažodžio (numatytasis slaptažodis visada yra avietinis). Paprastai tai turėtų prisijungti prie „Raspberry Pi“. Dabar turime šiek tiek pakeisti savo nustatymus. Terminale įveskite sudo raspi-config ir paspauskite enter. Eikite į lokalizacijos parinktis> pakeiskite laiko juostą ir nustatykite ją pagal savo laiko juostą. Taip pat turėtumėte pakeisti savo „Wi-Fi“šalį į savo vietą. Galiausiai eikite į sąsajos parinktis ir įgalinkite SPI, I2C ir 1 laidą. Tai bus svarbu teisingai naudoti jutiklius.

4 veiksmas: interneto ryšio nustatymas

Mes naudosime „WiFi“tinklą. Galite pridėti savo namų tinklą:

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

Norėdami užmegzti ryšį, turėsite iš naujo paleisti „Pi“. Norėdami patikrinti, ar jis veikė, galite naudoti ifconfig, kad patikrintumėte, ar yra IP adresas.

5 veiksmas: nustatykite žiniatinklio serverį ir duomenų bazę

Pirma, geriausia atnaujinti ir atnaujinti sistemą tokia komandų seka:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt atnaujinimas
  3. sudo apt atnaujinimas
  4. sudo apt autoremove

Kai tai bus padaryta, mums reikės šių žiniatinklio serverio ir duomenų bazės paketų:

Apache

sudo apt įdiegti apache2 -y

PHP

sudo apt įdiegti php

sudo apt įdiegti phpMyAdmin -y

Nepamirškite nustatyti saugaus „MySQL“slaptažodžio, kai jis prašo nustatyti slaptažodį.

MariaDB

sudo apt įdiegti mariadb-server mariadb-client -y

sudo apt įdiegti php -mysql -y

sudo systemctl iš naujo paleiskite apache2.service

6 veiksmas: „Python“bibliotekų diegimas

Užpakalinei sistemai mums reikės kelių „Python“bibliotekų. Įdiegsime juos naudodami „pip3“, nes naudojame „python3“.

pip3 įdiegti „mysql-connector-python“

pip3 įdiegti kolbą-lizdą

pip3 sumontuokite kolbas

pip3 įdiegimo geventas

pip3 įdiegti gevent-websocket

sudo apt įdiegti python3 -mysql.connector -y

pip3 įdiegti mfrc522! (mums to reikia norint naudoti RFID skaitytuvą)

7 veiksmas: „Visual Studio“kodo paruošimas

Norėdami paleisti kodą, rekomenduoju naudoti „Visual Studio Code“, kad prijungtumėte „Raspberry Pi“prie. Atsisiuntimo nuorodą VSC įdiegti rasite čia.

Jei dar neįdiegėte nuotolinio kūrimo naudojant SSH, čia rasite veiksmus, kaip tai padaryti.

3 žingsnis: sukurkite duomenų bazę

Duomenų bazės kūrimas
Duomenų bazės kūrimas

Visus jutiklių duomenis ir vartotojo duomenis išsaugosime duomenų bazėje.

Mano duomenų bazę sudaro 5 lentelės:

Įrenginys

Lentelės įrenginys turi įrenginio ID, kuris nurodo patį įrenginį. Įrenginio pavadinimas nurodo įrenginio pavadinimą, šiuo atveju ultragarso jutiklį, temperatūros jutiklį,… „DeviceType“nurodo įrenginio tipą (jutiklį arba pavarą).

Istorija

Lentelės istorijoje yra visa jutiklių istorija kartu su de data (HistoryDate) istorija buvo pridėta ir istorijos momento vertė. Jame taip pat yra du užsienio raktai:

  • DeviceID, norėdami susieti konkretų žurnalą su įrenginiu
  • UserID, norėdami susieti konkretų vartotoją su žurnalu (taip yra todėl, kad naudojame RFID ir norime pridėti istorijos žurnalą vienam konkrečiam vartotojui)

Vartotojas

Lentelės naudotojas naudojamas sukurti vartotojo prisijungimo sistemą naudojant RFID skaitytuvą. Jį sudaro slapyvardis, vardas, pavardė, slaptažodis ir RFID (tai žymos RFID numeris). Kiekvienas vartotojas yra susietas su konteineriu (vandens rezervuaru) ir taip pat turi „ContainerID“kaip užsienio raktą.

Konteineris

Stalo konteinerį sudaro visi skirtingi konteineriai. Jis turi ID, „ContainerLocation“(tai gali būti įmonė, namai ar bet kas kitas). Galiausiai, jis turi „MaxLevel“, kuris reiškia maksimalų konteinerio tūrį.

Nustatymai

Lentelės nustatymai turi nustatymų ID ir seka kiekvieno vartotojo „DailyGoal“+ datą, kurią vartotojas pridėjo „DailyGoal“. Tai paaiškina užsienio rakto vartotojo ID.

Duomenų bazės sąvartyną galima rasti mano „GitHub“saugykloje, esančioje duomenų bazėje.

4 veiksmas: „Backend“sąranka

Nėra projekto be veikiančios vidinės programos.

Užpakalinę sistemą sudaro 4 skirtingi dalykai:

pagalbininkai

Pagalbininkai yra visos klasės, naudojamos skirtingiems jutikliams ir pavaroms. Yra pagalbininkas, skirtas temperatūros jutikliui (DS18B20), ultragarso jutikliams (HCSR05), kad būtų galima išmatuoti atstumą, o skystųjų kristalų ekrane būtų galima rašyti pranešimus.

saugyklos

Saugyklų aplanke rasite 2 „Python“failus:

  • Database.py - tai pagalbinė priemonė, padedanti ištraukti eilutes iš jūsų duomenų bazės. Tai palengvina duomenų bazės vykdymą ir skaitymą.
  • DataRepository.py, kuriame yra visos SQL užklausos, kurios naudojamos pagrindiniame kode (app.py). Jie naudojami duomenims gauti, atnaujinti arba ištrinti iš duomenų bazės.

app.py

Tai yra pagrindinis projekto užpakalinis kodas. Jis atlieka sąranką, apibrėždamas visus kaiščius ir režimus, ir jame yra kodas, leidžiantis siurbliui veikti, temperatūrai gauti, vartotojui gauti ir pan. Jame taip pat yra maršrutai, naudojami duomenims iš duomenų bazės gauti ir visiems „socketio.on“. Kiekvienam HTML puslapiui yra skirtingas lizdas.on, kad įsitikintumėte, jog kiekviena funkcija veikia tinkamu laiku.

config.py

Mums liko vienas failas: config.py. Tai failas su konfigūravimo galimybėmis prisijungti prie jūsų duomenų bazės. Nepamirškite nustatyti savo duomenų bazės prisijungimo duomenų.

Užpakalinę programą galima rasti mano saugykloje, esančioje „Backend“.

5 veiksmas: sąsajos sąranka

Priekinės sistemos sąranka
Priekinės sistemos sąranka
Priekinės sistemos sąranka
Priekinės sistemos sąranka

Kalbant apie „Frontend“, pradėjau kurti dizainą, kaip mano tinklalapio serveris turėtų atrodyti „AdobeXD“. Aš panaudojau savo logotipo spalvas: oranžinę ir 2 skirtingus mėlynos spalvos atspalvius. Stengiausi, kad dizainas būtų kuo paprastesnis, ir sukūriau vandens lašelį, rodantį procentą, kiek pasiekėte savo dienos tikslą.

Mano „GitHub“saugykloje rasite mano sąsają skiltyje „Kodas“> „Frontend“. Svarbu, kad įklijuotumėte tai į savo /var /html „Raspberry Pi“aplanką, kad jis būtų prieinamas iš žiniatinklio serverio.

Jį sudaro keli HTML failai, nukreipiantys į skirtingus puslapius. Taip pat rasite mano screen.css su visais CSS, kurių jums prireiks, kad jis atrodytų kaip mano projektas. Galiausiai, pagal scenarijus turėsite skirtingus „JavaScript“failus. Šie scenarijai bendrauja su mano vidine programa, kad būtų rodomi duomenys iš mano duomenų bazės arba vidinės programos.

Užpakalinę programą galima rasti mano saugykloje, esančioje „Frontend“.

6 žingsnis: korpuso sukūrimas

Korpuso kūrimas
Korpuso kūrimas
Korpuso kūrimas
Korpuso kūrimas
Korpuso kūrimas
Korpuso kūrimas

Jei mes kalbame apie mano atvejį, tai yra dvi pagrindinės dalys:

Išorinis korpusas

Aš sukūriau dėklą nuo nulio. Naudojau faneros lentas ir jas pjoviau tinkamo dydžio. Aš susukau visas lentas ir išgręžiau skylutes skystųjų kristalų ekranui, mygtukui, ultragarso jutikliui, kad nustatyčiau, ar yra vandens buteliukas, ir piltuvą, kad paskirstytų vandenį. Aš suskirstiau savo dėklą į skirtingus skyrius, kad vanduo ir elektronika būtų atskirti, ir naudoju kabelių dėklą, kad apsaugočiau kabelius nuo vandens nutekėjimo. Pridedamame vaizdo įraše galite pamatyti daugumą mano korpuso aspektų ir tai, kaip aš tai padariau. Taip pat 3D atspausdinau mygtuką, kuris yra priklijuotas prie įprasto mygtuko. Galiausiai aš panaudojau lašinimo padėklą, kad sulaikyčiau visą išsiliejusį vandenį. Aš taip pat naudojau vyriai, kad galėčiau atidaryti ir uždaryti šoninį skydelį, kad galėčiau pažvelgti į savo elektroniką. Visada galite naudoti dėvėtą dozatorių arba naudoti kitas medžiagas.

Norėdami tiksliai išmatuoti savo pastatytą medžiagą, pridedu PDF failą su visų dydžių plokštelėmis, naudojamomis byloje.

Vandens rezervuaras

Vandens bakas nebuvo lengvas darbas. Gavau vandens rezervuarą, kurio apačioje yra skylė, todėl, norėdamas sustabdyti nuotėkį, turėjau jį užklijuoti juostele. Jums reikės keturių skylių: vienos temperatūros jutikliui, kitos - siurblio vamzdžiams. vienas skirtas vamzdžiams papildyti baką, o kitas - ultragarsiniam jutikliui. Paskutinį kartą aš 3D atspausdinau jai dėklą, kurį rasite čia. Tai suteikia jutikliui didesnę apsaugą nuo vandens. Tada aš išgręžiau stačiakampį bako viršuje, kad atlaikyčiau jutiklį.

Rekomenduojamas: