Obsah:

Bezkontaktná vodná fontána: 9 krokov (s obrázkami)
Bezkontaktná vodná fontána: 9 krokov (s obrázkami)

Video: Bezkontaktná vodná fontána: 9 krokov (s obrázkami)

Video: Bezkontaktná vodná fontána: 9 krokov (s obrázkami)
Video: Log Hollow Fountain | AD97755 | Assembly 2024, Júl
Anonim
Bezkontaktná vodná fontána
Bezkontaktná vodná fontána

Na konci prvého ročníka ako študent MCT som mal za úlohu vytvoriť projekt, ktorý bude obsahovať všetky zručnosti, ktoré som získal z kurzov počas celého roka.

Hľadal som projekt, ktorý by preveril všetky požiadavky kladené mojimi učiteľmi a zároveň by ma bavil. Pri hľadaní predmetu som sa nemohol ubrániť inšpirácii na Covid-19 (bolo to tesne pred vypuknutím celosvetového ohniska.) Vybral som si bezkontaktnú fontánu/dávkovač vody, pretože ponúka spôsob, ako pitnú vodu bez toho, aby ste sa dotkli niektorých tlačidiel, než z nej voda vyjde.

Tento projekt pomocou senzora vzdialenosti zisťuje, či bola pod výstup vody umiestnená šálka alebo pohár. Fontána potom bude po dobu 60 sekúnd (100 ml / min) pokračovať vo výstupe vody. Je to kvôli tomu konzistentnejšie, pretože zisťovanie, či bolo sklo odtiahnuté, sa ukázalo byť príliš náročným/pomalým riešením úlohy, a preto bol zavedený časovač. Potom, čo je váš pohár naplnený 100 ml vody, môžete počkať 5 sekúnd a ak je pohár stále pred senzorom vzdialenosti, začne sa plniť inokedy (to znamená, že medzi naplnením dvoch rôznych položky).

Zásoby

Komponenty

- 1x RaspberryPi (použil som 4. verziu, ale staršie verzie môžu tiež fungovať)- 1x tranzistor S8050 alebo 1x tranzistor PN2222 môže tiež fungovať- 1x fotorezistor- 1x HC-SR04 (ultrazvukový snímač vzdialenosti)- 1x RFID-RC522- 3x iný farebné LED diódy (modrá, žltá, červená)- 1x LCD1602- 1x aktívny bzučiak- 1x PCF8574- 1x MCP3008- 1x vodné čerpadlo (bolo použité peristaltické čerpadlo 12 V, odkaz na túto položku)

- 1x DC napájací zdroj (12v, 600mAh)- 1x napájací tehál s 3 bodmi- 3x nepájivé dosky (pravdepodobne by ste mohli použiť menej)- T-cobbler pre RaspberryPi GPIO piny- T-cobbler kábel (na pripojenie medzi pi a cobbler)

Použité materiály a nástroje

- Vŕtačka s nasledujúcimi vrtákmi:

- 4 mm (na predvŕtanie otvorov pre skrutky) - 15 mm (na vyvŕtanie otvorov pre snímač vzdialenosti)

- Akýkoľvek skrutkovač- 30 skrutiek s dĺžkou 45 mm- 6 skrutiek s priemerom 20 mm- 2 pánty na dvere- Doska z MDF s rozmermi približne 130 x 80 cm- Pár pilníkov

Krok 1: Zostavenie obvodu

Zostavenie obvodu
Zostavenie obvodu
Zostavenie obvodu
Zostavenie obvodu
Zostavenie obvodu
Zostavenie obvodu

Pre obvod máme 2 snímače, snímač vzdialenosti a fotorezistor. Senzor vzdialenosti sa používa na detekciu umiestnenia šálky do dosahu vodnej fontány a voliteľne som pridal fotoodpor, tento sa používa na zistenie, či plášť otvoril každý, kto ho otvoriť nemal. Navyše máme čítačku RFID, ktorú je možné použiť na autentifikáciu mechanika, ktorý potrebuje otvoriť puzdro na doplnenie vodnej nádrže alebo na iný mechanický problém.

Pre aktívne prvky máme LCD1602, aktívny bzučiak a peristaltické čerpadlo, LCD sa používa na zobrazenie stavu, ako keby bol kryt otvorený alebo pumpa bežala, ako aj IP adresa zariadenia sa zobrazí, bzučiak je používa sa na vydávanie alarmujúceho zvuku po otvorení puzdra bez toho, aby to niekto schválil.

Nižšie som pridal nepájivé pole a schematické pohľady na okruh.

Krok 2: Nastavenie nášho RaspberryPi

Ak chcete nastaviť náš RaspberryPi, stiahneme si zobrazovací softvér z webu Raspberry, pomocou ktorého si môžete stiahnuť požadovanú verziu Raspbian a vytvoriť si obrázok pre svoju SDCARD. Akonáhle tento nástroj odvedie svoju prácu, môžete otvoriť kartu SDCARD v programe Windows Prieskumník a uvidíte zavádzaciu oblasť vášho RaspberryPi. Tu nájdeme súbor s názvom cmdline.txt (tento súbor neotvárajte v programe Poznámkový blok, otvorte ho v programe Poznámkový blok ++ alebo v inom IDE). Na koniec tohto súboru pridáme ip = 169.254.10.1, aby sme sa ubezpečili, že sa môžeme k nášmu zariadeniu pripojiť prostredníctvom ethernetu (uistite sa, že na koniec súboru nepridáte žiadne ZÁPISY, inak budete mať problémy).

Teraz môžete vložiť kartu SDCARD do svojho RaspberryPi a spustiť ju, pripojiť Pi k počítaču a pomocou Putty sa k svojmu Pi pripojiť pomocou SSH. Nasledujúci príkaz používam na pripojenie k svojmu Pi namiesto použitia Putty. „ssh [email protected]“môže mať časový limit, takže buďte trpezliví a počkajte, kým sa Pi spustí. Po výzve na zadanie hesla vyplníme predvolené heslo „malina“. Po prihlásení si toto heslo zmeňte, aby ktokoľvek so zlým úmyslom nemal prístup k vášmu Raspberry Pi.

Teraz nakonfigurujeme naše Pi tak, aby poskytovalo potrebné funkcie pre náš kód. Na otvorenie konfiguračnej ponuky použite príkaz „sudo raspi-config“a tu prejdeme na Možnosti rozhrania.

Tu zapneme nasledujúce možnosti ZAPNUTÉ:- SPI-I2C

Podľa tohto sprievodcu nastavte bezdrôtové pripojenie na internet na vašom Pi, potom čo to úspešne urobíte, môžeme pristúpiť k inštalácii našich požadovaných balíkov.

Balíky: (spustite príkazy v poradí, ako sú tu uvedené)

Nasledujúce informácie o najnovších aktualizáciách našich aktualizácií Pi- sudo && apt -y

Nainštalujte si náš server MySQL a webový server- sudo apt nainštalujte mariadb-server apache2

Na nastavenie databázy ďalej v tejto príručke použijem MySQL Workbench, ak to nepoužívate a dávate prednosť phpmyadminu, môžete to nainštalovať pomocou nasledujúceho príkazu, môžete ľubovoľne používať akéhokoľvek iného klienta MySQL, pokiaľ Sme schopní správne importovať databázu.- sudo apt install phpmyadmin

Potom, čo ste urobili všetky vyššie uvedené, musíme vytvoriť používateľa pre našu databázu. Na prihlásenie sa na server MySQL použite príkaz „sudo mysql -u root“. Tu vytvoríme používateľa s názvom db_admin s príslušným heslom, ponechajte toto heslo je niekde zapísané na neskôr v pokynoch. GRANTUJTE VŠETKY PRIVILEGY NA *. * TO "db_admin"@"%" IDENTIFIKOVANÉ "yourPasswordHere" S MOŽNOSŤOU GRANTU;

Na opustenie terminálu MySQL použite príkaz "\ q".

Balíky Python: Pred pokračovaním musíme nainštalovať niektoré balíky pythonu. Spustite príkaz uvedený nižšie, aby ste sa presvedčili, že je tam všetko pre dokonalý zážitok.

sudo pip3 install Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

Rovnako ako nasledujúce MySQL connect python packagesudo apt install python3 -mysql.connector -y

Ak všetko prebehlo správne, teraz môžete navštíviť svoj Pi na svojom webovom prehliadači s nasledujúcou adresou

Krok 3: Nastavenie backendu

Nastavenie backendu
Nastavenie backendu

Tu vysvetlím, ako si môžete sami nastaviť backend, najskôr stiahnite súbor rar nižšie, rozbaľte ho do nejakého dočasného adresára. Pripojte sa k svojmu RaspberryPi pomocou FileZilla alebo WinSCP pomocou nasledujúcich poverení:

IP: 169.254.10.1Uživatel: piPassword: malina (ak ste zmenili heslo, urobte to aj tu)

Potom môžete pokračovať v prenose súborov, ktoré ste zrušiliarrar, do ľubovoľného adresára v domácom adresári používateľa pi. Kvôli jednoduchosti budeme v tomto nastavení predpokladať, že sme nahrali všetky naše súbory do adresára dokumentov.

Nechajte svoj program FTP otvorený pre ďalší krok!

Teraz znova otvorte príkazový riadok pomocou svojho pripojenia SSH, pretože budeme musieť urobiť niekoľko zmien na webovom serveri, aby frontend mohol komunikovať so serverom. Otvoríme predvolený konfiguračný súbor Apache2 a mierne ho upravíme: sudo nano /etc/apache2/sites-available/000-default.conf

Do konfiguračného súboru, ktorý sme práve otvorili, pridajte nižšie uvedené riadky DocumentRoot: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Môžete sa pozrieť na priložený obrázok ako príklad.

Krok 4: Nastavenie frontendu

Pred prenosom našich súborov budeme musieť niečo urobiť, aby sme mohli začať prenášať naše frontendové súbory. Otvorte príkazový riadok pomocou predtým vytvoreného pripojenia SSH a pomocou príkazu nižšie sa prepnite na koreňového používateľa nášho RaspberryPi: „sudo su -"

Potom môžeme zmeniť heslo nášho užívateľa root nasledujúcim príkazom: "passwd". To vás požiada o zadanie nového hesla. Potom, čo ste to urobili, sa môžete prepnúť späť do svojho programu FTP a prihlásiť sa pomocou svojich oprávnení root:

IP: 169.254.10.1 Užívateľ: root Heslo:

Stiahnite si nižšie uvedený súbor rar a zrušte jeho rozbalenie v dočasnom priečinku. Tieto súbory môžete presunúť do svojho RaspberryPi do nasledujúceho adresára/var/www/html/, potom čo môžete urobiť, môžete navštíviť frontend na http:/ /169.254.10.1, zatiaľ nemôžete interagovať, pretože backend ešte nebeží, neskôr vám v tejto príručke ukážem, ako to urobiť.

Krok 5: Import databázy pre náš projekt

Import databázy pre náš projekt
Import databázy pre náš projekt
Import databázy pre náš projekt
Import databázy pre náš projekt

Otvorte svoj obľúbený program na správu servera MySQL a pripojte sa k svojmu Raspberry Pi pomocou poverení, ktoré sme vytvorili v kroku 2.

Stiahnite si databázový výpis zospodu a importujte ho ako obvykle, pracovný stôl MySQL by ste navštívili v ponuke Súbor> Otvoriť skript SQL a vyberte stiahnutý databázový výpis. Potom stlačte kombináciu klávesov CTRL + SHIFT + ENTER a mal by sa spustiť skript SQL a štruktúra pretože databáza by mala byť vytvorená.

Prihlasovacie údaje, ktoré som použil pre svoj RaspberryPi, som pridal ako príklad nižšie a niekoľko obrázkov štruktúry databázy, môžete sa na to pozrieť a pokúsiť sa získať všeobecnú predstavu o tom, ako všetko funguje.

Krok 6: Spustenie nášho projektu

Spustenie nášho projektu
Spustenie nášho projektu
Spustenie nášho projektu
Spustenie nášho projektu

Pred spustením nášho projektu musíme zmeniť poverenia databázy v súbore config.py, ak ste postupovali podľa pokynov presne podľa tejto príručky, nájdete ich pod /home/pi/Documents/Backend/src/config.py tu musíte zmeniť poverenia premennej db_config, aby sa zhodovali s povereniami, ktoré sme pre našu databázu vytvorili skôr. Nižšie som pridal príklad toho, čo uvidíte v tomto súbore.

Potom pridáme súbor.service, ktorý zaistí, že sa náš projekt spustí pri štarte RaspberryPi, uistite sa, že zmeníte priečinok zodpovedajúcim spôsobom, kam ste nainštalovali súbory backendu. Na vytvorenie súboru služby použite nasledujúci príkaz: sudo nano /etc/systemd/system/dispenser.serviceToto vytvorí súbor služby a skopíruje do tohto súboru nižšie uvedený kód.

[Unit] Description = Water DispenserAfter = mysql.service

[Služba] Typ = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Inštalovať] WantedBy = multi-user.target

Upravte riadok, kde je napísané /home/pi/Documents/Backend/index.py, na miesto, kde ste nainštalovali súbory backendu, ak to neurobíte správne, projekt sa nespustí správne! Nižšie pridám ukážkový súbor.

Potom, čo ste to urobili a opustili textový editor, môžeme službu povoliť pomocou nasledujúcich príkazov:- sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser

A ako doplnok môžeme spustiť: sudo systemctl status dispenserTo ukáže niekoľko informácií o našej službe, či je alebo nie je aktívna,…

Krok 7: Prípad

Púzdro
Púzdro
Púzdro
Púzdro
Púzdro
Púzdro
Púzdro
Púzdro

Blahoželáme, už sme skoro tam. Pridám niekoľko obrázkov, ktoré budú presne ukazovať rozmery, ktoré som použil pre svoj projekt. Použil som MDF dosky s hrúbkou 18 mm, voliteľne môžete použiť inú hrúbku. Moje puzdro môže byť použité ako vodítko pri navrhovaní vášho alebo môžete znova vytvoriť to, čo som vyrobil. (Ak používate inú hrúbku MDF, moje kresby vám už nedovolia vytvoriť môj návrh, nezabudnite ho prispôsobiť!) Panely, ktoré som vyrobil:- 2 panely s rozmermi 32 cm x 42 cm (bočné panely)- 1 panel s rozmermi 24 cm od 32 cm (spodná doska)- 2 panely s rozmermi 16 cm x 24 cm (predná doska, kde zostáva LCD a susedná doska)- 1 panel s rozmermi 28 cm x 24 cm (stredná doska je viditeľná spredu)- 1 panel s rozmermi 30 cm x 24 cm (horná doska)

Krok 8: Obdivujte konečný produkt

Obdivujte konečný produkt
Obdivujte konečný produkt
Obdivujte konečný produkt
Obdivujte konečný produkt

Dostali ste sa na koniec a dúfajme, že sa vám teraz podarilo celú vec uskutočniť. Ak ste len okoloidúci, ktorí vás čítajú, vitajte, ďakujem vám za prečítanie až do posledného kroku!

Do tohto projektu som minul veľa krvi, potu a sĺz, takže by som ocenil, keby ste zanechali komentár, akákoľvek kritika na jeho zlepšenie je vítaná!

Krok 9: Problémy

Projekt by som uviedol do súčasného stavu ako funkčný prototyp, ktorý uvidí oveľa viac vylepšení.

Kódexová základňa backendu je štruktúrovaná tak, že je možné perfektne vytvoriť vzťah master -slave, kde by jedna fontána fungovala ako hlavný frontend a všetky ostatné fontány by tlačili údaje a zmeny nad REST API rozhrania master. V kóde sú tiež zvyšky systému tokenov API, pretože tento bol zamýšľaný na implementáciu, ale kvôli časovým obmedzeniam bol neskôr prerušený.

Nahral som svoj kód na svoj server Gitlab a tam sa môžete pozrieť na kód ako celok:

Odporúča: