Satura rādītājs:

DIY Givi V56 motociklu Topbox gaismas komplekts ar integrētiem signāliem: 4 soļi (ar attēliem)
DIY Givi V56 motociklu Topbox gaismas komplekts ar integrētiem signāliem: 4 soļi (ar attēliem)

Video: DIY Givi V56 motociklu Topbox gaismas komplekts ar integrētiem signāliem: 4 soļi (ar attēliem)

Video: DIY Givi V56 motociklu Topbox gaismas komplekts ar integrētiem signāliem: 4 soļi (ar attēliem)
Video: Homemade Givi Topcase signals 2024, Novembris
Anonim
Image
Image
DIY Givi V56 motociklu Topbox gaismas komplekts ar integrētiem signāliem
DIY Givi V56 motociklu Topbox gaismas komplekts ar integrētiem signāliem
DIY Givi V56 motociklu Topbox gaismas komplekts ar integrētiem signāliem
DIY Givi V56 motociklu Topbox gaismas komplekts ar integrētiem signāliem

Kā motociklists es esmu pārāk pazīstams ar to, ka pret mani izturas kā pret neredzamu. Viena lieta, ko es vienmēr pievienoju saviem velosipēdiem, ir augšējā kaste, kurai parasti ir integrēta gaisma. Es nesen jaunināju uz jaunu velosipēdu un nopirku Givi V56 Monokey kasti, jo tajā bija daudz vietas priekšmetiem. Šajā kastē ir vieta rūpnīcas gaismas komplektam, kas sastāv no divām gaismas diodes sloksnēm katrā pusē. Problēma ir tāda, ka šis komplekts maksā apmēram 70 USD un tikai bremzes. Ir pēcpārdošanas komplekts, kas, iespējams, veic līdzīgas darbības, un to var būt nedaudz vieglāk uzstādīt, taču jūsu cena palielinās līdz 150 USD. Būdams atjautīgs cilvēks un meklējot attaisnojumu, lai izmēģinātu adresējamās LED sloksnes, es nolēmu izveidot integrētu sistēmu, kurā būtu ne tikai bremžu gaismas, bet arī gaitas gaismas (ieslēgtas ikreiz, kad pārvietojas), pagrieziena rādītāji un avārijas gaismas. Vienkārši pēc velna es pat pievienoju startēšanas secību…. jo es varētu. Ņemiet vērā, ka tas prasīja daudz darba, lai gan man bija jānoskaidro daudzas lietas. Neskatoties uz darbu, esmu diezgan apmierināts ar to, kā tas izvērtās. Cerams, ka tas kādam citam noderēs.

Šīs sistēmas darbības pamatdarbība ir tāda, ka Arduino iekārta meklē signālus uz tapām: bremžu lukturi, kreisās pagrieziena gaismas un labās pagrieziena gaismas. Lai nolasītu motocikla 12 voltu signālu, es izmantoju optoizolatorus, lai 12 V signālu pārvērstu par 5 V signālu, ko var nolasīt Arduino. Pēc tam kods gaida vienu no šiem signāliem un pēc tam izvada komandas LED sloksnei, izmantojot FastLED bibliotēku. Tas ir pamati, tagad, lai iedziļinātos detaļās.

Piegādes

Šīs ir lietas, kuras es izmantoju, jo lielākoties man tās jau bija. Acīmredzot tos var apmainīt pēc vajadzības:

  1. Arduino - lieluma apsvērumu dēļ es izmantoju nano, taču jūs varat izmantot visu, kas jums liekas, ja vien jums ir piecas tapas.
  2. 5V regulators - es izmantoju L7805CV, kas spēj 1,5 ampērus. Šajā projektā gaismas diodēm tiks izmantoti 0,72 ampēri, kā arī nano jauda, tāpēc 1,5 lieliski darbojas šajā projektā.
  3. Kondensatori - lai sprieguma regulators darbotos pareizi, jums būs nepieciešams viens 0,33 uF un viens 0,1 uF.
  4. 3x optoizolatori - lai pārveidotu signālu no 12V uz 5V. Es izmantoju PC817X tipu, kuram ir tikai četras tapas, un tas ir viss, kas mums nepieciešams.
  5. Rezistori - jums būs nepieciešami divi veidi, trīs no katra veida. Pirmajam jābūt pietiekamam, lai samazinātu strāvu caur optoizolatora IR LED. Jums būs nepieciešami vismaz 600 omi, bet 700 būtu labāka ideja, lai tiktu galā ar mainīgu motocikla spriegumu. Otram jābūt kaut kur starp 10k un 20k, lai iegūtu ātru signālu optoizolatora otrā pusē.
  6. Prototipa dēlis - man bija daži, kas bija pietiekami mazi, lai ietilptu nelielā projekta kastē ar nelielu apgriešanu.
  7. Projekta kaste - pietiekami liela, lai ietilptu detaļās, bet pietiekami maza, lai to būtu viegli uzstādīt.
  8. Stieple - es izmantoju Cat 6 ethernet vadu, jo man tā bija daudz sēžot. Tam ir astoņi krāsu kodēti vadi, kas palīdzēja visos dažādajos savienojumos, un tas bija pietiekami liels gabarīts, lai tiktu galā ar pašreizējo vilkšanu.
  9. Spraudņi - jebkurā vietā, kur vēlaties, lai sistēma būtu viegli noņemama. Es izmantoju ūdensnecaurlaidīgu kontaktdakšu, lai varētu noņemt augšējo kārbu un rīkoties ar lietus vai ūdeni, kas uz tā nokļūst. Man vajadzēja arī mazākus spraudņus LED sloksnēm, tāpēc man nebija jāizurbj lieli caurumi.
  10. Rāvējslēdzēju saites un rāvējslēdzēja līmes stiprinājumi, lai visu noturētu vietā.
  11. Savelciet apvalku, lai sakārtotu savienojumus.

1. darbība: ķēdes izveide

Ķēdes veidošana
Ķēdes veidošana
Ķēdes veidošana
Ķēdes veidošana
Ķēdes veidošana
Ķēdes veidošana

Acīmredzot, ja jūs sekojat manai būvei, jums nebūs jāiziet tik daudz testu, kādu es veicu. Pirmā lieta, ko es darīju, bija pārliecināties, vai mans kods darbojas un vai es varu pareizi iegūt signālu no optoizolatoriem, kā arī pareizi kontrolēt LED sloksnes. Pagāja brīdis, lai saprastu, kā vislabāk piestiprināt signāla tapas pie izolatoriem, taču izmēģinājumu un kļūdu rezultātā es atradu pareizo orientāciju. Es tikko izmantoju standarta dēļa prototipu, jo es tikai būvēju vienu, un izsekošanas parauga noteikšana būtu prasījusi vairāk laika, nekā bija vērts. Shēmas plates augšējā daļa izskatās lieliski, bet apakšējā daļa izskatās kā mazliet juceklis, bet vismaz tā ir funkcionāla.

Pamata konstrukcija sākas ar 12 V strāvas ievadīšanu no slēdža (vads, kas ir ieslēgts tikai tad, kad motocikls ir ieslēgts). Elektroinstalācijas shēma patiešām var palīdzēt atrast šo vadu. Tas tiek ievadīts sprieguma regulatora vienā pusē. 0,33 uF kondensators sasaista šo ieeju ar zemi uz sprieguma regulatora, kas pēc tam motociklā atgriežas zemē. Sprieguma regulatora izejā būs 0,1uF kondensators, kas piestiprināts pie zemes. Šie kondensatori palīdz izlīdzināt spriegumu no regulatora. Ja jūs nevarat tos atrast shēmas plates attēlā, tie atrodas zem sprieguma regulatora. No turienes 5 V līnija iet uz Arduino Vin, uz strāvas tapu, kas baros LED sloksnes, un divas optoizolatora avota puses, kas tiks ievadīta Arduino tapās, nodrošinot nepieciešamo 5 V signālu.

Attiecībā uz optoizolatoriem ir divas puses: viena ar IR LED un otra ar tranzistoru ar un IR detektoru. Mēs vēlamies izmantot IR LED pusi, lai izmērītu 12 V signālu. Tā kā gaismas diodes priekšējais spriegums ir 1,2 V, mums sērijveidā ir nepieciešams strāvas ierobežošanas rezistors. 12V - 1,2V = 10,8V un lai darbinātu gaismas diodi pie 18 mA (man vienmēr patīk darboties mazāk par 20 mA mūža iemeslu dēļ), jums būs nepieciešams rezistors R = 10,8V/0,018A = 600 omi. Spriegums transportlīdzekļos mēdz darboties arī augstāk, iespējams, līdz 14 V, tāpēc labāk to plānot, kas ir aptuveni 710 omi, lai gan 700 būtu vairāk nekā saprātīgi. Pēc tam gaismas diodes puses izvade atgriežas zemē. Optoizolatora izejas pusē ieeja izmantos 5V signālu no regulatora, pēc tam izeja pirms savienošanas ar zemi tiks savienota ar citu rezistoru. Šim rezistoram vienkārši jābūt apmēram 10k - 20k omi, vismaz to parādīja mana datu lapa. Tas nodrošinās ātru signāla mērīšanu, jo mēs nenodarbojamies ar trokšņainu vidi. Izeja uz Arduino tapu atdalīsies starp rezistoru un optoizolatora izeju tā, ka tad, kad signāls ir izslēgts, tapa ir zema un kad signāls atrodas uz tapas, ir augsts.

LED sloksnes gaismām ir trīs vadi: barošana, zemējums un dati. Jaudai jābūt 5 V. Šis projekts kopā izmanto 12 gaismas diodes (lai gan man ir vairāk gaismas diodes uz sloksnēm, bet es izmantoju tikai katru trešo LED), un katra no tām aizņem 60 mA, kad tiek izmantota pilna gaisma. Tas kopā nodrošina 720 mA. Mēs esam labi sprieguma regulatora izejas jaudas robežās, tāpēc mums ir labi. Vienkārši pārliecinieties, ka vads ir pietiekami liels, lai vadītu jaudu, es izmantoju 24 izmēru Cat 6 ethernet vadu. Ethernet vads bija kaut kas tāds, ko es sēdēju, un tam ir 8 krāsu kodēti vadi, tāpēc tas labi darbojās šim projektam. Vienīgie vadi, kuriem pēc tam jāiet uz augšējo kārbu, ir jauda un zemējums (kas abi tiek sadalīti starp sloksnēm) un divas datu līnijas (viena katrai sloksnei).

Pārējā elektroinstalācija ir savienota ar arduino tapām un baro to. Šim projektam tika izmantotas šādas tapas:

  1. Vin - savienots ar 5V
  2. Gnd - savienots ar zemi
  3. Pin2 - savienots ar kreisās joslas datu līniju
  4. Pin3 - savienots ar Labās joslas datu līniju
  5. Pin4 - savienots ar bremžu signālu no optoizolatora
  6. Pin5 - savienots ar kreiso pagrieziena signālu no optoizolatora
  7. Pin6 - savienots ar labo pagrieziena signālu no optoizolatora

2. darbība: elektroinstalācija un uzstādīšana

Elektroinstalācija un uzstādīšana
Elektroinstalācija un uzstādīšana
Elektroinstalācija un uzstādīšana
Elektroinstalācija un uzstādīšana
Elektroinstalācija un uzstādīšana
Elektroinstalācija un uzstādīšana

Kad ķēde ir izveidota, ir pienācis laiks to faktiski pieslēgt vietā. Izmantojot velosipēda elektroinstalācijas shēmu, jums būs jāatrod šāds:

  • Pārslēgts barošanas avots
  • Zeme
  • Bremžu signāls
  • Kreisā pagrieziena signāls
  • Pa labi pagrieziena signāls

Manējā bija viens spraudnis, kurā bija visi šie, tāpēc es to vienkārši izmantoju. Ar pietiekami daudz laika es, iespējams, būtu varējis atrast to pašu spraudņa stilu un vienkārši izveidot spraudņa moduli, bet es to nedarīju, tāpēc es vienkārši noņēmu izolāciju vietās un pielodēju jauno vadu pie tā. Šajos savienotajos savienojumos es izmantoju kontaktdakšas, lai nākotnē varētu noņemt pārējo. No turienes es ievietoju Arduino, kas tagad atrodas aizzīmogotā projekta kastē, zem sēdekļa, kur es to piestiprināju. Pēc tam izejas kabelis iet gar statīva rāmi līdz ūdensnecaurlaidīgam spraudnim, pēc tam ieiet kastē un iet gar aizmuguri līdz vākam, kur tas sadalās katrā pusē. Vadi iet gar vāka iekšpusi līdz vietai, kur atrodas gaismas diožu savienojumi. Vads ir vietā, izmantojot rāvējslēdzējus, kas piestiprināti pie āra klases rāvējslēdzēju stiprinājumiem ar līmējošu pamatni. Tos varat atrast mājas uzlabošanas veikala kabeļu uzstādīšanas sadaļā

Es izmantoju divus mini JST kontaktdakšas uz LED sloksnēm, jo man vajadzēja pietiekami mazu kontaktdakšu, lai izietu caur minimālā diametra caurumu, un tāpēc, ka vēlējos pārliecināties, vai ir pietiekami daudz stieples, lai izpildītu pašreizējās prasības. Atkal, iespējams, tas bija pārmērīgs darbs, un man nebija neviena neliela kontaktdakšas ar trim vadiem. Caurums kastē gaismas sloksnes vadiem, lai izietu cauri, tika noslēgts, lai nepieļautu ūdens nokļūšanu. Attiecībā uz LED sloksņu novietošanu, jo atstarpēs ir neliela neatbilstība (atstarotāja caurumu atstarpe un gaismas diodes atstarpei bija aptuveni 1 - 1,5 mm atšķirība), es tās novietoju tā, lai tās sadalītu starpību starp LED un caurumu pēc iespējas vairāk. Pēc tam es izmantoju karstu līmi, lai tos piestiprinātu vietā, un hermētiķi, lai pilnībā noslēgtu vietu. LED sloksnes pašas ir ūdensizturīgas, tāpēc nav problēmu, ja tās kļūst mitras. Lai gan šķiet, ka to ir daudz jāinstalē, tas nākotnē atvieglo sistēmas noņemšanu vai detaļu nomaiņu, jo tas var notikt.

3. darbība: kods

Manam avota kodam vajadzētu būt šīs pamācības sākumā. Es vienmēr smagi komentēju savu kodu, lai vēlāk to būtu vieglāk saprast. Atruna: Es neesmu profesionāls kodu rakstītājs. Kods tika uzrakstīts ar metodi, kuru bija vieglāk sākt, un tika veikti daži uzlabojumi, taču es zinu, ka to varētu uzlabot. Es arī izmantoju lielu daudzumu aizkaves () funkcijas laika noteikšanai, kas nav tik ideāli. Tomēr signāli, ko iekārta saņem, salīdzinājumā nav ātri signāli, tāpēc es joprojām jutos pamatota, lai tos saglabātu, izmantojot kaut ko līdzīgu milis (). Es esmu arī ļoti aizņemts tēvs un vīrs, tāpēc šajā sarakstā nav daudz laika, lai uzlabotu kaut ko, kas galu galā nemainīs funkciju.

Šim projektam ir nepieciešama tikai viena bibliotēka, kas ir FastLED bibliotēka. Tam ir viss kods WS2811/WS2812B tipa LED sloksņu vadīšanai. Turpmāk es apskatīšu pamata funkcijas, kuras tiks izmantotas.

Pirmā, izņemot standarta definīcijas, ir divu sloksņu deklarēšana. Katrai sloksnei izmantosit šādu kodu:

FastLED.addLeds (gaismas diodes [0], NUM_LEDS);

Šī koda līnija, kas izveidota 2. tapa, definē šo sloksni kā sloksni 0 ar gaismas diožu skaitu, ko nosaka konstante NUM_LEDS, kas manā gadījumā ir iestatīts uz 16. Lai definētu otro joslu, 2 kļūs par 3 (tapai 3) un sloksne tiks apzīmēta ar sloksni 1.

Nākamā rinda, kas būs svarīga, ir krāsu definīcija.

gaismas diodes [0] [1] = Krāsu_augsta CRGB (r, g, b);

Šī koda rinda tiek izmantota dažādos veidos (lielākā daļa no maniem lieto konstanti). Būtībā šis kods nosūta vērtību katram LED kanālam (sarkans, zaļš, zils), kas nosaka katru spilgtumu. Spilgtuma vērtību var definēt ar skaitli 0 - 255. Mainot katra kanāla spilgtuma līmeni, varat definēt dažādas krāsas. Šim projektam es vēlos baltu krāsu, lai gaisma būtu pēc iespējas gaišāka. Tāpēc vienīgās izmaiņas, ko es daru, ir iestatīt vienādu spilgtuma līmeni visos trīs kanālos.

Nākamais koda komplekts tiek izmantots katras gaismas individuālai iedegšanai. Ņemiet vērā, ka katrai sloksnei katrai gaismas diodei ir adrese, kas sākas ar 0 tai adresei, kas ir vistuvāk datu līnijas savienojumam, līdz pat vislielākajam gaismas diodei, kas jums ir mīnus 1. Piemērs: šīs ir 16 LED sloksnes, tāpēc augstākais ir 16 - 1 = 15. Iemesls tam ir tas, ka pirmā gaismas diode ir apzīmēta ar 0.

for (int i = NUM_LEDS -1; i> -1; i = i -3) {// Tas mainīs katras trešās gaismas diodes gaismu no pēdējā uz pirmo. gaismas diodes [0] = zema krāsa; // Iestatiet 0 sloksnes LED krāsu izvēlētajā krāsā. gaismas diodes [1] = Krāsa_zema; // Iestatiet 1. sloksnes LED krāsu izvēlētajā krāsā. FastLED.show (); // Parādiet iestatītās krāsas. gaismas diodes [0] = CRGB:: melns; // Izslēdziet iestatīto krāsu, gatavojoties nākamajai krāsai. gaismas diodes [1] = CRGB:: melns; kavēšanās (150); } FastLED.show (); // Parādiet iestatītās krāsas.

Šis kods darbojas tā, ka mainīgais (i) tiek izmantots for cilpā kā gaismas diodes adrese, uz kuru pēc tam atsaucas uz visu gaismas diožu skaitu (NUM_LEDS). Iemesls tam ir tas, ka es vēlos, lai gaismas ieslēgtos sloksnes beigās, nevis sākumā. Iestatījums tiek izvadīts abās joslās (gaismas diodes [0] un gaismas diodes [1]), pēc tam tiek izdota komanda, kas parāda izmaiņas. Pēc tam šī gaisma tiek izslēgta (CRGB:: Black) un iedegas nākamā gaisma. Melnā atsauce ir īpaša krāsa FastLED bibliotēkā, tāpēc man nav jāizsniedz 0, 0, 0 katram kanālam, lai gan viņi darītu to pašu. For cilpa veic 3 gaismas diodes vienlaikus (i = i-3), jo es izmantoju tikai katru otro gaismas diodi. Līdz šīs cilpas beigām gaismas secība pāries no vienas gaismas diodes uz otru, un vienā joslā iedegas tikai viena gaisma, kas ir sava veida Knight Rider efekts. Ja vēlaties, lai katra gaisma iedegtos tā, lai josla veidotos, vienkārši noņemiet līnijas, kas izslēdz gaismas diodes, kas notiek nākamajā programmas koda komplektā.

for (int i = 0; i <dim; i ++) {// Ātri izgaist gaismas līdz gaismai. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Tas iedegs pēdējos trīs stāvokļa gaismas lukturus. gaismas diodes [0] = CRGB (rt, gt, bt); // Iestatiet 0 sloksnes LED krāsu izvēlētajā krāsā. gaismas diodes [1] = CRGB (rt, gt, bt); // Iestatiet 1. sloksnes LED krāsu izvēlētajā krāsā. } FastLED.show (); kavēšanās (3); }

Pēdējais koda piemērs, ko izmantoju gaismas diodēm, ir izbalēšanas cilpa. Šeit es izmantoju pagaidu slotus katra kanāla spilgtumam (rt, gt, bt) un palielinu tos par 1 ar aizkavi starp katru rādīšanu, lai sasniegtu vēlamo izskatu. Ņemiet vērā arī to, ka šis kods maina tikai pēdējās trīs gaismas diodes, jo tas izgaist gaitas gaismās, tāpēc es sāku no 9, nevis no 0.

Pārējais LED kods ir to atkārtojumi. Viss pārējais ir vērsts uz signāla meklēšanu trīs dažādos vados. Koda apgabalā cilpa () tiek meklēti bremžu lukturi, kurus tā vienreiz mirgos, pirms paliek ieslēgta (ja nepieciešams, to var regulēt) vai pagrieziena rādītāju meklēšana. Šim kodam, jo nevarēju pieņemt, ka kreisās un labās puses pagrieziena lukturi bīstamības gadījumā ieslēgsies tieši tajā pašā laikā, vispirms es meklēju vienu vai otru kodu, pēc tam pēc nelielas kavēšanās pārbaudīšu, vai abi ir ieslēgti. iedegas avārijas gaismas. Viena sarežģīta daļa, kas man bija, bija pagrieziena rādītāji, jo gaisma uz kādu laiku nodziest, un kā es varu noteikt atšķirību starp signālu, kas joprojām ir ieslēgts, bet izslēgšanas periodā, un atceltu signālu? Es izdomāju īstenot aizkaves ciklu, kas ir iestatīts turpināties ilgāk nekā aizkave starp signālu mirgošanu. Ja pagrieziena rādītājs joprojām ir ieslēgts, signāla cilpa turpinās. Ja signāls neiedegas, kad kavēšanās beidzas, tas atgriežas cilpas sākumā (). Lai pielāgotu aizkaves ilgumu, mainiet nemainīgās gaismas skaitli. Aizkavēšanās, kas jāatceras par katru 1 gaismas signālu Aizkavēt kavēšanās izmaiņas par 100 ms.

while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); ja (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } kavēšanās (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Tas mainīs katras trešās gaismas diodes gaismu no pēdējās uz pirmo. gaismas diodes [0] = CRGB (0, 0, 0); // Iestatiet 0 sloksnes LED krāsu izvēlētajā krāsā. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Tas iestatīs gaitas lukturus, kas izmanto tikai pēdējos trīs. gaismas diodes [0] = Krāsu zema; // Iestatiet 0 sloksnes LED krāsu izvēlētajā krāsā. } FastLED.show (); // Izvades iestatījumu atgriešana; // Kad pagrieziena rādītājs vairs nav ieslēgts, atgriezieties pie cilpas. }

Cerams, ka pārējais kods ir pašsaprotams. Tas ir tikai atkārtots signālu pārbaudes un darbības kopums.

4. solis: rezultāti

Rezultāti
Rezultāti

Pārsteidzošā daļa bija tā, ka šī sistēma darbojās pirmo reizi, kad to pieslēdzu pie velosipēda. Tagad, godīgi sakot, pirms tam es to ļoti pārbaudīju uz stenda, taču es joprojām gaidīju, ka man radīsies problēma vai korekcija. Izrādās, ka man nebija jāveic nekādas izmaiņas kodā, kā arī savienojumos. Kā redzat videoklipā, sistēma iet pa startēšanas secību (kurai jums nav jābūt), pēc tam pēc noklusējuma ieslēdzas gaismās. Pēc tam tas meklē bremzes, tādā gadījumā tas iedegs visas gaismas diodes līdz pilnam spilgtumam un vienu reizi mirgos, pirms paliks ieslēgts, līdz tiek atlaistas bremzes. Kad tiek izmantots pagrieziena rādītājs, es veicu ritināšanas efektu tajā pusē, kurā ir norādīts pagrieziens, un otrā pusē būs vai nu gaitas gaismas, vai bremžu gaisma, ja tā ir ieslēgta. Bīstamības gaismas vienlaicīgi mirgos kopā ar citiem lukturiem.

Cerams, ka ar šīm papildu gaismām es būšu redzamāks citiem cilvēkiem. Vismaz tas ir jauks papildinājums, lai mana kaste izceltos nedaudz vairāk nekā citas, vienlaikus nodrošinot lietderību. Es ceru, ka šis projekts ir noderīgs arī kādam citam, pat ja viņš nestrādā ar motocikla augšējās kastes apgaismojumu. Paldies!

Ieteicams: