Sadržaj:

DIY Gibi V56 svjetlosni komplet za motocikl Topbox s integriranim signalima: 4 koraka (sa slikama)
DIY Gibi V56 svjetlosni komplet za motocikl Topbox s integriranim signalima: 4 koraka (sa slikama)

Video: DIY Gibi V56 svjetlosni komplet za motocikl Topbox s integriranim signalima: 4 koraka (sa slikama)

Video: DIY Gibi V56 svjetlosni komplet za motocikl Topbox s integriranim signalima: 4 koraka (sa slikama)
Video: 9 SCARY GHOST Videos That'll Make YOU Shiver 2024, Studeni
Anonim
Image
Image
DIY Gibi V56 svjetlosni komplet za motocikl Topbox s integriranim signalima
DIY Gibi V56 svjetlosni komplet za motocikl Topbox s integriranim signalima
DIY Givi V56 svjetlosni komplet za motocikl Topbox s integriranim signalima
DIY Givi V56 svjetlosni komplet za motocikl Topbox s integriranim signalima

Kao vozaču motocikla, previše sam upoznat s tim da me tretiraju kao da sam nevidljiv na cesti. Jednu stvar koju uvijek dodajem svojim biciklima je gornja kutija koja obično ima integrirano svjetlo. Nedavno sam nadogradio na novi bicikl i kupio kutiju Givi V56 Monokey jer je imala puno prostora za predmete. Ova kutija ima mjesto za tvornički svjetlosni komplet koji se sastoji od dvije LED trake sa svake strane. Problem je što ovaj komplet košta oko 70 USD i radi samo kočnice. Postoji komplet za zamjensko tržište koji vjerojatno radi slične stvari i možda bi ga bilo malo lakše instalirati, ali vaša cijena ide do 150 USD. Kao snalažljiva osoba i tražeći izgovor za isprobavanje adresabilnih LED traka, odlučio sam napraviti integrirani sustav koji ne bi imao samo kočiona svjetla, već i svjetla za vožnju (upaljena kad god se kreće), pokazivače smjera i svjetla upozorenja. Dovraga, čak sam dodao i niz pokretanja…. jer sam mogao. Imajte na umu da je za ovo bilo potrebno puno posla iako sam imao mnogo toga za shvatiti. Unatoč poslu, prilično sam zadovoljan kako je ovo ispalo. Nadajmo se da će ovo nekome biti od koristi.

Osnovni način funkcioniranja ovog sustava je da jedinica Arduino traži signale na pinovima: kočničko svjetlo, lijevo svjetlo za skretanje i desno svjetlo za skretanje. Kako bih pročitao 12 -voltni signal s motocikla, koristio sam optoizolatore za pretvaranje 12V -signala u 5V signal koji Arduino može čitati. Kod zatim čeka jedan od ovih signala, a zatim šalje naredbe na LED traku pomoću knjižnice FastLED. To su osnove, sad da uđemo u detalje.

Pribor

Ovo su stvari koje sam koristio jer sam ih većinom već ležao. Očigledno, mogu se zamijeniti prema potrebi:

  1. Arduino - Koristio sam nano radi razmatranja veličine, ali možete koristiti što god želite ako imate pet igala za korištenje.
  2. 5V regulator - Koristio sam L7805CV koji je bio sposoban za 1,5 ampera. Ovaj će projekt koristiti 0,72 ampera za LED diode plus snagu za nano, pa 1,5 radi izvrsno za ovaj projekt.
  3. Kondenzatori - trebat će vam jedan 0,33 uF i jedan 0,1 uF da bi regulator napona ispravno radio.
  4. 3x optoizolatori - za pretvorbu signala s 12V na 5V. Koristio sam tip PC817X koji ima samo četiri pina što je sve što nam treba.
  5. Otpornici - trebat će vam dvije vrste, po tri svake vrste. Prvi mora biti dovoljan za smanjenje struje kroz optoizolator IR LED. Trebat će vam najmanje 600 ohma, ali 700 bi bilo bolje za rukovanje promjenom napona na motociklu. Druga mora biti negdje između 10k i 20k za brzi signal s druge strane optoizolatora.
  6. Prototipna ploča - Imao sam neke dovoljno male da stanu u malu projektnu kutiju s malom količinom obrezivanja.
  7. Projektna kutija - dovoljno velika da stane na komponente, ali dovoljno mala da se može lako uklopiti.
  8. Žica - Koristio sam Cat 6 ethernet žicu jer sam je puno sjedio. Ima osam žica svih boja kodiranih što je pomoglo sa svim različitim vezama i bio je dovoljno velik mjerač da se nosi s trenutnim izvlačenjima.
  9. Utikači - gdje god želite da se sustav može lako ukloniti. Koristio sam vodootporni utikač kako bih dozvolio uklanjanje gornje kutije i podnio kišu ili vodu koja padne na nju. Trebali su mi i manji utikači za LED trake pa nisam morao bušiti velike rupe.
  10. Zip kravate i ljepljivi držači za patent zatvarače koji drže sve na mjestu.
  11. Skupljanje folije za sređivanje veza.

Korak 1: Izgradnja kruga

Izgradnja kruga
Izgradnja kruga
Izgradnja kruga
Izgradnja kruga
Izgradnja kruga
Izgradnja kruga

Očigledno, ako pratite moju verziju, nećete morati proći kroz toliko testiranja koje sam ja napravio. Prvo sam učinio da provjerim funkcionira li moj kôd i da mogu pravilno dobiti signal od optoizolatora, kao i pravilno kontrolirati LED trake. Trebalo je trenutak da shvatim kako najbolje priključiti signalne pinove na izolatore, no pokušajem i pogreškom pronašao sam pravu orijentaciju. Upravo sam koristio standardnu prototipnu ploču jer sam je samo gradio, a za utvrđivanje uzorka traga trebalo bi više vremena nego što je vrijedilo. Gornji dio ploče izgleda sjajno, ali donji dio izgleda kao da je u neredu, ali barem je funkcionalan.

Osnovni dizajn započinje unosom napajanja od 12 V iz uključenog izvora (žica koja je uključena samo kada je motocikl uključen). Dijagram ožičenja zaista može pomoći u pronalaženju ove žice. To se dovodi na jednu stranu regulatora napona. Kondenzator od 0,33 uF veže ovaj ulaz za masu na regulatoru napona koji se zatim vraća na tlo na motociklu. Izlaz regulatora napona će imati 0,1uF kondenzator vezan za masu. Ovi kondenzatori pomažu u izravnavanju napona iz regulatora. Ako ih ne možete pronaći na slici ploče, nalaze se ispod regulatora napona. Odatle 5V linija ide do Vina na Arduinu, do naponskog pina koji će napajati LED trake, i dva izvora izvora optoizolatora koji će ulaziti u Arduino pinove pružajući potreban 5V signal.

Što se tiče optoizolatora, postoje dvije strane: jedna s IC LED, a druga s tranzistorom s i IR detektorom. Želimo koristiti IR LED stranu za mjerenje 12V signala. Budući da LED ima prednji napon od 1,2 V, trebamo otpornik za ograničavanje struje u seriji. 12V - 1.2V = 10.8V i za pokretanje LED na 18 mA (uvijek volim raditi manje od 20 mA iz životnih razloga), trebat će vam otpornik R = 10.8V/0.018A = 600 ohma. Napon na vozilima također ima tendenciju da raste, potencijalno do 14V, pa je bolje planirati to, što je oko 710 ohma, iako bi 700 bilo više nego razumno. Izlaz za LED stranu se zatim vraća na tlo. Za izlaznu stranu optoizolatora, ulaz će koristiti 5V signal iz regulatora, a zatim će se izlaz spojiti na drugi otpornik prije nego što uđe u masu. Ovaj otpornik samo treba imati oko 10k - 20k ohma, barem je tako pokazala moja podatkovna tablica. To će omogućiti brzo mjerenje signala jer nemamo posla s bučnim okruženjem. Izlaz na Arduino pin izlazi između otpornika i izlaza optoizolatora tako da kada je signal isključen pin je nizak, a kada je signal na pinu visok.

Svjetla s LED trakama imaju tri povezane žice: napajanje, uzemljenje i prijenos podataka. Napajanje mora biti 5V. Ovaj projekt koristi ukupno 12 LED dioda (iako imam više LED dioda na trakama, ali koristim samo svaku treću LED) i svaka uzima 60 mA kada se bijelo svjetlo koristi pri punoj svjetlini. To daje ukupno 720 mA. Dobro smo u granicama izlazne snage regulatora napona, tako da smo dobri. Samo provjerite je li žica dovoljno velika da se nosi s napajanjem. Koristio sam Ethernet žicu Cat 6 promjera 24. Ethernet žica je bila nešto oko čega sam sjedio i ima 8 žica kodiranih u boji pa je dobro funkcioniralo za ovaj projekt. Jedine žice koje tada trebaju ići do samog gornjeg pretinca su napajanje i uzemljenje (koje se obje dijele između traka) i dvije podatkovne linije (po jedna za svaku traku).

Ostatak ožičenja povezuje se s pinovima na arduinu i napaja ga. Igle koje su korištene za ovaj projekt bile su sljedeće:

  1. Vin - spojen na 5V
  2. Gnd - spojen na masu
  3. Pin2 - spojen na podatkovnu liniju lijeve trake
  4. Pin3 - spojen na podatkovnu liniju desne trake
  5. Pin4 - povezan s kočnim signalom iz optoizolatora
  6. Pin5 - spojen na lijevi pokazivač smjera s optoizolatora
  7. Pin6 - spojen na desni pokazivač smjera iz optoizolatora

Korak 2: Ožičenje i instalacija

Ožičenje i ugradnja
Ožičenje i ugradnja
Ožičenje i ugradnja
Ožičenje i ugradnja
Ožičenje i ugradnja
Ožičenje i ugradnja

Nakon što se sklop izgradi, dolazi vrijeme da se to zapravo spoji na mjesto. Koristeći shemu ožičenja vašeg bicikla, morat ćete pronaći sljedeće:

  • Uključeno napajanje
  • Uzemljenje
  • Ulaz kočionog signala
  • Lijevi pokazivač smjera
  • Desni pokazivač smjera

Za mene je postojao jedan utikač koji je imao sve ovo na sebi, pa sam to upravo iskoristio. S dovoljno vremena, možda sam uspio pronaći isti stil utikača i samo napraviti utikač modul, ali nisam, pa sam samo uklonio izolaciju na nekim mjestima i lemio novu žicu na nju. Koristio sam utikače na ovim spojenim spojevima kako bih mogao ukloniti ostatak ako mi zatreba u budućnosti. Odatle sam Arduino, koji se sada nalazi u zapečaćenoj kutiji za projekt, stavio ispod sjedala na koje sam ga pričvrstio. Izlazni kabel zatim prolazi duž okvira stalka do vodootpornog utikača, zatim ulazi u kutiju i prolazi stražnjom stranom do poklopca gdje se dijeli sa svake strane. Žice prolaze s unutarnje strane poklopca do mjesta gdje su spojevi za LED diode. Žica je pomoć na mjestu pomoću patentnih zatvarača pričvršćenih za vanjske zip -držače s ljepljivom podlogom. Možete ih pronaći u odjeljku o postavljanju kabela u trgovini za poboljšanje doma

Koristio sam dva mini JST utikača na LED trakama jer mi je trebao utikač dovoljno mali da prođe kroz rupu minimalnog promjera i jer sam se želio uvjeriti da ima dovoljno žice za podnošenje trenutnih zahtjeva. Opet, možda je bilo pretjerano i nisam imao pri ruci male utikače s tri žice. Rupe u kutiji za prolaz žica svjetlosnih traka bile su zapečaćene kako bi se spriječilo prodiranje vode. Što se tiče pozicioniranja LED traka, jer postoji neznatna neusklađenost u razmaku (bilo je oko 1 - 1,5 mm razlike u razmaku između rupa u reflektoru i LED diodama) postavio sam ih tako da podijele razliku između LED i rupu što je više moguće. Zatim sam ih vrućim ljepilom zalijepila na mjesto i brtvilom kako bih potpuno zabrtvila područje. LED trake su vodootporne pa nema problema ako se smoče. Iako se čini da je potrebno mnogo instalirati, to olakšava uklanjanje sustava u budućnosti ili je potrebna zamjena dijelova jer bi se to moglo dogoditi.

Korak 3: Kôd

Moj izvorni kod trebao bi biti na početku ovog uputstva. Uvijek snažno komentiram svoj kôd kako bi ga kasnije bilo lakše razumjeti. Odricanje od odgovornosti: Nisam profesionalni pisac kodova. Kôd je napisan metodom koja je bila lakša za početak i napravljena su neka poboljšanja, ali znam da bi se mogla doraditi. Također koristim veliku količinu funkcije delay () za mjerenje vremena što nije idealno. Međutim, signali koje jedinica prima nisu brzi signali u usporedbi, pa sam se i dalje osjećao opravdano zadržati ih koristeći nešto poput millis (). Također sam vrlo zaposlen otac i suprug pa trošenje vremena na poboljšanje nečega što u konačnici neće promijeniti funkciju nije visoko na popisu.

Za ovaj projekt potrebna je samo jedna knjižnica, a to je FastLED knjižnica. Ovdje se nalazi sav kôd za upravljanje LED trakama tipa WS2811/WS2812B. Odatle ću pokriti osnovne funkcije koje će se koristiti.

Prva, osim standardnih definicija, je prijaviti svoje dvije trake. Za svaku ćete traku koristiti sljedeći kôd:

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

Ova linija koda postavlja Pin 2 definira ovu traku kao traku 0 s brojem LED dioda definiranih konstantom NUM_LEDS, koja je u mom slučaju postavljena na 16. Za definiranje druge trake, 2 će postati 3 (za pin3) i traka će biti označena trakom 1.

Sljedeći redak koji će biti važan je definicija boje.

LED diode [0] [1] = Visoka boja u boji CRGB (r, g, b);

Ova linija koda koristi se u različitom izgledu (većina mi koristi konstantu). U osnovi, ovaj kôd šalje vrijednost svakom od LED kanala (crveni, zeleni, plavi) koja definira svaku svjetlinu. Vrijednost svjetline može se definirati brojem 0 - 255. Promjenom razine svjetline za svaki kanal možete definirati različite boje. Za ovaj projekt želim bijelu boju kako bi svjetlo bilo što jače. Dakle, jedino što mijenjam je da postavim razinu svjetline istu na sva tri kanala.

Sljedeći skup kodova koristi se za pojedinačno paljenje svakog svjetla. Imajte na umu da za svaku traku svaki LED ima adresu koja počinje s 0 za onu koja je najbliža povezivanju podatkovne linije sve do najvećeg broja LED dioda koji imate minus 1. Primjer, ovo je 16 LED traka, pa je najviša 16 - 1 = 15. Razlog tome je što je prva LED dioda označena s 0.

for (int i = NUM_LEDS -1; i> -1; i = i -3) {// Ovo će promijeniti svjetlo za svaku treću LED koja ide od posljednje do prve. LED diode [0] = Boja_niska; // Postavite traku 0 LED boju na odabranu boju. LED diode [1] = Boja_niska; // Postavite traku 1 LED boju na odabranu boju. FastLED.show (); // Prikaz postavljenih boja. LED diode [0] = CRGB:: Crna; // Isključite postavljenu boju u pripremi za sljedeću boju. LED diode [1] = CRGB:: Crna; kašnjenje (150); } FastLED.show (); // Prikaz postavljenih boja.

Način funkcioniranja ovog koda je da se varijabla (i) koristi unutar for petlje kao LED adresa koja se zatim poziva na cijeli broj LED dioda (NUM_LEDS). Razlog tome je što želim da svjetla počnu na kraju trake, a ne na početku. Postavka se šalje na obje trake (LED diode [0] i LED diode [1]), a zatim se izdaje naredba za prikaz promjene. Nakon toga se ovo svjetlo isključuje (CRGB:: Crno) i pali se sljedeće svjetlo. Crna referenca je specifična boja u biblioteci FastLED pa ne moram izdavati 0, 0, 0 za svaki kanal iako bi učinili istu stvar. For petlja pomiče 3 LED diode odjednom (i = i-3) budući da koristim samo svaku drugu LED. Do kraja ove petlje, niz svjetla prelazit će s jedne LED na drugu sa samo jednim upaljenim po traci, nalik efektu Knight Ridera. Ako želite da svako svjetlo ostane upaljeno kako bi se traka gradila, samo biste uklonili retke koji isključuju LED, što se događa u sljedećem skupu koda u programu.

for (int i = 0; i <dim; i ++) {// Brzo ugasi svjetla do razine svjetla. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Ovo će zasvijetliti posljednja tri svjetla za pozicijsko svjetlo. LED diode [0] = CRGB (rt, gt, bt); // Postavite traku 0 LED boju na odabranu boju. LED diode [1] = CRGB (rt, gt, bt); // Postavite traku 1 LED boju na odabranu boju. } FastLED.show (); kašnjenje (3); }

Posljednji primjer koda koji koristim za LED diode je fade petlja. Ovdje koristim privremene utore za svjetlinu svakog kanala (rt, gt, bt) i povećavam ih za 1 s odmakom između svakog prikaza kako bih postigao izgled koji želim. Također imajte na umu da ovaj kôd mijenja samo posljednje tri LED diode jer one blijede u svjetlima za vožnju pa počinjem s 9, a ne s 0.

Ostatak LED koda su njihove iteracije. Sve ostalo fokusirano je na traženje signala na tri različite žice. Područje petlje () koda traži kočna svjetla, koja će jednom zasvijetliti prije nego što ostane uključena (to se može podesiti po želji) ili traži pokazivače smjera. Za ovaj kôd, jer nisam mogao pretpostaviti da će se lijevo i desno svjetlo skretanja paliti točno u isto vrijeme zbog opasnosti, kôd moram prvo potražiti jedno, a zatim nakon malog kašnjenja provjeravam jesu li oba uključena upaljena su svjetla opasnosti. Jedan lukavi dio koji sam imao bili su pokazivači smjera jer će se svjetlo gasiti neko vrijeme, pa kako mogu reći razliku između signala koji je još uvijek uključen, ali u razdoblju isključenja i signala koji je poništen? Ono što sam smislio je implementacija petlje odgode koja je postavljena da se nastavi dulje od kašnjenja između signalnih bljeskova. Ako je pokazivač smjera još uvijek uključen, signalna petlja će se nastaviti. Ako se signal ne uključi nakon završetka kašnjenja, tada se vraća na početak petlje (). Da biste prilagodili duljinu kašnjenja, promijenite broj za konstantno svjetlo Odgoda pamćenja za svaki 1 u svjetlu Odgoda kašnjenje se mijenja za 100 ms.

while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } kašnjenje (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Ovo će promijeniti svjetlo za svaku treću LED koja ide od posljednje do prve. LED diode [0] = CRGB (0, 0, 0); // Postavite traku 0 LED boju na odabranu boju. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Ovo će postaviti svjetla koja koriste samo posljednja tri. LED diode [0] = Boja_niska; // Postavite traku 0 LED boju na odabranu boju. } FastLED.show (); // Povrat izlaznih postavki; // Nakon što se pokazivač smjera više ne uključi, vratite se na petlju. }

Nadajmo se da je ostatak koda sam po sebi razumljiv. To je samo ponavljajući skup provjere i djelovanja na signale.

Korak 4: Rezultati

Rezultati
Rezultati

Nevjerojatan dio je bio što je ovaj sustav radio prvi put kad sam ga spojio na bicikl. Da budem pošten, prije toga sam ga jako testirao na klupi, ali sam i dalje očekivao da ću imati problem ili prilagodbu. Ispostavilo se da nisam morao mijenjati kôd, kao ni veze. Kao što možete vidjeti u videu, sustav prolazi kroz redoslijed pokretanja (koji ne morate imati), a zatim prema zadanim postavkama uključuje svjetla. Nakon toga traži kočnice, u tom slučaju će zasvijetliti sve LED diode do pune svjetline i jednom ih zasvijetliti prije nego što ostanu uključene do otpuštanja kočnica. Kad se koristi pokazivač smjera, napravio sam efekt pomicanja za stranu na kojoj je označeno skretanje, a druga strana će biti ili svjetla za vožnju ili svjetlo kočnice ako je uključeno. Svjetla za opasnost će treperiti na vrijeme s ostalim svjetlima.

Nadam se da ću s ovim dodatnim svjetlima biti vidljiviji drugim ljudima. U najmanju ruku, to je lijep dodatak kako bi se moja kutija istaknula malo više od ostalih, a istovremeno pružala korisnost. Nadam se da je ovaj projekt koristan i nekome drugome čak i ako ne rade s rasvjetom za motocikle. Hvala!

Preporučeni: