Turinys:
- Prekės
- 1 žingsnis: grandinės surinkimas
- 2 žingsnis: „RaspberryPi“nustatymas
- 3 veiksmas: „Backend“sąranka
- 4 žingsnis: sąsajos sąranka
- 5 veiksmas: mūsų projekto duomenų bazės importavimas
- 6 žingsnis: pradėkite mūsų projektą
- 7 žingsnis: atvejis
- 8 žingsnis: Pasigrožėkite galutiniu produktu
- 9 žingsnis: problemos
Video: Bekontaktis vandens fontanas: 9 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Pirmųjų studijų metų, kaip MCT studentas, pabaigoje man buvo pavesta sukurti projektą, kuriame būtų visi įgūdžiai, kuriuos išmokau per visus kursus.
Aš ieškojau projekto, kuris patikrintų visus mano mokytojų keliamus reikalavimus ir tuo pačiu man būtų smagu. Ieškodamas temos negalėjau jaustis įkvėptas „Covid-19“(tai buvo dar prieš prasidedant pasauliniam protrūkiui.) Aš pasirinkau kontaktinį mažiau vandens fontaną/dozatorių, nes tai būtų būdas gerti vandenį, neliesdami kai kurių mygtukų, kol vanduo neišeis.
Šis projektas naudoja atstumo jutiklį, kad nustatytų, ar po vandens išleidimu buvo padėtas puodelis ar stiklas, tada fontanas 60 sekundžių (100 ml / min.) Pradės tiekti vandenį. Tai daroma nuosekliau, nes aptikti, ar stiklas buvo atitrauktas, buvo per sunku/lėta užduotis, todėl buvo įdiegtas laikmatis. Kai jūsų taurė bus pripildyta 100 ml vandens, galite palaukti 5 sekundes, o jei stiklas vis dar yra prieš atstumo jutiklį, jis užpildys kitą kartą (tai reiškia, kad tarp dviejų skirtingų užpildymo taip pat yra 5 sekundžių pertrauka) daiktai).
Prekės
Komponentai
- 1x RaspberryPi (aš naudojau ketvirtąją versiją, bet gali veikti ir senesnės versijos)- 1x S8050 tranzistorius arba 1x PN2222 tranzistorius taip pat gali veikti- 1x fotorezistorius- 1x HC-SR04 (ultragarsinis atstumo jutiklis)- 1x RFID-RC522- 3x skirtingas spalvų šviesos diodai (mėlyna, geltona, raudona)- 1x LCD1602- 1x Active Buzzer- 1x PCF8574- 1x MCP3008- 1x vandens siurblys (buvo naudojamas 12v peristaltinis siurblys, nuoroda į šį elementą)
1x nuolatinės srovės maitinimo šaltinis (12v, 600mAh)
Naudotos medžiagos ir įrankiai
- gręžtuvas su šiais grąžtais:
- 4 mm (iš anksto gręžti varžtų skyles) - 15 mm (gręžti skyles atstumo jutikliui)
- Bet kuris atsuktuvas- 30 varžtų 45 mm ilgio- 6 varžtai po 20 mm- 2 vyriai durims- MDF plokštė maždaug 130 cm x 80 cm- pora failų
1 žingsnis: grandinės surinkimas
Grandinei turime 2 jutiklius, atstumo jutiklį ir fotorezistorių. Atstumo jutiklis naudojamas aptikti, ar vandens fontano diapazone buvo įdėtas puodelis, ir pasirinktinai pridėjau fotorezistorių, kuris naudojamas aptikti, ar korpusą atidarė kas nors, kas neturėtų jo atidaryti. Be to, mes turime RFID skaitytuvą, kuris gali būti naudojamas autentifikuoti mechaniką, kuriam reikia atidaryti dėklą, kad užpildytų vandens rezervuarą, arba dėl kitų mechaninių problemų.
Aktyviems elementams mes turime LCD1602, aktyvų garso signalą ir peristaltinį siurblį, LCD naudojamas būsenai rodyti, pvz., Jei korpusas atidarytas arba siurblys veikia, taip pat bus rodomas įrenginio IP adresas. skleidžia nerimą keliantį garsą, kai atvejis buvo atidarytas, kai kas nors neįgaliotas.
Aš pridėjau duonos lentą ir schemos vaizdus žemiau.
2 žingsnis: „RaspberryPi“nustatymas
Norėdami sukonfigūruoti „RaspberryPi“, atsisiųsime vaizdo gavimo programinę įrangą iš „Raspberry“svetainės, čia galėsite atsisiųsti norimą „Raspbian“versiją ir sukurti savo SDCARD vaizdą. Kai šis įrankis atliks savo darbą, galite atidaryti SDCARD „Windows Explorer“, kad pamatytumėte „RaspberryPi“įkrovos skaidinį. Čia rasite failą cmdline.txt (neatidarykite šio failo užrašų knygelėje, atidarykite jį naudodami „Notepad ++“ar bet kurią kitą IDE). Šio failo pabaigoje pridėsime „ip = 169.254.10.1“, kad įsitikintume, ar galime prisijungti prie savo įrenginio per eternetą (įsitikinkite, kad failo pabaigoje nepridėsite jokių ENTERS, kitaip turėsite problemų).
Dabar galite įdėti SDCARD į „RaspberryPi“ir paleisti, prijungti „Pi“prie kompiuterio ir naudoti „Putty“, kad prisijungtumėte prie „Pi“per SSH. Aš naudoju šią komandą, kad prisijungčiau prie „Pi“, o ne naudoju „Putty“. „ssh [email protected]“gali baigtis skirtasis laikas, todėl būkite kantrūs ir palaukite, kol „Pi“įsijungs. Kai būsite paraginti įvesti slaptažodį, užpildysime numatytąjį „aviečių“slaptažodį. Prisijungę būtinai pakeiskite šį slaptažodį, kad niekas, turintis blogų ketinimų, negalėtų pasiekti jūsų „Raspberry Pi“.
Dabar sukonfigūruosime savo „Pi“, kad užtikrintų reikiamą mūsų kodo funkcionalumą. Naudokite „sudo raspi-config“, kad atidarytumėte konfigūracijos meniu, ir čia mes eisime į sąsajos parinktis.
Čia įjungsime šias parinktis:- SPI-I2C
Vykdykite šį vadovą, kad nustatytumėte belaidį interneto ryšį savo „Pi“, kai tai sėkmingai atliksime, galėsime įdiegti reikiamus paketus.
Paketai: (paleiskite komandas tokia tvarka, kokia nurodyta čia)
Norėdami gauti naujausius mūsų Pi- sudo apt update && apt upgrade -y atnaujinimus, atlikite šiuos veiksmus
Įdiekite mūsų „MySQL“serverį ir žiniatinklio serverį- „sudo apt install mariadb-server apapa2“
Vėliau šiame vadove naudosiu „MySQL Workbench“, kad sukonfigūruosiu duomenų bazę, jei to nenaudojate ir pageidaujate „phpmyadmin“, galite tai įdiegti naudodami šią komandą, galite laisvai naudotis bet kuriuo kitu „MySQL“klientu. sugebės tinkamai importuoti duomenų bazę.- sudo apt install phpmyadmin
Atlikę visus aukščiau išvardintus veiksmus, turime sukurti savo duomenų bazės vartotoją. Norėdami prisijungti prie „MySQL“serverio, naudokite „sudo mysql -u root“, čia sukursime vartotoją, pavadintą db_admin su atitinkamu slaptažodžiu. šis slaptažodis kažkur pažymėtas vėliau instrukcijose. GRANT VISAS PRIVILIEGIJAS ĮJUNGTA *. * Į "db_admin"@"%" IDENTIFICED by "yourPassword here" SU GRANT OPTION;
Norėdami išeiti iš MySQL terminalo, naudokite komandą „\ q“.
„Python“paketai: prieš tęsdami vis tiek turime įdiegti kai kuriuos „python“paketus, paleiskite žemiau pateiktą komandą, kad įsitikintumėte, jog viskas yra nepriekaištinga.
sudo pip3 install Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev
Taip pat kaip ir šie „MySQL connect python“paketaiudo apt įdiegti python3 -mysql.connector -y
Jei viskas klostėsi teisingai, dabar galite apsilankyti „Pi“žiniatinklio naršyklėje šiuo adresu:
3 veiksmas: „Backend“sąranka
Čia aš paaiškinsiu, kaip galite patys sukonfigūruoti „backend“, pirmiausia atsisiųskite rar failą iš apačios, išardykite jį į tam tikrą laikiną katalogą. Prisijunkite prie „RaspberryPi“naudodami „FileZilla“arba „WinSCP“naudodami šiuos kredencialus:
IP: 169.254.10.1 Vartotojas: piPassword: avietė (jei pakeitėte slaptažodį, darykite tai ir čia)
Tada galite tęsti perkeltų failų perkėlimą į bet kurį norimą katalogą pi vartotojo namų kataloge. Kad būtų paprasčiau, atlikdami šią sąranką manysime, kad visus failus įkėlėme į dokumentų katalogą.
Atidarykite savo FTP programą kitam žingsniui!
Dabar vėl atidarykite komandų eilutę naudodami SSH ryšį, nes turėsime atlikti tam tikrus pakeitimus žiniatinklio serveryje, kad priekinė dalis galėtų bendrauti su užpakaline dalimi. Mes atidarysime numatytąjį „Apache2“konfigūracijos failą ir šiek tiek jį pakeisime: sudo nano /etc/apache2/sites-available/000-default.conf
Prie „DocumentRoot“pridėkite šias eilutes ką tik atidarytame konfigūracijos faile: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/
Kaip pavyzdį galite pažvelgti į pridedamą paveikslėlį.
4 žingsnis: sąsajos sąranka
Prieš perkeldami failus turėsime ką nors padaryti, kad galėtume perduoti savo priekinius failus. Atidarykite savo komandų eilutę naudodami SSH ryšį, kurį sukūrėte anksčiau, ir naudokite žemiau esančią komandą, kad pereitumėte prie pagrindinio mūsų RaspberryPi vartotojo: "sudo su -"
Po to mes galime pakeisti savo pagrindinio vartotojo slaptažodį naudodami šią komandą: "passwd" Tai paprašys įvesti naują slaptažodį, kai tai padarysite, galėsite grįžti prie savo FTP programos ir prisijungti naudodami savo pagrindinius duomenis:
IP: 169.254.10.1 Vartotojas: root Slaptažodis:
Atsisiųskite rar failą iš apačios ir išardykite jį į laikiną aplanką, galite perkelti šiuos failus į „RaspberryPi“į šį katalogą/var/www/html/, kai tai padarysite, galite apsilankyti priekinėje svetainėje http:/ /169.254.10.1, jūs dar negalite bendrauti, nes vidinė sistema dar neveikia, vėliau šiame vadove parodysiu, kaip tai padaryti.
5 veiksmas: mūsų projekto duomenų bazės importavimas
Atidarykite savo mėgstamą „MySQL“serverio valdymo programą ir prisijunkite prie „Raspberry Pi“naudodami kredencialus, kuriuos sukūrėme atlikdami 2 veiksmą.
Atsisiųskite duomenų bazės išvestį iš apačios ir importuokite ją kaip įprastai, „MySQL“darbastalis eikite į Failas> Atidaryti SQL scenarijų ir pasirinkite atsisiųstą duomenų bazės iškrovą. Tada paspauskite CTRL + SHIFT + ENTER ir SQL scenarijus turėtų būti paleistas ir struktūra reikia sukurti duomenų bazę.
Žemiau kaip pavyzdį pridėjau „RaspberryPi“naudojamus kredencialus, taip pat keletą duomenų bazės struktūros nuotraukų. Galite į tai pažvelgti ir pabandyti susidaryti bendrą idėją, kaip viskas veikia.
6 žingsnis: pradėkite mūsų projektą
Prieš pradėdami savo projektą, turime pakeisti failo config.py duomenų bazės kredencialus, jei tiksliai vykdėte instrukcijas, kaip nurodyta šiame vadove, tai rasite adresu /home/pi/Documents/Backend/src/config.py čia reikia pakeisti kintamojo db_config kredencialus, kad jie atitiktų tuos, kuriuos sukūrėme anksčiau mūsų duomenų bazei. Žemiau pridėjau pavyzdį, ką pamatysite šiame faile.
Po to pridėsime.service failą, šis failas užtikrins, kad mūsų projektas prasidėtų paleidus „RaspberryPi“, būtinai pakeiskite katalogą, kuriame įdiegėte galinius failus. Naudodami šią komandą sukurkite paslaugos failą: sudo nano /etc/systemd/system/dispenser.serviceTai sukurs paslaugų failą ir nukopijuos žemiau esantį kodą į šį failą.
[Vienetas] Aprašymas = Vandens dozatoriusAfter = mysql.service
[Paslauga] Tipas = simpleRestart = visadaRestartSec = 1 Vartotojas = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py
[Įdiegti] WantedBy = multi-user.target
Pakeiskite eilutę, kurioje rašoma /home/pi/Documents/Backend/index.py, kad įdiegtumėte galinius failus, jei to nepadarysite teisingai, projektas nebus pradėtas tinkamai! Žemiau pridėsiu failo pavyzdį.
Kai tai padarysite ir išeisite iš teksto rengyklės, galėsime įjungti paslaugą šiomis komandomis:- sudo systemctl daemon-reload- sudo systemctl įgalinti dozatorių- sudo systemctl paleisti dozatorių
Ir kaip papildomą įrankį galime paleisti: sudo systemctl status dispenserTai parodys tam tikrą informaciją apie mūsų paslaugą, ar ji aktyvi, ar ne …
7 žingsnis: atvejis
Sveikiname, mes beveik pasiekėme. Pridėsiu keletą nuotraukų, kurios tiksliai parodys mano projektui naudotus matmenis, aš naudoju 18 mm storio MDF plokštes, pasirinktinai galite naudoti kitokio storio. Mano korpusas gali būti naudojamas kaip gairė kuriant jūsų, arba galite atkurti tai, ką padariau. (Jei naudojate kitokio storio MDF, mano piešiniai neleis jums kurti mano dizaino, būtinai jį pritaikykite!) Mano pagamintos plokštės:- 2 plokštės po 32 cm x 42 cm (šoninės plokštės)- 1 plokštė po 24 cm 32 cm (apatinė plokštė)- 2 plokštės po 16 cm ir 24 cm (priekinė plokštė, kurioje yra skystųjų kristalų ekranas ir gretima plokštė)- 1 plokštė, kurios matmenys yra 28 x 24 cm (vidurinė plokštė žiūrint iš priekio)- 1 plokštė 30 cm iki 24 cm (viršutinė plokštė)
8 žingsnis: Pasigrožėkite galutiniu produktu
Jūs pasiekėte pabaigą ir dabar, tikiuosi, pavyko visa tai paversti realybe. Jei esate tik praeivis, skaitantis, taip pat laukiame, dėkoju, kad perskaitėte iki paskutinio žingsnio!
Šiam projektui praleidau daug kraujo, prakaito ir ašarų, todėl būčiau dėkingas, jei paliksite komentarą, bet kokia kritika dėl jo tobulinimo yra laukiama!
9 žingsnis: problemos
Norėčiau, kad projektas dabartinėje būsenoje būtų veikiantis prototipas, kuris gali pamatyti daug daugiau patobulinimų.
Užpakalinės programos kodo bazė yra sukonstruota taip, kad būtų galima puikiai susieti pagrindinį vergą, kur vienas fontanas veiktų kaip pagrindinis priekinis skydas, o visi kiti fontanai stumtų duomenis ir pakeitimus per pagrindinio kompiuterio REST api. Kode taip pat yra API žetonų sistemos likučių, nes tai buvo numatyta įgyvendinti, tačiau dėl laiko apribojimų vėliau iškirpti.
Įkėliau savo kodą į savo „Gitlab“serverį ir ten galite peržiūrėti visą kodą:
Rekomenduojamas:
Realaus laiko šulinio vandens temperatūra, laidumas ir vandens lygio matuoklis: 6 žingsniai (su nuotraukomis)
Realaus laiko šulinio vandens temperatūros, laidumo ir vandens lygio matuoklis: šiose instrukcijose aprašoma, kaip sukurti nebrangų, realaus laiko vandens skaitiklį, skirtą stebėti temperatūrą, elektros laidumą (EC) ir vandens lygį iškastuose šuliniuose. Skaitiklis skirtas pakabinti iškasto šulinio viduje, matuoti vandens temperatūrą, EB ir
Bekontaktis IR termometras: 8 žingsniai (su nuotraukomis)
Bekontaktis IR termometras: mano vietinis sveikatos departamentas susisiekė su manimi, nes jiems reikėjo būdo kasdien stebėti savo darbuotojo sveikatos kūno temperatūrą per „Covid-19“krizę 2020 m. Įprastų IR termometrų lentynoje pradėjo trūkti
Vandens gėrimo aliarmo sistema /vandens įsiurbimo monitorius: 6 žingsniai
Vandens gėrimo aliarmo sistema /vandens suvartojimo monitorius: kasdien turėtume gerti pakankamai vandens, kad būtume sveiki. Taip pat yra daug pacientų, kuriems nurodoma kasdien gerti tam tikrą vandens kiekį. Bet, deja, beveik kasdien praleidome tvarkaraštį. Taigi projektuoju
„Mood Light“„Bluetooth“vandens fontanas: 5 žingsniai
„Mood Light Bluetooth“vandens fontanas: mes netinkamai naudosime seną plastikinę dėžutę ir kai kuriuos buteliukų dangtelius į išmanųjį vandens fontaną, kuris atsitiktinai arba pagal mūsų nuotaiką keičia spalvą. Mes galime pakeisti šviesos spalvą pagal savo nuotaiką iš savo išmaniojo telefono per „Bluetooth“ryšį
„Arduino“vandens lygio nustatymo metodai naudojant ultragarso jutiklį ir „Funduino“vandens jutiklį: 4 žingsniai
Vandens lygio nustatymo „Arduino“metodai naudojant ultragarso jutiklį ir „Funduino“vandens jutiklį: Šiame projekte parodysiu, kaip sukurti nebrangų vandens detektorių dviem būdais: 1. Ultragarsinis jutiklis (HC-SR04) .2. Funduino vandens jutiklis