Tartalomjegyzék:
- Kellékek
- 1. lépés: Az áramkör összeszerelése
- 2. lépés: A RaspberryPi beállítása
- 3. lépés: A háttérrendszer beállítása
- 4. lépés: A kezelőfelület beállítása
- 5. lépés: Adatbázis importálása a projektünkhöz
- 6. lépés: A projekt elindítása
- 7. lépés: Az ügy
- 8. lépés: Csodálja meg a végterméket
- 9. lépés: A problémák
Videó: Érintésmentes szökőkút: 9 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Az első évem végén, amikor MCT -hallgató voltam, azt a feladatot kaptam, hogy készítsek egy projektet, amely tartalmazza az összes olyan képességet, amelyet az év során tanfolyamokon szereztem.
Olyan projektet kerestem, amely ellenőrizné a tanáraim által támasztott összes követelményt, és ugyanakkor szórakoztató lenne számomra. Amikor témát kerestem, nem tudtam nem érezni a Covid-19 inspirációját (ez még azelőtt volt, hogy világszerte kitört volna.) Úgy döntöttem, hogy kevesebb érintkezésű szökőkutat/adagolót használok, mivel vizet inni anélkül, hogy megérintene néhány gombot, mielőtt a víz kijön.
Ez a projekt távolságérzékelővel érzékeli, hogy egy csésze vagy pohár került -e a vízkimenet alá, majd a szökőkút 60 másodpercig (100 ml / perc) folytatja a vízkimenetet. Ez következetesebbé teszi a dolgot, mert az üveg elhúzásának észlelése túl nehéznek/lassúnak bizonyult egy feladatnál, ezért került be az időzítő. Miután az üveget megtöltötte 100 ml vízzel, várhat 5 másodpercet, és ha az üveg még mindig a távolságérzékelő előtt van, akkor egy másik időt tölt be (ez azt jelenti, hogy két különböző töltés között 5 másodperc időtúllépés is van) tételek).
Kellékek
Alkatrészek
- 1x RaspberryPi (én a 4. verziót használtam, de a régebbi verziók is működhetnek)- 1x S8050 tranzisztor vagy 1x PN2222 tranzisztor is működhet- 1x fotorezisztor- 1x HC-SR04 (ultrahangos távolságérzékelő)- 1x RFID-RC522- 3x különböző színek LED-ek (kék, sárga, piros)- 1x LCD1602- 1x aktív zümmögő- 1x PCF8574- 1x MCP3008- 1x vízpumpa (12V-os perisztaltikus szivattyút használtak, link erre a tételre)
- 1x egyenáramú tápegység (12v, 600mAh)- 1x tápegység 3 ponttal- 3x kenyérlap (valószínűleg kevesebbet használhat)- T-cobbler a RaspberryPi GPIO csapokhoz- T-cobbler kábel (pi és cobbler közötti csatlakozáshoz)
A felhasznált anyagok és eszközök
- Fúró a következő fúrószárakkal:
- 4 mm (lyukak előfúrásához a csavarokhoz) - 15 mm (lyukak fúrásához a távolságérzékelőhöz)
- Bármilyen csavarhúzó- 30 csavar 45 mm hosszú- 6 csavar 20 mm- 2 csuklópánt az ajtóhoz- Egy MDF lemez, körülbelül 130 cm- 80 cm- Pár fájl
1. lépés: Az áramkör összeszerelése
Az áramkörhöz 2 érzékelőnk van, egy távolságérzékelő és egy fotorezisztor. A távolságérzékelőt annak érzékelésére használják, hogy egy csésze került -e a szökőkút hatótávolságába, és opcionálisan hozzáadtam egy fényellenállást, ezt használják annak érzékelésére, hogy a házat kinyitotta -e valaki, akinek nem szabad kinyitnia. Ezen kívül van egy RFID -olvasónk, amellyel hitelesíthetjük a szerelőt, akinek ki kell nyitnia a burkolatot a víztartály feltöltéséhez, vagy más mechanikai probléma miatt.
Az aktív elemeknél van LCD1602, aktív zümmögő és perisztaltikus szivattyú, az LCD -n megjelenítheti az állapotot, például, ha a tok nyitva van, vagy a szivattyú működik, valamint megjelenik az eszköz IP -címe, a hangjelző riasztó hangot adnak ki, amikor az ügyet úgy nyitották meg, hogy azt senki nem engedélyezte.
Hozzáadtam az alábbi áramkör kenyeretáblát és sematikus nézeteit.
2. lépés: A RaspberryPi beállítása
A RaspberryPi beállításához le kell töltenünk a képalkotó szoftvert a Raspberry webhelyéről, ezzel letöltheti a kívánt Raspbian verziót, és leképezheti az SDCARD kártyát. Az eszköz elvégzése után megnyithatja az SDCARD kártyát a Windows Intézőben, és látni fogja a RaspberryPi rendszerindító partícióját. Itt találunk egy cmdline.txt nevű fájlt (ne nyissa meg ezt a fájlt Jegyzettömbben, nyissa meg Notepad ++ vagy más IDE -ben). A fájl végéhez hozzáadjuk az ip = 169.254.10.1 fájlt, hogy meggyőződhessünk arról, hogy Ethernet -kapcsolaton keresztül tudunk csatlakozni eszközünkhöz (ügyeljen arra, hogy ne adjon meg ENTER -t a fájl végéhez, különben baj lesz).
Most behelyezheti SDCARD -ját a RaspberryPi -be, és újraindíthatja, csatlakoztathatja a Pi -t a számítógépéhez, és a Putty segítségével csatlakozhat a Pi -hez SSH -n keresztül. A Putty használata helyett a következő paranccsal csatlakozom a Pi -hez. "ssh [email protected]" ez időtúllépést okozhat, ezért legyen türelmes, és várja meg, amíg a Pi elindul. Amint jelszót kér, kitöltjük a "málna" alapértelmezett jelszavát. Ne felejtse el megváltoztatni ezt a jelszót bejelentkezés után, hogy megakadályozza, hogy rossz szándékú személyek hozzáférjenek a Raspberry Pi -hez.
Most konfiguráljuk a Pi-t, hogy biztosítsa a kódunkhoz szükséges funkciókat. A "sudo raspi-config" használatával nyissa meg a konfigurációs menüt, és itt lépünk az Interfészbeállítások elemre.
Itt a következő opciókat kapcsoljuk BE:- SPI-I2C
Kövesse ezt az útmutatót a vezeték nélküli internetkapcsolat beállításához a Pi készüléken, miután ezt sikeresen elvégezte, megkezdhetjük a szükséges csomagok telepítését.
Csomagok: (futtassa a parancsokat az itt megadott sorrendben)
Az alábbiak szerint szerezheti be a Pi- sudo apt update && apt upgrade -y legújabb frissítéseit
Telepítse MySQL szerverünket és webszerverünket- sudo apt install mariadb-server apache2
A MySQL Workbench segítségével fogom használni az adatbázist az útmutató későbbi részében, ha nem ezt használja, és inkább a phpmyadmin szolgáltatást szeretné telepíteni a következő paranccsal, akkor szabadon használhat bármely más MySQL klienst is, amíg képes megfelelően importálni az adatbázist.- sudo apt install phpmyadmin
A fentiek elvégzése után létre kell hoznunk egy felhasználót adatbázisunkhoz. A "sudo mysql -u root" használatával jelentkezzen be MySQL szerverére, itt létrehozunk egy db_admin nevű felhasználót a megfelelő jelszóval. ezt a jelszót valahol megjegyezte az utasítások későbbi szakaszában. GRANT MINDEN PRIVILEGES ON * *
A "\ q" paranccsal lépjen ki a MySQL terminálról.
Python csomagok: Továbbra is telepítenünk kell néhány python csomagot, mielőtt folytatnánk, futtassa az alábbi parancsot, hogy megbizonyosodjon arról, hogy minden rendelkezésre áll a hibátlan élmény érdekében.
sudo pip3 install Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev
Valamint a következő MySQL connect python csomagokudo apt telepíteni python3 -mysql.connector -y
Ha minden rendben ment, akkor látogassa meg Pi -jét webböngészőjében a következő címmel:
3. lépés: A háttérrendszer beállítása
Itt elmagyarázom, hogyan állíthatja be saját maga a háttérrendszert, először töltse le alulról a rar fájlt, majd bontsa ki egy ideiglenes könyvtárba. Csatlakozzon RaspberryPi készülékéhez a FileZilla vagy a WinSCP segítségével a következő hitelesítő adatokkal:
IP: 169.254.10.1 Felhasználó: piPassword: málna (ha megváltoztatta a jelszót, itt is megteheti)
Ezután folytathatja a kicsomagolt fájlok átvitelét a pi felhasználó saját könyvtárában található kívánt könyvtárba. Az egyszerűség kedvéért ebben a beállításban feltételezzük, hogy minden fájlunkat feltöltöttük a dokumentumkönyvtárba.
Tartsa nyitva FTP programját a következő lépéshez!
Most nyissa meg újra a parancssort az SSH -kapcsolattal, mert módosítanunk kell a webszervert, hogy a kezelőfelület kommunikálni tudjon a háttérrel. Megnyitjuk az alapértelmezett Apache2 konfigurációs fájlt, és kissé módosítjuk: sudo nano /etc/apache2/sites-available/000-default.conf
Adja hozzá a következő sorokat a DocumentRoot alá a most megnyitott konfigurációs fájlban: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/
Példaként megnézheti a mellékelt képet.
4. lépés: A kezelőfelület beállítása
Mielőtt továbbítanánk a fájljainkat, tennünk kell valamit, mielőtt elkezdhetjük a frontend fájljaink átvitelét. Nyissa meg a parancssort az előzőleg létrehozott SSH kapcsolattal, és használja az alábbi parancsot a RaspberryPi root felhasználójához való váltáshoz: "sudo su -"
Ezt követően a következő paranccsal módosíthatjuk root felhasználónk jelszavát: "passwd" Ez új jelszó megadását kéri, miután ezt megtette, visszatérhet az FTP programjához, és bejelentkezhet a root hitelesítő adataival:
IP: 169.254.10.1 Felhasználó: root Jelszó:
Töltse le alulról a rar fájlt, és bontsa ki egy ideiglenes mappából, és áthelyezheti ezeket a fájlokat a RaspberryPi készülékére a következő könyvtárba:/var/www/html/, miután ezt megtette, a https:// /169.254.10.1, még nem léphet kapcsolatba egymással, mert még nem fut a háttér, ebben az útmutatóban később megmutatom, hogyan kell ezt megtenni.
5. lépés: Adatbázis importálása a projektünkhöz
Nyissa meg kedvenc MySQL szerverkezelő programját, és csatlakozzon Raspberry Pi készülékéhez a 2. lépésben létrehozott hitelesítő adatokkal.
Töltse le az adatbázis kiíratását alulról, és importálja a megszokott módon, a MySQL munkaasztalon menjen a Fájl> SQL parancsfájl megnyitása elemre, és válassza ki a letöltött adatbázis kiíratását. Ezután nyomja le a CTRL + SHIFT + ENTER billentyűkombinációt, és az SQL parancsfájlt le kell futtatni és a szerkezetet az adatbázist létre kell hozni.
Az alábbiakban példaként hozzáadtam a RaspberryPi -hez használt hitelesítő adatokat, valamint néhány képet az adatbázis struktúrájáról.
6. lépés: A projekt elindítása
Mielőtt elindíthatnánk projektünket, meg kell változtatnunk a config.py fájl adatbázis -hitelesítő adatait, ha pontosan követte az utasításokat, ahogy az útmutató is mondta, akkor a /home/pi/Documents/Backend/src/config.py itt meg kell változtatnia a db_config változó hitelesítő adatait, hogy azok megfeleljenek azoknak, amelyeket korábban az adatbázisunkhoz készítettünk. Az alábbiakban példát adtam arra, hogy mit fog látni ebben a fájlban.
Ezt követően hozzáadunk egy.service fájlt, ez a fájl biztosítja, hogy projektünk elinduljon a RaspberryPi elindításakor, és győződjön meg arról, hogy megfelelően módosította a könyvtárat a háttérfájlok telepítési helyéről. Használja a következő parancsot a szervizfájl létrehozásához: sudo nano /etc/systemd/system/dispenser.service Ezzel létrejön egy szolgáltatásfájl, és másolja be az alábbi kódot ebbe a fájlba.
[Unit] Leírás = Water DispenserAfter = mysql.service
[Szolgáltatás] Típus = simpleRestart = mindigRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py
[Telepítés] WantedBy = multi-user.target
Módosítsa a /home/pi/Documents/Backend/index.py sort arra a helyre, ahová a háttérfájlokat telepítette, ha nem ezt teszi megfelelően, a projekt nem indul el megfelelően! Alább hozzáadok egy példa fájlt.
Miután ezt megtette és kilépett a szövegszerkesztőből, a következő parancsokkal engedélyezhetjük a szolgáltatást:- sudo systemctl daemon-reload- sudo systemctl engedélyezze az adagolót- sudo systemctl start adagoló
Kiegészítésként futtathatjuk: sudo systemctl állapotadagolóEz néhány információt jelenít meg a szolgáltatásunk körül, akár aktív, akár nem,…
7. lépés: Az ügy
Gratulálunk, hogy már majdnem ott vagyunk, hozzáadok néhány képet, amelyek pontosan mutatják a projektemhez használt méreteket, 18 mm vastag MDF lemezeket használtam, opcionálisan más vastagságot is használhat. A burkolatom iránymutatásként használható a tied tervezéséhez, vagy újra létrehozhatod, amit készítettem. (Ha más vastagságú MDF-t használ, a rajzaim többé nem teszik lehetővé a tervezésemet, ne felejtse el módosítani!) Az általam készített panelek:- 2 db 32 x 42 cm-es panel (oldalsó panelek)- 1 24 cm-es panel 32 cm (alsó lemez)- 2 panel 16 cm x 24 cm (elülső lemez, ahol az LCD és a szomszédos lemez)- 1 panel 28 cm x 24 cm (középső lemez elölről nézve)- 1 panel 30 cm x 24 cm (felső lemez)
8. lépés: Csodálja meg a végterméket
A végére értél, és mostanra remélhetőleg sikerült megvalósítani az egészet. Ha csak egy járókelő olvassa végig, üdvözöljük, köszönöm, hogy az utolsó lépésig elolvasta!
Sok vért, izzadságot és könnyeket költöttem ebbe a projektbe, ezért megköszönném, ha megjegyzést hagyna, bármilyen kritikát a fejlesztéssel kapcsolatban szívesen fogadok!
9. lépés: A problémák
A projektet jelenlegi állapotába helyezném működő prototípusként, amely sokkal több fejlesztést láthat.
A háttérrendszer kódbázisa úgy van felépítve, hogy a master -slave reláció tökéletesen létrejöhessen, ahol az egyik szökőkút a fő frontendként fog működni, és az összes többi forrás az adatokat és a változásokat a mester REST api fölé tolja. Az API token rendszer maradványai is találhatók a kódban, mivel ezt a megvalósításra szánták, de az időbeli korlátozások miatt később levágták.
Feltöltöttem a kódomat a Gitlab szerverre, és ott megnézheti a kód egészét:
Ajánlott:
Intelligens érintésmentes kapcsoló: 8 lépés (képekkel)
Intelligens érintésmentes kapcsoló: A koronavírus terjedésének csökkentése érdekében alapvető fontosságú a társadalmi távolságtartás és a biztonságos egészségügyi gyakorlatok, például a fertőtlenítőszerek használata a nyilvános környezet, például csapok, kapcsolók stb. Azonnali szükség van tehát az innovációra
Táncoló szökőkút: Arduino MSGEQ7 spektrumanalizátorral: 8 lépés
Táncoló szökőkút: Arduino MSGEQ7 spektrumanalizátorral: Nagyon érdekes az audiojel fogadása és vizuális vagy mechanikai reakcióvá alakítása. Ebben a projektben egy Arduino Mega -t fogunk használni, hogy csatlakozzunk az MSGEQ7 spektrumelemzőhöz, amely felveszi a bemeneti audiojelet és sávot ad elő
Szökőkút ébresztőóra: 3 lépés
Szökőkút ébresztőóra: Ebben a projektben bemutatom, hogyan lehet egy közös ébresztőórát időzítővé alakítani. Ahogy a régi CD-ROM motorját fogjuk használni az egyszerű szökőkút riasztás elindításához
Mood Light Bluetooth szökőkút: 5 lépés
Mood Light Bluetooth vízi szökőkút: Rossz műanyag dobozt és néhány üveg kupakot használunk vissza egy intelligens szökőkútba, amely véletlenszerűen vagy hangulatunk szerint megváltoztatja a színét. A hangulat színétől függően megváltoztathatjuk a fény színét okostelefonunkról Bluetooth -kapcsolaton keresztül
Szökőkút: 5 lépés
Szökőkút: Ez az utasítás arról szól, hogy nagyon kevés anyagból készítsünk vízfounatint, amelyek nagy része a ház körül található. Szüksége lesz: VízszivattyúraA 9 Voltos elemreAkkumulátorcsatlakozóFóliaKartonAnyagGlueOllóAMűanyag tartály valamilyen