Sadržaj:

Uradi sam Givi V56 svjetlosni komplet za motocikl Topbox sa integriranim signalima: 4 koraka (sa slikama)
Uradi sam Givi V56 svjetlosni komplet za motocikl Topbox sa integriranim signalima: 4 koraka (sa slikama)

Video: Uradi sam Givi V56 svjetlosni komplet za motocikl Topbox sa integriranim signalima: 4 koraka (sa slikama)

Video: Uradi sam Givi V56 svjetlosni komplet za motocikl Topbox sa integriranim signalima: 4 koraka (sa slikama)
Video: Анекдот про Гиви разведчика 😂 #анекдоты #приколы #мем #юмор #юмора 2024, Novembar
Anonim
Image
Image
Uradi sam Givi V56 Topbox svjetlosni komplet za motocikle s integriranim signalima
Uradi sam Givi V56 Topbox svjetlosni komplet za motocikle s integriranim signalima
Uradi sam Givi V56 komplet svjetla za motocikl Topbox sa integriranim signalima
Uradi sam Givi V56 komplet svjetla za motocikl Topbox sa integriranim signalima

Kao vozač 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 sistem koji ne bi imao samo kočiona svjetla, već i svjetla za vožnju (upaljena pri svakom kretanju), 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 mnogo posla iako sam imao mnogo toga da shvatim. Uprkos poslu, prilično sam zadovoljan kako je ovo ispalo. Nadajmo se da će ovo nekome biti od koristi.

Osnovna operacija funkcioniranja ovog sistema je da Arduino jedinica traži signale na pinovima: svjetlo kočnice, svjetlo skretanja i desno svjetlo skretanja. Da bih pročitao 12 -voltni signal s motocikla, koristio sam optoizolatore za pretvaranje 12 -voltnog signala u 5V signal koji Arduino može čitati. Kod zatim čeka jedan od ovih signala, a zatim šalje naredbe na LED traku koristeći FastLED biblioteku. To su osnove, sad da uđemo u detalje.

Supplies

Ovo su stvari koje sam koristio jer sam ih većinom već ležao. Očigledno, mogu se zamijeniti po 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 projekt će koristiti 0,72 ampera za LED diode plus snagu za nano, pa 1,5 radi odlično 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 pretvaranje signala sa 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 IC LED. Trebat će vam najmanje 600 ohma, ali 700 bi bila bolja ideja 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 koje su bile 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 lako uklapa.
  8. Žica - Koristio sam Cat 6 ethernet žicu jer sam je puno sjedio. Ovo ima osam žica svih boja kodiranih što je pomoglo u svim različitim vezama i bio je dovoljno velik mjerač da podnese trenutne izvlačenja.
  9. Utikači - svuda gdje želite da se sistem 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 kola
Izgradnja kola
Izgradnja kola
Izgradnja kola
Izgradnja kola
Izgradnja kola

Očigledno, ako pratite moju verziju, nećete morati proći kroz toliko testiranja koje sam ja napravio. Prvo što sam učinio je bilo da provjerim da li moj kôd radi 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, ali pokušajem i greškom pronašao sam pravu orijentaciju. Upravo sam koristio standardnu prototipnu ploču jer sam je samo gradio i za otkrivanje uzorka traga trebalo bi više vremena nego što je vrijedilo. Gornji dio ploče izgleda odlično, 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. Ona se dovodi na jednu stranu regulatora napona. Kondenzator od 0,33 uF veže ovaj ulaz za uzemljenje 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 ublažavanju 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 napajanja koje će napajati LED trake, i dva izvora izvora optoizolatora koji će se napajati u Arduino pinove pružajući potreban 5V signal.

Što se tiče optoizolatora, postoje dvije strane: jedna s IC LED diodom, a druga s tranzistorom sa i IR detektorom. Želimo koristiti IR LED stranu za mjerenje 12V signala. Budući da LED ima napredni napon od 1,2 V, potreban nam je otpornik za ograničavanje struje u seriji. 12V - 1.2V = 10.8V, a za rad 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 zemlju. Za izlaznu stranu optoizolatora, ulaz će koristiti signal 5V iz regulatora, a zatim će se izlaz spojiti na drugi otpornik prije nego što uđe u masu. Ovaj otpornik treba imati samo 10k - 20k ohma, barem je tako pokazala moja podatkovna tablica. Ovo će omogućiti brzo mjerenje signala jer nemamo posla s bučnim okruženjem. Izlaz na Arduino pin će se odvojiti između otpornika i izlaza optoizolatora tako da kada je signal isključen pin je nizak, a kada je signal na pinu visok.

Svjetla sa 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. Ovo daje ukupno 720 mA. Dobro smo u granicama izlazne snage regulatora napona, tako da smo dobri. Samo pazite da žica bude dovoljno velika da podnese napajanje. Koristio sam Ethernet žicu Cat 6 kalibracije 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 liniju podataka desne trake
  5. Pin4 - povezan sa kočnim signalom iz optoizolatora
  6. Pin5 - spojen na lijevi pokazivač smjera sa optoizolatora
  7. Pin6 - povezan sa desnim pokazivačem pravca sa 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 ovo spoji. Koristeći shemu ožičenja vašeg bicikla, morat ćete pronaći sljedeće:

  • Uključeno napajanje
  • Ground
  • Ulaz kočionog signala
  • Uključivanje pokazivača smjera lijevo
  • 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 bih uspio pronaći isti stil utikača i jednostavno napraviti modul za uključivanje, ali nisam, pa sam samo uklonio izolaciju na nekim mjestima i lemio novu žicu na nju. Koristio sam utikače na ovim spojenim vezama kako bih mogao ukloniti ostatak ako mi zatreba u budućnosti. Odatle sam stavio Arduino, koji se sada nalazi u zapečaćenoj kutiji, 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 cijepa sa svake strane. Žice prolaze s unutarnje strane poklopca do mjesta gdje se nalaze priključci za LED diode. Žica je pomoć na mjestu pomoću patentnih zatvarača pričvršćenih za vanjske zatvarače s patentnim zatvaračem 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 htio biti siguran 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 mali nesklad u razmaku (postojala je razlika od 1 - 1,5 mm 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 upotrijebio vruće ljepilo da ih pričvrstim na mjesto i brtvilo za potpuno brtvljenje područja. LED trake su vodootporne, pa nema problema ako se smoče. Iako se čini da je potrebno mnogo instalirati, to olakšava uklanjanje sistema 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, pa će kasnije biti lakše razumljiv. Odricanje odgovornosti: Nisam profesionalni pisac kodova. Kôd je napisan metodom koji je bio lakši za početak, a napravljena su i neka poboljšanja, ali znam da bi se mogao poboljšati. Također koristim veliku količinu funkcije delay () za mjerenje vremena koja nije idealna. Međutim, signali koje jedinica prima nisu brzi signali u usporedbi s tim, pa sam se i dalje osjećao opravdanim što sam ih zadržao koristeći nešto poput millis (). Također sam vrlo zaposlen otac i suprug pa trošenje vremena na poboljšanje nečega što na kraju neće promijeniti funkciju nije visoko na listi.

Za ovaj projekat potrebna je samo jedna biblioteka, a to je FastLED biblioteka. Ovo sadrži sve kodove za kontrolu LED traka tipa WS2811/WS2812B. Odatle ću pokriti osnovne funkcije koje će se koristiti.

Prva osim standardnih definicija je da deklarirate svoje dvije trake. Za svaku traku ćete 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] = Visoki CRGB u boji (r, g, b);

Ova linija koda se koristi 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 nivoa svjetline za svaki kanal možete definirati različite boje. Za ovaj projekt želim bijelu boju kako bi svjetlo bilo što jače. Dakle, jedina promjena koju radim je da postavim isti nivo svjetline na sva tri kanala.

Sljedeći skup kodova koristi se za pojedinačno paljenje svakog svjetla. Imajte na umu da za svaku traku svaka LED ima adresu koja počinje s 0 za onu koja je najbliža povezivanju podatkovne linije sve do najvećeg broja LED koji imate minus 1. Primjer, ovo je 16 LED traka, tako da je najviša 16 - 1 = 15. Razlog za to je što je prva LED dioda označena sa 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 boje 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čuje podešenu 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 za to je što želim da svjetla počnu s kraja trake, a ne s početka. 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 FastLED biblioteci, tako da ne moram izdavati 0, 0, 0 za svaki kanal iako bi radili istu stvar. For petlja napreduje 3 LED diode odjednom (i = i-3) budući da koristim samo svaku drugu LED. Do kraja ove petlje, svjetlosna sekvenca će ići od jedne LED do druge 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 linije koje isključuju LED, što se događa u sljedećem setu koda u programu.

for (int i = 0; i <dim; i ++) {// Brzo gasite svjetla do nivoa 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 boje 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đe imajte na umu da ovaj kôd mijenja samo posljednje tri LED diode jer one blijede u svjetlima za vožnju pa započinjem na 9, a ne na 0.

Ostatak LED koda su njihove iteracije. Sve ostalo fokusirano je na traženje signala na tri različite žice. Područje Loop () koda traži kočna svjetla, koja će jednom zasvijetliti prije nego što ostanu uključeni (ovo se može podesiti po želji) ili traže pokazivače smjera. Za ovaj kôd, jer nisam mogao pretpostaviti da će se svjetla za skretanje lijevo i desno upaliti u isto vrijeme zbog opasnosti, moram tražiti kod prvo 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 periodu isključenosti i signala koji je poništen? Ono što sam smislio je implementacija petlje odgode koja je postavljena da traje duže 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 dužinu kašnjenja, promijenite broj za konstantno svjetlo Odgoda pamćenja za svako 1 svjetlo Odgoda kašnjenja 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 boje na odabranu boju. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Ovim će se postaviti svjetla koja koriste samo posljednja tri. LED diode [0] = Boja_niska; // Postavite traku 0 LED boje 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

Zadivljujuće je to što je ovaj sistem radio kada sam ga prvi put 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 prilagođavanje. Ispostavilo se da nisam morao mijenjati kôd, kao ni veze. Kao što možete vidjeti u videu, sistem prolazi kroz sekvencu pokretanja (koju ne morate imati), a zatim prema zadanim postavkama uključuje svjetla. Nakon toga traži kočnice, u tom slučaju će upaliti sve LED diode do pune svjetline i jednom ih zasvijetliti prije nego što ostanu uključene dok se kočnice ne otpuste. Kada se koristi pokazivač smjera, napravio sam efekt pomicanja za stranu na kojoj je označeno skretanje, a na drugoj strani ć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 da se moja kutija istakne malo više od ostalih, a istovremeno pruža korisnost. Nadam se da je ovaj projekt koristan i za nekoga drugog, čak i ako ne rade s motociklističkom rasvjetom. Hvala!

Preporučuje se: