Tartalomjegyzék:
- 1. lépés: Szükséges szoftver és hardver
- 2. lépés: Kódok (Vivado)
- 3. lépés: Az összetartozás megértése (VHDL -komponensek vázlatai)
- 4. lépés: Kód (Arduino)
- 5. lépés: Hogyan illeszkednek össze összetevőink
- 6. lépés: demonstráció
- 7. lépés: Ideje kipróbálni
Videó: Mozgásérzékelő/számlálóvezérelt fények: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Ez a projekt a Digital Design tanfolyam utolsó projektjeként jött létre a Cal Poly -ban, San Luis Obispo -ban (CPE 133).
Miért tesszük ezt? Szeretnénk segíteni a világ természeti erőforrásainak megőrzésében. Projektünk az energiatakarékosságra összpontosít. Több villamos energia megtakarításával meg tudjuk őrizni a villamos energia előállításához használt természeti erőforrásokat. Ahogy elkezdjük 2018 -at, a természeti erőforrásokat hihetetlen mértékben emésztik fel. Szeretnénk tudatában lenni környezetünkre gyakorolt hatásunknak, és részt venni a természeti erőforrások megőrzésében. Az elektronika többféle módon is megvalósítható az energiatakarékosság érdekében, ami a környezetet és a gazdasági állapotunkat is segíti.*Ez a modell a rendelkezésünkre álló alkatrészek felhasználásával készült.
Mi volt az inspirációnk? Az emberek gyakran elfelejtik kikapcsolni az ünnepi fényeket, és energiát pazaroltak azzal, hogy éjszakára bekapcsolva hagyták őket. Valójában ez a projekt energiát takarít meg, mert az „ünnepi fények” csak akkor világítanak, ha emberek vannak a közelben, és így energiát takarítanak meg, ha senki nincs a közelben. Ezenkívül időzítőt akartunk tervezni, hogy a lámpák adott idő után teljesen kialudjanak, hogy ne kapcsoljanak be például hajnali 3 órakor észlelt mozgás miatt.
Hogyan használhatná ezt a kialakítást? Ez a kialakítás megvalósítható mindenféle lámpához, legyen az dekoratív, praktikus vagy mindkettő. Ha azt szeretné, hogy például az asztali lámpája egyszerre csak 6 órán keresztül működjön. A számlálót 21 600 másodpercre kell állítani (6 óra x 3, 600 másodperc/óra). Amíg a számláló aktívan növekszik, a mozgásérzékelő irányítja a fényt. Így minden alkalommal, amikor az idő alatt kikapcsol, csak le kell lengetnie a kezét a mozgásérzékelő előtt, és újra bekapcsol. Ha elalszik az asztalánál, és 7 órával később felébred, a mozgása nem kapcsolja be.
1. lépés: Szükséges szoftver és hardver
Szoftver:
- A Vivado 2016.2 (vagy újabb verzió) itt található
- Az Arduino IDE 1.8.3 (vagy újabb verzió) itt található
Hardver:
- 1 Basys 3 tábla
- 1 Arduino Uno
- 2 Kenyeretábla
- 1 HC-SR04 ultrahangos hatótávolság érzékelő
- 9 Férfi-férfi vezeték
- 1 LED
- 1 100Ω ellenállás
2. lépés: Kódok (Vivado)
Véges állapotú gép (lásd a fenti állapotdiagramot):
A LED véges állapotú gépet igényelt. A LED -eknek csak két be- és kikapcsolási állapota van. Csak két bemenet vezérli a LED állapotát, a számláló és az érzékelő. A LED csak akkor világíthat, ha az érzékelő mozgást észlel, és amikor a számláló nullától harminc másodpercig számol. Minden más esetben a LED kialszik.
Fájl neve: LEDDES
Számláló:
A számláló lehetővé teszi, hogy korlátozzuk azt az időt, amely alatt a mozgásérzékelő aktiválni tudja a LED -et. Értéke a Basys 3 Board hét szegmenses kijelzőjén jelenik meg egy forráskódon („sseg_dec”) keresztül. Amikor a Reset kapcsoló le van állítva (érték: '0'), a számláló minden másodpercben növekszik 0 -ról 30 -ra. Amikor eléri a 30 -at, lefagy ezen a számon. Nem indul újra 0 -ról, amíg a Reset kapcsolót 1 -re és 1 -re nem állítja vissza. Amikor a Reset visszaáll a „0” -ra, a számláló 0 -ról 30 -ra újraindul. Ez a megvalósítás egy órajel használatát is igényli, kódját az alábbiakban adjuk meg ("clk_div2").
Fájl neve: FinalCounter
SZOLGÁLTATOTT FÁJLOK:
Hét szegmenses kijelző:
Ez a kód lehetővé teszi a hét szegmenses kijelzőn a tizedes értékek megjelenítését. Az egyik almodul dekódolóként működik egy 8 bites bináris bemenet és egy 4 bites bináris kódolású decimális között. A másik felosztja az órajelet, hogy bizonyos sebességgel frissítse az értékét.
Fájl neve: sseg_dec
Órajel:
Ez a kód lehetővé teszi, hogy a számláló 1 másodperces lépésekben növekedjen. A bemeneti órajel frekvenciáját lassabb frekvenciára osztja fel. Alkalmazkodtunk ahhoz, hogy 1 másodperces időszakot biztosítsunk, ha a max_count: integer: = (3000000)”konstansot„ állandó max_count: integer: = (50000000)”értékre változtatjuk.
Fájlnév: clk_div2
Feltett fájlok: sseg_dec, clk_div2 *Ezeket a forrásfájlokat Bryan Mealy professzor biztosította.
3. lépés: Az összetartozás megértése (VHDL -komponensek vázlatai)
A fő fájl ("MainProjectDES") tartalmazza az összes korábban tárgyalt alfájlt. A fenti módon kapcsolódnak egymáshoz. A különböző komponensek porttérképek segítségével kapcsolódnak egymáshoz, hogy jelet küldjenek az egyik elemről a másikra.
Amint észrevette, a FinalCounter 5 bites kimenetet biztosít, míg az sseg_dec 8 bites bemenetet igényel. Ennek kompenzálására a két komponenst összekötő jelet úgy állítottuk be, hogy "000" kezdődjön, és hozzáadjuk a számláló 5 bites kimenetét. Így 8 bites bemenetet biztosít.
Korlátok:
Ahhoz, hogy ezeket a kódokat fussuk a Basys 3 táblán, kényszerfájlra volt szükség, amely minden jelre megmondja, merre kell menni, és hogyan kell csatlakoztatni az alkatrészeket.
4. lépés: Kód (Arduino)
Beprogramoztuk az Arduino Uno -t, hogy a mozgásérzékelő segítségével érzékelje a mozgást, és olyan kimenetet biztosítson, amely jelzi a LED világítását. Ezenkívül az érzékelő mozgásérzékeléséhez futó hurkok szükségesek, amelyek folyamatosan keresik a távolság változását. Lényegében egy időzítőre van szükség, amely egyidejűleg fut, hogy „magas” jelet adjon ki, hogy a LED világíthasson, míg az időzítőt újra kell állítani, ha új mozgást észlel, amit a tudáskör alapján szinte lehetetlen megvalósítani a Vivado -n osztályból. Ezenkívül Arduino-t használtunk, mert nem lenne kivitelezhető a HC-SR04 használata a Basys 3 kártyával, mivel az alaplap csak 3,3 V-ot táplál, míg az érzékelő 5 V-os tápegységet igényel. Az észlelő mozgás megvalósításához ez a tényleges kódolás, szemben a CAD -vel a VHDL -ben.
Az érzékelő beépített impulzusos funkcióját használtuk az érzékelő által eredetileg kibocsátott hang és az objektum ütése közben visszapattanó hang közötti idő lekérésére. Ezután a hangsebességet és az időintervallumot használjuk a tárgy és az érzékelő közötti távolság kiszámításához. Ebből tároljuk az aktuális távolságot, és nyomon követjük. 150 ms -onként ellenőrizzük a távolságot. Az elapsedmil könyvtárat is használtuk egy belső időzítő futtatására az arduino -n belül, hogy nyomon kövessük az eltelt időt. Ha mozgásnak megfelelő távolságváltozást észlelünk, az időzítő nullázódik, és 3 másodpercig világít. Amikor az érzékelő újabb mozgást észlel, az időzítő 0 -ra áll vissza, és a LED jelzőfénye "magas" lesz a következő 3 másodpercben. Az alábbiakban csatoltuk az Arduino kód másolatát.
5. lépés: Hogyan illeszkednek össze összetevőink
Amint a "Basys3: Pmod Pin-out Diagram*" és az Arduino Uno Board fotóján látható, kiemeltük és felcímkéztük a használt portokat.
1. A LED és a Basys 3 tábla
A LED sorba van kötve a 100Ω ellenállással. -A fehér vezeték összeköti az ellenállást a Basys 3 tábla PWR csapjával. -A sárga vezeték a LED -et a Basys 3 kártya H1 -es csatlakozójához köti.
2. A mozgásérzékelő és az Arduino Uno
-A narancssárga vezeték összeköti a mozgásérzékelő Vcc-jét (teljesítményét) az Arduino Uno kártya 5V-os érintkezőjével. a mozgásérzékelőt az Arduino Uno kártya 9. érintkezőjéhez.
[Az általunk használt vezetékek túl rövidek voltak az alkatrészek eléréséhez, ezért össze voltak kötve]
3. A Basys 3 Board és az Arduino Uno
A sárga huzal összeköti a Basys 3 tábla A14 -es érintkezőjét az Arduino Uno kártya 6 -os érintkezőjével.
*Ez az ábra a Digilent "Basys 3 ™ FPGA Board Reference Manual" -ból származik, amely itt található.
6. lépés: demonstráció
7. lépés: Ideje kipróbálni
Gratulálunk! Elértük mozgásérzékelő és számlálóvezérelt fényprojektünk végét! Köszönjük, hogy elolvasta az Instructables bejegyzésünket. Itt az ideje, hogy megpróbálja saját maga felépíteni ezt a projektet. Ha minden lépést gondosan követ, akkor olyan mozgásérzékelővel és számlálóval vezérelt lámpával kell rendelkeznie, amely hasonló a miénkhez! Sok sikert kívánunk a projekt megvalósításához, és reméljük, hogy ez hozzájárulhat a villamos energia és a természeti erőforrások megtakarításához!
Ajánlott:
A mozgásérzékelő riasztása: 5 lépés
A mozgásérzékelő riasztása: Mindig ellenőrzi, hogy ki áll az ajtóban? Ez a tökéletes elem az Ön számára. Mindig kíváncsi voltam, hogy vannak -e emberek az ajtómon kívül anélkül, hogy tudnám. Létrehoztam ezt a mozgásérzékelő riasztást LED -es fényekkel, amelyek jelzik
Hordozható mozgásérzékelő: 4 lépés
Hordozható mozgásérzékelő: Helló, készítettem egy hordozható akkumulátorral működő mozgásérzékelőt, amelyet szeretnék megosztani veletek. Amire szüksége lesz: Arduino Uno Keyes mozgásérzékelő Vezetékek LED -ek (piros, zöld kék)
Mozgásérzékelő Arduino Halloween tök: 4 lépés
Mozgásérzékelő Arduino Halloween sütőtök: Ennek az utasításnak az volt a célja, hogy olcsó és egyszerű módszert hozzon létre Halloween -dekoráció elkészítéséhez otthon minden előzetes készség vagy bármilyen díszes eszköz nélkül. Az internetről könnyen beszerezhető elemek használatával Ön is elkészítheti saját egyszerű és személyre szabott H
Interaktív udvari fények, sétányi fények: 3 lépés
Interaktív udvari fények, sétányfények: Valamilyen interaktív udvari lámpát akartam építeni a hátsó udvaromhoz. Az ötlet az volt, hogy ha valaki az egyik irányba sétált, akkor animációt indított el abba az irányba, ahol Ön járt. A Dollar General 1,00 dolláros napelemes lámpáival kezdtem
Mozgásérzékelő fények: 3: 8 lépés
Mozgásérzékelő lámpák Basys3: A digitális tervezés utolsó projektjében úgy döntöttünk, hogy szimuláljuk a mozgásérzékelők fényeit. Ezek nem csak akkor aktiválódnak, ha egy tárgy van a közelében, hanem csak a nap egy bizonyos időszakában. Ezt modellezni tudjuk az FPGA (Basys3 kártya) használatával