Cuprins:
- Provizii
- Pasul 1: Construirea circuitului
- Pasul 2: Cablare și instalare
- Pasul 3: Codul
- Pasul 4: Rezultate
Video: Kit de lumină pentru motocicletă Givi V56 DIY cu semnale integrate: 4 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Ca motociclist, sunt prea familiarizat cu tratamentul de parcă aș fi invizibil pe drum. Un lucru pe care îl adaug mereu bicicletelor mele este un top box care are de obicei o lumină integrată. Recent am trecut la o bicicletă nouă și am cumpărat cutia Givi V56 Monokey, deoarece avea mult spațiu pentru articole. Această cutie are un loc pentru un kit de lumină din fabrică care constă din două benzi de LED-uri pentru fiecare parte. Problema este că acest kit costă aproximativ 70 de dolari și doar frâne. Există un kit de aftermarket care probabil face lucruri similare și ar putea fi puțin mai ușor de instalat, dar prețul dvs. ajunge la 150 USD. Fiind o persoană plină de resurse și căutând o scuză pentru a încerca benzile LED adresabile, am decis să creez un sistem integrat care să aibă nu numai luminile de frână, ci și luminile de funcționare (aprinse ori de câte ori se mișcă), semnalizatoarele și luminile de avarie. Doar pentru dracu, am adăugat chiar și o secvență de pornire … pentru că aș putea. Rețineți că acest lucru a necesitat multă muncă, deși am avut multe lucruri de descoperit. În ciuda muncii, sunt destul de mulțumit de modul în care s-a dovedit acest lucru. Sperăm că acest lucru ajunge să fie util altcuiva.
Funcționarea de bază a modului în care funcționează acest sistem este că unitatea Arduino caută semnale pe știfturi: lumină de frână, lumină de stânga și lumină de dreapta. Pentru a citi semnalul de 12 volți de pe motocicletă, am folosit optoizolatori pentru a converti semnalul de 12 V într-un semnal de 5 V pe care Arduino îl poate citi. Codul așteaptă apoi unul dintre aceste semnale, apoi transmite comenzile pe banda LED folosind biblioteca FastLED. Acesta este elementul de bază, acum pentru a intra în detalii.
Provizii
Acestea sunt lucrurile pe care le-am folosit pentru că în cea mai mare parte le-am avut deja în jur. Evident, pot fi schimbate după cum este necesar:
- Arduino - Am folosit un nano pentru considerente de dimensiune, dar puteți folosi orice vă simțiți, atâta timp cât aveți cinci pini de utilizat.
- Regulator 5V - am folosit un L7805CV capabil de 1,5 amperi. Acest proiect va utiliza 0,72 amperi pentru LED-uri plus puterea pentru nano, deci 1,5 funcționează excelent pentru acest proiect.
- Condensatoare - veți avea nevoie de un 0,33 uF și unul de 0,1 uF pentru ca regulatorul de tensiune să funcționeze corect.
- 3x optoizolatori - pentru a face conversia semnalului de la 12V la 5V. Am folosit tipul PC817X, care are doar patru pini, ceea ce este tot ce ne trebuie.
- Rezistoare - veți avea nevoie de două tipuri, trei din fiecare tip. Primul trebuie să fie suficient pentru a reduce curentul prin LED-ul IR optoizolator. Veți avea nevoie de cel puțin 600 ohmi, dar 700 ar fi o idee mai bună pentru a face față schimbării tensiunilor pe motocicletă. Celălalt trebuie să fie undeva între 10k și 20k pentru un semnal rapid pe cealaltă parte a optoizolatorului.
- Placă prototip - am avut unele care erau suficient de mici pentru a se potrivi într-o cutie mică de proiect cu o cantitate ușoară de tăiere.
- Cutie proiect - suficient de mare pentru a se potrivi componentelor, dar suficient de mică pentru a fi ușor de montat.
- Sârmă - am folosit cablu ethernet Cat 6 pentru că aveam multe din ele. Acesta are opt fire, toate codate prin culori, ceea ce a ajutat la toate conexiunile diferite și a fost un indicator suficient de mare pentru a gestiona extragerile curente.
- Mufe - oriunde doriți ca sistemul să fie ușor de demontat. Am folosit un dop impermeabil pentru a permite îndepărtarea cutiei superioare și pentru a face față oricărei ploi sau ape care intră pe ea. De asemenea, aveam nevoie de dopuri mai mici pentru benzile LED, așa că nu a trebuit să găuresc găuri mari.
- Cravate cu fermoar și suporturi adezive cu fermoar pentru a ține totul în poziție.
- Folie termocontractabilă pentru a ordona conexiunile.
Pasul 1: Construirea circuitului
Evident, dacă îmi urmărești versiunea, nu va trebui să treci prin testarea pe care am făcut-o. Primul lucru pe care l-am făcut a fost să mă asigur că codul meu funcționează și că pot obține în mod corespunzător un semnal de la optoizolatori, precum și să controlez corect benzile LED. A durat un moment pentru a-mi da seama cum să atașez cel mai bine pinii de semnal la izolatoare, dar prin încercări și erori am găsit orientarea corectă. Tocmai am folosit o placă prototip standard, deoarece construiam doar una și să-mi dau seama că un model de urmărire ar fi luat mai mult timp decât merita. Partea superioară a plăcii de circuite arată grozav, dar partea de jos pare a fi o mizerie, dar cel puțin funcțională.
Proiectarea de bază începe cu introducerea puterii de 12V de la o sursă comutată (un fir care este pornit numai când motocicleta este pornită). O diagramă de cablare poate ajuta cu adevărat la găsirea acestui fir. Acesta este alimentat într-o parte a regulatorului de tensiune. Un condensator de 0,33 uF leagă această intrare de pământ pe regulatorul de tensiune care apoi se alimentează înapoi la pământ pe motocicletă. Ieșirea regulatorului de tensiune va avea un condensator de 0,1 uF legat la masă. Acești condensatori ajută la netezirea tensiunii de la regulator. Dacă nu le găsiți în imaginea plăcii de circuit, acestea se află sub regulatorul de tensiune. De acolo, linia de 5V se îndreaptă spre Vinul de pe Arduino, către pinul de alimentare care va alimenta benzile cu LED-uri, și două, partea Sursă a optoizolatorului care se va alimenta în pinii Arduino furnizând semnalul necesar de 5V.
În ceea ce privește optoizolatoarele, există două fețe: una cu LED IR și cealaltă cu tranzistor cu detector IR. Vrem să folosim partea LED IR pentru a măsura semnalul de 12V. Deoarece LED-ul are o tensiune directă de 1,2V, avem nevoie de un rezistor de limitare a curentului în serie. 12V - 1.2V = 10.8V și pentru a rula LED-ul la 18 mA (îmi place întotdeauna să rulez mai puțin de 20 mA din motive de viață), veți avea nevoie de un rezistor de R = 10.8V / 0.018A = 600 ohm. Tensiunile vehiculelor tind, de asemenea, să funcționeze mai mari, potențial de până la 14V, deci este mai bine să planificați acest lucru, care este de aproximativ 710 ohm, deși 700 ar fi mai mult decât rezonabil. Ieșirea pentru partea LED se alimentează apoi la sol. Pentru partea de ieșire a optoizolatorului, intrarea va utiliza semnalul de 5V de la regulator, apoi ieșirea se va conecta la un alt rezistor înainte de a merge la masă. Acest rezistor trebuie doar să fie în jur de 10k - 20k ohm, cel puțin așa a arătat fișa mea tehnică. Acest lucru va oferi o măsurare rapidă a semnalului, deoarece nu avem de-a face cu un mediu zgomotos. Ieșirea către pinul Arduino se va desprinde între rezistență și ieșirea optoizolatorului, astfel încât atunci când semnalul este oprit pinul este scăzut și când semnalul este pe pinul este ridicat.
Luminile cu bandă LED au trei fire asociate: alimentare, împământare și date. Puterea trebuie să fie de 5V. Acest proiect folosește 12 LED-uri în total (deși am mai multe LED-uri pe benzi, dar folosesc doar fiecare al treilea LED) și fiecare ia 60mA când lumina albă este utilizată la luminozitate maximă. Acest lucru oferă un total de 720 mA. Suntem bine în puterea de ieșire pentru regulatorul de tensiune, deci suntem buni. Doar asigurați-vă că firul este un ecartament suficient de mare pentru a face față puterii, am folosit un cablu Ethernet Cat 6 de calibru 24. Sârmă Ethernet a fost ceva ce am stat în jurul și are 8 fire colorate, deci a funcționat bine pentru acest proiect. Singurele fire care trebuie să meargă în topbox în sine sunt alimentarea și împământarea (care se împart între benzi) și două linii de date (una pentru fiecare bandă).
Restul cablajului se conectează la pinii de pe arduino și îl alimentează. Pinii care au fost utilizați pentru acest proiect au fost următorii:
- Vin - conectat la 5V
- Gnd - conectat la sol
- Pin2 - conectat la linia de date a benzii din stânga
- Pin3 - conectat la linia de date a benzii din dreapta
- Pin4 - conectat la semnalul de frână de la optoizolator
- Pin5 - conectat la semnalul de viraj stânga de la optoizolator
- Pin6 - conectat la semnalizatorul de dreapta de la optoizolator
Pasul 2: Cablare și instalare
Odată ce circuitul este construit, vine momentul să conectăm efectiv acest lucru. Folosind schema de cablare pentru bicicletă, va trebui să localizați următoarele:
- Alimentare comutată
- Sol
- Semnal de frână intrat
- Semnal de viraj stânga
- Semnal de viraj la dreapta
Pentru al meu, a existat un singur conector care avea toate acestea pe el, așa că am folosit-o doar. Cu suficient timp, aș fi putut să găsesc același stil de priză și să fac doar un modul de conectare, dar nu am făcut-o, așa că am îndepărtat izolarea pe alocuri și am lipit noul fir. Am folosit prize pe aceste conexiuni îmbinate, astfel încât să pot elimina restul dacă ar trebui vreodată în viitor. De acolo am așezat Arduino, care se află acum într-o cutie de proiect sigilată, sub scaunul unde l-am atașat. Cablul de ieșire trece apoi de-a lungul cadrului rack-ului până la o priză impermeabilă, apoi intră în cutie și rulează de-a lungul spatelui până la capacul unde se desparte pentru fiecare parte. Firele rulează de-a lungul interiorului capacului până la punctul în care se află conexiunile pentru LED-uri. Sârmă este de ajutor în loc folosind cravate cu fermoar atașate la monturi cu cravată cu fermoar de tip exterior cu suport adeziv. Puteți găsi acestea în secțiunea de instalare a cablurilor la un magazin de îmbunătățiri pentru locuințe
Am folosit două prize mini JST pe benzile LED pentru că aveam nevoie de o priză suficient de mică pentru a trece printr-o gaură cu diametrul minim și pentru că voiam să mă asigur că există suficient cablu pentru a face față cerințelor actuale. Din nou, este posibil să fi fost suprasolicitat și nu aveam la îndemână nici o priză mică cu trei fire. Gaura din cutie pentru trecerea firelor de bandă de lumină a fost sigilată pentru a păstra apa. În ceea ce privește poziționarea benzilor cu LED-uri, deoarece există o ușoară nepotrivire în spațiu (a existat o diferență de aproximativ 1 - 1,5 mm între distanța dintre găurile din reflector și LED-uri) le-am poziționat astfel încât să împartă diferența dintre LED și gaura pe cât posibil. Apoi am folosit lipici fierbinte pentru a le lipi în loc și etanșant pentru a sigila complet zona. Benzile cu LED-uri sunt în sine impermeabile, deci nu sunt probleme dacă se udă. Deși pare a fi mult de instalat, acest lucru face ca sistemul să fie mai ușor de îndepărtat în viitor sau să înlocuiască piese necesare, deoarece s-ar putea întâmpla.
Pasul 3: Codul
Codul meu sursă ar trebui să fie la începutul acestui instructabil. Îmi comentez întotdeauna codul, așa că este mai ușor de înțeles mai târziu. Declinare de responsabilitate: Nu sunt un scriitor de coduri profesionist. Codul a fost scris într-o metodă mai ușor de pornit și s-au făcut unele îmbunătățiri, dar știu că ar putea fi mai rafinat. De asemenea, folosesc o cantitate mare de funcție delay () pentru sincronizare, ceea ce nu este la fel de ideal. Cu toate acestea, semnalele pe care le primește unitatea nu sunt semnale rapide în comparație, așa că m-am simțit în continuare justificat să le mențin folosind ceva de genul milis (). Sunt, de asemenea, un tată și un soț foarte ocupați, așa că petrecerea timpului pentru a îmbunătăți ceva care, în cele din urmă, nu va schimba funcția, nu este pe listă.
Pentru acest proiect, este necesară o singură bibliotecă, care este biblioteca FastLED. Acesta are tot codul pentru controlul benzilor LED de tip WS2811 / WS2812B. De acolo, voi acoperi funcțiile de bază care vor fi utilizate.
Primul altul decât definițiile standard este să vă declarați cele două benzi. Veți utiliza următorul cod pentru fiecare bandă:
FastLED.addLeds (leduri [0], NUM_LEDS);
Această linie de cod setează Pinul 2 definește această bandă ca banda 0 cu numărul de LED-uri definite de constanta NUM_LEDS, care în cazul meu este setată la 16. Pentru a defini a doua bandă, 2 vor deveni 3 (pentru pin3) și banda va fi etichetată bandă 1.
Următoarea linie care va fi importantă este definirea culorii.
leduri [0] [1] = Color_high CRGB (r, g, b);
Această linie de cod este utilizată deși în diferite înfățișări (majoritatea folosesc o constantă). Practic, acest cod trimite o valoare fiecărui canal LED (roșu, verde, albastru) care definește fiecare luminozitate. Valoarea luminozității poate fi definită printr-un număr 0 - 255. Prin modificarea nivelului de luminozitate pentru fiecare canal, puteți defini culori diferite. Pentru acest proiect, vreau o culoare albă pentru a menține lumina cât mai strălucitoare posibil. Așadar, singurele modificări pe care le fac este să setez același nivel de luminozitate pe toate cele trei canale.
Următorul set de cod este utilizat pentru iluminarea individuală a fiecărei lumini. Rețineți că pentru fiecare bandă, fiecare LED are o adresă care începe de la 0 pentru cea mai apropiată de conexiunea de linie de date până la cel mai mare număr LED pe care îl aveți minus 1. Exemplu, acestea sunt 16 benzi LED, deci cel mai mare este 16 - 1 = 15. Motivul este că primul LED este etichetat cu 0.
for (int i = NUM_LEDS-1; i> -1; i = i - 3) {// Aceasta va schimba lumina pentru fiecare al treilea LED care va merge de la ultimul la primul. leduri [0] = Color_low; // Setați culoarea LED a benzii 0 la culoarea aleasă. leduri [1] = Color_low; // Setați culoarea LED-ului benzii 1 la culoarea aleasă. FastLED.show (); // Afișați culorile setate. leduri [0] = CRGB:: Negru; // Dezactivați setarea culorii în pregătire pentru următoarea culoare. leduri [1] = CRGB:: Negru; întârziere (150); } FastLED.show (); // Afișați culorile setate.
Modul în care funcționează acest cod este că o variabilă (i) este utilizată într-o buclă for ca adresă LED, care este apoi referită la numărul complet de LED-uri (NUM_LEDS). Motivul este că vreau ca luminile să înceapă mai degrabă la sfârșitul benzii decât la început. Setarea este transmisă pe ambele benzi (leduri [0] și leduri [1]), apoi este emisă o comandă pentru a arăta modificarea. După aceea, această lumină este oprită (CRGB:: Negru) și următoarea lumină este aprinsă. Referința negru este o culoare specifică în biblioteca FastLED, deci nu trebuie să emit 0, 0, 0 pentru fiecare canal, deși ar face același lucru. Bucla For avansează 3 LED-uri la un moment dat (i = i-3), deoarece folosesc doar toate celelalte LED-uri. Până la sfârșitul acestei bucle, secvența de lumină va trece de la un LED la următorul, cu o singură lumină pe bandă, un fel de efect Knight Rider. Dacă doriți să păstrați fiecare lumină aprinsă astfel încât bara să se construiască, ați elimina doar liniile care opresc LED-urile care se întâmplă în următorul set de cod din program.
for (int i = 0; i <dim; i ++) {// Estompează rapid luminile la nivelul luminii de funcționare. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Aceasta va aprinde ultimele trei lumini pentru lumina de poziție. leduri [0] = CRGB (rt, gt, bt); // Setați culoarea LED a benzii 0 la culoarea aleasă. leduri [1] = CRGB (rt, gt, bt); // Setați culoarea LED-ului benzii 1 la culoarea aleasă. } FastLED.show (); întârziere (3); }
Ultimul exemplu de cod pe care îl folosesc pentru LED-uri este o buclă de decolorare. Aici, folosesc sloturi temporare pentru luminozitatea fiecărui canal (rt, gt, bt) și le incrementez cu 1 cu o întârziere între fiecare afișare pentru a obține aspectul dorit. Rețineți, de asemenea, că acest cod modifică doar ultimele trei LED-uri, deoarece acesta se estompează în luminile de funcționare, așa că încep de la 9, mai degrabă decât 0.
Restul codului LED este iterațiile acestora. Orice altceva este concentrat în jurul căutării unui semnal pe cele trei fire diferite. Zona Loop () a codului caută luminile de frână, pe care le va clipi o dată înainte de a rămâne aprinse (acest lucru este reglabil dacă se dorește) sau de a căuta semnalizatoare. Pentru acest cod, deoarece nu aș putea presupune că semnalizatoarele din stânga și din dreapta s-ar aprinde exact în același timp pentru pericole, am codul să caute fie unul mai întâi, apoi după o mică întârziere verific dacă amândouă sunt aprinse indicând luminile de avarie sunt aprinse. Singura parte dificilă pe care am avut-o a fost semnalizatoarele, deoarece lumina se va stinge pentru o anumită perioadă, așa cum pot face diferența dintre semnalul încă aprins, dar în perioada oprită și un semnal anulat? Ceea ce am venit a fost să pun în aplicare o buclă de întârziere care este setată să continue mai mult decât întârzierea dintre semnalele intermitente. Dacă semnalul de direcție este încă pornit, atunci bucla de semnal va continua. Dacă semnalul nu revine la sfârșitul întârzierii, atunci revine la începutul buclei (). Pentru a regla lungimea întârzierii, modificați numărul pentru lumina constantă.
while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } întârziere (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Aceasta va schimba lumina pentru fiecare al treilea LED care va merge de la ultimul la primul. leduri [0] = CRGB (0, 0, 0); // Setați culoarea LED a benzii 0 la culoarea aleasă. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Aceasta va configura luminile de rulare care folosesc doar ultimele trei. leduri [0] = Color_low; // Setați culoarea LED a benzii 0 la culoarea aleasă. } FastLED.show (); // Setările de ieșire revin; // Odată ce semnalul de viraj nu mai este pornit, reveniți la buclă. }
Sperăm că restul codului se explică de la sine. Este doar un set repetat de verificare și acțiune asupra semnalelor.
Pasul 4: Rezultate
Partea uimitoare a fost că acest sistem a funcționat prima dată când l-am conectat la bicicletă. Acum, ca să fiu corect, l-am testat intens pe bancă înainte de aceasta, dar mă așteptam să am o problemă sau o ajustare. Se pare că nu a fost nevoie să fac ajustări la cod, precum și la conexiuni. După cum puteți vedea în videoclip, sistemul trece prin secvența de pornire (pe care nu trebuie să o aveți), apoi se implică în lumini de funcționare. După aceea, caută frânele, caz în care va aprinde toate LED-urile la luminozitate maximă și le va aprinde o dată înainte de a rămâne aprinse până când frânele sunt eliberate. Când se utilizează un semnal de viraj, am făcut un efect de derulare pentru partea în care este indicată virajul, iar cealaltă parte va fi fie lumini de rulare, fie lumină de frână, dacă este aprinsă. Luminile de pericol vor clipi în timp cu celelalte lumini.
Sperăm că cu aceste lumini suplimentare, voi fi mai vizibil pentru alte persoane. Cel puțin, este un plus frumos să-mi fac cutia să iasă în evidență un pic mai mult decât altele, oferind în același timp utilitate. Sper că acest proiect este util și pentru altcineva, chiar dacă nu funcționează cu iluminarea unui top box pentru motocicletă. Mulțumiri!
Recomandat:
Lampă din spate pentru motocicletă cu intermitente integrate cu LED-uri programabile: 4 pași
Lampă din spate pentru motocicletă cu intermitente integrate utilizând LED-uri programabile: Bună ziua! Acesta este oarecum un DIY ușor despre cum să creați o lampă din spate programabilă RGB (cu intermitente / indicatoare integrate) pentru motocicletă sau, eventual, orice folosind WS2812B (leduri adresabile individual) și Arduinos . Există 4 moduri de lumină în
Personalizați-vă lumina din spate pentru motocicletă !: 3 pași
Personalizați-vă lumina de coadă pentru motocicletă!: Bună ziua tuturor! PENTRU acest instructabil, vă voi împărtăși cum să vă personalizați propria lumină din spate ieftin de la bec la LED Dacă vă lenește să citiți chiar acum, puteți viziona videoclipul pe care l-am făcut deja Ok, intro suficient, pur și simplu intrați în pași
Lumina reactivă pentru muzică -- Cum să faci lumină reactivă pentru muzică super simplă pentru a face desktop-ul grozav .: 5 pași (cu imagini)
Muzică lumină reactivă || Cum să facem muzică super simplă lumină reactivă pentru a face desktopul grozav. basul care este de fapt semnal audio de joasă frecvență. Este foarte simplu de construit. Vom
Pixuri de desen cu lumină LED: instrumente pentru desenarea doodurilor de lumină: 6 pași (cu imagini)
Pixuri de desen cu lumină LED: instrumente pentru desenarea de doodle de lumină: soția mea Lori este o doodler neîncetat și m-am jucat cu fotografii cu expunere îndelungată de ani de zile. Inspirați de grupul de artă ușoară PikaPika și ușurința camerelor digitale, am preluat forma de artă a desenelor luminoase pentru a vedea ce am putea face. Avem un
Cadru de lumină (pentru caseta de lumină pentru fotografii Tekjocks): 3 pași
Cadru de lumină (pentru Tekjocks Photography Light Box): Iată urmărirea pentru Cutia mea de lumină pentru fotografie. Nu am de gând să-l detaliaz pe acesta, deoarece se va reduce la dimensiunea tubului pe care îl veți determina, de ce dimensiune veți avea nevoie de hardware. Deci, acesta va fi un tutorial de bază. Voi fi postat