Мазмуну:
- 1 -кадам: Районго кыскача сереп
- 2 -кадам: Программаны кыскача карап чыгуу
- 3 -кадам: I2C пакетинин мазмуну
- 4 -кадам: Алыстан башкаруу коддорун алуу (ui32Data)
- 5 -кадам: I2C Slave түзмөгүңүздү кантип сыноо керек
- 6 -кадам: Дизайныңызды кичирейтүү
- 7 -кадам: Жыйынтык
- 8 -кадам: Колдонулган шилтемелер
Video: Arduino менен I2C InfraRed Remote Control: 8 кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
PreambleThis Instructable интерфейс үчүн I2Cди колдонуп универсалдуу алыстан башкарууну кантип түзүү керектиги жөнүндө маалымат берет.
I2C кулдук аппаратын колдонуп, кандай кызык дейсиз?
Ооба, I2C кул түзмөгү.
Себеби, IR пакеттеринин так убактысы абдан талап кылынат жана кадимки Arduino бир эле учурда башка көптөгөн милдеттерди аткарып жаткан болсо, алар менен күрөшөт. Мүмкүн болушунча атайын процессорлорго интенсивдүү иш -чараларды дайындоо менен эсептөө жүгүн бөлүштүрүү жакшыраак (муну дагы аппараттык түрдө жасаңыз). I2C ICлердин ортосунда жакшы документтештирилген жана күчтүү байланыш ыкмасы экенин эске алып, мен муну интерфейс катары тандап алдым.
Киришүү
Жогоруда айтылгандай, бул көрсөтмө Arduinoдогу IRremote китепканасын колдонуу менен телевизор, DVD ойнотуучу жана спутник сыяктуу тиричилик техникаларын кантип башкарууну сүрөттөйт.
Ал Arduino'ду I2C кулунун алыстан башкаруу модулуна айлантуунун дизайны менен жыйынтыкталат (жогоруда 1 -сүрөт), прототиптик сыноо схемасы менен (жогорудагы 2 -сүрөт) жана дизайныңызды минималдуу керектүү компоненттерге чейин кантип кыскартуу керектигине чейин уланат. башка дизайнга орнотулган. Менин учурда, мен бул камтылган түзмөктү ESP8266-12E тегерегинде негизделген IoT Universal алыстан башкаруу түзмөгүндө колдоном.
Мага кандай бөлүктөр керек?
1 -кадамда сүрөттөлгөн схеманы куруу үчүн (IR өткөргүч) сизге төмөнкү бөлүктөр керек болот;
- 2 өчүрүү 10K каршылыгы
- 1 өчүрүү 390R каршылыгы
- 1 өчүрүү 33R каршылыгы
- 1 өчүрүү 3K8 каршылыгы
- 1 өчүк кызыл LED
- 1 өчүрүү IR Led TSAL6400
- 1 өчүрүү транзистор BC337
- 1 өчүрүү 220uF конденсатор
- 1 өчүрүү Arduino Uno
4 -кадамда сүрөттөлгөн схеманы куруу үчүн (IR алуучу) сизге төмөнкү бөлүктөр керек болот;
- 1 өчүрүү 10K каршылыгы
- 1 өчүрүү TSOP38328
- 1 өчүрүү 220uF конденсатор
- 1 өчүрүү Arduino Uno
5 -кадамда сүрөттөлгөн схеманы куруу үчүн (Slave test circuit) сизге төмөнкү бөлүктөр керек болот;
- 4 өчүрүү 10K каршылыгы
- 2 өчүрүү 390R каршылыгы
- 1 өчүрүү 33R каршылыгы
- 1 өчүрүү 3K8 каршылыгы
- 2 өчүк кызыл LED
- 1 өчүрүү IR Led TSAL6400
- 1 өчүрүү транзистор BC337
- 1 өчүрүү 220uF конденсатор
- 2 өчүрүү SPST баскычтары
- 2 өчүрүү Arduino Unos
6 -кадамда сүрөттөлгөн схеманы куруу үчүн (Shrunk design) сизге төмөнкү бөлүктөр керек болот;
- 3 өчүрүү 10K каршылыгы
- 1 өчүрүү 270R каршылыгы
- 1 өчүрүү 15R каршылыгы
- 4 өчүрүү 1K каршылыгы
- 1 өчүк кызыл LED
- 1 өчүрүү IR Led TSAL6400 же TSAL5300
- 1 өчүрүү транзистор BC337
- 1 өчүрүү 220uF конденсатор электролит @ 6.3v
- 1 өчүрүү 1000uF конденсатор электролит @ 6.3v
- 2 өчүрүү 0.1uF конденсаторлор
- 2 өчүрүү 22pF конденсаторлор
- 1 өчүрүү 16MHz Xtal
- 1 өчүрүү ATMega328P-PU
Эскертүү: ATMega328P программасы үчүн сизге FTDI түзмөгү да керек болот
Мага кандай көндүмдөр керек?
- Электрониканы минималдуу түшүнүү,
- Arduino жана анын IDE билими,
- Бир аз сабыр,
- I2C жөнүндө кээ бир түшүнүктөр пайдалуу болмок (кээ бир жалпы I2C/Wire китепканасынын чоо -жайын караңыз).
Темалар камтылган
- Районго кыскача сереп,
- Программалык камсыздоонун кыскача баяндамасы,
- I2C пакетинин мазмуну,
- Алыстан башкаруу коддорун алуу (ui32Data),
- I2C Slave түзмөгүңүздү кантип сыноо керек,
- Дизайныңызды кичирейтип,
- Жыйынтык,
- Колдонулган шилтемелер.
Disclaimer
Адаттагыдай эле, сиз бул көрсөтмөлөрдү өзүңүздүн тобокелге салып колдоносуз жана алар колдоого алынбайт.
1 -кадам: Районго кыскача сереп
Райондун максаты IR алыстан башкаруу коддорун берүү. Анын дизайны абдан түз жана абдан жөнөкөй.
Транзистор Q1 BC337 NPN логика аркылуу Arduino PWM O/P D3 резистор R5ке күйгүзүлгөндө, ток Leds 1 жана 2. аркылуу өтөт, тиешелүүлүгүнө жараша R3 жана R4 балласт резисторлору менен чектелген. Q1 IR диодунан (IF Max = 100mA) өтүүчү токту күчөтүү үчүн колдонулат, бул Arduino O/P жөндөмдүү ~ 40mA @ +5v менен камсыз болгондон ашык.
Конденсатор C1 a 220uF Электролиттик Ледс 1 жана 2 тарткан кубаттуулук менен темир жол түшүүсүнүн алдын алуу үчүн кээ бир стабилдештирүүнү камсыз кылат.
R1 жана R2 резисторлору I2C тартуулары.
2 -кадам: Программаны кыскача карап чыгуу
Преамбула
Бул булак кодун ийгиликтүү түзүү үчүн сизге төмөнкү кошумча китепкана керек болот;
IRremote.h
- By: z3t0
- Максаты: Arduino үчүн Infrared алыскы китепкана: бир нече протоколдор менен инфракызыл сигналдарды жөнөтүү жана алуу
- Кимден:
Code Overview
Жогорудагы 1-сүрөттө көрсөтүлгөндөй, кодду ишке киргизүүдө микро-контроллерди киргизет/киргизет, андан кийин 'bFreshDataFlag' ички программалык желегинин статусун сурайт. Бул желек орнотулганда, контролер анын "Бош эмес" линиясын ырастайт (D4 маалымат пини төмөн) жана "eBUSY" абалына өтөт, uDataArray баскычтарындагы баскычтарды ырааттуу окуу баскычын басып, IR модуляцияланган маалыматты IR LEDине жөнөтөт. берүү ырааттуулугу.
UDataArray ичинде сакталган маалыматтар толугу менен жөнөтүлгөндөн кийин, 'eIDLE' абалы калыбына келтирилет жана 'Бош эмес' линиясынын де-ырасталышы (D4 бийик пин пин жөнөтүү). Түзмөк азыр берүү баскычынын баскычын басууну кабыл алууга даяр.
IR баскычын басуу маалыматын кабыл алуу
Маалыматтар I2C аркылуу InfraRed алыстан башкаруучуга жөнөтүлгөндө, ал үзгүлтүккө учурайт жана receptEvent () функциясынын чалуусу асинхрондук түрдө иштей баштайт.
Кабыл алынган I2C маалыматтары буферге ырааттуу түрдө 'uDataArray ' жазылат.
Маалыматтарды кабыл алуу учурунда, эгер ырааттуулуктун аягы кожоюн тарабынан белги берилсе (bFreshData! = 0x00), 'bFreshDataFlag' коюлат, ошону менен берүү тизмегинин башталышын билдирет.
2… 3 сүрөттөр кадимки пакеттердин ырааттуулугуна мисал келтирет.
Эскертүү: Толук булак коду бул жерде
3 -кадам: I2C пакетинин мазмуну
I2C аркылуу кулга жөнөтүлгөн башкаруу пакетинин форматы 1 -сүрөттө ар бир талаанын мааниси төмөндө берилген
Башкаруу пакет талааларынын мааниси
байт bEncoding;
-
IR алыстан башкаруу коддоо,
- RC6 (Асман) = 0,
- SONY = 1,
- SAMSUNG = 2,
- NEC = 3,
- LG = 4
uint32_t ui32Data;
Экилик IR маалымат агымынын он алтылык көрсөткүчү 4 Маалымат байты (колу узун), LSByte… MSByte
байт bNumberOfBitsInTheData;
Берилиштердеги бит саны (Max 32). Диапазон = 1… 32
байт bPulseTrainRepeats;
Бул импульстук поезд канча жолу кайталанат. Диапазон = 1… 255. Адатта 2… 4 кайталанат. Сиз муну Күйгүзүү/Өчүрүү командалары үчүн узарткыңыз келиши мүмкүн, анткени кабыл алуучу түзмөк кээде сигналды күйгүзүү үчүн бир нече кошумча импульстук поездди кайталоону талап кылат
байт bDelayBetweenPulseTrainRepeats;
Бул импульстук поездди кайталоонун ортосундагы кечигүү. Диапазон = 1… 255mS. Адатта 22mS… 124mS
байт bButtonRepeats;
Ошол эле баскычты кайталап басууну окшоштурат (бирок Apple пульту сыяктуу өзгөртүлгөн кодду колдобойт, ал жөн гана баскычтын кодун кайталайт). Диапазон = 1… 256. Демейки = 1
uint16_t ui16DelayBetweenButtonRepeats;
Баскычты кайталоо ортосундагы кечигүү (unsigned int). Жалпысынан 2 байт LSByte… MSByte. Диапазон = 1… 65535mS. Демейки = 0mS
байт bFreshData;
-
Жаңы маалыматтар. Нөл эмес мааниси. Акыркы жазылган, IR TX ырааттуулугун иштетет. 0x00… 0xFF диапазону
- Дагы башкаруу пакеттери келет = 0
- Бул акыркы көзөмөл пакети = Zero эмес 1, 2,… 255
"_Packed_" компиляторунун директивасынын колдонулушуна көңүл буруңуз. Бул колдонулган максаттуу тутумга карабастан (Uno, Due, ESP8266 ж. Бул registerAllocationType менен dataArrayType ортосундагы биримдик TX/RX программасын жөнөкөй кылып, башкаруу пакетинен байт менен гана ырааттуу түрдө чыгышы керек дегенди билдирет.
4 -кадам: Алыстан башкаруу коддорун алуу (ui32Data)
Тиешелүү алыстан башкаруу ачкычынын кодун алууга үч жол бар;
- Осциллограф менен битти саноо аркылуу,
- Аны бир сайттан караңыз,
- Аны программалык камсыздоодогу маалымат агымынан түздөн -түз чечмелеңиз.
Колдонмо менен бир аз саноо аркылуу
Бул эффективдүү ыкма эмес, анткени ал бир топ убакытты талап кылат жана бир нече аракетти талап кылат, бирок бул абдан так болушу мүмкүн. Бул 2 жана 3 ыкмаларын колдонуу менен алынган коддорду визуалдык жактан текшерүүдө, ошондой эле алыстан башкаруунун өзгөчөлүктөрүн аныктоодо пайдалуу. Мисалы, Apple IR пультундагы баскычты басып турганда. Алыстан башкаруучу адегенде буйруктун ырааттуулугун чыгарат, андан кийин кайталанган 0xF кысылган ырааттуулугу менен…
Аны бир сайттан карап көрүңүз
Linux Infrared Remote Control веб -сайтындагы алыстан башкаруу кодунун маалымат базасы жакшы булак.
Бирок, терс жагы, сизге ылайыктуусун тапмайынча, бир нече кодду сынап көрүшүңүз керек болот. Сиз аларды эквиваленттүү он алтылык формага айландыруу үчүн коддордун кээ бир өкүлчүлүктөрүн чечмелешиңиз керек болушу мүмкүн.
Аны маалымат агымынан түздөн -түз чечмелеңиз
Жогорудагы 1 -сүрөттөгү схеманы IRremote китепкана мисалы 'IRrecvDumpV2.ino' менен бирге колдонуп, маалымат агымын алыстан башкарууга болот. Сүрөт 2 Arduino IDE терминалынын терезесинде күйгүзүү/өчүрүү баскычын басуу үчүн декоддолгон Samsung TV пультун көрсөтөт.
Бириккен алуучу/өткөргүч
Жогорудагы 3 жана 4 -сүрөттөрдө протоколдорду оңой иштетүү үчүн IR буйругун кабыл алууга да, берүүгө да мүмкүн болгон чечим чагылдырылган.
IR алыстан башкаруу баскычын басууну чечүү үчүн, Arduino'ду IRremote китепканасы менен келген 'IRrecvDumpV2.ino' мисалы менен жаркыратышыңыз керек болот.
Ошондой эле IR буйрутмалары болсо, берүү үчүн бирдей жакшы иштейт. Кызыл LED түзмөктүн иштөөдө экенин көрсөтүүчү көрсөткүч катары киргизилген.
5 -кадам: I2C Slave түзмөгүңүздү кантип сыноо керек
Булак кодун жана 1 -сүрөттө жогоруда көрсөтүлгөн схеманы колдонуп, 'Master' Arduino программасын 'IR_Remote_Sim_Test.ino' жана 'Кул' Arduino менен 'IR_Remote_Sim.ino' программасы.
Сизде Sony Bravia TV, Sky HD кутусу жана Sony BT SoundBar бар деп ойлосоңуз, 1 -баскычты басыңыз, ошондо телевизоруңуз BBC1ге (101 -канал) өтөт. 2 -баскычты басыңыз жана үн тилкесиңиздин үнү басылат. Кайра басыңыз жана үнү басылат.
IR берүү ырааттуулугун аткарууда LED3 кулдун бош эмес экендигин жана LED1дин IR берүү процесси менен катар жылтылдап тургандыгын көрсөтөт.
Албетте, эгерде сизде жогоруда көрсөтүлгөндөй көңүл ачуучу система жок болсо, сиз кулду "IRrecvDumpV2.ino" менен кайра программалап, алыстан кызыккан командаларыңызды чечип, анан аларды "IR_Remote_Sim_Test.ino" программасына киргизе аласыз. берилген сценарий.
2 -сүрөт Мастер менен Кулдун ортосундагы системалык деңгээлдеги тестирлөө программасын карап көрөт.
6 -кадам: Дизайныңызды кичирейтүү
Макул, сиз үйдөгү түзмөктөрүңүздү көзөмөлдөө үчүн эки Arduinoго таянып, бул көрсөтмөнү аткардыңыз деп ойлосоңуз, Arduino запастарыңызды эң натыйжалуу колдонуу эмес. Демек, эгер сиз жогорудагы сүрөттө көрсөтүлгөн схеманы куруп, ATMega328Pти 'IR_Remote_Sim.ino' менен программалоо үчүн бул жердеги көрсөтмөлөрдү аткарсаңыз, анда бүт системаны минималдуу компоненттерге чейин азайта аласыз. Бул сиздин долбоорду башка системага киргизүүгө мүмкүндүк берет.
7 -кадам: Жыйынтык
Чечим туруктуу жана жакшы иштейт, ал бир нече жумадан бери башка системага эч кандай көйгөйсүз киргизилген.
Мен Arduino Uno R3тү тандадым, анткени мен оперативдүү RAMга ээ болгон аппаратты каалагандай тереңдиктеги баскыч буферине ээ болчумун. Мен 20 пакеттин (MAX_SEQUENCES) буфер өлчөмүн чечтим.
Мен жасаган Hybrid TX/RX калканы Sony жана Sky алыстан башкаруу пультун чечмелөөдө да абдан ыңгайлуу болду. Мен мезгил -мезгили менен санариптик чөйрөмдү колдонуп моюнга алышым керек болсо да, IR буйругун чечүү IR программасынан келип чыккан менен бирдей болгонун текшерүү үчүн (TSOP38328).
Мен башкача кыла турган жалгыз нерсе, 2 -сүрөттө жогоруда көрсөтүлгөндөй, IR үчүн туруктуу токтун диск схемасын колдонуу болмок.
Дагы бир белгилей кетүүчү жагдай, бардык IR өткөргүчтөр 38 кГц менен модуляцияланган эмес, TSOP38328 38 кГц үчүн оптималдаштырылган.
8 -кадам: Колдонулган шилтемелер
IRRemote.h
- By: z3t0
- Максаты: Arduino үчүн Infrared алыскы китепкана: бир нече протоколдор менен инфракызыл сигналдарды жөнөтүү жана алуу
- Кимден:
IR Remote китепканасы
- z3t0.github.io/Arduino-IRremote/
- https://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
IR (Infrared) Receiver Sensor - TSOP38238 (эквиваленти)
https://cdn-shop.adafruit.com/datasheets/tsop382.pdf
Берилиштердин структурасын сөз чектерине толтуруудан качуу үчүн
- 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
IR алыскы чоо -жайынын жакшы булагы
https://www.sbprojects.com/knowledge/ir/index.php
I2C
- https://playground.arduino.cc/Main/WireLibraryDetailedReference
- https://www.arduino.cc/en/Reference/WireSend
IR Remotes маалымат базасы
- https://www.lirc.org/
- https://lirc-remotes.sourceforge.net/remotes-table.html
BC337 маалымат жадыбалы
https://www.onsemi.com/pub/Collateral/BC337-D. PDF
1N4148 маалымат жадыбалы
https://www.vishay.com/docs/81857/1n4148.pdf
Сунушталууда:
Infrared Remote Control Tester TSOP4838 колдонуп: 5 кадам
Infrared Remote Control Tester TSOP4838ди колдонуп: Бул жерде жөнөкөй алыстан башкаруу тестеринин схемасын кантип түзүү керек. Жөн эле төмөндөгү кадамдарды аткарыңыз жана 5 мүнөткө жетесиз. Эгер ал иштесе, анда видеобузга лайк калтырып, комментарийлерде бизге айтыңыз
Raspberry Pi Zero менен Infrared Laser Tag: 6 кадам (сүрөттөр менен)
Raspberry Pi Zero менен Infrared Laser Tag: Бул Instructable базалык сервердик компьютерди жана Raspberry Pi нөлүн ар бир оюнчу үчүн Infrared Laser Tag оюнун түзүү процессинен өтөт. Долбоор сервер менен байланышуу үчүн Wifi туташуусуна көп таянат
Infrared Remote жана IR Receiver (TSOP1738) Arduino менен: 10 кадам
Infrared Remote жана IR Receiver (TSOP1738) Arduino менен: Бул үйрөткүч Arduino үйрөнчүктөр үчүн. Бул Arduino менен мурунку долбоорлорумдун бири. Жасаганда мага абдан жакты жана сизге да жагат деп үмүттөнөм. Бул долбоордун эң жагымдуу өзгөчөлүгү “ Зымсыз башкаруу ”. Жана бул
HPI Q32 Remote Control Car FPV Upgrade менен: 10 кадам (Сүрөттөр менен)
HPI Q32 Remote Control FPV Upgrade унаасы: Бул жерде биз HPI Racing Q32 ийкемдүүлүгүн көрсөтүп, өзгөртүүлөрдү кабыл алабыз. Биз алмаштырылуучу батарея системасын, ошондой эле FPV камерасын жана өткөргүчүн орнотуу менен эксперимент жүргүзөбүз
Olympus Evolt E510 Remote Cable Release (Version 2 Remote Auto Focus менен): 6 кадам (Сүрөттөр менен)
Olympus Evolt E510 Remote Cable Release (Version 2 Remote on Auto Focus менен): Кечээ мен Olympus E510 үчүн жөнөкөй бир баскыч пультун курдум. Көпчүлүк камераларда жапкычты бошотуу баскычы бар (сиз сүрөткө тартуу үчүн басыңыз), анын эки режими бар. Эгерде баскыч акырын басылса, камера фокусту жана жарыкты өлчөйт