Mundarija:
- 1 -qadam: O'chirish davri haqida qisqacha ma'lumot
- 2 -qadam: Dasturiy ta'minot haqida qisqacha ma'lumot
- 3 -qadam: I2C paketli kontent
- 4 -qadam: Masofadan boshqarish kodlarini olish (ui32Data)
- 5 -qadam: I2C qul qurilmasini qanday tekshirish mumkin
- 6 -qadam: Dizayningizni qisqartirish
- 7 -qadam: Xulosa
- 8 -qadam: Ishlatilgan adabiyotlar
Video: Arduino bilan I2C InfraRed masofadan boshqarish: 8 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
PreambleThis Instructable interfeys uchun I2C yordamida universal masofadan boshqarish pultini qanday yaratish haqida batafsil ma'lumot beradi.
I2C qul qurilmasidan foydalanganingiz qanday g'alati?
Ha, I2C qul qurilmasi.
Buning sababi shundaki, IR paketlarining aniq vaqti juda talabchan va bir vaqtning o'zida boshqa vazifalarni bajarayotgan bo'lsa, oddiy Arduino bilan kurashadi. Iloji boricha maxsus protsessorlarga vaqtni intensiv bajarishni tayinlash orqali hisoblash yukini taqsimlash yaxshiroqdir (buni apparatda bajarish yaxshiroq). I2C - bu IClar o'rtasida yaxshi hujjatlashtirilgan va mustahkam aloqa usuli ekan, men buni interfeys sifatida tanladim.
Kirish
Yuqorida aytib o'tilganidek, ushbu yo'riqnomada Arduino -dagi IRremote kutubxonasi yordamida televizor, DVD pleer va yo'ldosh kabi maishiy texnikani qanday boshqarish kerakligi tasvirlangan.
U Arduino -ni prototipli sinov zanjiri (yuqoridagi 2 -rasm) bilan I2C qul masofadan boshqarish moduliga (yuqoridagi 1 -rasm) aylantiruvchi dizayn namunasi bilan yakunlanadi va dizaynni kerakli minimal komponentlarga qanday qisqartirish kerakligini batafsil ko'rib chiqadi. boshqa dizaynga o'rnatilgan. Mening holatimda men bu o'rnatilgan qurilmani ESP8266-12E atrofida joylashgan IoT Universal masofadan boshqarish moslamasida ishlataman.
Menga qanday qismlar kerak?
1 -bosqichda (IQ transmitteri) tasvirlangan sxemani yaratish uchun sizga quyidagi qismlar kerak bo'ladi;
- 2 ta 10K qarshilik
- 1 ta 390R qarshilik
- 1 ta 33R qarshilik
- 1 ta 3K8 qarshilik
- 1 o'chirilgan qizil LED
- 1 ta IR Led TSAL6400
- BC337 tranzistoridan 1 marta
- 1 off 220uF kondansatör
- 1 ta Arduino Uno
4 -bosqichda (IQ qabul qilgich) tasvirlangan sxemani qurish uchun sizga quyidagi qismlar kerak bo'ladi;
- 1 ta 10K qarshilik
- 1 ta TSOP38328
- 1 off 220uF kondansatör
- 1 ta Arduino Uno
5 -bosqichda tasvirlangan sxemani (qul sinov davri) qurish uchun sizga quyidagi qismlar kerak bo'ladi;
- 4 ta 10K qarshilik
- 2 o'chirilgan 390R qarshilik
- 1 ta 33R qarshilik
- 1 ta 3K8 qarshilik
- 2 o'chirilgan qizil LED
- 1 ta IR Led TSAL6400
- BC337 tranzistoridan 1 marta
- 1 off 220uF kondansatör
- SPST tugmalaridan 2 ta chegirma
- 2 ta Arduino Unos
6 -qadamda tasvirlangan sxemani qurish uchun (Shrunk dizayni) sizga quyidagi qismlar kerak bo'ladi;
- 3 ta 10K rezistorlar
- 1 ta 270R qarshilik
- 1 ta 15R qarshilik
- 4 ta 1K rezistorlar
- 1 o'chirilgan qizil LED
- 1 ta LED Led TSAL6400 yoki TSAL5300
- BC337 tranzistoridan 1 marta
- Elektrolitik @ 6,3v kuchlanishli 220uF kondansatkichi
- 1 off 1000uF kondansatör elektrolitik @ 6.3v
- 0,1uF quvvatli 2 ta yopiq kondansatör
- 2 ta yopiq 22 pF kondansatör
- 1 ta 16 MGts chastotali Xtal
- 1 ta ATMega328P-PU
Eslatma: ATMega328P ni dasturlash uchun sizga FTDI qurilmasi ham kerak bo'ladi
Menga qanday ko'nikmalar kerak?
- Elektronikani minimal tushunish,
- Arduino va uning IDE haqidagi bilimlari,
- Bir oz sabr,
- I2C haqida ba'zi tushunchalar foydali bo'ladi (ba'zi umumiy I2C/simli kutubxona tafsilotlari uchun qarang).
Mavzular qamrab olingan
- O'chirish davri haqida qisqacha ma'lumot,
- Dasturiy ta'minot haqida qisqacha ma'lumot,
- I2C paketining tarkibi,
- Masofadan boshqarish kodlarini olish (ui32Data),
- I2C Slave qurilmangizni qanday tekshirish mumkin.
- Dizayningizni qisqartirish,
- Xulosa,
- Ishlatilgan adabiyotlar.
Voz kechish
Har doimgidek, siz ushbu ko'rsatmalarni o'zingizning xavfingiz ostida ishlatasiz va ular qo'llab -quvvatlanmaydi.
1 -qadam: O'chirish davri haqida qisqacha ma'lumot
O'chirishning maqsadi - IR masofadan boshqarish kodlarini uzatish. Uning dizayni juda sodda va oldinga siljiydi.
Q1 tranzistorli BC337 NPN mantiq orqali Arduino PWM O/P D3 dan R5 rezistorigacha yoqilganda, oqim Led 1 va 2 orqali o'tadi, faqat R3 va R4 balast rezistorlari bilan chegaralanadi. Q1 IQ diodidan o'tadigan tokni (agar Maks = 100mA) Arduino O/P imkoniyatiga qaraganda ~ 40mA @ +5v kuchlanishni ko'paytirish uchun ishlatiladi.
C1 220uF elektrolitik kondansatkichi 1 va 2 -chi LEDlar tomonidan quvvat manbai tushishining oldini oluvchi stabilizatsiyani ta'minlaydi.
R1 va R2 rezistorlari I2C tortishishidir.
2 -qadam: Dasturiy ta'minot haqida qisqacha ma'lumot
Muqaddima
Ushbu manba kodini muvaffaqiyatli kompilyatsiya qilish uchun sizga quyidagi qo'shimcha kutubxona kerak bo'ladi;
IRremote.h
- Muallif: z3t0
- Maqsad: Arduino uchun infraqizil masofali kutubxona: bir nechta protokolli infraqizil signallarni yuborish va qabul qilish
- Manba:
Kodni ko'rib chiqish
Yuqoridagi 1-rasmda ko'rsatilgandek, kod ishga tushirilgandan so'ng mikrokontrollerning kirish-chiqish konfiguratsiyasini amalga oshiradi, so'ngra "bFreshDataFlag" ichki dasturiy ta'minot bayrog'i holatini so'roq qiladi. Bu bayroq o'rnatilganda, nazoratchi "band" chizig'ini tasdiqlaydi (D4 ma'lumot pinini past yuboradi) va "eBUSY" holatiga o'tadi, ketma -ket o'qish tugmachalarini uDataArray tugmachasida bosib, IR modulyatsiyalangan ma'lumotni IR LEDga yuboradi. uzatish ketma -ketligi.
Ma'lumotlar uDataArray da to'liq yuborilgandan so'ng, "eIDLE" holati tiklanadi va "Band emas" chizig'i tasdiqlanmaydi (D4 yuqori pinli ma'lumot yuboriladi). Qurilma endi uzatish ketma -ketligini bildiruvchi tugmachalarni bosishga ko'proq tayyor.
IQ tugmachalarini bosish ma'lumotlarini qabul qilish
Ma'lumot I2C orqali InfraRed masofadan boshqarish pultiga yuborilganda, u uzilishni keltirib chiqaradi va receptEvent () funktsiyasi chaqiruvi asinxron tarzda ishga tushadi.
Qabul qilingan I2C ma'lumotlari ishga tushirilgandan so'ng "uDataArray " buferiga ketma -ket yoziladi.
Ma'lumotni qabul qilish paytida, agar ketma -ketlikning oxiri master tomonidan signal berilsa (bFreshData! = 0x00), "bFreshDataFlag" o'rnatiladi, bu esa uzatish ketma -ketligining boshlanishini bildiradi.
2… 3 -rasmlar odatda paketlar ketma -ketligiga misol keltiradi.
Eslatma: To'liq manba kodi bu erda mavjud
3 -qadam: I2C paketli kontent
I2C orqali qulga yuborilgan boshqaruv paketining formati 1 -rasmda har bir maydonning ma'nosi quyida keltirilgan.
Boshqaruv paketi maydonlarining ma'nosi
bayt bEncoding;
-
IR masofadan boshqarishni kodlash,
- RC6 (Osmon) = 0,
- SONY = 1,
- SAMSUNG = 2,
- NEC = 3,
- LG = 4
uint32_t ui32Data;
Ikkilamchi infraqizil ma'lumotlar oqimining o'n oltilik ko'rinishi 4 Ma'lumot baytlari (imzosiz uzun), LSByte… MSByte
bayt bNumberOfBitsInTheData;
Ma'lumotlardagi bitlar soni (maksimal 32 ta). Diapazon = 1… 32
bayt bPulseTrainRepeats;
Bu pulsli poezd qancha takrorlanadi. Diapazon = 1… 255. Odatda 2-4 marta takrorlanadi. Siz buni yoqish/o'chirish buyruqlari uchun uzaytirishni xohlashingiz mumkin, chunki qabul qilish moslamasini yoqish signalini qabul qilish uchun ba'zida bir nechta qo'shimcha pulsli poezd takrorlanishi kerak bo'ladi
bayt bDelayBetweenPulseTrainRepeats;
Bu pulsli poezdning takrorlanishi orasidagi kechikish. Diapazon = 1… 255 mS. Odatda 22mS … 124mS
bayt bButtonTekrarlar;
Xuddi shu tugmani qayta bosishni taqlid qiladi (lekin o'zgartirilgan kodni Apple pulti kabi qo'llab -quvvatlamaydi, tugma kodini takrorlaydi). Diapazon = 1… 256. Standart = 1
uint16_t ui16DelayBetweenButtonRepeats;
Tugmalar takrorlanishi orasidagi kechikish (imzosiz int). Hammasi bo'lib 2 bayt LSByte… MSByte. Diapazon = 1… 65535 mS. Standart = 0mS
bayt bFreshData;
-
Yangi ma'lumotlar. Nolga teng bo'lmagan qiymat. Oxirgi yozilgan, IR TX ketma -ketligini ishga tushiradi. 0x00… 0xFF oralig'i
- Ko'proq nazorat paketlari keladi = 0
- Bu oxirgi nazorat paketi = Nol bo'lmagan qiymat 1, 2,… 255
"_Packed_" kompilyator direktivasidan foydalanishga e'tibor bering. Bu ishlatilgan maqsadli tizimdan qat'i nazar (Uno, Due, ESP8266 va boshqalar) xotirada ma'lumot bayt uchun paketli bayt bo'lishini ta'minlash. Bu shuni anglatadiki, registerAllocationType va dataArrayType o'rtasidagi birlashma faqat TX/RX dasturini soddalashtirib, boshqaruv paketidan ketma -ket ketma -ket baytlarga kerak.
4 -qadam: Masofadan boshqarish kodlarini olish (ui32Data)
Masofadan boshqarish pultining tegishli kodini olishning uchta usuli bor;
- Osiloskop yordamida bitlarni sanash orqali,
- Veb -saytga qarang,
- Uni dasturiy ta'minotdagi ma'lumotlar oqimidan to'g'ridan -to'g'ri dekodlash.
Maydon bilan bitlarni sanash orqali
Bu samarali usul emas, chunki bu ko'p vaqt talab etadi va bir nechta urinishlarni talab qilishi mumkin, ammo bu juda aniq bo'lishi mumkin. Bundan tashqari, 2 va 3 -usullar yordamida olingan kodlarni vizual tasdiqlashda, shuningdek, masofadan boshqarish pultining o'ziga xos xususiyatlarini aniqlashda ham foydalidir. Masalan, Apple IR masofadan boshqarish pultidagi tugmani bosib turganda. Masofadan boshqarish pulti dastlab buyruqlar ketma -ketligini chiqaradi, so'ngra takrorlangan 0xF siqilgan ketma -ketlikda bajariladi.
Veb -saytga qarang
Linux infraqizil masofadan boshqarish pultidagi masofadan boshqarish kodi ma'lumotlar bazasi yaxshi manba.
Salbiy tomoni shundaki, sizga mos keladigan kodni topmaguningizcha bir nechta kodni sinab ko'rishingiz kerak bo'ladi. Kodlarni ekvivalentli olti burchakli shaklga aylantirish uchun siz ba'zi tasvirlarni talqin qilishingiz kerak bo'lishi mumkin.
Ma'lumot oqimidan to'g'ridan -to'g'ri dekodlash
Yuqoridagi 1 -rasmdagi sxemani "IRrecvDumpV2.ino" IRremote kutubxonasi misoli bilan birgalikda to'g'ridan -to'g'ri masofadan boshqarish pultidan uzatish mumkin. 2 -rasmda Arduino IDE terminal oynasida yoqish/o'chirish tugmachasini bosish uchun kodlangan Samsung televizorining pulti ko'rsatilgan.
Birlashtirilgan qabul qiluvchi/uzatuvchi
Yuqoridagi 3 va 4 -rasmlarda prototipni osonlashtirishga imkon beradigan IQ buyrug'ini qabul qilish va uzatish imkonini beradigan yechim tasvirlangan.
IR masofadan boshqarish tugmachalarini bosishni dekodlash uchun siz Arduino -ni IRremote kutubxonasi bilan birga kelgan "IRrecvDumpV2.ino" misoli bilan o'chirishingiz kerak bo'ladi.
Agar IQ buyruqlari bo'lsa, u uzatish uchun ham yaxshi ishlaydi. Qurilmaning ishlayotganini ko'rsatuvchi sifatida qizil chiroq kiritilgan.
5 -qadam: I2C qul qurilmasini qanday tekshirish mumkin
Bu erda manba kodini va 1 -rasmda ko'rsatilgan sxemadan foydalanib, "Master" Arduino -ni "IR_Remote_Sim_Test.ino" va "Qul" Arduino -ni "IR_Remote_Sim.ino" bilan dasturlang.
Agar sizda Sony Bravia TV, Sky HD qutisi va Sony BT SoundBar bo'lsa, 1 -tugmani bosing va televizoringiz BBC1 -ga o'tadi (101 -kanal). 2 -tugmani bosing, shunda ovoz paneli o'chadi. Qayta bosing va ovozi o'chadi.
IQni uzatish ketma -ketligini bajarish paytida LED3 yonib turadi, bu bandning bandligini ko'rsatadi va LED1 IQ uzatish jarayonida yonib -o'chadi.
Albatta, agar sizda yuqoridagi kabi o'yin-kulgi tizimi o'rnatilmagan bo'lsa, siz qulni "IRrecvDumpV2.ino" bilan qayta dasturlashingiz, qiziqtirgan masofaviy buyruqlaringizni dekodlashingiz va keyin ularni "IR_Remote_Sim_Test.ino" ga dasturlashingiz mumkin. berilgan ssenariy.
2 -rasmda Master va Slave o'rtasidagi tizim darajasidagi sinov dasturlarining umumiy ko'rinishi ko'rsatilgan.
6 -qadam: Dizayningizni qisqartirish
OK, shuning uchun siz ikkita Arduino -ga tayanib, uy qurilmalarini boshqargan bo'lsangiz, bu sizning Arduino aktsiyangizdan unumli foydalanish emas. Shunday qilib, agar siz yuqoridagi rasmda ko'rsatilgan sxemani tuzsangiz va ATMega328P ni "IR_Remote_Sim.ino" bilan dasturlash uchun bu erdagi ko'rsatmalarga amal qilsangiz, siz butun tizimni minimal komponentlarga kamaytira olasiz. Bu sizning dizayningizni boshqa tizimga joylashtirish imkonini beradi.
7 -qadam: Xulosa
Yechim barqaror va yaxshi ishlaydi, u bir necha hafta davomida boshqa tizimga hech qanday muammosiz joylashtirilgan.
Men Arduino Uno R3 ni tanladim, chunki men etarli RAMga ega bo'lgan qurilmani xohladim, shunda men tugma buferini o'rtacha chuqurlikka ega bo'ldim. Men bufer o'lchamiga 20 ta paketni joylashtirdim (MAX_SEQUENCES).
Men ishlab chiqargan Hybrid TX/RX qalqoni Sony va Sky masofadan boshqarish pultlarini dekodlashda ham juda qulay bo'ldi. Vaqti -vaqti bilan o'z raqamli doiramdan foydalanib tan olishim kerak bo'lsa -da, dasturiy ta'minot dekodlangan IQ buyrug'i IR qabul qilingan IR (TSOP38328) bilan bir xilligini tekshirish uchun.
Men boshqacha yo'l tutgan yagona narsa, yuqorida ko'rsatilgan 2 -rasmda ko'rsatilgandek, IQ uchun doimiy oqim haydovchi sxemasidan foydalanish bo'lar edi.
Shuni ta'kidlash kerakki, barcha IQ uzatgichlari 38 kGts bilan modulyatsiya qilinmagan, TSOP38328 38 kGts uchun optimallashtirilgan.
8 -qadam: Ishlatilgan adabiyotlar
IRRemote.h
- Muallif: z3t0
- Maqsad: Arduino uchun infraqizil masofali kutubxona: bir nechta protokolli infraqizil signallarni yuborish va qabul qilish
- Manba:
IR masofaviy kutubxona
- z3t0.github.io/Arduino-IRremote/
- https://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
IQ (infraqizil) qabul qilgich sensori - TSOP38238 (ekvivalent)
https://cdn-shop.adafruit.com/datasheets/tsop382.pdf
Ma'lumotlar strukturasini so'z chegaralariga to'ldirishining oldini olish uchun
- 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
IQ masofali tafsilotlarning yaxshi manbai
https://www.sbprojects.com/knowledge/ir/index.php
I2C
- https://playground.arduino.cc/Main/WireLibraryDetailedReference
- https://www.arduino.cc/en/Reference/WireSend
IR masofaviy ma'lumotlar bazasi
- https://www.lirc.org/
- https://lirc-remotes.sourceforge.net/remotes-table.html
BC337 ma'lumotlar jadvali
https://www.onsemi.com/pub/Collateral/BC337-D. PDF
1N4148 ma'lumotlar jadvali
https://www.vishay.com/docs/81857/1n4148.pdf
ATMega328P-PU ma'lumotlar jadvali
Tavsiya:
LoRa asosidagi masofadan boshqarish pulti - Katta masofadan asboblarni boshqarish: 8 qadam
LoRa asosidagi masofadan boshqarish pulti | Katta masofadan asboblarni boshqarish: Hey, nima bo'ldi, bolalar! Bu loyihada biz LEDlar, motorlar kabi turli xil asboblarni boshqarish uchun ishlatilishi mumkin bo'lgan masofadan boshqarish pultini yaratmoqchimiz yoki agar biz kundalik hayotimiz haqida gapiradigan bo'lsak, biz o'z uy dasturchimizni boshqaramiz.
IRduino: Arduino masofadan boshqarish pulti - yo'qolgan masofadan boshqarish pultiga taqlid: 6 qadam
IRduino: Arduino masofadan boshqarish pulti - Yo'qotilgan masofadan boshqarish pultiga taqlid qiling: Agar siz televizor yoki DVD pleer uchun masofadan boshqarish pultini yo'qotib qo'ysangiz, qurilmaning o'zi tugmachalarini bosib o'tish, topish va ulardan foydalanish qanchalik achinarli ekanligini bilasiz. Ba'zida bu tugmalar masofadan boshqarish pulti bilan bir xil funktsiyalarni taklif qilmaydi. Qabul qilish
Taymer funktsiyasi bilan televizorni masofadan boshqarish pulti yordamida uy jihozlarini qanday boshqarish mumkin: 7 qadam (rasmlar bilan)
Uy asbob -uskunalarini masofadan boshqarish pulti bilan taymer funktsiyasi yordamida qanday boshqarish mumkin: Iste'mol bozoriga 25 yil kirganidan keyin ham, infraqizil aloqa so'nggi kunlarda juda dolzarb bo'lib qolmoqda. Bu sizning 55 dyuymli 4K televizoringiz yoki avtomobilingizning ovoz tizimidan qat'i nazar, hamma narsaga javob berish uchun IQ masofadan boshqarish pulti kerak
Oddiy masofadan boshqarish pulti to'rt kanalli RC o'yinchoqli masofadan boshqarish pultiga aylantirildi: 4 qadam
Oddiy masofadan boshqarish pulti to'rt kanalli RC o'yinchoqli masofadan boshqarish pultiga aylantirildi: 如何 通用 遥控 器 套件 的 的.方法 非常 简单。 只需
IR masofadan boshqarish pultini masofadan boshqarish pultiga aylantirish: 9 qadam (rasmlar bilan)
IR masofadan boshqarish pultini masofadan boshqarish pultiga aylantiring: "Bugungi yo'riqnomada" sizga qanday qilib umumiy chastotali modulni mikrokontroldorisiz ishlatishingiz mumkinligini ko'rsataman, bu esa oxir -oqibat bizni har qanday qurilmaning IR masofadan boshqarish pultini RFga aylantirishga imkon beradi. Masofadan boshqarish pulti. Konvertatsiya qilishning asosiy afzalligi