Obsah:

DIY Givi V56 Sada svetiel pre vrchný box motocykla s integrovanými signálmi: 4 kroky (s obrázkami)
DIY Givi V56 Sada svetiel pre vrchný box motocykla s integrovanými signálmi: 4 kroky (s obrázkami)

Video: DIY Givi V56 Sada svetiel pre vrchný box motocykla s integrovanými signálmi: 4 kroky (s obrázkami)

Video: DIY Givi V56 Sada svetiel pre vrchný box motocykla s integrovanými signálmi: 4 kroky (s obrázkami)
Video: Givi v56 maxia4 led часть2 модернизация кофра гиви быстрый оазъем 2024, December
Anonim
Image
Image
DIY Givi V56 Sada vrchného boxu motocykla s integrovanými signálmi
DIY Givi V56 Sada vrchného boxu motocykla s integrovanými signálmi
DIY Givi V56 Sada vrchného boxu motocykla s integrovanými signálmi
DIY Givi V56 Sada vrchného boxu motocykla s integrovanými signálmi

Ako motocyklový jazdec mi je až príliš známe, že sa ku mne správajú ako k neviditeľnému na ceste. Jedna vec, ktorú k svojim bicyklom vždy pridávam, je horný box, ktorý má zvyčajne integrované svetlo. Nedávno som prešiel na nový bicykel a kúpil som si box Givi V56 Monokey, pretože mal veľa miesta na položky. Tento box má miesto pre továrenskú svetelnú súpravu, ktorá sa skladá z dvoch pásov diód LED na každej strane. Problém je v tom, že táto súprava stojí asi 70 dolárov a iba brzdí. Existuje aftermarketová súprava, ktorá pravdepodobne robí podobné veci a inštalácia by mohla byť o niečo jednoduchšia, ale vaša cena sa pohybuje až do 150 dolárov. Keďže som vynaliezavý človek a hľadám výhovorku na vyskúšanie adresných LED pásikov, rozhodol som sa vytvoriť integrovaný systém, ktorý bude mať nielen brzdové svetlá, ale aj svetlá (zapnuté pri každom pohybe), smerové svetlá a výstražné svetlá. Len tak naoko, dokonca som pridal spúšťaciu sekvenciu …. pretože som mohol. Všimnite si toho, že to vyžadovalo veľa práce, aj keď som musel veľa vecí zistiť. Napriek práci som celkom spokojný s tým, ako to dopadlo. Našťastie to bude užitočné pre niekoho iného.

Základnou operáciou fungovania tohto systému je, že jednotka Arduino hľadá signály na kolíkoch: brzdové svetlo, ľavé smerové svetlo a pravé smerové svetlo. Aby som prečítal 12 voltový signál z motocykla, použil som optoizolátory na prevod 12 V signálu na 5 V signál, ktorý Arduino dokáže prečítať. Kód potom čaká na jeden z týchto signálov a potom odošle príkazy na pásik LED pomocou knižnice FastLED. To je základ, teraz sa dostať do podrobností.

Zásoby

Toto sú veci, ktoré som použil, pretože som ich už väčšinou mal povaľované. Očividne je možné ich podľa potreby vymeniť:

  1. Arduino - Na zváženie veľkosti som použil nano, ale môžete použiť čokoľvek, na čo máte chuť, pokiaľ však použijete päť pinov.
  2. 5V regulátor - Použil som L7805CV, ktorý bol schopný 1,5 ampéra. Tento projekt bude používať 0,72 ampéra pre LED diódy plus výkon pre nano, takže 1,5 funguje skvele pre tento projekt.
  3. Kondenzátory - na správnu funkciu regulátora napätia budete potrebovať jeden 0,33 uF a jeden 0,1 uF.
  4. 3x optoizolátory - na prevod signálu z 12V na 5V. Použil som typ PC817X, ktorý má iba štyri piny, čo je všetko, čo potrebujeme.
  5. Rezistory - budete potrebovať dva typy, tri z každého typu. Prvá musí stačiť na zníženie prúdu prostredníctvom IR LED optoizolátora. Budete potrebovať najmenej 600 ohmov, ale 700 by bolo lepšie zvládnuť meniace sa napätie na motocykli. Druhý musí byť niekde medzi 10 000 až 20 000, aby získal rýchly signál na druhej strane optoizolátora.
  6. Prototypová doska - mal som dosť malé na to, aby sa zmestili do malého projektového boxu s miernym orezaním.
  7. Krabica na projekt - dostatočne veľká na to, aby sa do nej zmestili súčiastky, ale dostatočne malá na to, aby sa dala ľahko namontovať.
  8. Drôt - použil som ethernetový drôt Cat 6, pretože som toho veľa sedel. Toto má osem drôtov, ktoré sú všetky farebne označené, čo pomohlo so všetkými rôznymi pripojeniami, a bolo to dostatočne veľké meradlo, ktoré zvládne aktuálne ťahy.
  9. Zásuvky - kdekoľvek chcete, aby bol systém ľahko odnímateľný. Použil som vodotesnú zátku, aby bolo možné vybrať vrchný box a zvládnuť akýkoľvek dážď alebo vodu, ktorá sa naň dostane. Potreboval som aj menšie hmoždinky pre LED pásy, aby som nemusel vŕtať veľké otvory.
  10. Lepiace úchytky na zips a zips, aby držali všetko na svojom mieste.
  11. Zmršťovaním zabaľte, aby ste urobili poriadok v spojoch.

Krok 1: Budovanie obvodu

Budovanie okruhu
Budovanie okruhu
Budovanie okruhu
Budovanie okruhu
Budovanie okruhu
Budovanie okruhu

Očividne, ak sledujete moju zostavu, nebudete musieť prejsť množstvom testovania, ktoré som vykonal. Prvá vec, ktorú som urobil, bolo zaistiť, aby môj kód fungoval a mohol som správne získať signál z optoizolátorov, ako aj správne ovládať pásy LED. Chvíľu trvalo, kým som prišiel na to, ako najlepšie pripojiť signálne kolíky k izolátorom, ale pokusom a omylom som našiel správnu orientáciu. Práve som použil štandardnú prototypovú dosku, pretože som staval iba jednu a zistenie stopového vzoru by trvalo viac času, ako by stálo za to. Horná časť dosky plošných spojov vyzerá skvele, ale spodná časť vyzerá ako neporiadok, ale aspoň je funkčná.

Základný dizajn začína vstupom 12 V energie z prepínaného zdroja (vodič, ktorý je zapnutý iba vtedy, keď je motocykel zapnutý). Schéma zapojenia môže skutočne pomôcť nájsť tento vodič. Toto je privádzané na jednu stranu regulátora napätia. Kondenzátor 0,33 uF spája tento vstup so zemou na regulátore napätia, ktorý sa potom napája späť na zem na motocykli. Výstup regulátora napätia bude mať k zemi kondenzátor 0,1uF. Tieto kondenzátory pomáhajú vyhladiť napätie z regulátora. Ak ich nemôžete nájsť na obrázku obvodovej dosky, nachádzajú sa pod regulátorom napätia. Odtiaľ smeruje 5V na Vin na Arduine, na napájací kolík, ktorý bude napájať pásy LED, a dva na zdrojovú stranu optoizolátora, ktorý sa bude napájať na kolíky Arduino poskytujúce potrebný 5V signál.

Pokiaľ ide o optoizolátory, existujú dve strany: jedna s infračervenou diódou LED a druhá s tranzistorom s infračerveným detektorom. Chceme použiť stranu IR LED na meranie signálu 12V. Pretože LED dióda má predné napätie 1,2 V, potrebujeme odpor obmedzujúci prúd v sérii. 12V - 1,2V = 10,8V a na spustenie LED pri 18 mA (vždy mám z dôvodu životnosti rád spustenie menej ako 20 mA) budete potrebovať odpor R = 10,8V/0,018A = 600 ohmov. Napätie na vozidlách má tiež tendenciu bežať vyššie, potenciálne až 14 V, takže je lepšie to naplánovať, čo je asi 710 ohmov, aj keď 700 by bolo viac ako rozumné. Výstup pre stranu LED sa potom napája späť na zem. Na výstupnej strane optoizolátora bude vstup používať signál 5 V z regulátora, potom sa výstup pripojí k inému odporu a až potom pôjde na zem. Tento odpor musí mať približne 10 až 20 kOhm, aspoň to ukázal môj technický list. To poskytne rýchle meranie signálu, pretože sa nezaoberáme hlučným prostredím. Výstup na kolík Arduino sa vypne medzi odporom a výstupom optoizolátora, takže keď je signál vypnutý, kolík je nízky a keď je signál na kolíku vysoký.

Svetlá s pásikmi LED majú tri káble, ktoré sú s nimi spojené: napájanie, uzemnenie a dáta. Napájanie musí byť 5V. Tento projekt používa celkom 12 LED diód (aj keď mám na pásoch viac LED diód, ale používam iba každú tretiu LED) a každá používa 60 mA, keď sa biele svetlo používa pri plnom jase. To dáva celkom 720 mA. Máme dobrý výstupný výkon pre regulátor napätia, takže sme dobrí. Uistite sa, že drôt je dostatočne veľký na to, aby zvládol napájanie, použil som 24 -metrový ethernetový drôt Cat 6. Sedel som okolo a mal 8 farebne označených vodičov, takže pre tento projekt to fungovalo dobre. Jediné káble, ktoré potom musia ísť do samotného topboxu, sú napájanie a uzemnenie (obidva sa rozdelia medzi pásy) a dva dátové vedenia (jeden pre každý pás).

Ostatné káble sa pripájajú k kolíkom arduina a napájajú ho energiou. Kolíky, ktoré boli použité pre tento projekt, boli tieto:

  1. Vin - pripojený na 5V
  2. GND - spojené so zemou
  3. Pin2 - pripojený k dátovému vedeniu v ľavom páse
  4. Pin3 - pripojený k dátovému vedeniu vpravo
  5. Pin4 - pripojený k signálu brzdy z optoizolátora
  6. Pin5 - pripojený k ľavému smerovému svetlu z optoizolátora
  7. Pin6 - pripojený k pravému smerovému svetlu z optoizolátora

Krok 2: Zapojenie a inštalácia

Zapojenie a inštalácia
Zapojenie a inštalácia
Zapojenie a inštalácia
Zapojenie a inštalácia
Zapojenie a inštalácia
Zapojenie a inštalácia

Akonáhle je obvod postavený, je načase ho skutočne zapojiť na miesto. Použitím schémy zapojenia vášho bicykla budete musieť nájsť nasledujúce položky:

  • Spínaný zdroj
  • Zem
  • Signál brzdy
  • Vstupný signál doľava
  • Vpravo odbočte

Pre mňa bola jedna jediná zástrčka, na ktorej boli všetky tieto položky, takže som to použil. S dostatkom času som možno dokázal nájsť rovnaký štýl zástrčky a jednoducho vytvoriť zásuvný modul, ale neurobil som to, tak som len odstránil izoláciu na miestach a spájkoval som k nej nový vodič. Na týchto spojených spojoch som použil zástrčky, aby som v prípade potreby v budúcnosti mohol odstrániť ostatné. Odtiaľ som umiestnil Arduino, ktoré je teraz v zapečatenej projektovej krabici, pod sedadlo, kde som ho pripevnil. Výstupný kábel potom prechádza pozdĺž rámu stojana k vodotesnej zástrčke, potom vstupuje do škatule a prechádza zozadu k veku, kde sa rozdeľuje na každú stranu. Vodiče vedú pozdĺž vnútornej strany veka k bodu, kde sú pripojenia pre LED diódy. Drôt je na mieste pomocou zipsov, ktoré sú pripevnené k úchytkám na viazanie na zips s lepiacou podložkou. Nájdete ich v sekcii inštalácie káblov v obchode s domácimi potrebami

Na LED pásy som použil dve mini zástrčky JST, pretože som potreboval dostatočne malú zástrčku, aby som prešiel otvorom s minimálnym priemerom, a pretože som sa chcel uistiť, že je k dispozícii dostatok drôtu na zvládnutie súčasných požiadaviek. Opäť to bolo možno prehnané a nemal som poruke žiadne malé zástrčky s tromi vodičmi. Otvor v krabici, cez ktorý prešli drôty svetelných pásov, bol utesnený, aby sa zabránilo vniknutiu vody. Pokiaľ ide o umiestnenie pásikov LED, pretože v rozstupoch je mierny nesúlad (medzi otvormi v reflektore a diódami LED bol rozdiel asi 1 - 1,5 mm), umiestnil som ich tak, aby rozdelili rozdiel medzi diódami LED a dieru čo najviac. Potom som ich pomocou horúceho lepidla nalepil na miesto a tmelom úplne utesnil oblasť. Samotné LED pásy sú vodotesné, takže nie je problém, ak zvlhnú. Aj keď sa zdá, že inštalácia je veľmi náročná, v budúcnosti to uľahčí odstránenie systému alebo je potrebná výmena dielov, pretože sa to môže stať.

Krok 3: Kód

Môj zdrojový kód by mal byť na začiatku tohto Instructable. Svoj kód vždy silne komentujem, aby bolo neskôr jednoduchšie ho pochopiť. Zrieknutie sa zodpovednosti: Nie som profesionálny spisovateľ kódu. Kód bol napísaný metódou, ktorá bola jednoduchšia na začiatku a urobili sa určité vylepšenia, ale viem, že by sa dalo ešte upresniť. Tiež používam veľké množstvo funkcií delay () na načasovanie, ktoré nie je také ideálne. Signály, ktoré jednotka prijíma, však nie sú v porovnaní s rýchlymi signálmi, takže som sa stále cítil oprávnený ich používať ako milis (). Som tiež veľmi zaneprázdnený otec a manžel, takže tráviť čas vylepšovaním niečoho, čo v konečnom dôsledku nezmení funkciu, nie je na zozname.

Pre tento projekt je potrebná iba jedna knižnica, ktorou je knižnica FastLED. Toto má všetok kód na ovládanie LED pásov WS2811/WS2812B. Odtiaľ pokryjem základné funkcie, ktoré budú použité.

Prvá iná ako štandardná definícia je deklarácia vašich dvoch prúžkov. Pre každý prúžok použijete nasledujúci kód:

FastLED.addLeds (LED [0], NUM_LEDS);

Tento riadok kódu nastavuje pin 2, definuje tento pás ako pás 0 s počtom LED diód definovaných konštantou NUM_LEDS, ktorá je v mojom prípade nastavená na 16. Na definovanie druhého pásu sa z 2 stane 3 (pre pin3) a pásik bude označený ako pásik 1.

Ďalší riadok, ktorý bude dôležitý, je definícia farby.

leds [0] [1] = Color_high CRGB (r, g, b);

Tento riadok kódu sa používa v inom vzhľade (väčšina z nich používa konštantu). Tento kód v zásade odosiela hodnotu do každého z kanálov LED (červená, zelená, modrá), ktorá definuje každý jas. Hodnotu jasu je možné definovať číslom 0 - 255. Zmenou úrovne jasu pre každý kanál môžete definovať rôzne farby. Pre tento projekt chcem bielu farbu, aby bolo svetlo čo najjasnejšie. Jediné zmeny, ktoré robím, je nastaviť rovnakú úroveň jasu pre všetky tri kanály.

Nasledujúca sada kódov sa používa na individuálne osvetlenie každého svetla. Všimnite si toho, že pre každý pás má každá LED adresa adresu, ktorá začína na 0 pre tú, ktorá je najbližšie k pripojeniu dátového vedenia, až po najvyšší počet LED, ktoré máte mínus 1. Príklad, jedná sa o 16 LED pásikov, takže najvyššia je 16 - 1 = 15. Dôvodom je to, že prvá LED dióda je označená 0.

for (int i = NUM_LEDS -1; i> -1; i = i -3) {// Toto zmení svetlo pre každú tretiu diódu LED, ktorá prechádza od poslednej k prvej. leds [0] = Color_low; // Nastavte pás 0 farby LED na zvolenú farbu. leds [1] = Color_low; // Nastavte pruh 1 farby LED na zvolenú farbu. FastLED.show (); // Zobraziť nastavené farby. leds [0] = CRGB:: čierna; // Vypnite nastavenú farbu pri príprave na ďalšiu farbu. leds [1] = CRGB:: čierna; oneskorenie (150); } FastLED.show (); // Zobraziť nastavené farby.

Tento kód funguje tak, že premenná (i) sa používa v slučke for ako adresa LED, ktorá sa potom odkazuje na plný počet diód LED (NUM_LEDS). Dôvodom je to, že chcem, aby svetlá začínali na konci pásu, nie na začiatku. Nastavenie je vyvedené na obidva pásy (LED [0] a LED [1]), potom je vydaný príkaz na zobrazenie zmeny. Potom toto svetlo zhasne (CRGB:: čierna) a rozsvieti sa ďalšie svetlo. Čierna referencia je špecifická farba v knižnici FastLED, takže nemusím pre každý kanál vydávať 0, 0, 0, aj keď by robili to isté. Slučka For posúva naraz 3 LED diódy (i = i-3), pretože používam iba všetky ostatné LED diódy. Na konci tejto slučky prejde svetelná sekvencia z jednej LED na druhú iba s jednou rozsvietenou na pás, akýsi efekt Knight Rider. Ak chcete, aby každé svetlo svietilo tak, aby sa tyč stavala, odstránili by ste riadky, ktoré vypínajú diódy LED, čo sa stane v ďalšej sérii kódu v programe.

for (int i = 0; i <dim; i ++) {// Rýchle zosvetlenie svetiel na úroveň bežného svetla. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Rozsvietia sa posledné tri svetlá pre obrysové svetlo. LED [0] = CRGB (rt, gt, bt); // Nastavte pás 0 farby LED na zvolenú farbu. LED [1] = CRGB (rt, gt, bt); // Nastavte pruh 1 farby LED na zvolenú farbu. } FastLED.show (); oneskorenie (3); }

Posledným príkladom kódu, ktorý používam pre diódy LED, je slabnúca slučka. Tu používam dočasné sloty na jas pre každý kanál (rt, gt, bt) a zvyšujem ich o 1 s oneskorením medzi každým zobrazením, aby som dosiahol požadovaný vzhľad. Všimnite si tiež, že tento kód mení iba posledné tri LED diódy, pretože v bežných svetlách bledne, takže i začína na 9 namiesto 0.

Zvyšok kódu LED je ich iterácia. Všetko ostatné je zamerané na hľadanie signálu na troch rôznych vodičoch. Oblasť slučky () kódu hľadá brzdové svetlá, ktoré raz zablikajú, kým zostanú zapnuté (dá sa to nastaviť, ak je to žiaduce) alebo hľadajú smerové svetlá. Pretože v prípade tohto kódu nemôžem predpokladať, že sa ľavé a pravé smerové svetlo zapne v prípade nebezpečenstiev úplne rovnako, najskôr kód vyhľadám buďto, potom po menšom oneskorení skontrolujem, či svietia obidve svetlá. výstražné svetlá sú zapnuté. Najzložitejšia časť, ktorú som mal, boli smerové svetlá, pretože svetlo na určitý čas zhasne. Ako teda rozoznám rozdiel medzi stále zapnutým, ale vypnutým signálom a zrušeným signálom? Prišiel som na implementáciu oneskorovacej slučky, ktorá je nastavená tak, aby pokračovala dlhšie ako oneskorenie medzi signálnymi zábleskami. Ak je smerový signál stále zapnutý, potom bude signálna slučka pokračovať. Ak sa signál po uplynutí oneskorenia znova nezapne, vráti sa späť na začiatok slučky (). Ak chcete nastaviť dĺžku oneskorenia, zmeňte číslo pre konštantné svetlo Zapamätanie oneskorenia pre každý 1 pri svetle Oneskorenie sa zmení o 100 ms.

while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } oneskorenie (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Toto zmení svetlo pre každú tretiu diódu LED, ktorá prechádza od poslednej k prvej. LED [0] = CRGB (0, 0, 0); // Nastavte pás 0 farby LED na zvolenú farbu. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Týmto sa nastavia svetlá, ktoré používajú iba posledné tri. leds [0] = Color_low; // Nastavte pás 0 farby LED na zvolenú farbu. } FastLED.show (); // Vrátia sa nastavenia výstupu; // Keď smerový signál už nie je zapnutý, vráťte sa do slučky. }

Našťastie zvyšok kódu je samovysvetľujúci. Je to len opakujúci sa súbor kontrol a pôsobenia na signály.

Krok 4: Výsledky

Výsledky
Výsledky

Úžasné na tom bolo, že tento systém fungoval prvýkrát, keď som ho zapojil na bicykel. Aby som bol spravodlivý, pred tým som to silne testoval na lavičke, ale stále som očakával problém alebo úpravu. Ukázalo sa, že som nepotreboval vykonávať žiadne úpravy kódu, ako aj pripojení. Ako vidíte na videu, systém prejde postupnosťou spustení (ktorú nemusíte) a potom sa predvolene rozsvieti. Potom vyhľadá brzdy, v takom prípade rozsvieti všetky LED diódy na plný jas a raz blikne, kým nezostane zapnutý, kým sa brzdy neuvoľnia. Keď je použitý smerový signál, urobil som posúvací efekt pre stranu, na ktorej je odbočenie označené, a na druhej strane budú buď svetlá alebo brzdové svetlo, ak sú zapnuté. Výstražné svetlá budú včas blikať s ostatnými svetlami.

Našťastie s týmito prídavnými svetlami budem viac viditeľný pre ostatných ľudí. Prinajmenšom je to príjemný doplnok, vďaka ktorému bude moja škatuľka pri poskytovaní užitočných vlastností vyniknúť o niečo viac ako ostatné. Dúfam, že tento projekt bude užitočný aj pre niekoho iného, aj keď nepracuje s osvetlením horného boxu motocykla. Vďaka!

Odporúča: