Мазмұны:

Arduino көмегімен I2C InfraRed қашықтан басқару құралы: 8 қадам (суреттермен)
Arduino көмегімен I2C InfraRed қашықтан басқару құралы: 8 қадам (суреттермен)

Бейне: Arduino көмегімен I2C InfraRed қашықтан басқару құралы: 8 қадам (суреттермен)

Бейне: Arduino көмегімен I2C InfraRed қашықтан басқару құралы: 8 қадам (суреттермен)
Бейне: How to use Arduino as TV Remote Controller with Infrared 2024, Қараша
Anonim
I2C InfraRed қашықтан басқару пульті Arduino көмегімен
I2C InfraRed қашықтан басқару пульті Arduino көмегімен
I2C InfraRed қашықтан басқару пульті Arduino көмегімен
I2C InfraRed қашықтан басқару пульті Arduino көмегімен

PreambleThis Instructable интерфейс үшін I2C көмегімен әмбебап қашықтан басқару құралын қалай құру керектігін түсіндіреді.

I2C қосалқы қондырғысын қолдана отырып, сіз біртүрлі дейсіз бе?

Иә, I2C қосалқы құрылғысы.

Себебі, IR пакеттерінің дәл уақыты өте талапшыл және бір уақытта басқа көптеген тапсырмаларды орындайтын болса, әдеттегі Arduino -мен күресуге тура келеді. Мүмкіндігінше арнайы процессорларға уақытты қарқынды түрде беру арқылы есептеу жүктемесін бөлген дұрыс (мұны әлі де аппараттық құралдарда жасаған жөн). I2C - бұл ICs арасындағы жақсы құжатталған және сенімді байланыс әдісі екенін ескере отырып, мен оны интерфейс ретінде таңдадым.

Кіріспе

Жоғарыда айтылғандай, бұл нұсқаулық теледидар, DVD ойнатқыш және спутник сияқты тұрмыстық техниканы Arduino -дегі IRremote кітапханасының көмегімен қалай басқаруға болатынын сипаттайды.

Ол Arduino -ны I2C қосалқы қашықтан басқару модуліне айналдырудың дизайн үлгісімен аяқталады (жоғарыдағы 1 -сурет) және прототиптік сынақ схемасы бар (жоғарыдағы 2 -сурет) және сіздің конструкцияны қажетті минималды компоненттерге дейін қысқарту туралы егжей -тегжейлі айтылады. басқа дизайнға енгізілген. Менің жағдайда мен бұл ендірілген құрылғыны ESP8266-12E негізінде IoT Universal қашықтан басқару құралында қолданамын.

Маған қандай бөлшектер қажет?

1 -қадамда (IR таратқышы) бейнеленген схеманы құру үшін сізге келесі бөліктер қажет болады;

  • 2 өшіру 10K резисторы
  • 1 өшіру 390R резисторы
  • 1 өшіру 33R резисторы
  • 1 өшірілген 3K8 резисторы
  • Қызыл светодиод 1 өшірулі
  • IR Led TSAL6400 1 өшірулі
  • BC337 транзисторынан 1 өшіру
  • 1 өшіру 220 ВФ конденсатор
  • 1 жеңілдік Arduino Uno

4 -қадамда (IR қабылдағыш) көрсетілген схеманы құру үшін сізге келесі бөліктер қажет болады;

  • 1 дана 10К резистор
  • 1 жеңілдік TSOP38328
  • 1 өшіру 220 ВФ конденсатор
  • 1 жеңілдік Arduino Uno

5 -қадамда бейнеленген тізбекті құру үшін (құлдық сынақ схемасы) сізге келесі бөліктер қажет болады;

  • 4 өшіру 10K резисторы
  • 2 өшіру 390R резисторы
  • 1 өшіру 33R резисторы
  • 1 өшірілген 3K8 резисторы
  • Қызыл светодиод 2 өшірулі
  • IR Led TSAL6400 1 өшірулі
  • BC337 транзисторынан 1 өшіру
  • 1 өшіру 220 ВФ конденсатор
  • SPST түймелерінен 2 өшіру
  • 2 жеңілдік Arduino Unos

6 -қадамда көрсетілген схеманы құру үшін (Shrunk design) келесі бөліктер қажет болады;

  • 3 өшіру 10K резисторы
  • 1 өшіру 270R резисторы
  • 1 өшіру 15R резисторы
  • 4 өшірілген 1K резисторы
  • 1 өшірілген қызыл жарық диоды
  • 1 өшіру IR Led TSAL6400 немесе TSAL5300
  • BC337 транзисторынан 1 өшіру
  • Электролиттік @ 6.3v кернеуінің 220uF конденсаторы
  • Электролиттік @ 6.3v 1000uF 1 конденсатор
  • 2 өшіру 0,1uF конденсаторлар
  • 2 өшіру 22pF конденсаторлар
  • 1 өшіру 16 МГц Xtal
  • 1 жеңілдік ATMega328P-PU

Ескерту: ATMega328P бағдарламалау үшін сізге FTDI құрылғысы қажет болады

Маған қандай дағдылар қажет?

  • Электрониканы аз түсіну,
  • Arduino және оның IDE туралы білімі,
  • Кішкене шыдамдылық,
  • I2C туралы кейбір түсініктер пайдалы болар еді (I2C/Wire кітапханасының жалпы мәліметтерін мына жерден қараңыз).

Тақырыптар қамтылды

  • Схемаға қысқаша шолу,
  • Бағдарламалық қамтамасыз ету туралы қысқаша шолу,
  • I2C пакетінің мазмұны,
  • Қашықтан басқару кодтарын алу (ui32Data),
  • I2C Slave құрылғысын қалай тексеруге болады,
  • Дизайнды кішірейту,
  • Қорытынды,
  • Қолданылған әдебиеттер.

Жауапкершіліктен бас тарту

Әдеттегідей, сіз бұл нұсқауларды өз тәуекеліңізге қолданасыз және олар қолдамайды.

1 -қадам: Схемаға қысқаша шолу

Тізбек туралы қысқаша шолу
Тізбек туралы қысқаша шолу

Схеманың мақсаты - IR қашықтан басқару кодтарын беру. Оның дизайны өте қарапайым және қарапайым.

Q1 BC337 NPN транзисторы Arduino PWM O/P D3 логикасымен R5 резисторына қосылған кезде, ток 1 және 2 -жарық диодтары арқылы өтеді, тек R3 және R4 балласттық резисторлармен шектеледі. Q1 инфрақызыл диод арқылы өтетін токты күшейту үшін қолданылады (IF Max = 100mA), Arduino O/P қабілеттілігінен ~ 40mA @ +5v артық.

Конденсатор C1 a 220uF Электролиттік 1 -ші және 2 -ші ледтердің қуатымен қоректену рельсінің түсуіне жол бермейтін тұрақтандыруды қамтамасыз етеді.

R1 және R2 резисторлары I2C тартқыштары болып табылады.

2 -қадам: Бағдарламалық қамтамасыз етуге қысқаша шолу

Бағдарламалық қамтамасыз ету туралы қысқаша шолу
Бағдарламалық қамтамасыз ету туралы қысқаша шолу
Бағдарламалық қамтамасыз ету туралы қысқаша шолу
Бағдарламалық қамтамасыз ету туралы қысқаша шолу
Бағдарламалық қамтамасыз ету туралы қысқаша шолу
Бағдарламалық қамтамасыз ету туралы қысқаша шолу

Кіріспе

Бұл бастапқы кодты сәтті құрастыру үшін сізге келесі қосымша кітапхана қажет болады;

IRremote.h

  • Авторы: z3t0
  • Мақсаты: Arduino үшін инфрақызыл қашықтағы кітапхана: бірнеше хаттамасы бар инфрақызыл сигналдарды жіберу және алу
  • Кімнен:

Кодқа шолу

Жоғарыдағы 1-суретте көрсетілгендей, кодты енгізу кезінде микроконтроллерді конфигурациялайды, содан кейін 'bFreshDataFlag' ішкі бағдарламалық жасақтамасының күйін сұрайды. Бұл жалаушаны орнатқан кезде контроллер өзінің «бос емес» жолын растайды (D4 деректер түйіні төмен) және «eBUSY» күйіне ауысады, uDataArray пернелеріндегі кезекті оқу батырмасын басады және IR модуляцияланған деректерді IR светодиодына жібереді. беру реттілігі.

UDataArray ішіндегі деректер толық жіберілгеннен кейін, 'eIDLE' күйі қайта қосылады және 'Бос емес' сызығы бекітілмейді (деректер түйреуіші D4 жоғары жіберіледі). Құрылғы беріліс тізбегінің аяқталуын көрсететін түйме басуларды қабылдауға дайын.

IR батырмасын басу деректерін қабылдау

Деректер InfraRed қашықтан басқару пультіне I2C арқылы жіберілгенде, ол үзілісті тудырады және receptEvent () функциясының шақыруы асинхронды түрде іске қосылады.

Алынған I2C деректері іске қосылғаннан кейін «uDataArray 'буферіне дәйекті түрде жазылады.

Деректерді қабылдау кезінде, егер реттіліктің соңы мастермен (bFreshData! = 0x00) белгіленсе, 'bFreshDataFlag' орнатылады, осылайша беру ретін бастайтынын білдіреді.

2… 3 суреттер пакеттердің әдеттегі тізбегіне мысал келтіреді.

Ескерту: Толық бастапқы код мына жерде

3 -қадам: I2C пакеттік мазмұны

I2C пакеттік мазмұны
I2C пакеттік мазмұны

I2C арқылы құлға жіберілетін басқару пакетінің форматы 1 суретте жоғарыда әр өрістің мағынасы берілген

Бақылау пакеттерінің өрістерінің мағынасы

байт bEncoding;

  • IR қашықтан басқару пультін кодтау,

    • RC6 (аспан) = 0,
    • SONY = 1,
    • SAMSUNG = 2,
    • NEC = 3,
    • LG = 4

uint32_t ui32Data;

Екілік инфрақызыл информация ағынының он алтылық көрінісі 4 Деректер байты (белгісіз ұзын), LSByte… MSByte

байт bNumberOfBitsInTheData;

Деректердегі бит саны (максимум 32). Ауқымы = 1… 32

байт bPulseTrainRepeats;

Бұл импульстік пойыздың қанша қайталануы. Ауқымы = 1… 255. Әдетте 2… 4 қайталау. Сіз оны қосу/өшіру пәрмендері үшін ұзартқыңыз келуі мүмкін, себебі қабылдау құрылғысы қосылу сигналын алу үшін кейде қосымша импульстік пойыздың бірнеше қайталауын қажет етеді

байт bDelayBetweenPulseTrainRepeats;

Бұл импульстік пойыздың қайталануы арасындағы кідіріс. Ауқымы = 1… 255 мС. Әдетте 22mS … 124mS

байт bButtonRepeats;

Бір түймені қайталап басуды имитациялайды (бірақ Apple пульті сияқты өзгертілген кодты қолдамайды, ол тек түйме кодын қайталайды). Ауқым = 1… 256. Әдепкі = 1

uint16_t ui16DelayBetweenButtonRepeats;

Түймені қайталау арасындағы кідіріс (unsigned int). Барлығы 2 байт LSByte… MSByte. Ауқымы = 1… 65535 мС. Әдепкі = 0mS

байт bFreshData;

  • Жаңа деректер. Нөл емес мән. Соңғы жазылған IR TX реттілігін іске қосады. 0x00… 0xFF ауқымы

    • Басқа басқару пакеттері келеді = 0
    • Бұл соңғы бақылау пакеті = нөлдік емес мән 1, 2,… 255

«_Packed_» компиляторлық директивасының қолданылуына назар аударыңыз. Бұл пайдаланылатын мақсатты жүйеге (Uno, Due, ESP8266 және т.б.) қарамастан, жадта байт үшін пакеттік байт болуын қамтамасыз ету үшін қажет. Бұл registerAllocationType мен dataArrayType арасындағы одаққа TX/RX бағдарламалық жасақтамасын жеңілдететін басқару пакетінен байтпен тек қана сағаттық/сағатты қажет етеді.

4 -қадам: Қашықтан басқару кодтарын алу (ui32Data)

Қашықтан басқару кодтарын алу (ui32Data)
Қашықтан басқару кодтарын алу (ui32Data)
Қашықтан басқару кодтарын алу (ui32Data)
Қашықтан басқару кодтарын алу (ui32Data)
Қашықтан басқару кодтарын алу (ui32Data)
Қашықтан басқару кодтарын алу (ui32Data)
Қашықтан басқару кодтарын алу (ui32Data)
Қашықтан басқару кодтарын алу (ui32Data)

Қашықтан басқару пультінің тиісті кодын алудың үш әдісі бар;

  1. Осциллографпен биттерді санау арқылы,
  2. Оны веб -сайттан қараңыз,
  3. Оны бағдарламалық жасақтамадағы деректер ағынынан тікелей декодтаңыз.

Ауқыммен бит санау арқылы

Бұл тиімді әдіс емес, өйткені бұл көп уақытты қажет етеді және бірнеше әрекетті қажет етеді, бірақ бұл өте дәл болуы мүмкін. Бұл сонымен қатар 2 және 3 әдістерді қолдану арқылы алынған кодтарды визуалды түрде растауда, сонымен қатар қашықтан басқару пультінің кез келген ерекшеліктерін анықтауда пайдалы. Мысалы, Apple IR қашықтан басқару пультіндегі түймені басып тұрғанда. Қашықтан басқару құралы бастапқыда командалық реттілікті шығарады, содан кейін қайталанған 0xF сығылған ретімен орындалады.

Оны бір сайттан қараңыз

Linux инфрақызыл қашықтан басқару пультінің веб -сайтындағы қашықтан басқару кодының дерекқоры жақсы ақпарат көзі болып табылады.

Бірақ кемшілігі - сізге сәйкес кодты тапқанша бірнеше кодты қолдануға тура келеді. Кодтардың баламалы он алтылық түріне түрлендіру үшін сізге кодтардың кейбір көріністерін түсіндіру қажет болуы мүмкін.

Деректерді ағыннан тікелей декодтаңыз

Жоғарыдағы 1 -суреттегі схеманы IRremote кітапханасының мысалында 'IRrecvDumpV2.ino' көмегімен қолдану арқылы деректер ағынын қашықтан басқару құралынан тікелей декодтауға болады. 2 -суретте Samsung теледидарының қашықтан басқару пульті Arduino IDE терминал терезесінде қосу/өшіру түймесін басу көрсетілген.

Біріктірілген қабылдағыш/таратқыш

Жоғарыда келтірілген 3 және 4 -суреттерде прототипті оңай құруға мүмкіндік беретін IR командасын қабылдауға да, беруге де мүмкіндік беретін шешім бейнеленген.

IR қашықтан басқару пультінің түймесін басу үшін сіз Arduino -ны IRremote кітапханасымен бірге келетін 'IRrecvDumpV2.ino' үлгісімен жыпылықтауыңыз керек.

Егер ол IR командалары болса, ол жіберу үшін де жақсы жұмыс істейді. Құрылғының жұмыс істеп тұрғанының белгісі ретінде қызыл светодиод қосылады.

5 -қадам: I2C құлдық құрылғысын қалай тексеруге болады

I2C құлдық құрылғысын қалай тексеруге болады
I2C құлдық құрылғысын қалай тексеруге болады
I2C құлдық құрылғысын қалай тексеруге болады
I2C құлдық құрылғысын қалай тексеруге болады

Бұл жерде бастапқы кодты және 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 -түймені басыңыз, сонда сіздің дыбыс жолағыңыз өшеді. Қайта басыңыз, ол дыбысты өшіреді.

Инфрақызыл тарату реттілігін орындау кезінде LED3 қосқыштың бос емес екенін көрсетеді, ал жарықдиодты инфрақызыл тарату процессімен қатар жыпылықтайды.

Әрине, егер сізде жоғарыда көрсетілгендей ойын-сауық жүйесі жоқ болса, сіз құлды 'IRrecvDumpV2.ino' арқылы қайта бағдарламалай аласыз, қашықтағы қызығушылық пәрмендеріңізді шеше аласыз, содан кейін оларды өзіңізге «IR_Remote_Sim_Test.ino» бағдарламасына енгізе аласыз. берілген сценарий.

2 -суретте Master мен Slave арасындағы жүйелік деңгейдегі тестілеудің бағдарламалық жасақтамасына шолу көрсетілген.

6 -қадам: Дизайнды қысқарту

Дизайнды кішірейту
Дизайнды кішірейту

Жақсы, сондықтан сіз үйдегі құрылғыларды басқару үшін екі Arduino -ға сүйене отырып, осы нұсқаулыққа сүйендіңіз, бұл сіздің Arduino қорын тиімді пайдалану емес. Демек, егер сіз жоғарыдағы суретте көрсетілген схеманы құрсаңыз және ATMega328P бағдарламасын 'IR_Remote_Sim.ino' бағдарламалау үшін осы жердегі нұсқауларды орындасаңыз, сіз бүкіл жүйені минималды компоненттерге дейін төмендете аласыз. Бұл сіздің дизайнды басқа жүйеге енгізуге мүмкіндік береді.

7 -қадам: Қорытынды

Қорытынды
Қорытынды
Қорытынды
Қорытынды

Шешім тұрақты және жақсы жұмыс істейді, ол басқа жүйеге бірнеше аптадан бері еш қиындықсыз енгізілген.

Мен Arduino Uno R3 -ді таңдадым, себебі мен жеткілікті жедел жады бар құрылғыны қалайтынмын, сондықтан менде тереңдігі батырмалы буфер болады. Мен 20 пакеттің (MAX_SEQUENCES) буферлік өлшемін шештім.

Мен жасаған Hybrid TX/RX қалқаны Sony мен Sky қашықтан басқару құралдарын декодтау кезінде де өте ыңғайлы болды. Мен бағдарламалық жасақтаманың декодталған инфрақызыл командасының инфрақызыл инфрақызылдан түскенімен бірдей болатынын тексеру үшін сандық ауқымымды мезгіл -мезгіл мойындауым керек болса да (TSOP38328).

Мен басқаша жасайтын жалғыз нәрсе, жоғарыда 2 -суретте көрсетілгендей, ИК -дегі тұрақты ток тізбегін пайдалану болар еді.

Тағы бір айта кететін жайт, барлық инфрақызыл таратқыштар 38 кГц жиілікте модуляцияланбайды, TSOP38328 38 кГц үшін оңтайландырылған.

8 -қадам: Қолданылған әдебиеттер

IRRemote.h

  • Авторы: z3t0
  • Мақсаты: Arduino үшін инфрақызыл қашықтағы кітапхана: бірнеше хаттамалары бар инфрақызыл сигналдарды жіберу және алу
  • Кімнен:

IR қашықтағы кітапханасы

  • z3t0.github.io/Arduino-IRremote/
  • https://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html

IR (инфрақызыл) қабылдағыш сенсоры - 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/kz/Reference/WireSend

IR қашықтан басқару дерекқоры

  • 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

Ұсынылған: