Sisukord:
- Samm: lühike ülevaade vooluringist
- 2. samm: tarkvara lühiülevaade
- 3. samm: I2C pakettide sisu
- Samm: kaugjuhtimispuldi koodide hankimine (ui32Data)
- Samm: kuidas testida oma I2C alamseadet
- 6. samm: oma disaini vähendamine
- Samm 7: Järeldus
- 8. samm: kasutatud viited
Video: I2C infrapuna kaugjuhtimispult Arduinoga: 8 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
Selles juhendis kirjeldatakse üksikasjalikult universaalse kaugjuhtimispuldi loomist liidese I2C abil.
Kui veider sa ütled, kasutades I2C alamseadet?
Jah, I2C alamseade.
Seda seetõttu, et IR -pakettide täpne ajastus on üsna nõudlik ja tüüpilise Arduinoga tuleb võidelda, kui ta juba täidab paljusid muid ülesandeid samal ajal. Arvutamiskoormust on parem jaotada, määrates igal võimalusel pühendatud protsessoritele ajamahukad tegevused (parem seda siiski teha riistvaras). Arvestades, et I2C on hästi dokumenteeritud ja tugev kommunikatsioonimeetod IC -de vahel, valisin selle liideseks.
Sissejuhatus
Nagu eespool mainitud, kirjeldab see juhend, kuidas juhtida kodumasinaid, nagu teler, DVD -mängija ja satelliit jne, kasutades Arduino IRremote'i raamatukogu.
See lõpeb disaininäitega, mis muudab Arduino I2C alamkaugjuhtimismooduliks (pilt 1 ülal) koos prototüübi testiahelaga (pilt 2 ülal) ja kirjeldab üksikasjalikult, kuidas vähendada oma disaini minimaalseteks vajalikeks komponentideks, et seda saaks integreeritud teise kujundusse. Minu puhul kasutan seda sisseehitatud seadet IoT Universal kaugjuhtimisseadmes, mis põhineb ESP8266-12E.
Milliseid osi ma vajan?
1. etapis (IR -saatja) kujutatud vooluahela ehitamiseks vajate järgmisi osi;
- 2 10K takistit
- 1 väljalülitatud 390R takisti
- 1 välja 33R takisti
- 1 välja 3K8 takisti
- 1 väljas punane LED
- 1 väljalülitatud IR Led TSAL6400
- 1 off Transistor BC337
- 1 välja 220uF kondensaator
- 1 off Arduino Uno
4. etapis (IR -vastuvõtja) kujutatud vooluahela ehitamiseks vajate järgmisi osi;
- 1 off 10K takisti
- 1 soodustus TSOP38328
- 1 välja 220uF kondensaator
- 1 off Arduino Uno
5. etapis (alamkatse ahel) kujutatud vooluahela ehitamiseks vajate järgmisi osi;
- 4 10K takistit
- 2 off 390R takisti
- 1 välja 33R takisti
- 1 välja 3K8 takisti
- 2 välja lülitatud punane LED
- 1 väljalülitatud IR Led TSAL6400
- 1 off Transistor BC337
- 1 välja 220uF kondensaator
- 2 SPST -nuppu
- 2 off Arduino Unos
Etapis 6 (kahanenud disain) kujutatud vooluahela ehitamiseks vajate järgmisi osi;
- 3 10K takistit
- 1 väljalülitatud 270R takisti
- 1 väljalülitatud 15R takisti
- 4 1K takistit
- 1 väljas punane LED
- 1 väljalülitatud IR Led TSAL6400 või TSAL5300
- 1 off Transistor BC337
- 1 välja 220uF kondensaator elektrolüütiline @ 6,3v
- 1 välja 1000uF kondensaator elektrolüütiline @ 6,3v
- 2 välja 0,1uF kondensaatorit
- 2 välja lülitatud 22pF kondensaatorit
- 1 väljalülitatud 16MHz Xtal
- 1 soodustus ATMega328P-PU
Märkus. ATMega328P programmeerimiseks vajate ka FTDI -seadet
Milliseid oskusi mul vaja on?
- Elektroonika minimaalne tundmine,
- Teadmised Arduino ja selle IDE kohta,
- Natuke kannatust,
- Kasuks tuleks mõningane arusaam I2C -st (vt mõningaid üldisi I2C/Wire Library üksikasju siit).
Käsitletud teemad
- Lühike ülevaade vooluringist,
- Tarkvara lühiülevaade,
- I2C paketi sisu,
- Kaugjuhtimispuldi koodide hankimine (ui32Data),
- Kuidas testida oma I2C alamseadet,
- Kahandades oma disaini,
- Järeldus,
- Kasutatud viited.
Vastutusest loobumine
Nagu alati, kasutate neid juhiseid omal vastutusel ja neid ei toetata.
Samm: lühike ülevaade vooluringist
Vooluahela eesmärk on edastada IR kaugjuhtimispuldi koode. Selle disain on üsna lihtne ja lihtne.
Kui transistor Q1 a BC337 NPN on sisse lülitatud loogika kaudu Arduino PWM O/P D3 -lt takistile R5, läbib vool LEDid 1 ja 2. Seda piiravad ainult liiteseadised R3 ja R4. Q1 kasutatakse IR -dioodi läbiva voolu suurendamiseks (IF Max = 100 mA) üle Arduino O/P võimsuse, mis on võimeline ~ 40 mA @ 5 V toiteallikaks.
Kondensaator C1 ja 220uF Electrolytic tagab mõningase stabiliseerimise, takistades toitekaabli langust LED -ide 1 ja 2 poolt tarbitud võimsuse tõttu.
Takistid R1 ja R2 on I2C tõmbejõud.
2. samm: tarkvara lühiülevaade
Preambul
Selle lähtekoodi edukaks kompileerimiseks vajate järgmist lisateeki;
IRremote.h
- Autor: z3t0
- Eesmärk: Arduino infrapuna kaugteek: mitme protokolliga infrapunasignaalide saatmine ja vastuvõtmine
- Siit:
Koodi ülevaade
Nagu on näidatud ülaltoodud pildil 1, konfigureerib kood käivitamisel mikrokontrolleri I/O ja küsitleb seejärel sisemise tarkvara lipu "bFreshDataFlag" olekut. Kui see lipp on seatud, kinnitab kontroller, et see on hõivatud (andmepinge D4 on madal) ja liigub olekusse „eBUSY”, mis loeb järjestikku nuppude uDataArray all hoitavaid käsklusi ja saadab IR -moduleeritud andmed IR -LED -i edastusjärjestus.
Kui uDataArray salvestatud andmed on täielikult saadetud, jätkatakse olekut „eIDLE” ja rida „Hõivatud” tühistatakse (andmeside D4 kõrge). Seade on nüüd valmis vastu võtma rohkem nupuvajutusi, mis tähistavad edastusjada lõppu.
IR -nupu vajutamise andmete vastuvõtmine
Kui andmed saadetakse infrapunakaugjuhtimispuldile I2C kaudu, käivitab see katkestuse ja funktsioonikõne ReceiveEvent () käivitatakse asünkroonselt.
Pärast käivitamist kirjutatakse vastuvõetud I2C andmed järjestikku puhvrisse „uDataArray ”.
Andmete vastuvõtmise ajal, kui kapten annab märku jada lõppemisest (bFreshData! = 0x00), määratakse 'bFreshDataFlag', andes seega märku edastusjada algusest.
Pildid 2… 3 annavad näite tüüpilisest pakettide järjestusest.
Märkus: täielik lähtekood on saadaval siin
3. samm: I2C pakettide sisu
I2C kaudu orjale saadetud juhtpaketi vorming on toodud ülal pildil 1, iga välja tähendus on toodud allpool
Kontrollpaketi väljade tähendus
bait bKodeerimine;
-
IR kaugjuhtimispuldi kodeering,
- RC6 (taevas) = 0,
- SONY = 1,
- SAMSUNG = 2,
- NEC = 3,
- LG = 4
uint32_t ui32Data;
Binaarse IR -andmevoo kuueteistkümnes esitus 4 andmebaiti (allkirjata pikk), LSByte… MSByte
bait bNumberOfBitsInTheData;
Bittide arv andmetes (maksimaalselt 32). Vahemik = 1… 32
bait bPulseTrainRepeats;
Mitu kordust seda impulssrongi. Vahemik = 1… 255. Tavaliselt 2… 4 kordust. Võimalik, et soovite seda pikendada ka sisse-/väljalülituskäskude puhul, kuna vastuvõttev seade nõuab sisselülitussignaali vastuvõtmiseks mõnikord paar täiendavat impulssirongi kordust
bait bDelayBetweenPulseTrainRepeats;
Hilinemine selle impulssrongi korduste vahel. Vahemik = 1… 255mS. Tavaliselt 22 mS… 124 mS
bait bButtonRepeats;
Simuleerib sama nupu korduvat vajutamist (kuid ei toeta muudetud koodi nagu Apple'i pult, vaid kordab nupukoodi). Vahemik = 1… 256. Vaikimisi = 1
uint16_t ui16DelayBetweenButtonRepeats;
Viivitus nupukorduste vahel (allkirjastamata int). 2 baiti kokku LSByte… MSByte. Vahemik = 1… 65535mS. Vaikimisi = 0mS
bait bFreshData;
-
Värsked andmed. Nullist erinev väärtus. Viimasena kirjutatud, käivitab IR TX jada. Vahemik 0x00… 0xFF
- Tuleb veel juhtpakette = 0
- See on viimane kontrollpakett = nullivaba väärtus 1, 2,… 255
Pange tähele kompileerimisdirektiivi „_packed_” kasutamist. Selle eesmärk on tagada, et andmed on mälus baitide kaupa, olenemata kasutatavast sihtsüsteemist (Uno, Due, ESP8266 jne). See tähendab, et registerAllocationType ja dataArrayType liit peavad juhtpaketist ainult järjestikku välja ajama/kella baitides muutma TX/RX tarkvara lihtsaks.
Samm: kaugjuhtimispuldi koodide hankimine (ui32Data)
Vastava kaugjuhtimispuldi võtmekoodi hankimiseks on kolm võimalust;
- Bittide loendamise abil ostsilloskoobiga
- Vaadake seda veebisaidilt,
- Dekodeerige see otse tarkvara andmevoost.
Bittide loendamise abil ulatusega
See ei ole tõhus meetod, kuna see võtab üsna kaua aega ja nõuab rohkem kui ühte katset, kuid see võib olla väga täpne. See on kasulik ka meetodite 2 ja 3 abil saadud koodide visuaalsel valideerimisel, samuti kaugjuhtimispuldi eripärade määramisel. Näiteks Apple IR -puldi nuppu all hoides. Kaugjuhtimispult väljastab esialgu käsujärje, seejärel järgneb sellele korduva tihendatud järjestusega 0xF….
Otsige seda veebisaidilt
Linuxi infrapunakaugjuhtimise veebisaidi kaugjuhtimispuldi koodide andmebaas on hea allikas.
Negatiivne külg on aga see, et peate võib -olla proovima mõnda koodi, kuni leiate endale sobiva. Samuti peate võib -olla tõlgendama mõningaid koodide esitusi, et teisendada need samaväärseks kuuskantvormiks.
Dekodeerige see otse andmevoost
Kasutades ülaltoodud pildil 1 olevat vooluahelat koos IRremote raamatukogu näitega 'IRrecvDumpV2.ino', on võimalik andmevoogu dekodeerida otse kaugjuhtimispuldist. Pildil 2 on näidatud dekodeeritud Samsungi teleri kaugjuhtimispult sisse- ja väljalülitamiseks Arduino IDE terminaliaknas.
Kombineeritud vastuvõtja/saatja
Ülaltoodud piltidel 3 ja 4 on kujutatud lahendus, mis võimaldab nii IR -käsu vastuvõtmist kui ka edastamist, võimaldades hõlpsat prototüüpimist.
IR -kaugjuhtimispuldi nupuvajutuste dekodeerimiseks peate Arduino välgutama IRremc raamatukoguga kaasas oleva näitega 'IRrecvDumpV2.ino'.
See töötab võrdselt hästi ka edastamiseks, kui IR -käsud. Seadme toimimise visuaalseks indikaatoriks on punane LED.
Samm: kuidas testida oma I2C alamseadet
Kasutades siin olevat lähtekoodi ja joonisel 1 ülaltoodud vooluringi, programmeerige „Master” Arduino parameetriga „IR_Remote_Sim_Test.ino” ja „Slave” Arduino parameetriga „IR_Remote_Sim.ino”.
Eeldades, et teil on Sony Bravia teler, Sky HD kast ja Sony BT SoundBar, vajutage nuppu 1 ja teie teler lülitub BBC1 -le (kanal 101). Vajutage nuppu 2 ja heliriba vaigistatakse. Vajutage uuesti ja vaigistus tühistatakse.
Infrapunakiirguse jada täitmise ajal süttib LED3, mis näitab, et alam on hõivatud, ja LED1 vilgub IR -edastusprotsessiga kooskõlas.
Muidugi, kui teil pole ülaltoodud meelelahutussüsteemi seadistatud, saate alamprogrammi "IRrecvDumpV2.ino" abil uuesti programmeerida, dekodeerida huvipakkuvad kaugkäsklused ja seejärel programmeerida need "IR_Remote_Sim_Test.ino" antud stsenaarium.
Joonis 2 näitab süsteemi taseme testitarkvara ülevaadet Masteri ja Slave'i vahel.
6. samm: oma disaini vähendamine
Olgu, nii et eeldades, et järgisite seda juhendit, tuginedes kahele Arduinole oma koduseadmete juhtimiseks, ei ole teie Arduino varu kõige tõhusam kasutamine. Järelikult, kui konstrueerite ülaltoodud pildil näidatud vooluahela ja järgite siin toodud juhiseid ATMega328P programmeerimiseks parameetriga „IR_Remote_Sim.ino”, saate kogu süsteemi vähendada minimaalseteks komponentideks. See võimaldab teil oma disaini mõnda muusse süsteemi lisada.
Samm 7: Järeldus
Lahendus on stabiilne ja töötab hästi, see on juba mitu nädalat ilma probleemideta manustatud teise süsteemi.
Valisin Arduino Uno R3, kuna soovisin seadet, millel oleks piisavalt RAM -i, et mul oleks mõistliku sügavusega nupupuhvrit. Leppisin puhvri suurusega 20 paketti (MAX_SEQUENCES).
Minu valmistatud Hybrid TX/RX kilp tuli ka Sony ja Sky kaugjuhtimispultide dekodeerimisel väga kasuks. Kuigi pean tunnistama, et kasutasin aeg -ajalt oma digitaalset ulatust, et kontrollida, kas tarkvara dekodeeritud IR -käsk oli sama, mis vastu võetud IR -lt (TSOP38328).
Ainuke asi, mida ma oleksin teisiti teinud, oleks olnud IR -juhtme pideva vooluahela kasutamine, nagu ülal näidatud pildil 2.
Veel üks punkt, mida tuleb märkida, on see, et mitte kõik IR -saatjad pole moduleeritud 38KHz -ga, TSOP38328 on optimeeritud 38KHz jaoks.
8. samm: kasutatud viited
IRRemote.h
- Autor: z3t0
- Eesmärk: Arduino infrapuna kaugteek: mitme protokolliga infrapunasignaalide saatmine ja vastuvõtmine
- Siit:
IR Remoteek
- z3t0.github.io/Arduino-IRremote/
- https://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
IR (infrapuna) vastuvõtja andur - TSOP38238 (samaväärne)
https://cdn-shop.adafruit.com/datasheets/tsop382.pdf
Et vältida andmestruktuuri kokkusattumist sõna piiridele
- https://github.com/esp8266/Arduino/issues/1825
- https://github.com/tuanpmt/esp_bridge/blob/master/modules/include/cmd.h#L15
- https://stackoverflow.com/questions/11770451/what-is-the-meaning-of-attribute-packed-aligned4
Hea IR -kaugandmete allikas
https://www.sbprojects.com/knowledge/ir/index.php
I2C
- https://playground.arduino.cc/Main/WireLibraryDetailedReference
- https://www.arduino.cc/en/Reference/WireSend
IR Remotes andmebaas
- https://www.lirc.org/
- https://lirc-remotes.sourceforge.net/remotes-table.html
BC337 andmeleht
https://www.onsemi.com/pub/Collateral/BC337-D. PDF
1N4148 Andmeleht
https://www.vishay.com/docs/81857/1n4148.pdf
Soovitan:
Universaalne teleri kaugjuhtimispult - Ardiuino, infrapuna: 5 sammu
Universaalne teleri kaugjuhtimispult - Ardiuino, infrapuna: Tere! Selles juhendis näitan teile, kuidas luua ja programmeerida oma universaalne kaugjuhtimispult, mis töötab enamiku infrapunapulti kasutavate asjadega ja mis " kuulab " ja dekodeerida infrapunasignaali, mille on saatnud mitmed teised
Infrapuna maatriksi paroolisisestussüsteem Arduinoga: 13 sammu
Infrapunamaatriksi paroolisisestussüsteem koos Arduinoga: ICStationi meeskond tutvustab teile infrapunamaatriksi paroolisisestussüsteemi, mis põhineb ICStationi ühilduval plaadil Arduino. See töötab alalisvoolu toiteallikaga DC ja kasutab parooli sisestamiseks 4 *4 maatriksi klaviatuuri või infrapuna kaugjuhtimispulti ja meie
Mobiiltelefoni infrapuna konditsioneeri kaugjuhtimispult DIY tootmine: 7 sammu
Mobiiltelefoni infrapuna õhukonditsioneeri kaugjuhtimispult DIY tootmine: kuumal suvel, kui lähete koju või kontorisse, soovite konditsioneeri sisse lülitada, kuid te ei leia mõnda aega kaugjuhtimispulti. See on väga tüütu asi. Ajal, mil see mobiiltelefon ei lahku, kas saate mobiiltelefoni kasutada
Traadita kaugjuhtimispult, kasutades 2,4 GHz NRF24L01 moodulit koos Arduinoga - Nrf24l01 4 kanaliga / 6 kanaliga saatja vastuvõtja nelikopterile - Rc helikopter - Rc lennuk Arduino abil: 5 sammu (piltidega)
Traadita kaugjuhtimispult, kasutades 2,4 GHz NRF24L01 moodulit koos Arduinoga | Nrf24l01 4 kanaliga / 6 kanaliga saatja vastuvõtja nelikopterile | Rc helikopter | Rc -lennuk Arduino abil: Rc -auto käitamiseks | Quadcopter | Droon | RC lennuk | RC paat, meil on alati vaja vastuvõtjat ja saatjat, oletame, et RC QUADCOPTERi jaoks on vaja 6 kanaliga saatjat ja vastuvõtjat ning seda tüüpi TX ja RX on liiga kulukad, nii et teeme selle oma
Infrapuna kaugjuhtimispult ja IR -vastuvõtja (TSOP1738) Arduinoga: 10 sammu
Infrapuna kaugjuhtimispult ja IR -vastuvõtja (TSOP1738) Arduinoga: see juhend on mõeldud Arduino algajatele. See on üks minu varasemaid projekte Arduinoga. Mulle meeldis selle valmistamine väga ja loodan, et teile meeldib ka. Selle projekti kõige atraktiivsem omadus on “ Traadita juhtimine ”. Ja see on