Tartalomjegyzék:
- Kellékek
- 1. lépés: Az áramkör építése
- 2. lépés: Kábelezés és telepítés
- 3. lépés: A kód
- 4. lépés: Eredmények
Videó: DIY Givi V56 motorkerékpár topbox fénykészlet beépített jelekkel: 4 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Motorkerékpárosként túlságosan is ismerem, hogy úgy bánnak velem, mintha láthatatlan lennék az úton. Az egyik dolog, amit mindig hozzáadok a kerékpárokhoz, egy felső doboz, amely általában beépített lámpával rendelkezik. Nemrég frissítettem egy új kerékpárra, és megvettem a Givi V56 Monokey dobozt, mivel sok hely volt benne. Ebben a dobozban van egy hely egy gyári fénykészlethez, amely két oldalsó LED -csíkból áll. A probléma az, hogy ez a készlet körülbelül 70 dollár, és csak a fékeket. Van egy utángyártott készlet, amely valószínűleg hasonló dolgokat végez, és lehet, hogy valamivel könnyebb telepíteni, de az ára 150 dollárra emelkedik. Mivel találékony ember vagyok, és ürügyet keresek a címezhető LED -szalagok kipróbálására, úgy döntöttem, hogy egy integrált rendszert készítek, amely nemcsak féklámpákkal, hanem futó lámpákkal (bekapcsolva, amikor mozog), irányjelzőkkel és vészvillogókkal rendelkezik. Csak az ördög kedvéért még egy indítási sorozatot is hozzáadtam…. mert tudtam. Vegye figyelembe, hogy ez sok munkát igényelt, bár sok mindent ki kellett találnom. A munka ellenére elégedett vagyok azzal, hogy ez így alakult. Remélhetőleg ez másnak is hasznos lesz.
Ennek a rendszernek az alapvető működése az, hogy az Arduino egység jelzéseket keres a csapokon: féklámpa, bal oldali és jobb oldali irányjelző lámpa. Annak érdekében, hogy leolvassam a 12 voltos jelet a motorkerékpárról, optoizolátorokkal alakítottam át a 12 V -os jelet 5 V -os jellé, amelyet az Arduino tud olvasni. A kód ezután vár egy ilyen jelre, majd a FastLED könyvtár segítségével kiadja a parancsokat a LED szalagnak. Ez az alap, most menjünk bele a részletekbe.
Kellékek
Ezeket a dolgokat használtam, mert többnyire már hevertem őket. Nyilván szükség esetén cserélhetők:
- Arduino - A méretezéshez nano -t használtam, de bármit használhatsz, ameddig csak érzed, amíg van öt csapod.
- 5V szabályozó - L7805CV -t használtam, amely 1,5 amperre képes. Ez a projekt 0,72 amper áramot használ a LED -ekhez és a nano áramellátásához, így az 1,5 nagyszerűen működik ebben a projektben.
- Kondenzátorok - egy 0,33 uF és egy 0,1 uF szükséges a feszültségszabályozó megfelelő működéséhez.
- 3x optoizolátor - a jel átalakítására 12V -ról 5V -ra. Én PC817X típust használtam, amelynek csak négy csapja van, amire szükségünk van.
- Ellenállások - két típusra lesz szüksége, mindegyikből három. Az elsőnek elegendőnek kell lennie az áram csökkentéséhez az optoizolátor IR LED -en keresztül. Legalább 600 ohmra lesz szüksége, de 700 jobb megoldás lenne a motorkerékpár változó feszültségének kezelésére. A másiknak valahol 10 és 20 ezer között kell lennie a gyors jelzéshez az optoizolátor másik oldalán.
- Prototípus tábla - Volt néhány olyan, amely elég kicsi volt ahhoz, hogy elférjen egy kis projektdobozban, enyhe vágással.
- Projektdoboz - elég nagy ahhoz, hogy illeszkedjen az alkatrészekhez, de elég kicsi ahhoz, hogy könnyen felszerelhető legyen.
- Vezeték - A Cat 6 ethernet vezetéket használtam, mert sok volt a helyemben. Ennek nyolc színe van, mindegyik vezetékkel, amelyek segítettek a különböző kapcsolatokban, és elég nagy volt ahhoz, hogy kezelni tudja az áramot.
- Dugók - bárhol, ahol szeretné, hogy a rendszer könnyen eltávolítható legyen. Vízálló dugót használtam, hogy le lehessen venni a felső dobozt, és kezelni lehessen az esőt vagy vizet. Szükségem volt kisebb dugókra is a LED szalagokhoz, így nem kellett nagy lyukakat fúrnom.
- Cipzáras kötések és cipzáras nyakkendők, amelyek mindent a helyükön tartanak.
- Zsugorfóliával rendezze a csatlakozásokat.
1. lépés: Az áramkör építése
Nyilvánvaló, hogy ha követi az építésemet, akkor nem kell végigmennie azon a tesztelésen, amit én csináltam. Az első dolgom az volt, hogy megbizonyosodjak arról, hogy a kódom működik, és megfelelően tudom -e kapni a jelet az optoizolátoroktól, valamint megfelelően irányítani a LED -csíkokat. Beletelt egy pillanatba, mire rájöttem, hogyan lehet a legjobban rögzíteni a jelzőcsapokat a leválasztókhoz, de próba és hiba útján megtaláltam a helyes irányt. Csak egy szabványos prototípus táblát használtam, mivel csak egyet építettem, és a nyomkövetési minta kitalálása több időt vett igénybe, mint amennyit megért. Az áramköri lap felső része jól néz ki, de az alsó egy kicsit rendetlenségnek tűnik, de legalább működőképes.
Az alaptervezés a 12 V -os tápellátás kapcsolt forrásból (vezeték, amely csak akkor van bekapcsolva, ha a motorkerékpár be van kapcsolva) kezdődik. A kapcsolási rajz valóban segíthet megtalálni ezt a vezetéket. Ezt a feszültségszabályozó egyik oldalára táplálják. Egy 0,33 uF kondenzátor köti ezt a bemenetet a feszültségszabályozó talajához, amely ezután a motorkerékpáron visszatér a talajhoz. A feszültségszabályozó kimenetén 0,1uF kondenzátor lesz a földhöz kötve. Ezek a kondenzátorok segítenek kiegyenlíteni a feszültséget a szabályozóból. Ha nem találja őket az áramköri képen, akkor a feszültségszabályozó alatt vannak. Innen az 5V -os vonal az Arduino -n lévő Vin -hez, a LED -csíkokat tápláló tápcsatlakozóhoz, kettő pedig az optoizolátor forrásoldalához vezet, amely betáplálja az Arduino -tűket, és biztosítja a szükséges 5V -os jelet.
Ami az optoizolátorokat illeti, két oldala van: az egyikben IR LED, a másikban tranzisztor és IR detektor. Az IR LED oldalt szeretnénk használni a 12V jel mérésére. Mivel a LED előremenő feszültsége 1,2 V, sorba kell állítani az áramkorlátozó ellenállást. 12V - 1,2V = 10,8V, és ahhoz, hogy a LED 18 mA -en működjön (mindig szeretem 20 mA -nél kevesebbet futni élettartam miatt), R = 10,8V/0,018A = 600 ohm ellenállásra lesz szüksége. A járművek feszültsége is magasabb, potenciálisan 14 V -ig terjed, ezért jobb ezt megtervezni, ami körülbelül 710 ohm, bár a 700 több mint ésszerű. A LED oldali kimenet ezután visszatér a földhöz. Az optoizolátor kimeneti oldalán a bemenet a szabályozó 5V -os jelét használja, majd a kimenet egy másik ellenálláshoz csatlakozik, mielőtt földelni kezd. Ennek az ellenállásnak csak 10–20 k ohm körül kell lennie, legalábbis ezt mutatta az adatlapom. Ez gyors jelmérést biztosít, mivel nem zajos környezettel van dolgunk. Az Arduino csap kimenete leválik az ellenállás és az optoizolátor kimenete között, így amikor a jel ki van kapcsolva, a tű alacsony, és amikor a jel a tüskén van, magas.
A LED szalagfényekhez három vezeték kapcsolódik: áram, föld és adat. A tápellátásnak 5 V -nak kell lennie. Ez a projekt összesen 12 LED -et használ (bár több LED van a szalagokon, de csak minden harmadik LED -et használok), és mindegyik 60 mA -t vesz igénybe, ha fehér fényt használnak teljes fényerősséggel. Ez összesen 720 mA -t biztosít. A feszültségszabályozó kimeneti teljesítményén belül vagyunk, tehát jól vagyunk. Csak győződjön meg arról, hogy a huzal elég nagy méretű, hogy kezelje az áramot, én 24 -es Cat 6 -os ethernet drótot használtam. Az Ethernet vezeték olyan dolog volt, amit én ültem, és 8 színkóddal ellátott vezeték van, így jól működött ebben a projektben. Az egyetlen vezeték, amelyet ezután magához a dobozhoz kell vezetni, a tápellátás és a földelés (mindkettő megoszlik a csíkok között) és két adatvonal (mindegyik csíkhoz egy).
A vezetékek többi része az arduino csapjaihoz csatlakozik, és táplálja azt. A projekthez használt csapok a következők voltak:
- Vin - 5V -ra csatlakoztatva
- Gnd - földhöz csatlakoztatva
- Pin2 - csatlakozik a bal szalag adatvonalához
- Pin3 - a jobb oldali szalag adatvonalához csatlakozik
- Pin4 - az optoizolátor fékjeléhez csatlakozik
- 5. tű - az optoizolátor bal oldali irányjelzőjéhez csatlakoztatva
- 6. tű - az optoizolátor jobb oldali irányjelzőjéhez csatlakoztatva
2. lépés: Kábelezés és telepítés
Az áramkör felépítése után elérkezik az idő, hogy ezt a helyére kelljen vezetni. A kerékpár bekötési rajzát használva meg kell találnia a következőket:
- Áramellátás átkapcsolva
- Talaj
- Fékjelzés
- Bal irányjelző be
- Jobbra forduló jelzés
Az enyémnél egyetlen dugó volt, amin mindezek benne voltak, ezért csak azt használtam. Elegendő idővel talán sikerült megtalálnom ugyanazt a dugóstílust, és csak bedugnom a modult, de nem tettem, ezért csak eltávolítottam a helyén a szigetelést, és forrasztottam hozzá az új vezetéket. Dugaszokat használtam ezeken az összeillesztett csatlakozásokon, hogy a többit eltávolíthassam, ha szükséges lesz a jövőben. Innen helyeztem el az Arduino -t, amely most egy lezárt projektdobozban van, az ülés alá, ahová rögzítettem. A kimeneti kábel ezután a rack keretén keresztül egy vízálló dugóig fut, majd belép a dobozba, és a hátulján a fedélig fut, ahol mindkét oldalon felhasad. A huzalok a fedél belsejében futnak addig a pontig, ahol a LED -ek csatlakozásai vannak. A huzal segít a helyén a cipzárkötések segítségével, amelyek a szabadtéri zipzáras rögzítőkhöz vannak ragasztva. Ezeket megtalálhatja a kábelezés szakaszában egy háztartási cikkek áruházában
Két mini JST dugót használtam a LED -szalagokon, mert szükségem volt egy kicsi dugóra, hogy átjussak egy minimális átmérőjű lyukon, és mert meg akartam győződni arról, hogy elegendő vezeték van -e a jelenlegi követelmények kezeléséhez. Ismét lehet, hogy túlzás volt, és nem volt nálam kis vezeték, három vezetékkel. A dobozban lévő lyukat a fénycsíkok vezetékeinek átvezetésére lezárták, hogy ne kerüljön víz. Ami a LED -szalagok elhelyezését illeti, mivel a távolságok között van némi eltérés (a reflektor és a LED -ek közötti lyukak közötti távolság körülbelül 1–1,5 mm volt) úgy helyeztem el őket, hogy felosztják a különbséget a LED és a LED között. a lyukat, amennyire csak lehetséges. Ezután forró ragasztóval ragasztottam őket a helyükre, és tömítőanyaggal, hogy teljesen lezárják a területet. A LED szalagok vízállóak, így nem baj, ha nedvesek lesznek. Bár soknak tűnik a telepítése, ez megkönnyíti a rendszer eltávolítását a jövőben, vagy szükség van alkatrészek cseréjére, mert előfordulhat.
3. lépés: A kód
A forráskódomnak ennek az utasításnak az elején kell lennie. Mindig erősen megjegyzem a kódomat, így később könnyebb megérteni. Jogi nyilatkozat: Nem vagyok hivatásos kódíró. A kódot olyan módszerrel írták, amelyet könnyebb volt elindítani, és néhány fejlesztés történt, de tudom, hogy lehetne finomítani. A késleltetés () függvényt is nagy mennyiségben használom az időzítéshez, ami nem olyan ideális. Az egység által fogadott jelek azonban nem gyors jelek ehhez képest, ezért továbbra is indokoltnak éreztem, hogy tovább tartsam őket valami millis () használatával. Én is nagyon elfoglalt apa és férj vagyok, ezért nem töltöm a listát azzal, hogy időt szánok valami javítására, ami végül nem változtat a funkción.
Ehhez a projekthez csak egy könyvtár szükséges, amely a FastLED könyvtár. Ez tartalmazza a WS2811/WS2812B típusú LED szalagok vezérléséhez szükséges összes kódot. Innentől kezdve kitérek a használni kívánt alapvető funkciókra.
A szokásos definíciókon kívül az első a két csík deklarálása. Minden csíkhoz a következő kódot fogja használni:
FastLED.addLeds (ledek [0], NUM_LEDS);
Ez a kódsor beállítja a 2 -es tűt, ezt a csíkot 0 szalagként határozza meg, a NUM_LEDS konstans által meghatározott LED -ek számával, ami esetemben 16 -ra van állítva. A második csík meghatározásához a 2 -ből 3 lesz (a 3 -as érintkezőnél) és a csíkot 1 -es csíknak fogják címkézni.
A következő sor, ami fontos lesz, a színmeghatározás.
ledek [0] [1] = Színes_magas CRGB (r, g, b);
Ezt a kódsort különböző megjelenésekben használják (legtöbbször állandó). Alapvetően ez a kód értéket küld minden LED -csatornának (piros, zöld, kék), amely meghatározza az egyes fényerőket. A fényerő értéke 0 - 255 számmal határozható meg. Az egyes csatornák fényerejének megváltoztatásával különböző színeket határozhat meg. Ehhez a projekthez fehér színt szeretnék, hogy a fény a lehető legvilágosabb legyen. Az egyetlen változtatás tehát az, hogy mindhárom csatornán azonos fényerősséget állítok be.
A következő kódkészlet az egyes lámpák egyéni meggyújtására szolgál. Vegye figyelembe, hogy minden egyes csík esetében minden LED -nek van egy címe, amely 0 -val kezdődik az adatvonal -kapcsolathoz legközelebb eső számára, egészen a legmagasabb számú LED -ig, amely mínusz 1. Példa, ezek 16 LED -szalagok, tehát a legmagasabb 16 - 1 = 15. Ennek az az oka, hogy az első LED 0 -val van ellátva.
for (int i = NUM_LEDS -1; i> -1; i = i -3) {// Ezzel minden harmadik LED fénye megváltozik az utolsóról az elsőre. ledek [0] = Színhossz; // Állítsa be a 0 szalag LED színét a kiválasztott színre. ledek [1] = Színhossz; // Állítsa be az 1. szalag LED színét a kiválasztott színre. FastLED.show (); // Mutasd a beállított színeket. ledek [0] = CRGB:: Fekete; // Kapcsolja ki a beállított színt a következő szín előkészítésében. ledek [1] = CRGB:: Fekete; késleltetés (150); } FastLED.show (); // Mutasd a beállított színeket.
Ez a kód úgy működik, hogy egy (i) változót használnak a for cikluson belül LED -címként, amelyet ezután a LED -ek teljes számára (NUM_LEDS) hivatkoznak. Ennek az az oka, hogy azt akarom, hogy a fények a szalag végén, és ne az elején kezdődjenek. A beállítás mindkét szalagra (led [0] és led [1]) kerül kiadásra, majd parancsot ad ki a változás megjelenítésére. Ezt követően ez a lámpa kialszik (CRGB:: Black) és a következő jelzőfény világít. A fekete referencia egy speciális szín a FastLED könyvtárban, így nem kell minden csatornára 0, 0, 0 -t kiadnom, bár ugyanazt tennék. A For hurok 3 LED-et halad előre (i = i-3), mivel csak minden más LED-et használok. Ennek a ciklusnak a végére a fénysorozat átmegy az egyik LED -ről a másikra, csíkonként csak egy világítással, amolyan Knight Rider effektus. Ha minden lámpát úgy szeretne világítani, hogy a sáv épüljön, akkor csak távolítsa el azokat a sorokat, amelyek kikapcsolják a LED -eket, ami a program következő kódkészletében történik.
for (int i = 0; i <dim; i ++) {// Gyorsan elhalványítja a fényeket a futó fény szintjére. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Ezzel kigyullad a helyzetjelző utolsó három lámpája. ledek [0] = CRGB (rt, gt, bt); // Állítsa be a 0 szalag LED színét a kiválasztott színre. ledek [1] = CRGB (rt, gt, bt); // Állítsa be az 1. szalag LED színét a kiválasztott színre. } FastLED.show (); késleltetés (3); }
A LED -ekhez használt kód utolsó példája a halványító hurok. Itt ideiglenes réseket használok a fényerősséghez minden csatornánál (rt, gt, bt), és 1 -gyel növelem őket, minden megjelenítés közötti késéssel, hogy elérjem a kívánt megjelenést. Azt is vegye figyelembe, hogy ez a kód csak az utolsó három LED -et változtatja meg, mivel ez elhalványul a futólámpákban, így én 9 -től kezdem, nem pedig 0 -tól.
A LED -kód többi része ezek iterációja. Minden más arra összpontosít, hogy jelet keres a három különböző vezetéken. A kód Hurok () területe a féklámpákat keresi, amelyeket egyszer felvillan, mielőtt bekapcsolva marad (ez tetszés szerint állítható) vagy az irányjelzőket keresi. Ennél a kódnál, mivel nem tudtam feltételezni, hogy a bal és jobb irányjelző lámpák pontosan ugyanabban az időben kapcsolnak be a veszélyek miatt, először a kódot keresem, majd kis késés után megnézem, hogy mindkettő be van -e kapcsolva a vészvillogók világítanak. Az egyetlen trükkös részem az irányjelzők volt, mert a fény kialszik egy ideig, így hogyan tudom megmondani a különbséget a még mindig, de kikapcsolt állapotban lévő jelzés és a törölt jel között? Amit kitaláltam, egy késleltetési ciklus megvalósítása volt, amely tovább áll, mint a jel villogások közötti késleltetés. Ha az irányjelző még mindig világít, akkor a jelzőhurok folytatódik. Ha a jel nem jön vissza, amikor a késleltetés véget ér, akkor visszatér a ciklus elejére (). A késleltetés hosszának beállításához módosítsa az állandó fény számát.
while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } késleltetés (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Ezzel minden harmadik LED fénye megváltozik az utolsóról az elsőre. ledek [0] = CRGB (0, 0, 0); // Állítsa be a 0 szalag LED színét a kiválasztott színre. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Ez beállítja a futó lámpákat, amelyek csak az utolsó hármat használják. ledek [0] = Színhossz; // Állítsa be a 0 szalag LED színét a kiválasztott színre. } FastLED.show (); // A kimeneti beállítások visszatérnek; // Ha az irányjelző már nincs bekapcsolva, térjen vissza a hurokhoz. }
Remélhetőleg a kód többi része magától értetődő. Ez csak a jelek ellenőrzésének és cselekvésének ismétlődő sorozata.
4. lépés: Eredmények
A csodálatos rész az volt, hogy ez a rendszer akkor működött, amikor először csatlakoztatom a kerékpárhoz. Most, hogy őszinte legyek, ezt megelőzően erősen teszteltem a padon, de továbbra is arra számítottam, hogy probléma vagy kiigazítás lesz. Kiderült, hogy nem kellett módosítanom a kódon és a kapcsolatokon. Amint a videóban is látható, a rendszer az indítási sorrenden keresztül megy át (amelyet nem kell megadnia), majd alapértelmezés szerint futólámpává válik. Ezt követően megkeresi a fékeket, ebben az esetben az összes LED -et teljes fényerőre világítja, és egyszer felvillan, mielőtt bekapcsolva marad a fékek kioldásáig. Irányjelző használatakor görgető hatást végeztem azon az oldalon, amelyen a kanyart jelzik, a másik oldal pedig menetfény vagy féklámpa lesz, ha be van kapcsolva. A veszélyjelző fények időben villognak a többi lámpával együtt.
Remélhetőleg ezekkel a kiegészítő lámpákkal jobban látható leszek más emberek számára. Legalábbis szép kiegészítés, hogy a dobozom valamivel jobban kiemelkedik, mint mások, miközben segédprogramot biztosít. Remélem, hogy ez a projekt másnak is hasznos lesz, még akkor is, ha nem motorkerékpár fedélzeti világítással dolgoznak. Kösz!
Ajánlott:
Motorkerékpár hátsó lámpa beépített villogókkal programozható LED -ek használatával: 4 lépés
Motorkerékpár -hátsó lámpa beépített villogókkal programozható LED -ek használatával: Helló! Ez némileg egyszerű barkács arról, hogyan lehet egyedi programozható RGB hátsó lámpát (beépített villogókkal/jelzőfényekkel) készíteni motorkerékpárjához vagy esetleg bármihez a WS2812B (egyedileg címezhető LED -ek) és Arduinos segítségével . 4 világítási mód van
Újrahasznosított motorkerékpár a palack kupakjából: 9 lépés (képekkel)
Újrahasznosított motorkerékpár a palack kupakjából: v Mit kell tenni otthon? Íme néhány egyszerű módja annak, hogy versenyautókat készítsen otthon. Lépésről lépésre eligazítom Önt az alap és a haladó versenyautók elkészítésében. Megteheti és kipróbálhatja. vagy csomagolhatja ajándékba gyermekeinek vagy barátainak. Remélem
Raspberry Pi motorkerékpár műszerfal: 9 lépés (képekkel)
Raspberry Pi motorkerékpár műszerfal: Diákként Multimédia & Kommunikációs technológia a Howest Kortrijkban, saját IoT projektet kellett készítenem. Ez az első évben követett összes modult egyetlen nagy projektbe egyesítené. Mivel szabadidőmben sokat motorozok
DIY Soundbar beépített DSP-vel: 6 lépés (képekkel)
DIY Soundbar beépített DSP-vel: Modern megjelenésű soundbar felépítése 1/2 " vastag, lehasított rétegelt lemez. A hangszóró 2 csatornával (sztereó), 2 erősítővel, 2 magassugárzóval, 2 mélysugárzóval és 4 passzív radiátorral rendelkezik, amelyek elősegítik az alacsony frekvenciák növelését ebben a kis szekrényben. Az egyik erősítő
Napelemes motorkerékpár -tárcsázó óra: 5 lépés (képekkel)
Szolármotoros motorkerékpár -tárcsázó óra: A régi motorkerékpáromból maradt egy tachó -tárcsa, amikor a mechanikus fordulatszámmérőt elektronikus panelre cseréltem (ez egy másik projekt!), És nem akartam eldobni. Ezeket a dolgokat úgy tervezték, hogy megvilágítsák, amikor a kerékpár lámpái ki vannak kapcsolva