Përmbajtje:

Arduino e personalizuar për të mbajtur butonat e timonit CAN me stereo të re të makinës: 9 hapa (me fotografi)
Arduino e personalizuar për të mbajtur butonat e timonit CAN me stereo të re të makinës: 9 hapa (me fotografi)

Video: Arduino e personalizuar për të mbajtur butonat e timonit CAN me stereo të re të makinës: 9 hapa (me fotografi)

Video: Arduino e personalizuar për të mbajtur butonat e timonit CAN me stereo të re të makinës: 9 hapa (me fotografi)
Video: CS50 2015 - Week 4 2024, Korrik
Anonim
Arduino e personalizuar për të mbajtur butonat e rrotave CAN me stereo të re të makinës
Arduino e personalizuar për të mbajtur butonat e rrotave CAN me stereo të re të makinës
Arduino e personalizuar për të mbajtur butonat e timonit CAN Me Stereo të Re të Makinës
Arduino e personalizuar për të mbajtur butonat e timonit CAN Me Stereo të Re të Makinës
Arduino e personalizuar për të mbajtur butonat e timonit CAN Me Stereo të Re të Makinës
Arduino e personalizuar për të mbajtur butonat e timonit CAN Me Stereo të Re të Makinës

Vendosa të zëvendësoj stereon origjinale të makinës në Volvo V70 -02 tim me një stereo të re, kështu që do të jem në gjendje të shijoj gjëra të tilla si mp3, bluetooth dhe pa duar.

Makina ime ka disa kontrolle të timonit për stereo që unë do të doja të isha akoma në gjendje t'i përdor. Nuk e prisja që të ishte një problem sepse ka disa adaptorë në treg që supozohet të jenë të pajtueshëm me makinën time. Sidoqoftë, shpejt zbulova se ata nuk ishin! (Duket se përshtatësit për V70 mund të kenë probleme me -02 makina për shkak të një protokolli CAN paksa të ndryshëm.)

Pra, çfarë të bëjmë atëherë? Mbani stereon e vjetër? Jetoni një jetë me butona që nuk punojnë? Sigurisht që jo! Nëse nuk ka përshtatës pune në treg, atëherë do të na duhet të ndërtojmë një të tillë!

Ky udhëzues mund të zbatohet (me disa përshtatje) në makina ku butonat e timonit komunikojnë mbi autobusin CAN.

Hapi 1: Zbuloni se si të dërgoni komanda në Stereo

Zbuloni se si të dërgoni komanda në stereo
Zbuloni se si të dërgoni komanda në stereo
Zbuloni se si të dërgoni komanda në stereo
Zbuloni se si të dërgoni komanda në stereo

Gjëja e parë që duhet të bëni është të zbuloni se çfarë lloji të hyrjes në distancë pret stereo. Zakonisht prodhuesit nuk do t’ju thonë këtë dhe ju ndoshta nuk keni qasje në telekomandat e punës për inxhinieri të kundërt.

Telekomanda për stereon tim të ri (Kenwood) përbëhet nga një tel i vetëm dhe nuk kam qenë në gjendje të gjej ndonjë informacion se si funksionon. Megjithatë ka edhe një prizë 3.5 mm për hyrje në distancë. As unë nuk mund të zbuloja asgjë për këtë. Por ka disa informacione në lidhje me një prizë 3.5 mm për markat e tjera që sugjerojnë që komanda të ndryshme të identifikohen duke aplikuar një rezistencë specifike midis majës dhe mëngës (dhe opsionalisht midis unazës dhe mëngës). P.sh. https://forum.arduino.cc/index.php?topic=230068.0. Kështu vendosa ta provoja, të pajisur me një dërrasë buke, një bandë rezistencash dhe një prizë 3.5 mm të kyçur në stereo dhe të lidhur me tryezën e bukës. Asgjë nuk u njoh në fillim, por stereo ka një menu "mënyra e të mësuarit" dhe atje komandat mund të vendosen me sukses duke aplikuar rezistencë të ndryshme. Sukses!

Sidoqoftë, më vonë zbulova se bëra një gabim këtu: Jo të gjitha komandat që duket se stereo mësoi do të funksiononin. P.sh. 30 kOhm u gjetën në modalitetin e mësimit, por nuk funksionuan më vonë dhe për disa nga komandat që vendosa diferenca e rezistencës ishte aq e vogël saqë më vonë u shkaktua komanda e gabuar.

Kështu që unë rekomandoj që të përdorni një tabelë me rezistorë dhe butona ndërrues për të gjitha komandat në distancë që dëshironi të trajtoni dhe në të vërtetë të provoni që të gjitha ato do të funksionojnë.

Nëse stereo e makinës suaj nuk mund të marrë të dhëna në të njëjtën mënyrë, atëherë do të duhet të kuptoni se si funksionon, në mënyrë që të përshtateni me këtë zgjidhje. Nëse nuk mund ta kuptoni fare atëherë keni një problem.

Hapi 2: Gjeni se ku të lidheni me autobusin CAN

Gjeni se ku të lidheni me autobusin CAN
Gjeni se ku të lidheni me autobusin CAN

Ju duhet të gjeni një vend të mirë për t'u lidhur me autobusin CAN. Meqenëse po zëvendësoni një stereo të vjetër që komunikon përmes CAN ju duhet të jeni në gjendje ta gjeni atë prapa stereos. Autobusi CAN përbëhet nga një palë tela të përdredhur (CAN-L dhe CAN_H). Konsultohuni me një diagram të instalimeve elektrike për makinën tuaj për t'u siguruar.

Hapi 3: Inxhinieri e kundërt e mesazheve CAN

Inxhinieri e kundërt e mesazheve CAN
Inxhinieri e kundërt e mesazheve CAN

Nëse Google nuk mund t'ju tregojë se për cilat mesazhe CAN duhet të dëgjoni, atëherë do t'ju duhet të lidheni me autobusin CAN dhe të bëni një inxhinieri të kundërt. Kam përdorur një Arduino Uno dhe një mburojë CAN. (Në të vërtetë nuk keni nevojë për mburojën CAN, pasi do të shihni më vonë mund të përdorni disa përbërës të lirë në një dërrasë buke.)

Konsultohuni me Google për të gjetur se çfarë niveli të baudit duhet të përdorni kur lidheni me makinën tuaj. (Zakonisht do të zbuloni se ka një rrjet me shpejtësi të lartë dhe një shpejtësi të ulët CAN. Po lidheni me rrjetin me shpejtësi të ulët.)

Ju gjithashtu do të duhet të programoni Arduino për të regjistruar të gjitha mesazhet CAN në ndërfaqen serike në mënyrë që t'i ruani ato në një skedar regjistri në kompjuterin tuaj. Arduino IDE standarde nuk do të ruajë të dhëna në një skedar regjistri, por ju mund të përdorni p.sh. Stuko në vend.

Para se të filloni të shkruani programin tuaj, duhet të instaloni bibliotekën CAN_BUS_Shield.

Këtu janë disa pseudo kode për t'ju ndihmuar të filloni me programin tuaj:

konfigurim ()

{fill lidhja seriale init CAN biblioteka} lak () {nëse mesazhi CAN është marrë {lexoni regjistrimin e formatit të mesazhit CAN hyrja shkruani regjistrimin e regjistrimit në serial}}

Sugjerime:

Ju do të përdorni një shembull të klasës MCP_CAN për të hyrë në funksionalitetin e bibliotekës CAN:

MCP_CAN m_mund;

Filloni MUND:

ndërsa (m_can.filloj ()! = CAN_OK)

{vonesë (1000); }

Kontrolloni dhe lexoni mesazhet CAN:

ndërsa (m_can.checkReceive () == CAN_MSGAVAIL)

{// Merr id CAN, gjatësinë e mesazhit dhe të dhënat e mesazhit m_can.readMsgBufID (& m_canId, & m_msgLen, m_msgBuf); // Bëni diçka me të dhënat e mesazhit këtu}

Nëse keni nevojë për më shumë ndihmë, mund të gjeni një lidhje me programin tim në një hap të mëvonshëm. Biblioteka CAN shield gjithashtu përfshin një shembull. Ose kontrolloni udhëzimet e mviljoen2 që përfshin një hap të ngjashëm.

Së pari do t'ju duhet një skedar reference për t'ju ndihmuar të filtroni të dhënat. Kaloni ndezjen në modalitetin e radios dhe regjistroni gjithçka për disa minuta pa prekur asnjë buton.

Pastaj për secilën prej butonave, filloni regjistrimin, shtypni butonin dhe ndaloni regjistrimin.

Kur të keni mbaruar, duhet të filtroni gjithçka që është në regjistrin tuaj të referencës nga regjistrat e butonave për të gjetur kandidatët tuaj. Mora vesh se kishin mbetur ende shumë mesazhe kështu që bëra më shumë regjistra dhe më pas kërkova që "kandidatët për komandën A duhet të jenë në të gjithë skedarët buton-A dhe në asnjë nga skedarët e referencës". Kjo më la vetëm disa mundësi për të provuar.

Shkrimet do të përmbajnë shumë mesazhe, kështu që do t'ju duhet të shkruani një program për këtë ose ndoshta të përdorni Excel. (Kam përdorur një program me kushte shumë të vështira të koduara për nevojat e mia, kështu që kam frikë se nuk mund të ofroj një program që mund të përdorni.)

Një fjalë paralajmëruese: Nuk mund të jeni i sigurt se një buton do të prodhojë gjithmonë një mesazh identik. Disa nga bitët mund të përmbajnë numërues në rritje etj. (Sidoqoftë, mund të përjashtoni që id -ja e mesazhit të jetë e njëjtë.)

Nëse keni një Volvo V70 -02, kjo është ajo për të cilën jeni duke kërkuar:

  • ID e mesazhit: 0x0400066Byte0: 0x00, 0x40, 0x80 ose 0xc0 (nuk më intereson)
  • Byte1: 0x00 (nuk më intereson)
  • Byte2: 0x00 (nuk më intereson)
  • Byte3: 0x00-0x07 (nuk më intereson)
  • Byte4: 0x1f (nuk më intereson)
  • Byte5: 0x40 (nuk më intereson)
  • Byte6: 0x40 (nuk më intereson)
  • Byte7: Identifikuesi i butonit: 0x77 = volumi lart, 0x7b = volumi poshtë, 0x7d = pjesa tjetër, 0x7e = pjesa e mëparshme.

Kur besoni se keni gjetur komandat, mund të jetë një ide e mirë të modifikoni programin në mënyrë që të regjistrojë vetëm mesazhet interesante. Shikoni dritaren e regjistrit serik ndërsa shtypni butonat për të verifikuar që keni identifikuar mesazhet e sakta.

Hapi 4: Prototipi i harduerit

Prototipi i harduerit
Prototipi i harduerit

Pajisja juaj duhet të jetë në gjendje të:

  1. Identifikoni komandat e marra në autobusin CAN
  2. Dërgo komandat në stereo në një format tjetër

Nëse keni hapësirë të mjaftueshme, mund të përdorni një Arduino dhe një mburojë CAN për pjesën e parë dhe të bashkëngjitni disa pajisje shtesë për të dytën. Sidoqoftë, ka disa disavantazhe:

  • Kostoja e mburojës CAN
  • Madhësia
  • Furnizimi me energji Arduino nuk do të jetë i lumtur nëse lidhet drejtpërdrejt me makinat tuaja 12V (me siguri do të funksionojë, por jeta e tij ka të ngjarë të shkurtohet).

Kështu që në vend të kësaj kam përdorur sa vijon:

  • Atmega 328, "truri Arduino". (Ka disa variante, merrni atë që është e barabartë me atë në Arduino Uno. Mund ta blini me ose pa ngarkuesin e nisjes Arduino.)
  • Kristal + MHz kondensatorë për sinjalin e orës.
  • Marrës MCP2551 CAN.
  • Kontrolluesi MCP2515 CAN.
  • TSR1-2450, konverton 6.5-36V në 5V. (Nuk përdoret në prototip sepse softueri nuk do të kujdeset për furnizimin me energji elektrike.)
  • Ndërprerës CD4066B që do të përdoret kur dërgoni komanda në stereo.
  • Nje çift rezistence. (Vlerat mund të gjenden në skemat e Eagle në një hap të mëvonshëm.)

Një gjë e mirë me këtë konfigurim është se është plotësisht në përputhje me bibliotekën Arduino dhe CAN shield.

Nëse dëshironi të trajtoni më shumë se katër butona, mund të konsideroni të përdorni diçka tjetër përveç CD4066B. CD4066B mund të përshkruhet si katër ndërprerës në një, secili i kontrolluar nga një nga kunjat e Atmegas GPIO. Për secilin ndërprerës ka një rezistencë të lidhur që mund të përdoret për të kontrolluar rezistencën e përdorur si hyrje në stereo. Pra, kjo lehtë mund të përdoret për të dërguar katër komanda të ndryshme. Nëse ato kombinohen atëherë mund të merren vlera shtesë të rezistencës. Këtu vjen gabimi që përmenda më herët. Unë kam katër butona, por kam planifikuar të zbatoj dy prej tyre për shtyp të gjatë dhe të shkurtër për të më dhënë gjashtë komanda të ndryshme. Por në fund zbulova se nuk mund të gjeja një kombinim të rezistencave që do të më jepnin gjashtë kombinime pune. Ndoshta do të ishte e mundur të lidhni një sinjal analog jashtë me stereo (maja 3.5 mm). (Vini re se Atmega nuk ka kunja analoge të vërteta, kështu që do të kërkohen disa pajisje shtesë.)

Për qëllime testimi, unë gjithashtu bëra një imitues të thjeshtë "makinë dhe stereo" për t'u lidhur me prototipin tim. Kjo e bën korrigjimin më të lehtë dhe nëse nuk ju pëlqen të uleni në makinë dhe program, unë mund ta rekomandoj atë.

Prototipi është ilustruar nga pjata e poshtme në figurë. Për furnizimin me energji, programimin dhe regjistrimin serik është i bashkangjitur në një Arduino Uno ku çipi Atmega është hequr.

Tabela e sipërme e bukës është imituesi stereo i makinës + që do të përdoret për testimin fillestar të prototipit.

Prototipi + imituesi ka për qëllim të funksionojë kështu:

  • Shtypni një nga butonat e kalimit në tabelën e imituesit. (Këto janë butonat tuaj të timonit.)
  • Kur programi imitues zbulon një shtypje butoni, ai do të dërgojë mesazhin përkatës CAN çdo 70 ms për aq kohë sa shtypet butoni. (Për shkak se regjistrat që mora më herët treguan se si funksionon në makinën time.) Gjithashtu do të dërgojë shumë mesazhe "junk" CAN për të simuluar trafikun tjetër në autobus.
  • Mesazhet CAN dërgohen në autobusin CAN.
  • Mesazhet CAN merren nga prototipi.
  • MCP2515 hedh të gjitha mesazhet e palidhura bazuar në id -in e mesazhit.
  • Kur MCP2515 merr një mesazh që duhet të trajtohet, ai do të tregojë se ka një mesazh të përmbajtur.
  • Atmega do të lexojë mesazhin dhe do të vendosë se cili buton duhet të konsiderohet aktiv.
  • Atmega gjithashtu do të mbajë gjurmët kur është marrë mesazhi i fundit, pas një kohe të caktuar butoni do të konsiderohet i lëshuar. (Mesazhet CAN tregojnë vetëm se një buton është poshtë, jo se është shtypur ose lëshuar.)
  • Nëse një buton konsiderohet aktiv atëherë një ose më shumë ndërprerës në CD4066B do të aktivizohen.
  • Simulatori (tani vepron si stereo juaj) do të zbulojë se një rezistencë është aplikuar midis majës dhe mëngës. (Maja është e lidhur me 3.3V dhe përmes një rezistence në një kunj analog të hyrjes. Kur asnjë komandë nuk është aktive, ky pin do të lexojë 3.3V, kur një komandë është aktive vlera do të bëhet më e ulët dhe do të identifikojë komandën.
  • Ndërsa një komandë është aktive, led përkatëse gjithashtu do të aktivizohet. (Ka gjashtë led sepse kam planifikuar të përdor shtyp të ndryshëm të gjatë / të shkurtër për dy butonat e mi.)

Për më shumë detaje në lidhje me pajisjen prototip, shihni skemat Eagle në një hap të mëvonshëm.

Detaje shtesë në lidhje me pajisjet e bordit të imituesit:

  • Kristal 16 MHz
  • 22 kondensatorë pF
  • Rezistencat LED duhet të zgjidhen bazuar në vetitë e LED
  • Rezistori i lidhur me A7 dhe 3.3V, zgjidhni p.sh. 2kOhm (jo kritike).
  • Rezistencat e lidhura me MCP2551 dhe MCP2515 janë tërheqëse / tërheqëse. Zgjidh p.sh. 10 kOhm

(Ose mund të përdorni mburojën CAN për "pjesën CAN" të imituesit nëse preferoni.)

Importantshtë e rëndësishme që ju të dini se si kunjat Atmega janë të hartuar në kunjat Arduino kur hartoni harduerin.

(Mos lidhni asnjë led direkt me CD 4066B, ai mund të trajtojë vetëm një rrymë të ulët. E provova që kur testova për herë të parë daljen dhe çipi bëhet i padobishëm. E mira është se kisha blerë disa prej tyre vetëm sepse ata janë kaq të lira.)

Hapi 5: Programimi i siguresave

Ndoshta keni vënë re në hapin e mëparshëm se prototipi nuk ka përbërës të veçantë për të gjeneruar sinjalin e orës në MCP2515. Kjo ndodh sepse tashmë ekziston një kristal 16 MHz i përdorur si sinjal i orës Atmega që mund të përdorim. Por ne nuk mund ta lidhim atë drejtpërdrejt me MCP2515 dhe si parazgjedhje nuk ka asnjë sinjal jashtë orës në Atmega.

(Nëse preferoni, mund ta kaloni këtë hap dhe të shtoni pajisje shtesë të orës në vend.)

Sidoqoftë, ne mund të përdorim diçka të quajtur "programimi i siguresave" për të mundësuar një sinjal të fikjes së orës në një nga kunjat e GPIO.

Së pari do t'ju duhet të gjeni një skedar të quajtur "boards.txt" të përdorur nga Arduino IDE juaj. Ju do të duhet të kopjoni hyrjen për Arduino Uno, t'i jepni një emër të ri dhe të ndryshoni vlerën për siguresat e ulëta.

Bordi im i ri duket kështu:

#################################################### #############Bazuar në Arduino Uno#Ndryshimet:#siguresat e ulëta ndryshuan nga 0xff në 0xbf për të mundësuar orën 16 MHz#dalje në Atmega PB0/pin 14 = Arduino D8

clkuno.name = Ora jashtë (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.bootloaderer.exoto.kootboerloader.exe.bootloader.file = optiboot_atmega328.hex clkuno.bootloader.unlock_bits = 0xff clkuno.bootloader.lock_bits = 0xcf clkuno.build.mcu = atmega328p clkuno.build.f_cpu = 16000000L clkunobuild.build = cl.

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

Vini re se ora jashtë aktivizohet duke vendosur bitin e saj të kontrollit në 0.

Kur të keni krijuar bordin e ri në skedarin e konfigurimit të bordeve, do t'ju duhet të digjni një ngarkues të ri të nisjes në Atmega. Ka mënyra të ndryshme për ta bërë këtë, unë kam përdorur metodën e përshkruar në

Pasi ta keni bërë këtë, mos harroni të zgjidhni llojin tuaj të ri të bordit dhe jo Arduino Uno kur ngarkoni një program në Atmega.

Hapi 6: Softueri

Softueri
Softueri

Koha për ta bërë pajisjen memec të zgjuar duke shtuar disa softuerë.

Këtu janë disa pseudo kod për prototipin:

lastReceivedTime = 0

lastReceivedCmd = asnjë cmdTimeout = 100 konfigurim () {aktivizo vëzhguesin konfiguroni kunjat D4-D7 si kunjat dalës init CAN setup CAN filter} loop () {reset resetdog nëse (mesazhi CAN merret) {për secilën komandë butoni {nëse mesazhi CAN i përket komanda e butonit {lastReceivedTime = tani lastReceivedCmd = cmd}}} nëse tani> lastReceivedTime + cmdTimeout {lastReceivedCmd = asnjë} për secilën komandë butoni {nëse lastReceivedCmd është komanda e butonit {vendosni daljen e pinit të komandës = në} tjetër {vendosni daljen e pinit të komandës = fikur }}}

cmdTimeout vendos sa kohë duhet të presim para se të konsiderojmë butonin e fundit aktiv të lëshuar. Për shkak se komandat e mesazhit të butonit CAN dërgohen përafërsisht çdo 70 ms, duhet të jetë më e madhe se ajo me një diferencë. Por nëse është e madhe do të ketë një përvojë vonesë. Pra, 100 ms duket si një kandidat i mirë.

Por çfarë është një qen mbikëqyrës? Shtë një veçori e vogël e dobishme e harduerit që mund të na shpëtojë në rast përplasjeje. Imagjinoni që kemi një gabim që shkakton prishjen e programit ndërsa komanda e ngritjes së volumit është aktive. Atëherë do të përfundonim me stereo në volumin maksimal! Por nëse qeni mbikëqyrës nuk rivendoset për një kohë të caktuar, ai do të vendosë që diçka e papritur ka ndodhur dhe thjesht lëshon një rivendosje.

void setup ()

{// lejo maksimum 250 ms për lakun wdt_enable (WDTO_250MS); // sende të tjera init} void loop () {wdt_reset (); // bëj gjëra}

MUND të filtrojë? Epo, mund të konfiguroni kontrolluesin CAN që të hedhë poshtë të gjitha mesazhet që nuk përputhen me filtrin, kështu që softueri nuk ka pse të humbasë kohë në mesazhe që nuk na interesojnë.

maskë e gjatë e panënshkruar = 0x1fffffff; // Përfshi të 29 pjesët e kokës në maskë

filtër i gjatë i panënshkruarId = 0x0400066; // Ne kujdesemi vetëm për këtë id të mesazhit CAN m_can.init_Mask (0, CAN_EXTID, maskë); // Maska 0 zbatohet për filtrin 0-1 m_can.init_Mask (1, CAN_EXTID, maskë); // Maska 1 zbatohet për filtrin 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);

Kontrolloni kodin e bibliotekës CAN dhe dokumentacionin e kontrolluesit CAN për më shumë detaje se si të vendosni filtrin + maskën.

Ju gjithashtu mund të vendosni kontrolluesin CAN për të ngritur një ndërprerje kur merret një mesazh (që nuk filtrohet). (Nuk përfshihet në shembullin e mësipërm, por ka ndonjë kod për të në programin tim.) Në këtë rast nuk shton ndonjë vlerë dhe mund të jetë konfuze nëse nuk jeni mësuar me programimin.

Pra, ky ishte programi prototip në përmbledhje. Por ne kemi nevojë për një kod edhe për tabelën e imituesit:

lastSentTime = 0

minDelayTime = 70 setup () {konfiguroni kunjat A0-A5 si kunja dalës konfiguroni kunjat D4-D7 si kunja hyrëse me tërheqje të brendshme. init CAN} loop () {send "junk" can msg set activeButton = asnjë për secilin buton {nëse shtypet butoni {set activeButton = button}} nëse activeButton! = asnjë {nëse tani> lastSentTime + minDelayTime {dërgoni komandën e butonit } vendosur lastSentTime = tani} inval = lexoni pin A7 foreach (cmd) {if (min <inval <max) {led on} else {led off}} prisni 1 ms}

Kjo do të dërgojë vazhdimisht mesazhe "junk" CAN afërsisht çdo ms dhe ndërsa një buton shtyhet komandën përkatëse secila 70 ms.

Ju mund të keni nevojë të regjistroni hyrjen në pin A7 ndërsa shtypni butona të ndryshëm për të gjetur vlerat e përshtatshme për ndryshoret min dhe max që i përkasin secilit buton. (Ose mund ta llogaritni, por në fakt leximi i të dhënave do t'ju japë vlera më të sakta.)

Duhet të jeni pak të kujdesshëm kur programoni modalitetet pin. Nëse vendosni aksidentalisht kunjat që synojnë të përdorin tërheqjen e brendshme si kunja dalëse, atëherë do të krijoni një shkurtore të mundshme që do të dëmtojë Arduino -n tuaj kur të vendosni daljen e lartë.

Nëse doni të kontrolloni programet e mia, ato mund të shkarkohen këtu:

  • Programi i regjistrimit të mesazheve CAN
  • Program për bordin e imituesit
  • Program për prototipin / tabelën përfundimtare

Ju duhet të jeni të vetëdijshëm se ato programe nuk përputhen vërtet me pseudo kodin këtu, ato përmbajnë shumë gjëra "shtesë" që nuk janë vërtet të nevojshme dhe nëse nuk jeni të njohur me programimin e orientuar drejt objekteve ndoshta mund të jetë pak e vështirë për t'u lexuar Me

Hapi 7: Pajisja përfundimtare

Pajisja përfundimtare
Pajisja përfundimtare
Pajisja përfundimtare
Pajisja përfundimtare
Pajisja përfundimtare
Pajisja përfundimtare

Kur jeni të kënaqur me programin tuaj (mos harroni të provoni prototipin në makinë pas testimit përfundimtar me tabelën e imituesit) është koha për të ndërtuar pajisjen e vërtetë.

Këtu keni tre opsione:

  • Të shpejtë dhe të ndotur - lidhni sendet së bashku në një bord prototip PCB.
  • Hardcore DIY - gdhendni PCB -në tuaj.
  • Mënyra dembele - porositni një PCB profesionale për të bashkuar përbërësit.

Nëse nuk jeni me nxitim, mund t'ju rekomandoj opsionin e fundit. Nëse keni nevojë vetëm për një PCB të vogël si kjo, është shumë e lirë ta porosisni atë nga Kina. (Dhe atëherë me siguri do të merrni dhjetë copë ose më shumë, në mënyrë që të përballoni disa gabime bashkimi.)

Për të porositur PCB, do t'ju duhet të dërgoni modelin tuaj në formatin Gerber. Ka programe të ndryshme për këtë. Kam përdorur Eagle të cilën mund ta rekomandoj. Ju mund të prisni disa orë për ta mësuar atë, por më pas funksionon mirë. Për dërrasat e vogla si kjo mund ta përdorni falas.

Kini kujdes kur bëni dizajnin. Ju nuk doni të prisni katër javë për lindjen vetëm për të gjetur se keni bërë diçka të gabuar.

(Nëse keni aftësi të mira bashkimi, mund të krijoni për komponentët e montuar në sipërfaqe dhe të merrni një përshtatës vërtet të vogël. Unë nuk e bëra.)

Pastaj porositni në p.sh. https://www.seeedstudio.com/fusion_pcb.html. Ndiqni udhëzimet se si të krijoni skedarët Gerber nga dizajni juaj. Ju gjithashtu mund të merrni një vrojtim të rezultatit për të siguruar që është në rregull.

(Në fund më duhej të zgjidhja rezistencë të tjerë për R4-R7 nga ato të listuara në figurën skematike. Në vend të kësaj kam përdorur 2k, 4.7k, 6.8k dhe 14.7k.)

Dhe mbani mend - mos e ngatërroni numërimin e kunjave Atmega me numërimin e kunjave Arduino!

Unë rekomandoj që të mos lidhni çipin Atmega direkt, por të përdorni një prizë. Atëherë mund ta hiqni lehtësisht në rast se keni nevojë ta riprogramoni.

Hapi 8: Montimi i makinës

Montimi i makinës
Montimi i makinës
Montimi i makinës
Montimi i makinës

Tani në pjesën më argëtuese - montojeni në makinën tuaj dhe filloni ta përdorni! (Pasi të keni bërë / blerë një kuti për të.)

Nëse tashmë e keni testuar plotësisht prototipin në makinën tuaj, gjithçka duhet të funksionojë në mënyrë perfekte.

(Siç e përmenda më herët, nuk e bëra kështu që më duhej të zëvendësoja disa rezistorë dhe të bëja disa ndryshime në programin tim.)

Gjithashtu merrni parasysh nëse duhet ta montoni prapa stereos ose diku tjetër. Gjeta një vend të mirë sipër kutisë sime të dorezave ku mund ta arrij nga brenda kutisë së dorezës pa marrë asgjë veç e veç. Kjo mund të jetë e dobishme nëse vendos ta përmirësoj më vonë.

Më në fund butonat e mi po punojnë përsëri! Si mund të mbijetoja për dy muaj pa to?

Hapi 9: Përmirësimet e së ardhmes

Siç u përmend, nëse bëj një version 2.0 të këtij unë do të zëvendësoj 4066B me diçka tjetër (ndoshta një potenciometër dixhital) për fleksibilitet më të madh.

Ka edhe shumë gjëra të tjera që mund të bëni. P.sh. shtoni një modul bluetooth dhe krijoni një aplikacion të telekomandës për telefonin tuaj. Ose një modul GPS, atëherë kur jeni afër shtëpisë mund të ngrini automatikisht volumin dhe të dërgoni mesazhin CAN "dritaret poshtë" në mënyrë që të gjithë fqinjët tuaj të mund të shijojnë muzikën tuaj të mrekullueshme.

Recommended: