
Satura rādītājs:
2025 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2025-01-23 14:59


Šajā pamācībā ir sīki aprakstīts, kā izveidot universālu tālvadības pulti, izmantojot interfeisu I2C.
Cik dīvaini jūs sakāt, izmantojot I2C vergu ierīci?
Jā, I2C vergu ierīce.
Tas ir tāpēc, ka precīzs IR pakešu laiks ir diezgan prasīgs, un tipisks Arduino cīnīsies, ja tas jau vienlaikus veic daudzus citus uzdevumus. Labāk ir sadalīt skaitļošanas slodzi, kad vien iespējams, piešķirot intensīvas laika aktivitātes īpašiem procesoriem (labāk to darīt aparatūrā). Tā kā I2C ir labi dokumentēta un stabila saziņas metode starp IC, es izvēlējos to kā saskarni.
Ievads
Kā minēts iepriekš, šajā pamācībā ir aprakstīts, kā kontrolēt sadzīves tehniku, piemēram, TV, DVD atskaņotāju un satelītu utt., Izmantojot IRrdote bibliotēku Arduino.
Tas noslēdzas ar dizaina piemēru, pārvēršot Arduino par I2C vergu tālvadības moduli (1. attēls iepriekš) ar prototipa pārbaudes ķēdi (2. attēls iepriekš), un sīkāk aprakstīts, kā samazināt dizainu līdz minimālajām nepieciešamajām sastāvdaļām, lai to varētu iestrādāts citā dizainā. Manā gadījumā es izmantoju šo iegulto ierīci IoT universālās tālvadības ierīcē, kuras pamatā ir ESP8266-12E.
Kādas detaļas man ir vajadzīgas?
Lai izveidotu ķēdi, kas attēlota 1. solī (IR raidītājs), jums būs nepieciešamas šādas daļas;
- 2 izslēgti 10K rezistori
- 1 izslēgts 390R rezistors
- 1 izslēgts 33R rezistors
- 1 izslēgts 3K8 rezistors
- 1 izslēgta sarkanā gaismas diode
- 1 atlaide IR Led TSAL6400
- 1 atlaide no tranzistora BC337
- 1 izslēgts 220uF kondensators
- 1 atlaide Arduino Uno
Lai izveidotu ķēdi, kas attēlota 4. solī (IR uztvērējs), jums būs nepieciešamas šādas daļas;
- 1 izslēgts 10K rezistors
- 1 atlaide TSOP38328
- 1 izslēgts 220uF kondensators
- 1 atlaide Arduino Uno
Lai izveidotu ķēdi, kas attēlota 5. solī (Vergu pārbaudes ķēde), jums būs nepieciešamas šādas daļas;
- 4 izslēgti 10K rezistori
- 2 izslēgts 390R rezistors
- 1 izslēgts 33R rezistors
- 1 izslēgts 3K8 rezistors
- 2 izslēgta sarkanā gaismas diode
- 1 atlaide IR Led TSAL6400
- 1 atlaide no tranzistora BC337
- 1 izslēgts 220uF kondensators
- 2 izslēgtas SPST pogas
- 2 atlaide Arduino Unos
Lai izveidotu ķēdi, kas attēlota 6. solī (saraušanās dizains), jums būs nepieciešamas šādas daļas;
- 3 izslēgti 10K rezistori
- 1 izslēgts 270R rezistors
- 1 izslēgts 15R rezistors
- 4 izslēgti 1K rezistori
- 1 izslēgta sarkanā gaismas diode
- 1 izslēgts IR LED TSAL6400 vai TSAL5300
- 1 atlaide no tranzistora BC337
- 1 izslēgts 220uF kondensatora elektrolītiskais @ 6.3v
- 1 izslēgts 1000uF kondensatora elektrolītiskais @ 6.3v
- 2 izslēgti 0,1uF kondensatori
- 2 izslēgti 22pF kondensatori
- 1 izslēgts 16MHz Xtal
- 1 atlaide ATMega328P-PU
Piezīme: ATMega328P programmēšanai būs nepieciešama arī FTDI ierīce
Kādas prasmes man vajadzīgas?
- Minimāla elektronikas izpratne,
- Zināšanas par Arduino un tā IDE,
- Nedaudz pacietības,
- Būtu noderīga zināma I2C izpratne (skatiet šeit dažus vispārīgus I2C/Wire Library datus).
Tēmas, uz kurām attiecas
- Īss ķēdes pārskats,
- Īss pārskats par programmatūru,
- I2C pakešu saturs,
- Tālvadības pults kodu iegūšana (ui32Data),
- Kā pārbaudīt savu I2C Slave ierīci,
- Samazinot savu dizainu,
- Secinājums,
- Izmantotās atsauces.
Atruna
Kā vienmēr, jūs izmantojat šos norādījumus uz savu risku, un tie netiek atbalstīti.
1. darbība. Īss ķēdes pārskats

Ķēdes mērķis ir pārsūtīt IR tālvadības pults kodus. Tās dizains ir diezgan vienkāršs un vienkāršs.
Kad tranzistors Q1 a BC337 NPN tiek ieslēgts, izmantojot loģiku, no Arduino PWM O/P D3 uz rezistoru R5, strāva iet caur 1. un 2. gaismas diodi. To ierobežo tikai balasta rezistori R3 un R4. Q1 tiek izmantots, lai palielinātu strāvu, kas iet caur IR diode (IF Max = 100mA), līdz jaudai, kas pārsniedz Arduino O/P spēju ~ 40mA @ +5v.
Kondensators C1 un 220uF Electrolytic nodrošina zināmu stabilizāciju, novēršot piegādes sliedes krišanos ar 1. un 2. gaismas diodes patērēto jaudu.
Rezistori R1 un R2 ir I2C pull up.
2. darbība. Īss programmatūras pārskats



Preambula
Lai veiksmīgi apkopotu šo avota kodu, jums būs nepieciešama šāda papildu bibliotēka;
IRremote.h
- Autors: z3t0
- Mērķis: Infrasarkanā attālā bibliotēka Arduino: nosūtīt un saņemt infrasarkanos signālus ar vairākiem protokoliem
- No:
Koda pārskats
Kā parādīts 1. attēlā, palaišanas laikā kods konfigurē mikrokontrollera I/O un pēc tam aptauj iekšējās programmatūras karoga statusu “bFreshDataFlag”. Kad šis karogs ir iestatīts, kontrolieris apgalvo, ka tā ir aizņemta (datu sūtīšanas taustiņš D4 ir zems) un pāriet uz “eBUSY” stāvokli, secīgi nolasot pogas, nospiežot komandas, kas tiek turētas uDataArray , un nosūta IR modulētos datus uz IR LED pārraides secība.
Kad uDataArray saglabātie dati ir pilnībā nosūtīti, stāvoklis “eIDLE” tiek atsākts un rindā “Aizņemts” tiek atcelta (sūtot datu tapu D4 augsts). Ierīce tagad ir gatava saņemt vairāk pogu nospiešanas, kas apzīmē pārraides secības beigas.
IR pogu nospiešanas datu saņemšana
Kad dati tiek nosūtīti uz infrasarkano staru tālvadības pulti, izmantojot I2C, tas izraisa pārtraukumu, un funkciju callEvent () funkcija tiek aktivizēta asinhroni.
Pēc aktivizēšanas saņemtie I2C dati tiek ierakstīti secīgi buferī “uDataArray ”.
Datu saņemšanas laikā, ja galvenais ziņo par secības beigām (bFreshData! = 0x00), tiek iestatīts 'bFreshDataFlag', tādējādi signalizējot pārraides secības sākumu.
Attēli 2… 3 sniedz tipiskas pakešu secības piemēru.
Piezīme. Pilns avota kods ir pieejams šeit
3. darbība: I2C pakešu saturs

Vadības paketes formāts, kas nosūtīts vergam, izmantojot I2C, ir norādīts 1. attēlā, katra lauka nozīme ir dota zemāk
Vadības pakešu lauku nozīme
baits bKodēšana;
-
IR tālvadības pults kodējums,
- RC6 (debesis) = 0,
- SONY = 1,
- SAMSUNG = 2,
- NEC = 3,
- LG = 4
uint32_t ui32Data;
Binārās IR datu plūsmas heksadecimālais attēlojums 4 Datu baiti (neparakstīti gari), LSByte… MSByte
baits bNumberOfBitsInTheData;
Bitu skaits datos (ne vairāk kā 32). Diapazons = 1… 32
baits bPulseTrainRepeats;
Cik atkārtojas šis pulsa vilciens. Diapazons = 1… 255. Parasti 2… 4 atkārtojumi. Iespējams, vēlēsities to pagarināt ieslēgšanas/izslēgšanas komandām, jo uztvērēja ierīcei dažkārt ir nepieciešami daži papildu impulsa vilcienu atkārtojumi, lai saņemtu ieslēgšanās signālu
baits bDelayBetweenPulseTrainRepeats;
Kavēšanās starp šī impulsa vilciena atkārtojumiem. Diapazons = 1… 255mS. Parasti 22mS… 124mS
baits bButtonRepeats;
Simulē atkārtotu vienas un tās pašas pogas nospiešanu (bet neatbalsta modificēto kodu kā Apple tālvadības pults, tas tikai atkārto pogas kodu). Diapazons = 1… 256. Noklusējums = 1
uint16_t ui16DelayBetweenButtonRepeats;
Aizkave starp pogu atkārtojumiem (neparakstīts int). Kopā 2 baiti LSByte… MSByte. Diapazons = 1… 65535mS. Noklusējums = 0mS
baits bFreshData;
-
Svaigi dati. Vērtība, kas nav nulle. Ierakstīts pēdējais, aktivizē IR TX secību. Diapazons 0x00… 0xFF
- Nākamās kontroles paketes = 0
- Šī ir pēdējā kontroles pakete = vērtība, kas nav nulle 1, 2,… 255
Ņemiet vērā kompilatora direktīvas “_packed_” izmantošanu. Tas ir paredzēts, lai nodrošinātu, ka dati atmiņā ir pakešu baiti par baitu neatkarīgi no izmantotās mērķa sistēmas (Uno, Due, ESP8266 utt.). Tas nozīmē savienotību starp registerAllocationType un dataArrayType ir nepieciešams tikai secīgi pulksteņa laiks/pulkstenis baitos no vadības paketes, padarot TX/RX programmatūru vienkāršu.
4. darbība. Tālvadības pults kodu iegūšana (ui32Data)




Ir trīs veidi, kā iegūt attiecīgu tālvadības pults atslēgas kodu;
- Izmantojot bitu skaitīšanu ar osciloskopu,
- Meklējiet to vietnē,
- Atšifrējiet to tieši no programmatūras datu plūsmas.
Izmantojot bitu skaitīšanu ar tvērumu
Šī nav efektīva metode, jo tā prasa diezgan daudz laika un, iespējams, prasa vairāk nekā vienu mēģinājumu, tomēr tā var būt ļoti precīza. Tas ir arī noderīgi, vizuāli apstiprinot kodus, kas iegūti, izmantojot 2. un 3. metodi, kā arī nosakot visas tālvadības pults īpatnības. Piemēram, turot nospiestu Apple IR tālvadības pults pogu. Tālvadības pults sākotnēji izdos komandu secību, pēc tam seko atkārtotai saspiestai 0xF secībai….
Meklējiet to vietnē
Tālvadības pults kodu datu bāze Linux infrasarkanās tālvadības pults tīmekļa vietnē ir labs avots.
Tomēr mīnuss ir tāds, ka jums, iespējams, būs jāizmēģina daži kodi, līdz atrodat sev piemērotāko. Iespējams, jums būs jāinterpretē arī daži kodu attēlojumi, lai tos pārvērstu līdzvērtīgā heksadecimālā formā.
Atšifrējiet to tieši no datu plūsmas
Izmantojot 1. attēlā redzamo ķēdi kopā ar IRremote bibliotēkas piemēru “IRrecvDumpV2.ino”, ir iespējams atšifrēt datu plūsmu tieši no tālvadības pults. 2. attēlā redzama atšifrēta Samsung TV tālvadības pults, lai ieslēgtu/izslēgtu pogu Arduino IDE termināļa logā.
Kombinēts uztvērējs/raidītājs
Iepriekš 3. un 4. attēlā ir attēlots risinājums, kas ļauj gan uztvert, gan pārraidīt IS komandu, lai varētu viegli prototipēt.
Lai atšifrētu IR tālvadības pults nospiešanu, jums būs jāatspīdina Arduino ar “IRrecvDumpV2.ino” piemēru, kas pievienots IRremote bibliotēkai.
Tas darbojas vienlīdz labi arī pārraidei, ja IR komandas. Sarkana gaismas diode ir iekļauta kā vizuāla norāde par ierīces darbību.
5. darbība. Kā pārbaudīt savu I2C vergu ierīci


Izmantojot šeit esošo avota kodu un iepriekš attēlā redzamo ķēdi, ieprogrammējiet “Master” Arduino ar “IR_Remote_Sim_Test.ino” un “Slave” Arduino ar “IR_Remote_Sim.ino”.
Pieņemot, ka jums ir televizors Sony Bravia, Sky HD kaste un Sony BT SoundBar, nospiediet pogu 1, un jūsu televizors pārslēgsies uz BBC1 (101. kanāls). Nospiediet pogu 2, un skaņas josla izslēgsies. Nospiediet vēlreiz, un tiks atslēgta skaņa.
Infrasarkanās pārraides secības izpildes laikā LED3 iedegsies, norādot, ka vergs ir aizņemts, un gaismas diode 1 mirgos vienlaikus ar IR pārraides procesu.
Protams, ja jums nav iestatīta tāda pati izklaides sistēma kā iepriekš, varat pārprogrammēt vergu, izmantojot “IRrecvDumpV2.ino”, atšifrēt interesējošās tālvadības komandas un pēc tam ieprogrammēt tās “IR_Remote_Sim_Test.ino”. dots scenārijs.
2. attēlā parādīts sistēmas līmeņa pārbaudes programmatūras pārskats starp Master un Slave.
6. darbība: samaziniet savu dizainu

Labi, pieņemot, ka esat ievērojis šo pamācību, paļaujoties uz diviem Arduinos, lai kontrolētu savas mājas ierīces, nav visefektīvākais jūsu Arduino krājuma izmantojums. Līdz ar to, ja jūs izveidojat ķēdi, kas parādīta iepriekšējā attēlā, un izpildiet šeit sniegtos norādījumus, lai ieprogrammētu ATMega328P ar 'IR_Remote_Sim.ino', jūs varēsit samazināt visu sistēmu līdz minimālajām sastāvdaļām. Tas ļaus jums iegult savu dizainu citā sistēmā.
7. solis. Secinājums


Risinājums ir stabils un darbojas labi, tas jau vairākas nedēļas ir iebūvēts citā sistēmā bez problēmām.
Es izvēlējos Arduino Uno R3, jo vēlējos ierīci, kurai būtu pietiekami daudz operatīvās atmiņas, lai man būtu saprātīga dziļuma pogu buferis. Es samierinājos ar bufera izmēru 20 paketes (MAX_SEQUENCES).
Manis izgatavotais hibrīda TX/RX vairogs arī ļoti noderēja, dekodējot Sony un Sky tālvadības pultis. Lai gan man jāatzīstas, ka laiku pa laikam izmantoju savu digitālo diapazonu, lai pārbaudītu, vai programmatūras dekodētā IR komanda bija tāda pati kā tā, kas tika saņemta no saņemtā IS (TSOP38328).
Vienīgais, ko es būtu darījis citādi, būtu bijis izmantot pastāvīgās strāvas piedziņas ķēdi IR vadam, kā parādīts iepriekš 2. attēlā.
Vēl jāpiebilst, ka ne visi IR raidītāji ir modulēti ar 38KHz, TSOP38328 ir optimizēts 38KHz.
8. darbība. Izmantotās atsauces
IRRemote.h
- Autors: z3t0
- Mērķis: Infrasarkano staru attālā bibliotēka Arduino: nosūtīt un saņemt infrasarkanos signālus ar vairākiem protokoliem
- No:
IR tālvadības bibliotēka
- z3t0.github.io/Arduino-IRremote/
- https://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
IR (infrasarkanais) uztvērēja sensors - TSOP38238 (ekvivalents)
https://cdn-shop.adafruit.com/datasheets/tsop382.pdf
Lai izvairītos no datu struktūras saspiešanas līdz vārdu robežām
- 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
Labs IR tālvadības detaļu avots
https://www.sbprojects.com/knowledge/ir/index.php
I2C
- https://playground.arduino.cc/Main/WireLibraryDetailedReference
- https://www.arduino.cc/en/Reference/WireSend
IR tālvadības datu bāze
- https://www.lirc.org/
- https://lirc-remotes.sourceforge.net/remotes-table.html
BC337 datu lapa
https://www.onsemi.com/pub/Collateral/BC337-D. PDF
1N4148 Datu lapa
https://www.vishay.com/docs/81857/1n4148.pdf
Ieteicams:
Tālvadības pults slēdža tālvadības pults + palaidējs: 6 soļi (ar attēliem)

Tālvadības pults slēdža tālvadības pults + aktivizētājs: šī pedāļa tālvadības pults ir lieliski piemērota, lai apturētu animatorus, fotoattēlu arhivētājus, emuāru autorus un profesionāļus, kuri visu laiku nevar sasniegt savas kameras aizvara pogu vai kuriem ātri jāstrādā pie galda ar pievienotu kameru. augstas virs galvas. 2020. gada decembra atjauninājums: E
Televizora tālvadības pults kļūst par RF tālvadības pulti -- NRF24L01+ apmācība: 5 soļi (ar attēliem)

TV tālvadības pults kļūst par RF tālvadības pulti || NRF24L01+ apmācība: Šajā projektā es jums parādīšu, kā es izmantoju populāro nRF24L01+ RF IC, lai bezvadu režīmā pielāgotu LED sloksnes spilgtumu, izmantojot trīs bezjēdzīgas TV tālvadības pults pogas. Sāksim
IRduino: Arduino tālvadības pults - atdariniet pazaudētu tālvadības pulti: 6 soļi

IRduino: Arduino tālvadības pults - atdariniet pazaudētu tālvadības pulti: ja kādreiz esat pazaudējis televizora vai DVD atskaņotāja tālvadības pulti, jūs zināt, cik apgrūtinoši ir staigāt, atrast un izmantot pašas ierīces pogas. Dažreiz šīs pogas pat nepiedāvā tādas pašas funkcijas kā tālvadības pults. Saņemt
Mobilā tālruņa infrasarkanā gaisa kondicionētāja tālvadības pults DIY ražošana: 7 soļi

Mobilā telefona infrasarkanā gaisa kondicionētāja tālvadības pults ražošana pašam: karstā vasarā, dodoties mājās vai birojā, vēlaties ieslēgt gaisa kondicionētāju, bet kādu laiku nevarat atrast tālvadības pulti. Tā ir ļoti kaitinoša lieta. Laikmetā, kad šis mobilais tālrunis nepamet, vai varat to izmantot kā
Vadības pults kameras tālvadības pults: 4 soļi

Vadības pults kameras tālvadības pults: Šis ir īss pamācība, kā izveidot tālvadības pulti kamerai, kurai tās vēl nav. Tas ietver solenoīdu, vienkāršu brita ekrānu, sienas kārpu, dažus vadus un aparatūru. Viegli pagatavojams, jautri lietojams