Sisukord:
- Tarvikud
- Samm: vooluringi ehitamine
- Samm: juhtmestik ja paigaldamine
- 3. samm: kood
- 4. samm: tulemused
Video: DIY Givi V56 mootorratta topboxi valguskomplekt integreeritud signaalidega: 4 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Mootorratturina olen ma liiga tuttav sellega, et mind koheldakse nii, nagu oleksin teel nähtamatu. Üks asi, mida ma oma ratastele alati lisan, on ülemine kast, millel on tavaliselt integreeritud tuli. Hiljuti uuendasin uue jalgratta ja ostsin Givi V56 Monokey kasti, kuna sellel oli esemete jaoks palju ruumi. Sellel karbil on koht tehase valguskomplekti jaoks, mis koosneb kahest LED -ribast mõlemal küljel. Probleem on selles, et see komplekt maksab umbes 70 dollarit ja ainult pidurid. On olemas järelturukomplekt, mis tõenäoliselt teeb sarnaseid toiminguid ja võib olla pisut lihtsam paigaldada, kuid teie hind tõuseb 150 dollarini. Olles leidlik inimene ja otsides vabandust adresseeritavate LED -ribade proovimiseks, otsustasin teha integreeritud süsteemi, millel poleks mitte ainult pidurituled, vaid ka sõidutuled (alati sisse lülitatud), suunatuled ja ohutuled. Lihtsalt paganama pärast lisasin isegi käivitusjärjestuse…. sest ma saaksin. Pange tähele, et see võttis palju tööd, kuigi mul oli palju asju, mida välja mõelda. Tööle vaatamata olen pigem rahul sellega, kuidas see välja kukkus. Loodetavasti on see kellelegi teisele kasulik.
Selle süsteemi tööpõhimõte on see, et Arduino seade otsib tihvtidelt signaale: piduritule, vasakpöörde ja parema suunatule. Mootorratta 12 -voldise signaali lugemiseks kasutasin optoisolaatoreid, et teisendada 12 V signaal 5 V signaaliks, mida Arduino oskab lugeda. Seejärel ootab kood ühte neist signaalidest ja väljastab seejärel käsklused LED -ribale, kasutades FastLED -i teeki. See on põhitõed, nüüd detailidesse laskumiseks.
Tarvikud
Need on asjad, mida ma kasutasin, sest enamasti olid mul need juba lebamas. Ilmselgelt saab neid vajadusel vahetada:
- Arduino - ma kasutasin suuruse kaalutlustel nano, kuid võite kasutada kõike, mis teile tundub, kui teil on viis tihvti kasutada.
- 5V regulaator - kasutasin L7805CV, mis oli võimeline 1,5 amprit. See projekt kasutab valgusdioodide jaoks 0,72 amprit pluss nano võimsust, nii et 1,5 sobib selle projekti jaoks suurepäraselt.
- Kondensaatorid - pingeregulaatori nõuetekohaseks toimimiseks vajate ühte 0,33 uF ja ühte 0,1 uF.
- 3x optoisolaatorid - signaali muundamiseks 12V -lt 5V -le. Ma kasutasin PC817X tüüpi, millel on ainult neli tihvti, mis on kõik, mida vajame.
- Takistid - vajate kahte tüüpi, igast tüübist kolme. Esimesest peab piisama, et vähendada voolu optoisolaatori IR -LED -i kaudu. Te vajate vähemalt 600 oomi, kuid 700 oleks parem mõte mootorratta muutuvate pingete käsitlemiseks. Teine peab olema kuskil 10–20 000 km kiire signaali jaoks teisel pool optoisolaatorit.
- Prototüüpplaat - mul olid mõned, mis olid piisavalt väikesed, et mahtuda väikese projektikarbi sisse koos väikese kärpimisega.
- Projektikarp - piisavalt suur, et mahutada komponente, kuid piisavalt väike, et seda oleks lihtne paigaldada.
- Traat - kasutasin Cat 6 Etherneti traati, sest mul oli seda palju istudes. Sellel on kaheksa värvikoodiga juhtmestikku, mis aitasid kõikidel erinevatel ühendustel ja oli piisavalt suur gabariit praeguste tõmbamiste jaoks.
- Pistikud - kõikjal, kus soovite, et süsteem oleks kergesti eemaldatav. Kasutasin veekindlat pistikut, et võimaldada ülemise karbi eemaldamist ja sademete või vee sattumist. Vajasin LED -ribade jaoks ka väiksemaid pistikuid, nii et ma ei pidanud suuri auke puurima.
- Tõmblukud ja kleeplindid, mis hoiavad kõike paigal.
- Ühenduste korrastamiseks kokkutõmmatav mähis.
Samm: vooluringi ehitamine
Ilmselgelt, kui jälgite minu ehitust, ei pea te läbima minu tehtud testimisi. Esimese asjana veendusin, et minu kood töötab ja kas ma saan optoisolaatoritest korralikult signaali ning LED -ribasid õigesti juhtida. Kulus hetk, et välja mõelda, kuidas kõige paremini signaalipoldid isolaatorite külge kinnitada, kuid katse -eksituse meetodil leidsin õige suuna. Kasutasin lihtsalt standardset prototüüpplaati, kuna ehitasin ainult ühte ja jälgimustri leidmine oleks võtnud rohkem aega kui väärt. Trükkplaadi ülemine osa näeb hea välja, kuid alumine näeb välja nagu natuke jama, kuid vähemalt on see funktsionaalne.
Põhidisain algab 12 V toite sisestamisega lülitatud allikast (traat, mis on sisse lülitatud ainult siis, kui mootorratas on sisse lülitatud). Ühendusskeem võib selle juhtme leidmisel tõesti aidata. See sisestatakse pingeregulaatori ühele küljele. 0,33 uF kondensaator seob selle sisendi pingeregulaatori maapinnaga, mis seejärel mootorrattaga maapinnale tagasi suunatakse. Pingeregulaatori väljundisse on 0,1 uF kondensaator maasse ühendatud. Need kondensaatorid aitavad reguleerija pinget tasandada. Kui te ei leia neid trükkplaadi pildilt, on need pingeregulaatori all. Sealt läheb 5 V liin Arduino Vini külge, toitepistikuni, mis toidab LED -ribasid, ja kaks optoisolaatori allikapoolt, mis suunatakse Arduino tihvtidesse, andes vajaliku 5 V signaali.
Optoisolaatorite osas on kaks külge: üks IR -LED -ga ja teine transistor koos IR -detektoriga. Soovime kasutada 12V signaali mõõtmiseks IR LED -külge. Kuna valgusdioodi esipinge on 1,2 V, vajame järjestikku voolu piiravat takistit. 12V - 1,2V = 10,8V ja LED -i töötamiseks 18 mA juures (mulle meeldib eluaegsetel põhjustel alati alla 20 mA töötada) vajate takisti R = 10,8V/0,018A = 600 oomi. Samuti kipuvad sõidukite pinged olema kõrgemad, potentsiaalselt kuni 14 V, seega on parem seda planeerida, mis on umbes 710 oomi, kuigi 700 oleks rohkem kui mõistlik. Seejärel suunatakse LED -poole väljund maapinnale tagasi. Optoisolaatori väljundpoole jaoks kasutab sisend regulaatori 5V signaali, seejärel ühendatakse väljund enne maandamist teise takistiga. See takisti peab lihtsalt olema umbes 10k - 20k oomi, vähemalt nii näitas minu andmeleht. See annab kiire signaali mõõtmise, kuna me ei tegele mürarikka keskkonnaga. Arduino tihvti väljund väljub takisti ja optoisolaatori väljundi vahel, nii et kui signaal on väljas, on tihvt madal ja kui signaal on tihvti peal.
LED -riba tuledel on kolm juhtmest: toide, maandus ja andmed. Toide peab olema 5V. See projekt kasutab kokku 12 LED -i (kuigi mul on ribadel rohkem LED -e, kuid kasutan ainult iga kolmandat LED -i) ja igaüks võtab 60mA, kui valget valgust kasutatakse täie heledusega. See annab kokku 720 mA. Oleme pingeregulaatori väljundvõimsuse piires, seega oleme tublid. Lihtsalt veenduge, et traat on piisavalt suur gabariit võimsuse käsitsemiseks, ma kasutasin 24 -mõõtmelist Cat 6 Etherneti traati. Etherneti juhe oli midagi, mida ma istusin ja sellel on 8 värvikoodiga juhet, nii et see töötas selle projekti jaoks hästi. Ainsad juhtmed, mis peavad seejärel ülemisse kasti minema, on toide ja maandus (mõlemad saavad ribade vahel jagatud) ja kaks andmesidet (üks iga riba kohta).
Ülejäänud juhtmestik ühendab arduino tihvtidega ja toidab seda toitega. Selle projekti jaoks kasutatud tihvtid olid järgmised:
- Vin - ühendatud 5V -ga
- Gnd - ühendatud maaga
- Pin2 - ühendatud vasakpoolse riba andmeliiniga
- Pin3 - ühendatud parempoolse riba andmeliiniga
- Pin4 - ühendatud optoisolaatori pidurisignaaliga
- Pin5 - ühendatud optoisolaatori vasakpoolse suunatulega
- Pin6 - ühendatud optoisolaatori parempoolse suunatulega
Samm: juhtmestik ja paigaldamine
Kui vooluring on üles ehitatud, saabub aeg see tegelikult paika panna. Kasutades oma jalgratta juhtmestiku skeemi, peate leidma järgmise:
- Lülitatud toide
- Maa
- Pidurisignaal
- Vasakpöörde signaal sisse
- Parempöörde signaal
Minu jaoks oli üks pistik, millel olid kõik need peal, nii et ma lihtsalt kasutasin seda. Piisava ajaga oleksin võinud leida sama pistiku stiili ja lihtsalt mooduli pistikupesa teha, kuid ma ei teinud seda, nii et ma lihtsalt eemaldasin kohati isolatsiooni ja jootsin selle juurde uue juhtme. Kasutasin nendel liitekohtadel pistikuid, et saaksin ülejäänud vajadusel tulevikus eemaldada. Sealt panin Arduino, mis on nüüd suletud projektikarbis, selle istme alla, kuhu ma selle kinnitasin. Seejärel jookseb väljundkaabel mööda hammasraami veekindla pistikuni, seejärel siseneb kasti ja jookseb mööda tagaosa kaaneni, kus see jaguneb igale poole. Juhtmed kulgevad mööda kaane sisekülge kuni punktini, kus on valgusdioodide ühendused. Traat on paigas, kasutades välistingimustes olevate tõmblukuga kinnitusdetailide külge kinnitatud tõmblukke, millel on kleepuv alus. Need leiate kodukaubanduse kaabli paigaldamise jaotisest
Kasutasin LED -ribadel kahte mini -JST -pistikut, kuna mul oli vaja piisavalt väikest pistikut, et läbida minimaalse läbimõõduga auk ja kuna tahtsin veenduda, et praeguste nõuete täitmiseks oleks piisavalt traati. Jällegi võis see olla üleliigne ja mul polnud käepärast ühtegi väikest kolme juhtmega pistikut. Karbis olev auk valgusribade juhtmete läbimiseks suleti, et vesi välja ei pääseks. Mis puutub LED -ribade paigutamisse, siis kuna vahekaugustes on väike ebakõla (helkuri aukude ja valgusdioodide vaheline kaugus oli umbes 1–1,5 mm), paigutasin need nii, et need jagaksid LED -i ja auk nii palju kui võimalik. Seejärel kasutasin nende kinnitamiseks kuuma liimi ja piirkonna täielikuks tihendamiseks hermeetikut. LED -ribad ise on veekindlad, seega pole probleemi, kui need märjaks saavad. Kuigi installimine tundub palju, muudab see süsteemi tulevikus lihtsamini eemaldatavaks või on vaja osi vahetada, sest see võib juhtuda.
3. samm: kood
Minu lähtekood peaks olema selle juhendi alguses. Kommenteerin alati oma koodi tihedalt, nii et seda on hiljem lihtsam mõista. Vastutusest loobumine: ma pole professionaalne koodikirjutaja. Kood oli kirjutatud meetodil, mida oli lihtsam alustada ja mõned parandused tehti, kuid ma tean, et seda võiks täpsustada. Ma kasutan ajastamiseks ka suurt hulka funktsiooni delay (), mis pole nii ideaalne. Signaalid, mida seade vastu võtab, ei ole aga sellega võrreldes kiired signaalid, nii et tundsin end siiski õigustatuna, et jätta need kasutamata millegi sarnase () abil. Olen ka väga hõivatud isa ja abikaasa, nii et kulutades aega millegi parandamiseks, mis lõpuks funktsiooni ei muuda, pole nimekirjas esikohal.
Selle projekti jaoks on vaja ainult ühte raamatukogu, mis on FastLED -kogu. Sellel on kogu kood WS2811/WS2812B tüüpi LED -ribade juhtimiseks. Sealt katan põhifunktsioonid, mida kasutatakse.
Esimene, peale standardsete määratluste, on kahe riba deklareerimine. Iga riba jaoks kasutate järgmist koodi:
FastLED.addLeds (ledid [0], NUM_LEDS);
See koodirida seadistab tihvti 2 määratleb selle riba ribana 0 koos LED -ide arvuga, mis on määratud konstantsega NUM_LEDS, mis minu puhul on seatud 16. Teise riba määramiseks saab 2 -st 3 (tihvti 3 jaoks) ja riba märgitakse ribaks 1.
Järgmine rida, mis on oluline, on värvide määratlus.
ledid [0] [1] = Värvi_kõrge CRGB (r, g, b);
Seda koodirida kasutatakse küll erineva väljanägemisega (enamus minu kasutustest on konstant). Põhimõtteliselt saadab see kood igale LED -kanalile (punane, roheline, sinine) väärtuse, mis määrab iga heleduse. Heleduse väärtust saab määrata numbritega 0 - 255. Iga kanali heledustaset muutes saate määrata erinevaid värve. Selle projekti jaoks tahan, et valge värv hoiaks valguse võimalikult heledana. Nii et ainsad muudatused, mida ma teen, on heleduse taseme seadmine kõigi kolme kanali jaoks sama.
Järgmist koodikomplekti kasutatakse iga valguse individuaalseks valgustamiseks. Pange tähele, et iga riba puhul on igal valgusdioodil aadress, mis algab 0 -st andmesideühendusele kõige lähemal oleva aadressi juures kuni kõige suurema LED -i arvuni, mis teil on miinus 1. Näide, need on 16 LED -riba, seega on kõrgeim 16 - 1 = 15. Selle põhjuseks on asjaolu, et esimene LED on tähistatud 0 -ga.
for (int i = NUM_LEDS -1; i> -1; i = i -3) {// See muudab iga kolmanda LED -i valgust viimasest esimeseks. ledid [0] = Värvivalgus; // Määra riba 0 LED -värv valitud värvile. ledid [1] = Värvivalgus; // Määra riba 1 LED -värv valitud värviks. FastLED.show (); // Näita määratud värve. ledid [0] = CRGB:: Must; // Lülitage järgmise värvi ettevalmistamisel valitud värv välja. ledid [1] = CRGB:: Must; viivitus (150); } FastLED.show (); // Näita määratud värve.
Selle koodi tööpõhimõte seisneb selles, et muutujat (i) kasutatakse a for -ahelas LED -aadressina, millele seejärel viidatakse LED -ide koguarvule (NUM_LEDS). Selle põhjuseks on asjaolu, et ma tahan, et tuled algaksid pigem riba lõpus kui alguses. Seade väljastatakse mõlemale ribale (LED -id [0] ja LED -id [1]), seejärel väljastatakse käsk muudatuse näitamiseks. Pärast seda lülitatakse see tuli välja (CRGB:: Must) ja süttib järgmine tuli. Must viide on FastLED -i teegis konkreetne värv, nii et ma ei pea iga kanali jaoks väljastama 0, 0, 0, kuigi nad teeksid sama asja. For loop edastab korraga 3 LED-i (i = i-3), kuna kasutan ainult kõiki teisi LED-e. Selle tsükli lõpuks liigub valgusjärjestus ühelt LED -ilt järgmisele, kusjuures ribal on ainult üks tuli, mis on omamoodi Knight Rider -efekt. Kui soovite, et iga tuli põleks nii, et riba moodustuks, eemaldage lihtsalt read, mis lülitavad LED -id välja, mis juhtub programmi järgmises koodikomplektis.
for (int i = 0; i <dim; i ++) {// Kustutage tuled kiiresti jooksva valguse tasemele. rt = rt + 1; gt = gt + 1; bt = bt + 1; jaoks (int i = 9; i <NUM_LEDS; i = i +3) {// See süttib kolm viimast asendituld. ledid [0] = CRGB (rt, gt, bt); // Määra riba 0 LED -värv valitud värvile. ledid [1] = CRGB (rt, gt, bt); // Määra riba 1 LED -värv valitud värviks. } FastLED.show (); viivitus (3); }
Viimane näide koodidest, mida ma LED -ide jaoks kasutan, on fade loop. Siin kasutan iga kanali heleduse jaoks ajutisi pilusid (rt, gt, bt) ja suurendan neid 1 võrra, iga näitamise vahel viivitusega, et saavutada soovitud välimus. Pange tähele, et see kood muudab ainult kolme viimast LED -i, kuna see tuled tuhmuvad, nii et ma alustan 9 -st, mitte 0 -st.
Ülejäänud LED -kood on nende iteratsioonid. Kõik muu on keskendunud kolmele erinevale juhtmele signaali otsimisele. Koodi alaosa Loop () otsib piduritulesid, mis vilguvad üks kord enne sisselülitamist (seda saab soovi korral reguleerida) või suunatulede otsimist. Selle koodi puhul, kuna ma ei osanud eeldada, et vasak- ja parempoolsed suunatuled lülituvad ohu korral täpselt samal ajal sisse, pean koodi otsima kõigepealt ühe, seejärel pärast väikest viivitust kontrollima, kas mõlemad on sisse lülitatud ohutuled põlevad. Üks keeruline osa, mis mul oli, oli suunatuled, sest tuli kustub mõneks ajaks, nii et kuidas ma tean erinevust veel põleva, kuid väljalülitatud perioodi signaali ja tühistatud signaali vahel? Mõtlesin välja viivitusahela, mis peaks kestma kauem kui signaalivälkude vaheline viivitus. Kui suunatuled on endiselt sisse lülitatud, jätkub signaalitsükkel. Kui signaal ei tule viivituse lõppedes uuesti sisse, läheb see tagasi tsükli algusesse (). Viite pikkuse reguleerimiseks muutke konstantse valguse numbrit Viivitus, mis jääb meelde iga 1 valguse korral Viivitus muutub 100 ms võrra.
while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } viivitus (100); } jaoks (int i = 0; i <NUM_LEDS; i = i +3) {// See muudab iga kolmanda LED -i valgust viimasest esimeseks. ledid [0] = CRGB (0, 0, 0); // Määra riba 0 LED -värv valitud värvile. } jaoks (int i = 9; i <NUM_LEDS; i = i +3) {// See seab sisse tuled, mis kasutavad ainult kolme viimast. ledid [0] = Värvivalgus; // Määra riba 0 LED -värv valitud värvile. } FastLED.show (); // Väljundi seaded return; // Kui suunatuled pole enam sisse lülitatud, minge tagasi silmuse juurde. }
Loodetavasti on ülejäänud kood iseenesestmõistetav. See on lihtsalt korduv signaalide kontrollimise ja neile reageerimise komplekt.
4. samm: tulemused
Hämmastav osa oli see, et see süsteem töötas esimest korda, kui ma selle jalgrattaga ühendasin. Nüüd, ausalt öeldes, katsetasin seda enne seda pingil tugevalt, kuid eeldasin siiski probleemi või kohandamist. Selgub, et ma ei pidanud nii koodi kui ka ühendusi kohandama. Nagu videost näete, läheb süsteem käivitusjärjestuse kaudu (mida te ei pea omama), seejärel vaikimisi sõidutuled. Pärast seda otsib ta pidureid, sel juhul süttib see kõik LED -id täieliku heleduseni ja vilgub neid üks kord enne, kui pidurid vabastatakse. Suunatule kasutamisel tegin kerimisefekti küljele, millel on pööre näidatud ja teine pool on kas sõidutuled või pidurituled, kui need on sisse lülitatud. Ohutuled vilguvad koos teiste tuledega õigeaegselt.
Loodetavasti olen nende lisatuledega teistele inimestele paremini nähtav. Vähemalt on see tore täiendus, mis muudab minu kasti kasulikkust pakkudes teistest natuke rohkem silma. Loodan, et see projekt on kasulik ka kellelegi teisele, isegi kui ta ei tööta mootorratta ülemise kasti valgustusega. Tänan!
Soovitan:
Mootorratta tagalamp koos integreeritud vilkuritega, kasutades programmeeritavaid LED -e: 4 sammu
Mootorratta tagalamp koos integreeritud vilkuritega, kasutades programmeeritavaid LED -e: Tere! See on mõnevõrra lihtne isetegemine selle kohta, kuidas teha oma mootorrattale kohandatud programmeeritav RGB -tagumine lamp (koos integreeritud vilkurite/näidikutega) või mis tahes muu, kasutades WS2812B (individuaalselt adresseeritavad LED -id) ja Arduinos . Valgustamiseks on 4 režiimi
Raspberry Pi mootorratta armatuurlaud: 9 sammu (piltidega)
Raspberry Pi mootorratta armatuurlaud: üliõpilasena Multimeedia & Kommunikatsioonitehnoloogia Howest Kortrijkis pidin tegema oma IoT projekti. See ühendaks kõik esimesel aastal järgitud moodulid üheks suureks projektiks. Kuna vabal ajal sõidan palju mootorrattaga
Päikeseenergial töötava mootorratta valimiskell: 5 sammu (piltidega)
Päikeseenergial töötava mootorratta valimiskell: mul oli vana mootorratta juurest jäänud tachoketas, kui asendasin mehaanilise pöörete loenduri elektroonilise paneeliga (see on teine projekt!) Ja ma ei tahtnud seda ära visata. Need asjad on mõeldud taustvalgustusega, kui jalgratta tuled on välja lülitatud
Mootorratta kaamera kinnitus (tagumine kinnitus): 11 sammu (koos piltidega)
Mootorratta kaamerakinnitus (tagumine tihvt): olen juba mõnda aega oma sportratta jaoks kaamerakinnituse võrku uurinud. Kõik, mida ma leian, on kas liiga kallis, kohmakas või liiga raske installida/desinstallida. Mõned on kõik kolm! Ühel päeval oli mul kolmekuningapäev ja tulin selle sooviga välja
Mobiiltelefoni äratus mootorratta, auto või muu jaoks, mida soovite: 7 sammu (koos piltidega)
Mobiiltelefoni äratus mootorrattale, autole või muule, mida soovite: mul on kõrini tavalistest häiretest, mis teevad palju müra, ja keegi ei pane neid enam tähele. Samuti ei tea, kas keegi oli mu jalgrattaga segi ajanud, sest olin äratuskella kuulamiseks kaugel. Nii et otsustasin selle äratuse teha vana mobiiltelefoni abil