Sisukord:
- Samm: uurige, kuidas stereosüsteemile käske saata
- 2. samm: uurige, kuhu CAN -siiniga ühenduse luua
- 3. samm: CAN -sõnumite pöördprojekteerimine
- Samm: riistvara prototüüp
- Samm: kaitsmete programmeerimine
- 6. samm: tarkvara
- Samm: viimane riistvara
- 8. samm: auto paigaldamine
- 9. samm: tulevased täiustused
Video: Kohandatud Arduino hoiab CAN -rooli nuppe uue autostereoga: 9 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Otsustasin oma Volvo V70 -02 originaalstereo uue stereo vastu välja vahetada, et saaksin nautida selliseid asju nagu mp3, bluetooth ja vabakäeseade.
Minu autol on stereo jaoks mõned rooli juhtnupud, mida tahaksin endiselt kasutada. Ma ei oodanud, et see on probleem, sest turul on mitu adapterit, mis peaksid minu autoga ühilduma. Kuid peagi avastasin, et nad ei ole! (Tundub, et V70 adapteritel võib veidi teistsuguse CAN -protokolli tõttu olla probleeme -02 autodega.)
Mida siis teha? Kas säilitada vana stereo? Elada elu mittetöötavate nuppudega? Muidugi mitte! Kui turul pole ühtegi töötavat adapterit, peame selle ehitama!
Seda juhendit saab rakendada (mõningate kohandustega) autodele, kus rooli nupud suhtlevad CAN -siini kaudu.
Samm: uurige, kuidas stereosüsteemile käske saata
Esimene asi, mida peaksite tegema, on välja selgitada, millist kaugsisendit stereo ootab. Tavaliselt tootjad seda teile ei ütle ja tõenäoliselt pole teil ka juurdepääsu pöördprojekteerimiseks töötavatele kaugjuhtimispultidele.
Minu uue stereo (Kenwood) pult koosneb ühest juhtmest ja mul pole õnnestunud selle toimimise kohta teavet saada. Kuid sellel on ka 3,5 mm pesa kaugsisendiks. Ka mina ei saanud sellest midagi teada. Kuid teiste kaubamärkide 3,5 mm pistikupesa kohta on teavet, mis viitab sellele, et eri käske saab tuvastada, rakendades spetsiifilist takistust otsa ja varruka vahel (ja valikuliselt rõnga ja varruka vahel). Nt. https://forum.arduino.cc/index.php?topic=230068.0. Seega otsustasin proovida, mis on varustatud leivalaua, hunniku takistite ja 3,5 mm pistikuga, mis on stereosse ühendatud ja leivaplaadiga ühendatud. Esialgu ei tuvastatud midagi, kuid stereol on menüü "õppimisrežiim" ja seal sai käske edukalt seadistada, rakendades samal ajal erinevat vastupanu. Edu!
Hiljem sain aga teada, et tegin siin vea: mitte kõik käsud, mida stereo tundus õppivat, tegelikult ei tööta. Nt. Õppimisrežiimis leiti 30 kOhm, kuid see ei töötanud hiljem ja mõne käsu puhul seadistasin vastupanu erinevuse nii väikeseks, et hiljem käivitati vale käsk.
Seega soovitan kõigi takistuste ja lülitusnuppudega leivaplaati kasutada kõigi kaugkäskude jaoks, mida soovite käsitseda, ja testida, kas need kõik toimivad.
Kui teie autostereo ei saa sisendit samal viisil vastu võtta, peate selle lahenduse kohandamiseks välja mõtlema, kuidas see töötab. Kui te ei saa üldse aru, on teil probleem.
2. samm: uurige, kuhu CAN -siiniga ühenduse luua
Peate leidma hea koha CAN -siiniga ühenduse loomiseks. Kuna asendate vana stereo, mis suhtleb CAN -i kaudu, peaksite selle stereo taga leidma. CAN-siin koosneb paarist keerutatud juhtmest (CAN-L ja CAN_H). Vaadake kindlasti oma auto ühendusskeemi.
3. samm: CAN -sõnumite pöördprojekteerimine
Kui Google ei saa teile öelda, milliseid CAN -sõnumeid peaksite kuulama, peate looma ühenduse CAN -siiniga ja tegema pöördtehnoloogia. Kasutasin Arduino Unot ja CAN -kilpi. (Te ei vaja tegelikult CAN -kilpi, nagu näete hiljem, saate selle asemel kasutada mõnda odavat komponenti leivaplaadil.)
Konsulteerige Google'iga, et teada saada, millist andmeedastuskiirust peaksite oma autoga ühendamisel kasutama. (Tavaliselt leiate, et on olemas kiire ja väikese kiirusega CAN -võrk. Ühendate väikese kiirusega võrguga.)
Samuti peate programmeerima Arduino kõigi CAN -sõnumite logimiseks jadaliidese kaudu, et saaksite need oma arvutis logifaili salvestada. Tavaline Arduino IDE ei salvesta andmeid logifaili, kuid saate kasutada nt. Putty hoopis.
Enne programmi kirjutamise alustamist peate installima kogu CAN_BUS_Shield.
Siin on mõned pseudokoodid, mis aitavad teil programmiga alustada:
seadistamine ()
{init jadaühendus init CAN -raamatukogu} loop () {kui CAN -teade on vastu võetud {loe CAN -sõnumivormingu logikirjet, kirjuta logikirje seeriasse}}
Vihjed:
CAN -i teegifunktsioonidele juurdepääsemiseks kasutate klassi MCP_CAN eksemplari.
MCP_CAN m_can;
Esialgne saab:
samas (m_can.begin ()! = CAN_OK)
{viivitus (1000); }
Kontrollige ja lugege CAN -sõnumeid:
samas (m_can.checkRecept () == CAN_MSGAVAIL)
{// Hankige CAN -id, sõnumi pikkus ja sõnumi andmed m_can.readMsgBufID (& m_canId, & m_msgLen, m_msgBuf); // Tehke midagi sõnumi andmetega siin}
Kui vajate rohkem abi, leiate hiljem minu programmi lingi. CAN -kilbiteek sisaldab ka näidet. Või vaadake mviljoen2 juhendit, mis sisaldab sarnast sammu.
Kõigepealt vajate andmete filtreerimiseks viitefaili. Lülitage süüde raadiorežiimi ja logige kõik paariks minutiks ilma nuppe puudutamata.
Seejärel alustage iga nupu puhul logimist, vajutage nuppu ja lõpetage logimine.
Kui olete lõpetanud, peate kandidaatide leidmiseks nuppude logidest välja filtreerima kõik, mis on teie viitelogis. Sain teada, et sõnumeid on veel palju, nii et tegin rohkem logisid ja nõudsin siis, et "käsu A kandidaadid peavad olema kõikides nupp-A-failides ja mitte üheski viitefailis". See jättis mulle vaid mõned võimalused proovida.
Logid sisaldavad palju sõnumeid, nii et peate selle jaoks mõne programmi kirjutama või kasutama Excelit. (Kasutasin oma vajadustele vastavat programmi, mille tingimused olid väga tugevalt kodeeritud, nii et kardan, et ei saa pakkuda programmi, mida saaksite kasutada.)
Hoiatussõna: te ei saa olla kindel, et nupp annab alati identse sõnumi. Mõned bitid võivad sisaldada kasvavaid loendureid jms (saate siiski jätta sõnumi ID samaks.)
Kui teil juhtub olema Volvo V70 -02, siis olete seda teinud:
- Sõnumi ID: 0x0400066 Bait0: 0x00, 0x40, 0x80 või 0xc0 (ei hooli)
- Bait1: 0x00 (ei hooli)
- Bait2: 0x00 (ei hooli)
- Bait3: 0x00-0x07 (ei hooli)
- Bait4: 0x1f (ei hooli)
- Bait5: 0x40 (ei hooli)
- Bait6: 0x40 (ei hooli)
- Bait7: nupu identifikaator: 0x77 = helitugevuse suurendamine, 0x7b = helitugevuse vähendamine, 0x7d = järgmine lugu, 0x7e = eelmine lugu.
Kui arvate, et olete käsud leidnud, võib olla hea mõte programmi muuta nii, et see logiks ainult huvitavad sõnumid. Vaadake nuppude vajutamise ajal jadalogi akent, et veenduda, kas olete tuvastanud õiged sõnumid.
Samm: riistvara prototüüp
Teie riistvara peab suutma:
- Tuvastage CAN -siinil saadud käsud
- Saatke stereosüsteemi käsud muus vormingus
Kui teil on piisavalt ruumi, saate esimese osa jaoks kasutada Arduino ja CAN -kilpi ning teise jaoks lisaseadmeid. Siiski on mõningaid puudusi:
- CAN -kilbi maksumus
- Suurus
- Arduino toiteallikas ei ole õnnelik, kui see on otse teie autodega ühendatud 12 V (see tõenäoliselt töötab, kuid tõenäoliselt lühendatakse selle eluiga).
Nii et selle asemel kasutasin järgmist:
- Atmega 328, "Arduino aju". (On mõned variandid, hankige see, mis on võrdne Arduino Uno versiooniga. Saate seda osta koos Arduino alglaaduriga või ilma.)
- 16 MHz kristall + kondensaatorid kella signaali jaoks.
- MCP2551 CAN transiiver.
- MCP2515 CAN kontroller.
- TSR1-2450, muundab 6,5-36V 5V-ks. (Ei kasutata prototüübis, kuna tarkvara ei hooli toiteallikast.)
- CD4066B lüliti, mida kasutatakse stereosse käskude saatmisel.
- Paar takistit. (Väärtused leiate Eagle'i skeemidest hilisemas etapis.)
Selle konfiguratsiooniga on hea see, et see ühildub täielikult Arduino ja CAN -kilbiteekiga.
Kui soovite käsitseda rohkem kui nelja nuppu, võiksite kaaluda midagi muud kui CD4066B. CD4066B -d võib kirjeldada kui nelja lülitit ühes, mida igaüks juhib ühe Atmegas GPIO tihvtiga. Iga lüliti külge on ühendatud takisti, mida saab kasutada stereo sisendina kasutatava takistuse juhtimiseks. Nii saab seda hõlpsasti kasutada nelja erineva käsu saatmiseks. Kui need on kombineeritud, on võimalik saada täiendavaid takistuste väärtusi. Siit tulebki see viga, mida ma varem mainisin. Mul on neli nuppu, kuid plaanisin kaks neist rakendada pika ja lühikese vajutusega, et anda mulle kuus erinevat käsku. Kuid lõpuks sain teada, et ma ei leia takistite kombinatsiooni, mis annaks mulle kuus töötavat kombinatsiooni. Tõenäoliselt oleks võimalik ühendada analoogväljundi signaal stereoga (3,5 mm ots). (Pange tähele, et Atmegal pole tõelisi analoogväljundi kontakte, seega on vaja täiendavat riistvara.)
Testimiseks valmistasin oma prototüübiga ühenduse loomiseks ka lihtsa auto- ja stereosimulaatori. See muudab silumise lihtsamaks ja kui teile ei meeldi autosse istuda ja programme teha, võin seda soovitada.
Prototüüpi illustreerib pildil olev alumine leivaplaat. Toiteallika, programmeerimise ja jada logimise jaoks on see ühendatud Arduino Unoga, kust on eemaldatud Atmega kiip.
Ülemine leivalaud on auto + stereosimulaator, mida kasutatakse prototüübi esmaseks testimiseks.
Prototüüp + simulaator on ette nähtud järgmiselt:
- Vajutage ühte simulaatori tahvli lülitusnuppu. (Need on teie rooli nupud.)
- Kui simulaatoriprogramm tuvastab nupuvajutuse, saadab see vastava CAN -teate iga 70 ms tagant, kuni nuppu vajutatakse. (Kuna varem võetud logid näitasid, et see töötab minu autos.) Samuti saadab see palju "rämps" CAN -teateid, et simuleerida bussi muud liiklust.
- CAN -teele saadetakse CAN -teateid.
- Prototüüp võtab vastu CAN -teateid.
- MCP2515 viskab kõik sõltumatud sõnumid sõnumi ID põhjal.
- Kui MCP2515 saab teate, mida tuleks käsitleda, näitab see, et sõnum on järjekorras.
- Atmega loeb sõnumi läbi ja otsustab, millist nuppu tuleks aktiivseks lugeda.
- Atmega jälgib ka seda, millal viimane teade saabus, teatud aja möödudes loetakse nupp vabastatuks. (CAN -teated näitavad ainult seda, et nupp on maas, mitte seda, et see oleks vajutatud või vabastatud.)
- Kui nuppu loetakse aktiivseks, aktiveeritakse üks või mitu CD4066B lülitit.
- Simulaator (toimib nüüd teie stereona) tuvastab, et otsa ja varruka vahel on takistus. (Ots on ühendatud 3,3 V ja takisti kaudu analoogsisendiga. Kui ükski käsk pole aktiivne, kuvatakse see pinge 3,3 V, kui käsk on aktiivne, muutub väärtus madalamaks ja tuvastab käsu.
- Kui käsk on aktiivne, aktiveeritakse ka vastav LED. (LED -e on kuus, sest plaanisin kahe oma nupu jaoks kasutada erinevat pikka / lühikest vajutust.)
Riistvara prototüübi kohta lisateabe saamiseks vaadake hilisemas etapis Eagle'i skeeme.
Lisateave simulaatori plaadi riistvara kohta:
- 16 MHz kristall
- 22 pF kondensaatorid
- LED -takistid tuleks valida LED -i omaduste põhjal
- Takisti ühendatud A7 ja 3.3V, valige nt. 2 kOhm (pole kriitiline).
- MCP2551 ja MCP2515 ühendatud takistid on üles-alla / alla. Valige nt. 10 kOhm.
(Või võite soovi korral kasutada simulaatori "CAN -osa" jaoks CAN -kaitsekilpi.)
Riistvara kujundamisel on oluline teada, kuidas Atmega tihvtid Arduino tihvtidega kaardistatakse.
(Ärge ühendage ühtegi LED -i otse CD 4066B -ga, see saab hakkama ainult väikese vooluga. Proovisin seda, kui esimest korda testisin väljundit ja kiip muutus kasutuks. Hea on see, et ostsin paar neist lihtsalt sellepärast, on nii odavad.)
Samm: kaitsmete programmeerimine
Võib -olla märkasite eelmises etapis, et prototüübil ei ole eraldi komponente MCP2515 -le kella signaali genereerimiseks. Seda seetõttu, et Atmega kella signaalina kasutatakse juba 16 MHz kristalli, mida saame kasutada. Kuid me ei saa seda lihtsalt ühendada otse MCP2515 -ga ja vaikimisi pole Atmega kellaaega.
(Kui soovite, võite selle sammu vahele jätta ja selle asemel täiendava riistvara lisada.)
Kuid me võime kasutada midagi, mida nimetatakse "kaitsmete programmeerimiseks", et lubada ühel GPIO -nööbil kellaaja väljasignaal.
Kõigepealt peate leidma faili nimega "boards.txt", mida kasutab teie Arduino IDE. Peate Arduino Uno kirje kopeerima, andma sellele uue nime ja muutma low_fuses väärtust.
Minu uus plaat näeb välja selline:
########################################### ##############Põhineb Arduino Unol
clkuno.name = Kell välja (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_floadk = 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.uno = standardarvuti
##############################################################
Pange tähele, et kellaaeg aktiveeritakse, seadistades selle juhtbiti väärtuseks 0.
Kui olete plaatide konfiguratsioonifaili loonud uue tahvli, peate uue alglaaduri Atmegale kirjutama. Selleks on erinevaid viise, kasutasin meetodit, mida on kirjeldatud saidil
Kui olete seda teinud, ärge unustage programmi Atmega üles laadimisel valida oma uue tahvli tüüpi, mitte Arduino Uno.
6. samm: tarkvara
On aeg muuta nutikas riistvara nutikaks, lisades tarkvara.
Siin on mõned prototüübi pseudokoodid:
lastReceivedTime = 0
lastReceivedCmd = puudub cmdTimeout = 100 setup () {lubage valvekoer konfigureerida nööpnõelad D4-D7 väljundnööpidena init CAN seadistamine CAN filter} silmus () {lähtestage valvekoer, kui (CAN-teade on vastu võetud) {iga nupukäsu jaoks {kui CAN-teade kuulub nupukäsk {lastReceivedTime = nüüd lastReceivedCmd = cmd}}} kui nüüd> lastReceivedTime + cmdTimeout {lastReceivedCmd = none} iga nupukäsu jaoks {if lastReceivedCmd on nupukäsk {set command pin output = on} else {set command pin output = off }}}
cmdTimeout otsustab, kui kaua peaksime ootama, enne kui arvestame viimase vabastatud aktiivse nupuga. Kuna nupp CAN -teateid saadetakse umbes iga 70 ms tagant, peab see olema mõnevõrra suurem kui see. Aga kui see on liiga suur, tekib viivituskogemus. Nii et 100 ms tundub hea kandidaat.
Aga mis on valvekoer? See on kasulik väike riistvarafunktsioon, mis võib meid krahhi korral päästa. Kujutage ette, et meil on viga, mis põhjustab programmi krahhi, kui helitugevuse suurendamise käsk on aktiivne. Siis oleks meil stereo maksimaalse helitugevusega! Kuid kui valvekoera ei lähtestata teatud ajaks, otsustab ta, et juhtus midagi ootamatut, ja väljastab lihtsalt lähtestamise.
tühine seadistus ()
{// lubage silmuse jaoks maksimaalselt 250 ms wdt_enable (WDTO_250MS); // muu init kraam} void loop () {wdt_reset (); // teha asju}
CAN filter? Noh, saate konfigureerida CAN -kontrolleri ära viskama kõik sõnumid, mis ei vasta filtrile, nii et tarkvara ei peaks raiskama aega sõnumitele, millest me ei hooli.
allkirjastamata pikk mask = 0x1fffffff; // Kaasa kõik 29 päise bitti maski
allkirjastamata pikk filterId = 0x0400066; // Me hoolime ainult sellest CAN -sõnumist id m_can.init_Mask (0, CAN_EXTID, mask); // Mask 0 kehtib filtrile 0-1 m_can.init_Mask (1, CAN_EXTID, mask); // Mask 1 kehtib filtrile 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);
Filtri + maski seadistamise kohta leiate lisateavet CAN -teegi koodist ja CAN -kontrolleri dokumentatsioonist.
Samuti saate seadistada CAN -kontrolleri tõstma katkestust, kui sõnum (mis pole välja filtreeritud) saabub. (Ei sisaldu ülaltoodud näites, kuid minu programmis on selle jaoks teatud kood.) Sel juhul ei anna see tegelikult mingit lisaväärtust ja võib olla segane, kui te pole programmeerimisega harjunud.
Nii et see oli tarkvara prototüüp kokkuvõttes. Kuid me vajame ka koodi simulaatori plaadile:
lastSentTime = 0
minDelayTime = 70 setup () {konfigureerige tihvtid A0-A5 väljundpistikutena konfigureerige nööpnõelad D4-D7 sisemise nööpnõeltega sisemise tõmbetugevusega. init CAN} loop () {send "junk" can msg set activeButton = none for each button {kui nuppu vajutatakse {set activeButton = button}} if activeButton! = none {if now> lastSentTime + minDelayTime {send button command can message } set lastSentTime = now} invalid = read pin A7 foreach (cmd) {if (min <invalid <max) {led on} else {led off}} oota 1 ms}
See saadab pidevalt "rämps" CAN -teateid ligikaudu iga ms tagant ja samal ajal, kui nuppu vajutatakse, iga 70 ms tagant.
Võimalik, et peate igale nupule kuuluvate min ja max muutujate sobivate väärtuste leidmiseks logima sisendi poldile A7, vajutades samal ajal erinevaid nuppe. (Või saate seda arvutada, kuid sisendi lugemine annab teile täpsemad väärtused.)
Pin -režiimide programmeerimisel peate olema pisut ettevaatlik. Kui määrate kogemata sisemise tõmbe kasutamiseks mõeldud tihvtid väljundnööpidena, loote potentsiaalse otsetee, mis kahjustab teie Arduinot, kui seate väljundi kõrgeks.
Kui soovite minu programme vaadata, saate need alla laadida siit:
- CAN -sõnumite logiprogramm
- Simulaatoriplaadi programm
- Programm prototüübile / lõpptahvlile
Peaksite teadma, et need programmid ei vasta tegelikult siin olevale pseudokoodile, need sisaldavad palju "ekstra" asju, mida tegelikult vaja pole ja kui te pole objektorienteeritud programmeerimisega tuttav, võib selle lugemine olla pisut keeruline.
Samm: viimane riistvara
Kui olete oma programmiga rahul (ärge unustage pärast prototüübi simulaatoritahvliga testimist autos katsetada), on aeg konstrueerida tõeline riistvara.
Siin on teil kolm võimalust:
- Kiire ja määrdunud - jootke kraam kokku PCB prototüüpplaadil.
- Hardcore DIY - söövita oma PCB.
- Laisk viis - tellige komponentide jootmiseks professionaalne trükkplaat.
Kui te ei kiirusta, võin soovitada viimast võimalust. Kui vajate ainult sellist väikest trükkplaati, on selle tellimine Hiinast väga odav. (Ja siis saate tõenäoliselt kümme tükki, nii et saate endale lubada jootmisvigu.)
PCBde tellimiseks peate oma kujunduse saatma Gerberi vormingus. Selleks on erinevaid tarkvara. Kasutasin Eagle'i, mida võin soovitada. Selle õppimiseks võite oodata paar tundi, kuid siis töötab see hästi. Selliste väikeste tahvlite jaoks saate seda tasuta kasutada.
Kujunduse tegemisel olge ettevaatlik. Te ei taha kohaletoimetamist neli nädalat oodata, et teada saada, et tegite midagi valesti.
(Kui teil on head jootmisoskused, saate kujundada pinnale paigaldatavaid komponente ja hankida tõeliselt väikese adapteri. Mina seda ei teinud.)
Seejärel tellige nt. https://www.seeedstudio.com/fusion_pcb.html. Järgige juhiseid Gerberi failide loomiseks oma kujundusest. Samuti saate tulemuse eelvaate, veendumaks, et see on korras.
(Lõpuks pidin valima R4-R7 jaoks muud takistid kui skeemipildil loetletud. Selle asemel kasutasin 2k, 4,7k, 6,8k ja 14,7k.)
Ja pidage meeles - ärge ajage segi Atmega tihvtide nummerdamist Arduino tihvtide nummerdamisega!
Soovitan mitte joota Atmega kiipi otse, vaid kasutada pistikupesa. Seejärel saate selle hõlpsalt eemaldada juhuks, kui peate selle ümber programmeerima.
8. samm: auto paigaldamine
Nüüd kõige lõbusama osa juurde - paigaldage see oma autosse ja hakake seda kasutama! (Pärast seda, kui olete selle jaoks korpuse teinud / ostnud.)
Kui olete oma autos prototüüpi juba täielikult testinud, peaks kõik toimima ideaalselt.
(Nagu ma varem mainisin, ei teinud ma seda, nii et pidin mõned takistid välja vahetama ja oma programmis mõningaid muudatusi tegema.)
Samuti kaaluge, kas peaksite selle paigaldama stereo taha või mujale. Leidsin oma kindalaeka kohal hea koha, kuhu selleni jõuan kindalaeka seestpoolt ilma midagi lahti võtmata. See võib olla kasulik, kui otsustan selle hiljem täiendada.
Lõpuks töötavad mu nupud jälle! Kuidas saaksin kaks kuud ilma nendeta ellu jääda?
9. samm: tulevased täiustused
Nagu mainitud, asendan 4066B suurema paindlikkuse korral selle versiooni 2.0 abil millegi muuga (tõenäoliselt digitaalse potentsiomeetriga).
Samuti saate teha palju muid asju. Nt. lisage Bluetooth -moodul ja tehke oma telefoni jaoks kaugjuhtimispult. Või GPS -moodul, siis kui olete kodu lähedal, saate automaatselt helitugevust tõsta ja saata CAN -sõnumi "aknad alla", nii et kõik teie naabrid saaksid teie imelist muusikat nautida.
Soovitan:
Kasutage oma Magicbit [Magicblocks] nuppe: 5 sammu
Kasutage oma Magicbitil nuppe [Magicblocks]: see õpetus õpetab teid Magicblocks'i abil oma Magicbitil olevaid nuppe kasutama. Selles projektis, mis põhineb ESP32 -l, kasutame arendusplaadina magicbitit. Seetõttu saab selles projektis kasutada mis tahes ESP32 arendusplaati
Arduino juhib alalisvoolumootori kiirust ja suunda, kasutades potentsiomeetrit ja nuppe: 6 sammu
Arduino juhtida alalisvoolumootori kiirust ja suunda potentsiomeetri ja nuppude abil: Selles õpetuses õpime, kuidas kasutada L298N DC MOTOR CONTROL draiverit ja potentsiomeetrit, et juhtida alalisvoolumootori kiirust ja suunda kahe nupuga. Vaadake näidisvideot
Kuidas peaksite alustama uue projektiga: 7 sammu
Kuidas peaksite alustama uue projektiga: Tere lugeja, see on minu õpetus, kuidas peaksite alustama uue mikrokontrolleri projektiga
FoodPlate: plaat, mis hoiab teie toidu soojana: 11 sammu
FoodPlate: taldrik, mis hoiab teie toidu soojana: kas olete kunagi kogenud, et teie toit on söömise ajal jahtunud? Selles juhendis selgitan teile, kuidas kuumutatud taldrikut valmistada. Samuti tagab see plaat, et seda kallutades ei saa sealt midagi kukkuda. Link minu GitHub i i
Must MAC või uue elu toomine vanasse juhtumisse: 9 sammu (piltidega)
Must MAC ehk uue elu toomine vanasse juhtumisse: Paar kuud tagasi sain kätte vana MAC -ümbrise. Tühi, sisse jäi ainult roostes šassii. Panin selle oma töökojas ära ja eelmisel nädalal tuleb see meelde. Juhtum oli kole, kaetud nikotiini ja mustusega, millel oli palju kriimustusi. Esimene lähenemine