Turinys:

Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus su nauja automobilio stereo sistema: 9 žingsniai (su nuotraukomis)
Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus su nauja automobilio stereo sistema: 9 žingsniai (su nuotraukomis)

Video: Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus su nauja automobilio stereo sistema: 9 žingsniai (su nuotraukomis)

Video: Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus su nauja automobilio stereo sistema: 9 žingsniai (su nuotraukomis)
Video: How to use W1209 Temperature relay controller and program the thermostat 2024, Liepa
Anonim
Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus naudodamas naują automobilio stereo
Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus naudodamas naują automobilio stereo
Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus naudodamas naują automobilio stereo
Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus naudodamas naują automobilio stereo
Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus naudodamas naują automobilio stereo
Pasirinktinis „Arduino“išlaikys CAN vairo mygtukus naudodamas naują automobilio stereo

Aš nusprendžiau pakeisti originalią „Volvo V70 -02“automobilio stereo aparatūrą nauja stereo įranga, kad galėčiau mėgautis tokiais dalykais kaip mp3, „Bluetooth“ir laisvų rankų įranga.

Mano automobilyje yra keletas vairo valdiklių, skirtų stereofonui, kuriuos norėčiau ir toliau naudoti. Nesitikėjau, kad tai bus problema, nes rinkoje yra keletas adapterių, kurie turėtų būti suderinami su mano automobiliu. Tačiau netrukus sužinojau, kad jų nėra! (Atrodo, kad V70 adapteriai gali turėti problemų su -02 automobiliais dėl šiek tiek kitokio CAN protokolo.)

Taigi ką tada daryti? Išlaikyti seną stereo aparatūrą? Gyventi su neveikiančiais mygtukais? Žinoma ne! Jei rinkoje nėra veikiančio adapterio, turėsime jį sukurti!

Ši instrukcija gali būti taikoma (su tam tikrais pritaikymais) automobiliuose, kuriuose vairo mygtukai jungiasi per CAN magistralę.

1 veiksmas: sužinokite, kaip siųsti komandas į „Stereo“

Sužinokite, kaip siųsti komandas į „Stereo“
Sužinokite, kaip siųsti komandas į „Stereo“
Sužinokite, kaip siųsti komandas į „Stereo“
Sužinokite, kaip siųsti komandas į „Stereo“

Pirmas dalykas, kurį turėtumėte padaryti, yra išsiaiškinti, kokio tipo nuotolinio įvesties tikisi stereo. Paprastai gamintojai jums to nepasakys, ir jūs tikriausiai neturite prieigos prie veikiančių nuotolinio valdymo pultų, skirtų atvirkštinei inžinerijai.

Mano naujojo stereo (Kenwood) nuotolinio valdymo pultą sudaro vienas laidas ir man nepavyko sužinoti jokios informacijos apie jo veikimą. Tačiau jis taip pat turi 3,5 mm lizdą nuotoliniam įėjimui. Aš irgi apie tai nieko negalėjau sužinoti. Tačiau yra tam tikros informacijos apie kitų gamintojų 3,5 mm lizdą, leidžiantį manyti, kad skirtingos komandos nustatomos taikant tam tikrą pasipriešinimą tarp antgalio ir rankovės (ir pasirinktinai tarp žiedo ir rankovės). Pvz. https://forum.arduino.cc/index.php?topic=230068.0. Taigi nusprendžiau pabandyti, su duonos lenta, krūva rezistorių ir 3,5 mm kištuku, prijungtu prie stereo ir prijungto prie duonos lentos. Iš pradžių niekas nebuvo atpažinta, tačiau stereofoninis įrenginys turi „mokymosi režimo“meniu ir ten komandas galima sėkmingai nustatyti taikant įvairų pasipriešinimą. Sėkmė!

Tačiau vėliau sužinojau, kad čia suklydau: ne visos komandos, kurias atrodė stereo, iš tikrųjų veiktų. Pvz. 30 kOhm buvo rastas mokymosi režimu, bet vėliau neveikė, o kai kurioms komandoms, kurias nustatiau, pasipriešinimo skirtumas buvo toks mažas, kad vėliau buvo suaktyvinta neteisinga komanda.

Taigi rekomenduoju visoms nuotolinėms komandoms, kurias norite valdyti, naudoti duonos lentą su rezistoriais ir perjungimo mygtukais ir iš tikrųjų išbandyti, ar visos jos veiks.

Jei jūsų automobilio stereo sistema negali priimti įvesties tokiu pačiu būdu, turėsite išsiaiškinti, kaip ji veikia, kad galėtumėte pritaikyti šį sprendimą. Jei niekaip nesugebate išsiaiškinti, turite problemų.

2 žingsnis: sužinokite, kur prisijungti prie CAN magistralės

Sužinokite, kur prisijungti prie CAN magistralės
Sužinokite, kur prisijungti prie CAN magistralės

Turite rasti gerą vietą prisijungti prie CAN magistralės. Kadangi keičiate seną stereofoninį įrenginį, kuris bendrauja per CAN, turėtumėte tai rasti už stereo. CAN magistralę sudaro susuktų laidų pora (CAN-L ir CAN_H). Patikrinkite savo automobilio prijungimo schemą.

3 žingsnis: atvirkštinis CAN pranešimų kūrimas

Atvirkštinis CAN pranešimų projektavimas
Atvirkštinis CAN pranešimų projektavimas

Jei „Google“negalės jums pasakyti, kokių CAN pranešimų turėtumėte klausytis, turėsite prisijungti prie CAN magistralės ir atlikti atvirkštinę inžineriją. Aš naudoju „Arduino Uno“ir CAN skydą. (CAN skydo jums tikrai nereikia, nes vėliau pamatysite, kad galite naudoti kai kuriuos pigius komponentus ant duonos lentos.)

Pasitarkite su „Google“ir sužinokite, kokį duomenų perdavimo spartą turėtumėte naudoti prisijungdami prie savo automobilio. (Paprastai pastebėsite, kad yra didelės spartos ir mažo greičio CAN tinklas. Prisijungiate prie mažo greičio tinklo.)

Taip pat turėsite užprogramuoti „Arduino“registruoti visus CAN pranešimus per nuosekliąją sąsają, kad galėtumėte juos išsaugoti savo kompiuterio žurnalo faile. Standartinis „Arduino IDE“nesaugos duomenų žurnalo faile, tačiau galite naudoti pvz. Vietoj glaisto.

Prieš pradėdami rašyti savo programą, turite įdiegti CAN_BUS_Shield biblioteką.

Štai keletas pseudo kodų, kurie padės jums pradėti naudotis programa:

sąranka ()

{init serijinis ryšys init CAN biblioteka} kilpa () {jei gaunamas CAN pranešimas {skaityti CAN pranešimo formato žurnalo įrašą įrašyti žurnalo įrašą į serialą}}

Patarimai:

Norėdami pasiekti CAN bibliotekos funkcijas, naudosite MCP_CAN klasės egzempliorių:

MCP_CAN m_can;

Pradinis CAN:

nors (m_can.begin ()! = CAN_OK)

{uždelsimas (1000); }

Patikrinkite ir perskaitykite CAN pranešimus:

o (m_can.checkRecept () == CAN_MSGAVAIL)

{// Gaukite CAN ID, pranešimo ilgį ir pranešimo duomenis m_can.readMsgBufID (& m_canId, & m_msgLen, m_msgBuf); // Darykite ką nors su pranešimo duomenimis čia}

Jei jums reikia daugiau pagalbos, vėliau rasite nuorodą į mano programą. CAN skydo bibliotekoje taip pat yra pavyzdys. Arba patikrinkite „mviljoen2“nurodymus, kuriuose yra panašus veiksmas.

Pirmiausia jums reikės nuorodos failo, kuris padės filtruoti duomenis. Perjunkite degimą į radijo režimą ir porą minučių registruokite viską, neliesdami jokių mygtukų.

Tada pradėkite registruoti kiekvieną mygtuką, paspauskite mygtuką ir sustabdykite registravimą.

Kai baigsite, turite iš savo mygtukų žurnalų filtruoti viską, kas yra jūsų nuorodų žurnale, kad surastumėte savo kandidatus. Sužinojau, kad dar liko daug pranešimų, todėl padariau daugiau žurnalų ir pareikalavau, kad „kandidatai į komandą A turi būti visuose mygtuko A failais ir jokiuose nuorodų failuose“. Tai man paliko tik kelias galimybes pabandyti.

Žurnale bus daug pranešimų, todėl turėsite parašyti tam tikrą programą arba galbūt naudoti „Excel“. (Savo poreikiams naudojau programą su labai sunkiomis koduotomis sąlygomis, todėl bijau, kad negalėčiau pasiūlyti programos, kurią galėtumėte naudoti.)

Įspėjamasis žodis: Jūs negalite būti tikri, kad mygtukas visada pateiks identišką pranešimą. Kai kuriuose bituose gali būti didėjančių skaitiklių ir pan. (Tačiau pranešimo ID gali būti tas pats.)

Jei atsitiktinai turite „Volvo V70 -02“, štai ko ieškote:

  • Pranešimo ID: 0x0400066 Baitas0: 0x00, 0x40, 0x80 arba 0xc0 (nesvarbu)
  • Baitas1: 0x00 (nerūpi)
  • Baitas2: 0x00 (nerūpi)
  • Baitas3: 0x00-0x07 (nesvarbu)
  • Baitas4: 0x1f (nerūpi)
  • Baitas5: 0x40 (nerūpi)
  • Baitas6: 0x40 (nerūpi)
  • Baitas7: mygtuko identifikatorius: 0x77 = garsumo didinimas, 0x7b = garsumo mažinimas, 0x7d = kitas takelis, 0x7e = ankstesnis takelis.

Kai manote, kad radote komandas, gali būti gera idėja pakeisti programą taip, kad ji registruotų tik įdomius pranešimus. Paspauskite mygtukus ir pažiūrėkite į serijinio žurnalo langą, kad įsitikintumėte, jog nustatėte teisingus pranešimus.

4 žingsnis: aparatinės įrangos prototipas

Techninės įrangos prototipas
Techninės įrangos prototipas

Jūsų aparatinė įranga turi sugebėti:

  1. Nustatykite komandas, gautas CAN magistralėje
  2. Siųsti komandas kitu formatu į stereo

Jei turite pakankamai vietos, pirmajai daliai galite naudoti „Arduino“ir „CAN“skydą, o antrajai pritvirtinti papildomą aparatūrą. Tačiau yra keletas trūkumų:

  • CAN skydo kaina
  • Dydis
  • „Arduino“maitinimo šaltinis nebus patenkintas, jei jis bus tiesiogiai prijungtas prie jūsų automobilių 12 V (greičiausiai jis veiks, bet jo gyvenimas greičiausiai sutrumpės).

Taigi vietoj to naudojau:

  • „Atmega 328“, „Arduino smegenys“. (Yra keletas variantų, įsigykite tą patį, kuris yra „Arduino Uno“. Galite nusipirkti su „Arduino“įkrovos įkrovikliu arba be jo.)
  • 16 MHz kristalas + kondensatoriai laikrodžio signalui.
  • MCP2551 CAN siųstuvas -imtuvas.
  • MCP2515 CAN valdiklis.
  • TSR1-2450, konvertuoja 6,5-36V į 5V. (Nenaudojamas prototipui, nes programinei įrangai nerūpi maitinimo šaltinis.)
  • CD4066B jungiklis, kuris bus naudojamas siunčiant komandas į stereo.
  • Pora rezistorių. (Vertes rasite Eagle schemose vėliau.)

Geras šios konfigūracijos dalykas yra tai, kad ji visiškai suderinama su „Arduino“ir CAN skydo biblioteka.

Jei norite valdyti daugiau nei keturis mygtukus, galbūt norėsite naudoti ką nors kita nei CD4066B. CD4066B galima apibūdinti kaip keturis jungiklius viename, valdomą vienu iš „Atmegas GPIO“kaiščių. Prie kiekvieno jungiklio yra prijungtas rezistorius, kuriuo galima valdyti pasipriešinimą, naudojamą kaip įvestis į stereo. Taigi tai gali būti lengvai naudojama keturioms skirtingoms komandoms siųsti. Jei jie yra sujungti, galima gauti papildomų atsparumo verčių. Čia atsiranda ta klaida, kurią minėjau anksčiau. Turiu keturis mygtukus, tačiau planavau du iš jų įgyvendinti ilgai ir trumpai paspausdamas, kad gaučiau šešias skirtingas komandas. Bet galų gale sužinojau, kad nerandu rezistorių derinio, kuris suteiktų šešis darbinius derinius. Tikriausiai būtų galima prijungti analoginį išėjimo signalą prie stereo (3,5 mm antgalis). (Atminkite, kad „Atmega“neturi tikrų analoginių išvesties kaiščių, todėl reikės papildomos aparatūros.)

Bandymų tikslais taip pat sukūriau paprastą „automobilio ir stereo“simuliatorių, kad galėčiau prisijungti prie savo prototipo. Tai palengvina derinimą ir, jei jums nepatinka sėdėti automobilyje ir programa, galiu tai rekomenduoti.

Prototipą iliustruoja apatinė duonos lentelė paveikslėlyje. Maitinimo šaltinis, programavimas ir serijinis registravimas yra prijungtas prie „Arduino Uno“, kur buvo pašalintas „Atmega“lustas.

Viršutinė duonos lenta yra automobilio + stereo simuliatorius, kuris bus naudojamas pradiniam prototipo bandymui.

Prototipas + simuliatorius skirtas veikti taip:

  • Paspauskite vieną iš jungiklio mygtukų plokštės. (Tai yra jūsų vairo mygtukai.)
  • Kai simuliatoriaus programa aptinka mygtuką, ji paspaudžia atitinkamą CAN pranešimą kas 70 ms, kol mygtukas yra paspaustas. (Kadangi anksčiau surinktuose žurnaluose buvo nurodyta, kad tai veikia mano automobilyje.) Taip pat bus siunčiama daug „šiukšlių“CAN pranešimų, kad būtų imituojamas kitas autobuso eismas.
  • CAN pranešimai siunčiami CAN magistralėje.
  • Prototipas gauna CAN pranešimus.
  • MCP2515 išmeta visus nesusijusius pranešimus pagal pranešimo ID.
  • Kai MCP2515 gauna pranešimą, kurį reikia apdoroti, jis parodys, kad jis turi pranešimą.
  • „Atmega“perskaitys pranešimą ir nuspręs, kuris mygtukas turėtų būti laikomas aktyviu.
  • „Atmega“taip pat stebės, kada buvo gautas paskutinis pranešimas, po tam tikro laiko mygtukas bus laikomas atleistu. (CAN pranešimai rodo tik tai, kad mygtukas yra nuspaustas, o ne tai, kad jis buvo paspaustas ar atleistas.)
  • Jei mygtukas laikomas suaktyvintu, bus suaktyvintas vienas ar daugiau CD4066B jungiklių.
  • Simuliatorius (dabar veikia kaip jūsų stereo) aptiks, kad tarp galo ir rankovės yra pasipriešinimas. (Antgalis yra prijungtas prie 3.3 V, o per rezistorių - prie analoginio įvesties kaiščio. Kai nė viena komanda nėra aktyvi, šis kaištis skaitys 3.3 V, kai komanda bus aktyvi, vertė sumažės ir identifikuos komandą.
  • Kol komanda yra aktyvi, atitinkamas šviesos diodas taip pat bus aktyvuotas. (Yra šeši šviesos diodai, nes planavau naudoti skirtingą ilgą / trumpą dviejų mygtukų paspaudimą.)

Norėdami gauti daugiau informacijos apie aparatūros prototipą, vėlesniame etape žr. „Eagle“schemas.

Papildoma informacija apie simuliatoriaus plokštės aparatūrą:

  • 16 MHz kristalas
  • 22 pF kondensatoriai
  • LED rezistoriai turėtų būti parenkami atsižvelgiant į LED savybes
  • Rezistorius prijungtas prie A7 ir 3.3V, pasirinkite pvz. 2 kOhm (nėra kritinis).
  • Rezistoriai, prijungti prie MCP2551 ir MCP2515, yra ištraukiami / ištraukiami. Pasirinkite pvz. 10 kOhm.

(Arba galite naudoti CAN skydą simuliatoriaus „CAN daliai“, jei norite.)

Kuriant aparatūrą, svarbu žinoti, kaip „Atmega“kaiščiai yra susieti su „Arduino“kaiščiais.

(Nejunkite jokių šviesos diodų tiesiai prie CD 4066B, jis gali valdyti tik mažą srovę. Aš tai išbandžiau, kai pirmą kartą išbandžiau išvestį ir lustas tapo nenaudingas. Geras dalykas yra tai, kad aš nusipirkau porą jų tik todėl, kad jie yra tokie pigūs.)

5 žingsnis: saugiklių programavimas

Galbūt ankstesniame žingsnyje pastebėjote, kad prototipas neturi atskirų komponentų, kurie generuotų laikrodžio signalą į MCP2515. Taip yra todėl, kad jau yra 16 MHz kristalas, naudojamas kaip „Atmega“laikrodžio signalas, kurį galime naudoti. Tačiau mes negalime tiesiog prijungti jo tiesiogiai prie MCP2515 ir pagal nutylėjimą „Atmega“nėra laikrodžio signalo.

(Jei norite, galite praleisti šį veiksmą ir vietoj to pridėti papildomą laikrodžio aparatūrą.)

Tačiau mes galime naudoti kažką, vadinamą „saugiklių programavimu“, kad įjungtume laikrodžio išjungimo signalą viename iš GPIO kaiščių.

Pirmiausia turėsite rasti failą pavadinimu „boards.txt“, kurį naudoja jūsų „Arduino IDE“. Turėsite nukopijuoti „Arduino Uno“įrašą, suteikti jam naują pavadinimą ir pakeisti „low_fuses“vertę.

Mano nauja lenta atrodo taip:

############################################### ##############Remiantis „Arduino Uno“pakeitimais

clkuno.name = Laikrodis (Arduino Uno)

clkuno.upload.protocol = arduino clkuno.upload.maximum_size = 32256 clkuno.upload.speed = 115200 clkuno.bootloader.low_fuses = 0xbf clkuno.bootloader.high_fuses = 0xde clkuno.bootloader.extended_fusesk = 0box.bootloader.file = optiboot_atmega328.hex clkuno.bootloader.unlock_bits = 0xff clkuno.bootloader.lock_bits = 0xcf clkuno.build.mcu = atmega328p clkuno.build.f_cpu = 16000000L clkuno.build.core = arduino cl.

##############################################################

Atkreipkite dėmesį, kad laikrodis yra įjungiamas nustatant jo valdymo bitą į 0.

Sukūrę naują plokštę lentų konfigūracijos faile, turėsite įrašyti naują įkrovos įkėlimo programą į „Atmega“. Tam yra įvairių būdų, aš naudojau metodą, aprašytą

Kai tai padarysite, nepamirškite pasirinkti naujos plokštės tipo, o ne „Arduino Uno“, kai įkeliate programą į „Atmega“.

6 žingsnis: programinė įranga

Programinė įranga
Programinė įranga

Laikas padaryti kvailą aparatūrą protingą, pridedant tam tikrą programinę įrangą.

Štai keletas prototipo pseudo kodų:

lastReceivedTime = 0

lastReceivedCmd = nėra cmdTimeout = 100 sąrankos () {įgalinti sargybinį konfigūruoti kaiščius D4-D7 kaip išvesties kaiščius init CAN sąranka CAN filtras} kilpa () {atstatyti sargybinį, jei (gautas CAN pranešimas) {kiekvienai mygtuko komandai {jei CAN pranešimas priklauso mygtuko komanda {lastReceivedTime = dabar lastReceivedCmd = cmd}}} jei dabar> lastReceivedTime + cmdTimeout {lastReceivedCmd = none} kiekvienai mygtuko komandai {if lastReceivedCmd yra mygtuko komanda {set command pin output = on} else {set command pin output = off }}}

„cmdTimeout“nusprendžia, kiek laiko turėtume laukti, kol svarstysime paskutinį aktyvų mygtuką. Kadangi mygtuko CAN pranešimų komandos siunčiamos maždaug kas 70 ms, jos turi būti didesnės nei su tam tikra paraštė. Bet jei jis bus per didelis, bus atsilikimo patirtis. Taigi 100 ms atrodo geras kandidatas.

Bet kas yra sargybinis? Tai naudinga techninė įranga, kuri gali mus išgelbėti avarijos atveju. Įsivaizduokite, kad turime klaidą, dėl kurios programa sugenda, kol įjungta garsumo didinimo komanda. Tada galų gale turėtume maksimalų garsumą! Bet jei stebėtojas nebus nustatytas iš naujo tam tikrą laiką, jis nuspręs, kad atsitiko kažkas netikėto, ir tiesiog iš naujo nustatys.

negaliojanti sąranka ()

{// leiskite ciklui wdt_enable (WDTO_250MS) ne ilgiau kaip 250 ms; // kiti inicialai} void loop () {wdt_reset (); // daryk ką nors}

CAN filtras? Na, galite sukonfigūruoti CAN valdiklį, kad jis pašalintų visus pranešimus, kurie neatitinka filtro, todėl programinei įrangai nereikia gaišti laiko pranešimams, kurie mums nerūpi.

nepasirašyta ilga kaukė = 0x1fffffff; // Į kaukę įtraukite visus 29 antraštės bitus

nepasirašytas ilgas filtrasId = 0x0400066; // Mums rūpi tik šis CAN pranešimo ID m_can.init_Mask (0, CAN_EXTID, kaukė); // Kaukė 0 taikoma filtrui 0-1 m_can.init_Mask (1, CAN_EXTID, mask); // 1 kaukė taikoma filtrui 2-5 m_can.init_Filt (0, CAN_EXTID, filterId); m_can.init_Filt (1, CAN_EXTID, filterId); m_can.init_Filt (2, CAN_EXTID, filterId); m_can.init_Filt (3, CAN_EXTID, filterId); m_can.init_Filt (4, CAN_EXTID, filterId); m_can.init_Filt (5, CAN_EXTID, filterId);

Norėdami sužinoti daugiau apie tai, kaip nustatyti filtrą + kaukę, patikrinkite CAN bibliotekos kodą ir CAN valdiklio dokumentaciją.

Taip pat galite nustatyti, kad CAN valdiklis iškeltų pertrauką, kai gaunamas pranešimas (kuris nėra išfiltruotas). (Neįtrauktas į aukščiau pateiktą pavyzdį, tačiau mano programoje yra tam tikras kodas.) Šiuo atveju tai tikrai neprideda jokios vertės ir gali būti paini, jei nesate įpratę programuoti.

Taigi, tai buvo programinės įrangos prototipas. Bet mums taip pat reikia tam tikro simuliatoriaus plokštės kodo:

lastSentTime = 0

minDelayTime = 70 setup () {konfigūruokite kaiščius A0-A5 kaip išvesties kaiščius sukonfigūruokite kaiščius D4-D7 kaip įvesties kaiščius su vidiniu prisitraukimu. init CAN} loop () {send "junk" can msg set activeButton = none for each button {if mygtuk paspaustas {set activeButton = button}} if activeButton! = none {if now> lastSentTime + minDelayTime {send button command can message } nustatyti lastSentTime = dabar} invalid = skaityti PIN kodą A7 foreach (cmd) {if (min <invalid <max) {led on} else {led off}} palaukti 1 ms}

Tai nuolat siunčia „nepageidaujamus“CAN pranešimus maždaug kas ms, o kai mygtukas yra paspaudžiamas, atitinkama komanda kas 70 ms.

Jums gali tekti užregistruoti įvestį A7 kaištyje, paspaudžiant skirtingus mygtukus, kad sužinotumėte tinkamas kiekvieno mygtuko min ir max kintamųjų vertes. (Arba galite jį apskaičiuoti, tačiau iš tikrųjų perskaitę įvestį gausite tikslesnes vertes.)

Programuodami kaiščio režimus turite būti šiek tiek atsargūs. Jei netyčia nustatysite kaiščius, skirtus naudoti vidinį traukimą, kaip išvesties kaiščius, sukursite galimą nuorodą, kuri sugadins jūsų „Arduino“, kai nustatysite aukštą išvestį.

Jei norite patikrinti mano programas, jas galite atsisiųsti čia:

  • CAN pranešimų registravimo programa
  • Programa simuliatoriaus lentai
  • Programa prototipui / galutinei lentai

Turėtumėte žinoti, kad tos programos čia tikrai neatitinka pseudo kodo, jose yra daug „papildomų“dalykų, kurių iš tikrųjų nereikia, o jei nesate susipažinę su objektiniu programavimu, tai tikriausiai gali būti šiek tiek sunku perskaityti.

7 žingsnis: galutinė aparatinė įranga

Galutinė aparatinė įranga
Galutinė aparatinė įranga
Galutinė aparatinė įranga
Galutinė aparatinė įranga
Galutinė aparatinė įranga
Galutinė aparatinė įranga

Kai esate patenkintas savo programa (nepamirškite išbandyti prototipo automobilyje po paskutinio bandymo su treniruoklio lenta), laikas sukonstruoti tikrąją aparatūrą.

Čia yra trys variantai:

  • Greitas ir purvinas - lituokite daiktus ant PCB prototipo plokštės.
  • „Hardcore DIY“- išgraviruokite savo PCB.
  • Tinginys - užsisakykite profesionalią PCB, kad lituotumėte komponentus.

Jei neskubate, galiu rekomenduoti paskutinį variantą. Jei jums reikia tik tokios mažos PCB, labai pigiai galima užsisakyti iš Kinijos. (Ir tada jūs tikriausiai gausite maždaug dešimt vienetų, kad galėtumėte sau leisti litavimo klaidas.)

Norėdami užsisakyti PCB, turėsite atsiųsti savo dizainą Gerber formatu. Tam yra įvairios programinės įrangos. Aš naudoju Eagle, kurį galiu rekomenduoti. Galite tikėtis kelių valandų, kol tai išmoksite, bet tada viskas gerai. Tokias mažas plokštes galite naudoti nemokamai.

Kurdami dizainą, būkite atsargūs. Jūs nenorite laukti keturių savaičių pristatymo, kad sužinotumėte, jog padarėte kažką ne taip.

(Jei turite gerų litavimo įgūdžių, galite sukurti ant paviršiaus montuojamus komponentus ir gauti tikrai mažą adapterį. Aš to nepadariau.)

Tada užsisakykite pvz. https://www.seeedstudio.com/fusion_pcb.html. Vykdykite instrukcijas, kaip sugeneruoti „Gerber“failus iš savo dizaino. Taip pat galite gauti rezultato peržiūrą, kad įsitikintumėte, jog viskas gerai.

(Galų gale turėjau pasirinkti kitus rezistorius R4-R7, nei nurodyta schemoje. Vietoj to naudojau 2k, 4,7k, 6,8k ir 14,7k.)

Ir atminkite - nepainiokite „Atmega“kaiščių numeravimo su „Arduino“kaiščių numeracija!

Rekomenduoju lituoti „Atmega“lustą ne tiesiogiai, o naudoti lizdą. Tada galite lengvai jį pašalinti, jei jums reikės perprogramuoti.

8 žingsnis: automobilio montavimas

Automobilio montavimas
Automobilio montavimas
Automobilio montavimas
Automobilio montavimas

Dabar prie įdomiausios dalies - sumontuokite ją savo automobilyje ir pradėkite ja naudotis! (Kai pagaminsite / nusipirksite dėklą.)

Jei jau visiškai išbandėte savo automobilio prototipą, viskas turėtų veikti puikiai.

(Kaip minėjau anksčiau, aš to nepadariau, todėl turėjau pakeisti kai kuriuos rezistorius ir atlikti tam tikrus savo programos pakeitimus.)

Taip pat pagalvokite, ar turėtumėte jį montuoti už stereo ar kur nors kitur. Virš savo pirštinių dėžutės radau gerą vietą, kur galiu ją pasiekti iš pirštinės dėžės, nieko neišardydamas. Tai gali būti naudinga, jei vėliau nuspręsiu ją atnaujinti.

Pagaliau mano mygtukai vėl veikia! Kaip galėčiau išgyventi du mėnesius be jų?

9 žingsnis: būsimi patobulinimai

Kaip minėta, jei padarysiu šios versijos 2.0, 4066B pakeisiu kažkuo kitu (tikriausiai skaitmeniniu potenciometru), kad būtų lankstesnis.

Taip pat galite padaryti daug kitų dalykų. Pvz. pridėkite „Bluetooth“modulį ir sukurkite nuotolinio valdymo programą savo telefonui. Arba gps modulis, tada, kai esate arti namų, galite automatiškai padidinti garsumą ir nusiųsti „langų žemyn“CAN pranešimą, kad visi jūsų kaimynai galėtų mėgautis nuostabia muzika.

Rekomenduojamas: