Obsah:

Bezkontaktní vodní fontána: 9 kroků (s obrázky)
Bezkontaktní vodní fontána: 9 kroků (s obrázky)

Video: Bezkontaktní vodní fontána: 9 kroků (s obrázky)

Video: Bezkontaktní vodní fontána: 9 kroků (s obrázky)
Video: Istanbul, Turecko. Východ a západ. Velké vydání. 2024, Červenec
Anonim
Bezkontaktní vodní fontána
Bezkontaktní vodní fontána

Na konci prvního ročníku jako student MCT jsem dostal za úkol vytvořit projekt, který bude obsahovat všechny dovednosti, které jsem během let získal z kurzů.

Hledal jsem projekt, který by zkontroloval všechny požadavky stanovené mými učiteli a zároveň by mě bavil. Při hledání předmětu jsem se nemohl ubránit inspiraci Covid-19 (bylo to těsně před vypuknutím celosvětové epidemie.) Vybral jsem si bezkontaktní vodní fontánu/dávkovač, protože by to nabídlo způsob pít vodu, aniž byste se dotkli několika tlačítek, než voda vytéká.

Tento projekt pomocí senzoru vzdálenosti detekuje, zda byl pod vodní výkon umístěn šálek nebo sklenice, fontána pak bude 60 sekund (100 ml / minutu) pokračovat ve výstupu vody. To je konzistentnější, protože zjišťování, zda bylo sklo odtaženo, se ukázalo být příliš obtížným/pomalým úkolem, a proto byl zaveden časovač. Poté, co je vaše sklenice naplněna 100 ml vody, můžete počkat 5 sekund, a pokud je sklenice stále před senzorem vzdálenosti, bude se plnit znovu (to znamená, že mezi naplněním dvou různých položky).

Zásoby

Komponenty

- 1x RaspberryPi (použil jsem 4. verzi, ale mohou fungovat i starší verze)- 1x tranzistor S8050 nebo 1x PN2222 může také fungovat- 1x fotorezistor- 1x HC-SR04 (ultrazvukový senzor vzdálenosti)- 1x RFID-RC522- 3x jiný barevné LED diody (modrá, žlutá, červená)- 1x LCD1602- 1x aktivní bzučák- 1x PCF8574- 1x MCP3008- 1x vodní čerpadlo (bylo použito peristaltické čerpadlo A 12v, odkaz na tuto položku)

- 1x DC napájecí zdroj (12 V, 600 mAh)- 1x napájecí cihla se 3 skvrnami- 3x prkénko (pravděpodobně byste mohli použít méně)- T-cobbler pro RaspberryPi GPIO piny- T-cobbler kabel (pro připojení mezi pi a cobbler)

Použité materiály a nástroje

- Vrták s následujícími vrtáky:

- 4 mm (k předvrtání otvorů pro šrouby) - 15 mm (k vyvrtání otvorů pro snímač vzdálenosti)

- Jakýkoli šroubovák- 30 šroubů o délce 45 mm- 6 šroubů o průměru 20 mm- 2 závěsy pro dveře- Deska z MDF přibližně 130 cm x 80 cm- Pár pilníků

Krok 1: Sestavení obvodu

Sestavení obvodu
Sestavení obvodu
Sestavení obvodu
Sestavení obvodu
Sestavení obvodu
Sestavení obvodu

Pro obvod máme 2 senzory, senzor vzdálenosti a fotorezistor. Senzor vzdálenosti se používá k detekci, zda byl šálek umístěn v dosahu vodní fontány, a volitelně jsem přidal fotoodpor, tento se používá k detekci, zda plášť otevřel někdo, kdo jej otevřít neměl. Kromě toho máme čtečku RFID, kterou lze použít k ověření mechanika, který potřebuje otevřít pouzdro k doplnění vodní nádrže nebo k jinému mechanickému problému.

Pro aktivní prvky máme LCD1602, aktivní bzučák a peristaltické čerpadlo, LCD se používá k zobrazení stavu, jako je -li pouzdro otevřené nebo čerpadlo běží, stejně jako se zobrazí IP adresa zařízení, bzučák je slouží k vydávání alarmujícího zvuku, když je pouzdro otevřeno, aniž by to někdo autorizoval.

Níže jsem přidal prkénko a schematické pohledy na okruh.

Krok 2: Nastavení našeho RaspberryPi

Chcete -li nastavit náš RaspberryPi, stáhneme zobrazovací software z webu Raspberry, pomocí kterého si můžete stáhnout požadovanou verzi Raspbian a vyfotit si SDCARD. Poté, co tento nástroj odvede svou práci, můžete otevřít SDCARD v Průzkumníkovi Windows, uvidíte spouštěcí oddíl vašeho RaspberryPi. Zde najdeme soubor s názvem cmdline.txt (tento soubor neotevírejte v poznámkovém bloku, otevřete jej v programu Notepad ++ nebo jiném IDE). Na konec tohoto souboru přidáme ip = 169.254.10.1, abychom se ujistili, že se můžeme k našemu zařízení připojit přes ethernet (ujistěte se, že na konec souboru nepřidáte žádné ZADÁNÍ, jinak budete mít potíže).

Nyní můžete kartu SDCARD vložit do svého RaspberryPi a spustit, připojit Pi k počítači a pomocí Putty se připojit k Pi přes SSH. K připojení k mému Pi používám následující příkaz místo použití Putty. „ssh [email protected]“může vypršet časový limit, takže buďte trpěliví a počkejte, až se Pi spustí. Po vyzvání k zadání hesla vyplníme výchozí heslo „malina“. Po přihlášení toto heslo určitě změňte, aby kdokoli se zlým úmyslem neměl přístup k vašemu Raspberry Pi.

Nyní nakonfigurujeme náš Pi tak, aby poskytoval potřebné funkce pro náš kód. Pomocí „sudo raspi-config“otevřete konfigurační nabídku a zde přejdeme na Možnosti rozhraní.

Zde přepneme následující možnosti na ZAPNUTO:- SPI-I2C

Při nastavování bezdrátového připojení k internetu na vašem Pi postupujte podle této příručky, poté, co jste to úspěšně provedli, se můžeme dostat k instalaci požadovaných balíčků.

Balíčky: (spusťte příkazy v pořadí, jak jsou zde uvedeny)

Následující informace o získání nejnovějších aktualizací naší aktualizace Pi- sudo apt && apt upgrade -y

Nainstalujte si náš server MySQL a webový server- sudo apt nainstalujte mariadb-server apache2

K nastavení databáze dále v této příručce použiji MySQL Workbench, pokud toto nepoužíváte a dáváte přednost phpmyadminu, můžete jej nainstalovat pomocí následujícího příkazu, můžete libovolně používat libovolného jiného klienta MySQL, pokud jsme schopni správně importovat databázi.- sudo apt install phpmyadmin

Poté, co jste provedli vše výše uvedené, musíme vytvořit uživatele pro naši databázi. K přihlášení na server MySQL použijte „sudo mysql -u root“, zde vytvoříme uživatele s názvem db_admin s příslušným heslem, ponechte toto heslo je uvedeno někde později v pokynech. GRANT VŠECHNY PRIVILEGY NA *. * TO "db_admin"@"%" IDENTIFIKOVANÉ "yourPasswordHere" S MOŽNOSTÍ GRANTU;

Pomocí příkazu "\ q" opustíte terminál MySQL.

Balíčky Pythonu: Než budeme pokračovat, stále musíme nainstalovat některé balíčky pythonu, spusťte níže uvedený příkaz, abyste se ujistili, že je vše k dispozici pro bezchybný zážitek.

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

Stejně jako následující MySQL connect python packagesudo apt install python3 -mysql.connector -y

Pokud vše proběhlo správně, můžete nyní navštívit svůj Pi na webovém prohlížeči s následující adresou

Krok 3: Nastavení backendu

Nastavení backendu
Nastavení backendu

Zde vysvětlím, jak si můžete nastavit backend sami, nejprve si stáhněte rar soubor níže, rozbalte jej do nějakého dočasného adresáře. Připojte se ke svému RaspberryPi pomocí FileZilla nebo WinSCP pomocí následujících přihlašovacích údajů:

IP: 169.254.10.1 Uživatel: piPassword: malina (pokud jste změnili heslo, udělejte to také zde)

Poté můžete pokračovat v přenosu souborů, které jste zrušili, do libovolného adresáře v domovském adresáři uživatele pi. Kvůli jednoduchosti budeme v tomto nastavení předpokládat, že jsme nahráli všechny naše soubory do adresáře dokumentů.

Nechte svůj FTP program otevřený pro další krok!

Nyní znovu otevřete příkazový řádek pomocí připojení SSH, protože budeme muset provést nějaké změny na webovém serveru, aby frontend mohl komunikovat s backendem. Otevřeme výchozí konfigurační soubor Apache2 a mírně ho upravíme: sudo nano /etc/apache2/sites-available/000-default.conf

Do konfiguračního souboru, který jsme právě otevřeli, přidejte pod DocumentRoot následující řádky: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Můžete se podívat na přiložený obrázek pro příklad.

Krok 4: Nastavení frontendu

Před přenosem našich souborů budeme muset něco udělat, než budeme moci začít přenášet naše frontendové soubory. Otevřete příkazový řádek pomocí připojení SSH, které jste vytvořili dříve, a pomocí níže uvedeného příkazu přepněte na uživatele root našeho RaspberryPi: „sudo su -"

Poté můžeme heslo našeho uživatele root změnit pomocí následujícího příkazu: "passwd" To vás vyzve k zadání nového hesla, poté, co to provedete, se můžete přepnout zpět do svého programu FTP a přihlásit se pomocí svých pověření root:

IP: 169.254.10.1 Uživatel: root Heslo:

Stáhněte si níže uvedený soubor rar a rozbalte jej v dočasné složce, můžete tyto soubory přesunout do svého RaspberryPi do následujícího adresáře/var/www/html/, poté, co jste to udělali, můžete navštívit frontend na http:/ /169.254.10.1, zatím nemůžete komunikovat, protože backend ještě neběží, v této příručce vám později ukážu, jak to udělat.

Krok 5: Import databáze pro náš projekt

Import databáze pro náš projekt
Import databáze pro náš projekt
Import databáze pro náš projekt
Import databáze pro náš projekt

Otevřete svůj oblíbený program pro správu serveru MySQL a připojte se ke svému Raspberry Pi pomocí přihlašovacích údajů, které jsme vytvořili v kroku 2.

Stáhněte si výpis databáze níže a importujte jej jako obvykle, pracovní stůl MySQL byste přešli do nabídky Soubor> Otevřít skript SQL a vyberte stažený výpis databáze. Poté stiskněte CTRL + SHIFT + ENTER a měl by být spuštěn skript SQL a struktura databáze by měla být vytvořena.

Níže jsem přidal přihlašovací údaje, které jsem použil pro svůj RaspberryPi, a také několik obrázků struktury databáze, můžete se na to podívat a zkusit získat obecnou představu o tom, jak vše funguje.

Krok 6: Spuštění našeho projektu

Spuštění našeho projektu
Spuštění našeho projektu
Spuštění našeho projektu
Spuštění našeho projektu

Než budeme moci spustit náš projekt, musíme změnit pověření databáze v souboru config.py, pokud jste postupovali přesně podle pokynů v této příručce, pak je najdete pod /home/pi/Documents/Backend/src/config.py zde musíte změnit pověření proměnné db_config, aby odpovídala těm, které jsme pro naši databázi vytvořili dříve. Níže jsem přidal příklad toho, co uvidíte v tomto souboru.

Poté přidáme soubor.service, který tento soubor zajistí, že se náš projekt spustí při spuštění RaspberryPi, ujistěte se, že odpovídajícím způsobem změníte adresář, kam jste nainstalovali soubory backendu. K vytvoření servisního souboru použijte následující příkaz: sudo nano /etc/systemd/system/dispenser.service Tím se vytvoří servisní soubor a zkopírujte do tohoto souboru níže 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

[Instalovat] WantedBy = multi-user.target

Upravte řádek, kde je uvedeno /home/pi/Documents/Backend/index.py na místo, kde jste nainstalovali soubory backendu, pokud to neuděláte správně, projekt nebude správně spuštěn! Níže přidám ukázkový soubor.

Až to uděláte a opustíte textový editor, můžeme službu povolit pomocí následujících příkazů:- sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser

A navíc můžeme spustit: sudo systemctl status dispenserTo ukáže nějaké informace o naší službě, jestli je aktivní nebo ne,…

Krok 7: Případ

Pouzdro
Pouzdro
Pouzdro
Pouzdro
Pouzdro
Pouzdro
Pouzdro
Pouzdro

Gratulujeme, jsme téměř tam, přidám několik obrázků, které přesně ukážou rozměry, které jsem použil pro svůj projekt, použil jsem desky MDF o tloušťce 18 mm, volitelně můžete použít jinou tloušťku. Můj obal může být použit jako vodítko pro návrh vašeho nebo můžete znovu vytvořit to, co jsem vytvořil. (Pokud používáte jinou tloušťku MDF, moje kresby vám již nedovolí vytvořit můj design, určitě jej přizpůsobte!) Panely, které jsem vyrobil:- 2 panely o rozměrech 32 x 42 cm (boční panely)- 1 panel o rozměrech 24 cm od 32 cm (spodní deska)- 2 panely o rozměrech 16 x 24 cm (přední deska, kde zůstává LCD a sousední deska)- 1 panel o rozměrech 28 cm x 24 cm (střední deska při pohledu zepředu)- 1 panel o rozměrech 30 cm x 24 cm (horní deska)

Krok 8: Obdivujte konečný produkt

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

Došli jste na konec a snad se vám nyní podařilo celou věc proměnit ve skutečnost. Pokud jste jen procházející kolemjdoucí, také vás vítám, děkuji vám za přečtení až do posledního kroku!

Do tohoto projektu jsem utratil hodně krve, potu a slz, takže bych ocenil, kdybyste zanechali komentář, jakákoli kritika na jeho zlepšení je vítána!

Krok 9: Problémy

Projekt bych uvedl do současného stavu jako funkční prototyp, který vidí mnohem více vylepšení.

Základ kódu backendu je strukturován tak, aby bylo možné perfektně vytvořit relaci master slave, kde by jedna fontána fungovala jako hlavní frontend a všechny ostatní fontány by tlačily data a změny přes REST api masteru. V kódu jsou také zbytky systému tokenů API, protože to bylo zamýšleno k implementaci, ale později omezeno kvůli časovým omezením.

Nahrál jsem svůj kód na svůj server Gitlab a tam se můžete podívat na kód jako celek:

Doporučuje: