Schéma na ovládanie IR lúčov s rôznymi zariadeniami. LED ovládame pomocou IR diaľkového ovládača. Formáty prenosu IR údajov

  • 22.05.2019

Medzi zariadenia určené na diaľkové ovládanie a ovládanie, zariadenia využívajúce infračervené (IR) žiarenie majú dlhoročné a čestné miesto.

Napríklad prvé infračervené diaľkové ovládače sa objavili v roku 1974 vďaka spoločnostiam Grundig a Magnavox, ktoré vydali prvý televízor vybavený takýmito ovládačmi. Senzory využívajúce infračervené žiarenie sú široko používané v automatizácii.

Hlavnou výhodou IR ovládacích zariadení je ich nízka citlivosť na elektromagnetické rušenie a tiež, že tieto zariadenia samotné nerušia iné elektronické zariadenia. Infračervené diaľkové ovládanie je spravidla obmedzené na obytné alebo priemyselné priestory a vysielač a prijímač IR žiarenia musia byť v priamej viditeľnosti a nasmerované proti sebe.

Tieto vlastnosti určujú hlavný rozsah použitia predmetných zariadení - diaľkové ovládanie domáce prístroje a automatizačné zariadenia zapnuté krátke vzdialenosti, ako aj tam, kde je potrebná bezkontaktná detekcia priesečníka čiary priamočiareho šírenia žiarenia.

Už na začiatku svojho vzniku boli zariadenia využívajúce infračervené lúče veľmi jednoduché na vývoj a používanie, no v súčasnosti využívajú moderné elektronickej databázy Takéto zariadenia sú ešte jednoduchšie a spoľahlivejšie. Ako je ľahké si všimnúť, dokonca Mobilné telefóny a smartfóny sú vybavené infračerveným portom na komunikáciu a ovládanie domáce prístroje cez IR kanál, napriek jeho širokému použitiu bezdrôtové technológie, ako je Bluetooth a Wi-Fi.

Master Kit ponúka niekoľko infračervených modulov navrhnutých pre použitie v domácich projektoch.

Zoberme si tri zariadenia rôzneho stupňa zložitosti a účelu. Pre pohodlie sú hlavné charakteristiky všetkých zariadení zhrnuté v tabuľke umiestnenej na konci recenzie.

  1. Infračervená závora je určená na použitie ako senzor bezpečnostné systémy, pri športových súťažiach ako fotofiniš, ako aj na diaľkové ovládanie automatizačných zariadení na vzdialenosť do 50 metrov.

Zariadenie sa skladá z dvoch modulov – vysielača a prijímača. Vysielač je namontovaný na dvojitom integrovanom časovači NE556 a generuje štvorcových impulzov s frekvenciou plnenia 36 kHz. Časovač má dostatočne výkonný prúdový výstup na priame ovládanie infračervených LED diód, ktoré sú k nemu pripojené.

Jediný analóg NE556 je slávny integrálny časovač NE555, ktorý dlhé desaťročia verne slúžil na vývoj celej armáde rádioamatérov elektronické zariadenia. Naučte sa časovač pomocou 20 príkladov elektronické obvody, vyvinutý na základe tohto časovača, možno vykonať pomocou stavebnice „Classics of Circuit Design“ zo série ABC of Electronics Engineer. Pri zostavovaní obvodov nepotrebujete ani spájkovačku; všetky sú zostavené na nepájkovej doske.

Vysielaný signál je prijímaný prijímačom, ktorého základom je špecializovaný mikroobvod, je detekovaný špičkovým detektorom a ide do prúdového zosilňovača na tranzistore, ku ktorému je pripojené relé, ktoré umožňuje spínanie prúdu až 10A.

Infračervená bariéra je napriek svojej jednoduchosti pomerne citlivým zariadením a umožňuje vám pracovať na „prenose“ aj „odraze“ a vyžaduje výrobu krytov pre vysielač a prijímač, čím sa eliminuje vplyv odrazených signálov.

Príklad použitia infračervenej závory v spojení so súpravou „Digitálne laboratórium“ z už spomínaného ABC radu Electronics Engineer.

  1. - Toto je vypínač svetla ovládaný akýmkoľvek infračerveným diaľkovým ovládačom.

Modul umožňuje ovládať osvetlenie alebo iné elektrické spotrebiče pomocou ľubovoľného tlačidla na diaľkovom ovládači.

Každý diaľkový ovládač má zvyčajne tlačidlá, ktoré sa používajú zriedka alebo sa nepoužívajú vôbec. Pomocou tohto spínača môžete zapnúť a vypnúť luster, ventilátor atď. z rovnakého diaľkového ovládača, ktorým ovládate svoj televízor alebo stereo systém.

Po pripojení napájania modul „čaká“ 10 sekúnd na prijatie signálu zodpovedajúceho zvolenému tlačidlu na diaľkovom ovládači a po tomto čase si stlačené tlačidlo „zapamätá“. Potom na aktiváciu relé modulu stačí stlačiť toto tlačidlo raz, pri opätovnom stlačení sa relé vypne. Takto je implementovaný režim riadenia typu „spúšťač“. Modul zostáva naprogramovaný, aj keď je vypnutý.

Je potrebné poznamenať, že modul si „pamätá“ svoj posledný stav, keď je napájanie vypnuté.

Zariadenie má režim automatické vypnutie záťaž približne 12 hodín po zapnutí pre prípad, že by ste zabudli záťaž vypnúť.

Modulové relé dokáže spínať výkon až 1500 W.

  1. Set bezdrôtové ovládanie cez IR kanál má vlastné diaľkové ovládanie so 4 tlačidlami a 4 ovládacími kanálmi po 2000 W.

Každý zo 4 kanálov diaľkového ovládania funguje v „tlačidlovom“ režime, t.j. Kanálové relé je zatvorené, kým je stlačené príslušné tlačidlo na diaľkovom ovládači.

Pomocou modulu je možné organizovať reverzibilné ovládanie dvoch kartáčovaných elektromotorov, keďže každé relé má jeden normálne zatvorený (NC) a jeden normálne otvorený (NO) kontakt so spoločným vodičom.

Pre jednoduché použitie je každý kanál vybavený LED indikujúcou aktiváciu relé.

Diaľkové ovládanie súpravy je napájané prvkom CR2032.

Ovládanie záťaže s viac energie Pre všetky uvažované zariadenia to možno vykonať pomocou rozširujúcich modulov:

Až 4000 W: rozširujúci modul bude stačiť;

Až 8000 W: rozširujúci modul postačí.

Infračervené riadené moduly

Kód dodávateľa

názov

Napájacie napätie

Počet riadiacich kanálov

Maximálny zaťažovací výkon jedného kanála, W

Príklady aplikácií

Infračervená bariéra

12V konštantné

Bezpečnostné zariadenia; športové súťaže; robotické; automatizačné zariadenia

Svetelný spínač

12V konštantné;

220V AC

Ovládanie osvetlenia, vetrania, kúrenia

Súprava bezdrôtového ovládania

12V konštantné

Reverzibilné riadenie komutátorových motorov; 4-kanálové ovládanie domácich spotrebičov

15:45 20.03.2002

Tri spôsoby ovládania počítača cez ľubovoľné IR diaľkové ovládanie Tento materiál obsahuje hlavne teoretické informácie o používaní infračervených diaľkových ovládačov pre televízory a iné domáce spotrebiče na ovládanie počítača. Nájsť reálna aplikácia takáto možnosť nie je až taká ťažká. Môžete ovládať spúšťanie programov; pohybovať kurzorom myši a simulovať stláčanie jeho tlačidiel; simulovať stláčanie kláves na klávesnici; spravovať WinAmp; vypnite a reštartujte počítač.

Zvážia sa tri spôsoby. Všetky vyžadujú IR prijímač pripojený k počítaču. Posledné dve metódy obsahujú primitívne obvody, ktoré nie je ťažké spájkovať sami.

Začnime od úplného začiatku jednoduchá možnosť- funguje cez bežné infračervené adaptéry, ktoré sa predávajú v mnohých obchodoch za ceny od 15 do 40 dolárov. Pripájajú sa cez USB zbernicu alebo sériový port RS-232 (bežný COM port). Posledná možnosť Pre našu predstavu to vyzerá výhodnejšie, pretože Skontrolovaný softvér s najväčšou pravdepodobnosťou nebude fungovať s verziami USB adaptéry. Navyše stoja menej. V našom prípade sme použili adaptér TEKRAM IRmate IR-210B pripojený cez COM port. Musíme vás okamžite upozorniť, že programy, ktoré sme našli a popísali, nevyžadujú inštaláciu ovládačov pre žiadne adaptéry. Samotné programy pracujú priamo s COM portom. Nainštalované ovládače bude prekážať normálna operácia. Ak používate USB verzie adaptéry, potom je situácia opačná - ovládače sú potrebné, ale ako už bolo spomenuté, nastavenia všetkých programov neobsahovali podporu pre zariadenia tohto druhu.

Program je distribuovaný za podmienok Shareware. IN demo režim Z diaľkového ovládača je možné použiť iba štyri príkazy. Podporuje rôzne adaptéry, vrátane tých, ktoré pracujú cez WinLirc (o tom sa bude diskutovať samostatne). Diaľkové ovládače TV tunerov AVerMedia sú priamo podporované. Úplný zoznam Podporované zariadenia nájdete na stránke vývojárov.

Program sa ukázal ako celkom jednoduchý na používanie. Existuje podpora pre ruský jazyk. Začnime popis práce s programom s nastaveniami.

Nachádzajú sa v ponuke "Súbor". Najprv musíte uviesť, ku ktorému portu je adaptér pripojený. Pre náš IRMate 210 bola v popise programu poznámka: funguje iba pri rýchlosti portu 2400 bps. Dodržiavame pokyny, inak sú všetky nastavenia celkom optimálne. Logika práce s týmto programom, ako aj s ostatnými, znamená, že najprv musíte v programe vytvoriť zdroj - ovládací panel. V našom príklade sme ho nazvali „Samsung“. Potom sa k zdroju pridajú príkazy, ktoré sa nachádzajú pod názvom diaľkového ovládača. Pri ich pridávaní program k ich hodnotám priradí signály z diaľkového ovládača. Ak chcete priradiť akciu tlačidlu diaľkového ovládača, stačí potiahnuť myšou správny príkaz V okne "Spúšťané príkazy" a na karte "Zoznam akcií" uveďte všetko, čo je potrebné. Neregistrovaná verzia programu vám nedovolí vytvoriť viac ako štyri akcie na jednom diagrame.

Začnime popisom práce s týmto programom jeho nastavením. Pri prvom spustení programu sa dostanete do časti „General Config“ hlavnej ponuky. Tu musíte vybrať typ adaptéra, ktorý používate. V našom prípade ide o Generic Serial IR Receiver. Ďalej prejdite na položku „Nastavenie hardvéru“.

Podobne predchádzajúci program, kliknite pravým tlačidlom myši do prázdneho poľa a z ponuky vyberte „Nové diaľkové ovládanie“. Nazvali sme to Samsung. Potom pomocou pravého tlačidla myši začneme pridávať kľúče z IR diaľkového ovládača („Nové tlačidlo diaľkového ovládača“). V procese identifikácie tlačidiel diaľkového ovládača sa vyskytol problém - všetky kódy tlačidiel sa programu zdali rovnaké. Kód tlačidla sa zobrazuje vpravo v okne „Podpis“ a je to jednoduchá sada údajov načítaných z COM portu. Riešenie bolo jednoduché: na snímke obrazovky vedľa označenia portu je tlačidlo „Nastavenie“. Zobrazí sa okno nastavení, kde musíte vybrať druhú kartu s názvom „Nastavenia zariadenia“. V ňom nastavte parameter "dĺžka IR kódu" na väčšiu hodnotu, napríklad 32 bajtov.
Ak chcete priradiť akcie už definovaným tlačidlám na diaľkovom ovládači, musíte prejsť do tretej časti „Akcie“. Pridajte náš diaľkový ovládač a pridajte tlačidlá, ktoré sme definovali v predchádzajúcej časti, až teraz bude výber z rozbaľovacej ponuky po kliknutí pravým tlačidlom myši. Akcie pre príkazy sa pridávajú v pravom okne.

Zaškrtnutím políčka „Vypnúť OSD“ sa zbavíte okna, ktoré vyskočí na obrazovke po stlačení tohto tlačidla na diaľkovom ovládači.

Subjektívne sa mi uICE páčilo viac ako PCRemote. Ale je lepšie vyskúšať oboje, pretože... majú niekoľko rozdielov. Navyše, ak budete používať neregistrované verzie, tak uICE po 30 dňoch úplne stratí svoju funkčnosť, pričom PCRemote bude fungovať s vyššie spomínanými obmedzeniami.

Práca s domácimi IR prijímačmi

Vyššie diskutovaná metóda je vhodná pre tých, ktorí už majú IR adaptér alebo jeho zakúpenie nespôsobuje žiadne ťažkosti. Inak jednoduchý IR prijímač pripojený cez štandardný port RS-232 nie je vôbec ťažké postaviť. Navyše je ich veľa viac programov, pracujúce špeciálne s domácimi IR prijímačmi. Najpopulárnejším takýmto programom je WinLirc. Správnejšie by bolo nazvať to nie program, ale rozhranie pre prácu s COM portom. Toto rozhranie používajú všetky ostatné programy, ktoré budú popísané nižšie.

Toto je rozhranie pre vyššie opísané zariadenia. Pracuje pod Ovládanie Windows 95/98/ME/NT/2000. Pôvodne vytvorené pre Unix, takže fanúšikovia tohto operačný systém všetko potrebné nájdu na tejto stránke www.lirc.org. Tento program je sám o sebe schopný prijímať a spracovávať signály prijaté z COM portu nášho zariadenia. Na vykonanie akýchkoľvek akcií na počítači pomocou diaľkového ovládača sú potrebné ďalšie programy, ktoré budú prijímať všetky údaje z WinLIRC. Všetky vyššie opísané programy sú schopné pracovať s WinLIRC.

Verzia 2.0 vyšla len druhý deň. Program je distribuovaný za podmienok Shareware, ale pre občanov bývalý ZSSR Existuje bezplatná registrácia. Možnosti programu sú pomerne široké: od emulácie klávesnice a ovládania WinAmp až po ovládanie externých zariadení. Všetky tieto funkcie sa objavia až po nainštalovaní príslušných doplnkov. Všetky sú umiestnené na webovej stránke autora.

V našom prípade budeme musieť s týmto programom pracovať cez WinLIRC. Pluginy pre prácu s bežnými IR adaptérmi sa podľa autora v súčasnosti iba vyvíjajú. Úprimne povedané, sám som tento obvod nespájal, takže tieto a ďalšie tvrdenia je lepšie pripísať teoretickej časti. Preto je rozumnejšie pokračovať bez zbytočné slová uveďte niekoľko anotovaných odkazov.

Čip ovládača motora komutátora, IR diaľkové ovládanie, rádiový modul NRF24L01, OKI 120A2, modul karty SD, čip ovládača motora komutátora, modem GSM GPRS M590E, hodiny reálneho času DS 3231/DS 1307, Mini 360 na obvode LM2596, L293D, senzory vzdialenosti hodiny reálneho času, HC-SR501, jednotka Power Mini 360 na obvode LM2596, radič L298N, HC-SR501, GSM GPRS, M590E GSM GPRS modem, hodiny reálneho času DS 3231/DS 1307, Wi-Fi modul ESP8266-12E, Modul karty, Napájanie, Mini 360, L293D, napájanie Mini 360 na okruhu LM2596, Rádiový modul, IR diaľkové ovládanie, Ethernet štít, Čip ovládača motora kefy, Čip ovládača motora kefy, IR diaľkové ovládanie, Modul karty SD , Rádiový modul NRF24L01, motor OKI, L293D, Krokový motor, Napájanie, L293D, napájanie Mini 360 na obvode LM2596, pamäťová karta SD, štít Ethernet, snímač pohybu HC-SR501, modul Wi-Fi ESP8266-12E, krokový motor OKI 120A2, krokový motor,

Výmena dát v infračervenom rozsahu

Na zabezpečenie spoľahlivého príjmu a zaručenej ochrany pred rušením sa používa modulácia signálu a kódovanie. Prenos dát sa uskutočňuje v blízkom viditeľnom infračervenom spektre. Väčšina vlnových dĺžok implementované systémy sa pohybuje medzi 800-950 nm. Najjednoduchší spôsob, ako sa zbaviť hluk pozadia- modulovať (vypĺňať) signál pri vysielaní jednej zo štandardných frekvencií: 30, 33, 36, 37, 38, 40, 56 kHz. Na tieto frekvencie sú naladené všetky moderné integrované prijímače.

Na zabezpečenie dostatočného dosahu pri prenose kódovej sekvencie je potrebné tvarovať silný signál. Prúd cez IR LED môže dosiahnuť 1 A - takéto prúdy sú celkom prijateľné v impulznom režime, zatiaľ čo priemerný stratový výkon by nemal prekročiť maximálne prípustné množstvo uvedené v dokumentácii.

Vyvinuté veľké množstvo špecializované čipy(SAA3010, GS8489, KS51840 atď.), generujúc pripravenú kódovú sekvenciu a spotrebúvajú minimálny prúd v pohotovostnom režime, čo je dôležité pri napájaní z batérií. Tieto mikroobvody výrazne zjednodušujú konštrukciu diaľkových ovládačov (RC). Keď stlačíme tlačidlo diaľkového ovládania, čip vysielača sa aktivuje a vygeneruje kódovú sekvenciu so zadanou náplňou. LED diódy premieňajú tieto signály na infračervené žiarenie. Vyžarovaný signál je prijímaný fotodiódou, ktorá opäť premieňa IR žiarenie na elektrické impulzy. Tieto impulzy sú zosilnené a demodulované čipom prijímača. Potom sa privedú do dekodéra. Dekódovanie sa zvyčajne vykonáva softvérovo pomocou mikrokontroléra.

Prijímač IR diaľkového ovládania musí obnoviť dáta s dvojfázovým kódovaním a reagovať na veľké rýchle zmenyúroveň signálu bez ohľadu na rušenie. Šírka impulzu na výstupe prijímača by sa nemala líšiť od nominálnej o viac ako 10%. Prijímač musí byť tiež necitlivý na neustále vonkajšie svetlo. Splniť všetky tieto požiadavky je dosť ťažké. Staršie implementácie IR prijímača diaľkového ovládania, dokonca aj tie, ktoré používali špecializované čipy, obsahovali desiatky komponentov. Takéto prijímače sa často používali rezonančné obvody, naladený na frekvenciu plnenia. To všetko sťažilo výrobu a konfiguráciu dizajnu a vyžadovalo použitie dobrého tienenia.

IN V poslednej dobe Rozšírili sa trojkolíkové integrované IR prijímače diaľkového ovládania (SFH5110-xx, TSOP17xx, TFMS5хх0 atď.). V jednom balení kombinujú fotodiódu, predzosilňovač a tvarovač. Výstup generuje bežný TTL signál bez výplne, vhodný na ďalšie spracovanie mikrokontrolérom. Väčšina dôležitý parameter pri výbere prijímača - frekvencia plnenia.

Interný integrovaný zosilňovač prijímača má vysoký koeficient zosilnenie, preto pre elimináciu samobudenia a elimináciu vplyvu šumu v napájacích obvodoch je potrebné použiť elektrolytický kondenzátor s kapacitou minimálne 4,7 μF, zapojený čo najbližšie k pinu VCC.

Pripojenie IR prijímača

Čip TSOP31236 používame ako IR prijímač diaľkového ovládania. V jednom balení kombinuje fotodiódu, predzosilňovač a tvarovač. Výstup generuje bežný TTL signál bez výplne, vhodný na ďalšie spracovanie mikrokontrolérom. Nosná frekvencia je 36 kHz, výstup je inverzný, t.j. ak nie je signál, na pin príde logická „1“ a keď sa objaví signál, pošle logickú „0“.

Knižnica IRvzdialene

Môžete zistiť protokol vášho diaľkového ovládača a napísať náčrt, aby ste dostali kódy odoslané z diaľkového ovládača. Našťastie je to už napísané univerzálna knižnica pre príjem a spracovanie kódov z akéhokoľvek diaľkového ovládača - IRremote.

Súbory knižnice nájdete v priečinku libraries/IrRemote, ktorý je súčasťou knihy. elektronický archív. Ak chcete použiť knižnicu vo svojich projektoch, umiestnite ich do priečinka knižnice v adresári Inštalácie Arduina. Náčrt na prijatie kódu a jeho odoslanie sériový port uvedené v príklade.

#include

int RECV_PIN = 11;

IRrecv irecv(RECV_PIN); výsledky decode_results;

void setup()

Serial.begin(9600);

irecv.enableIRIn(); // povoliť prijímač

void loop()

if (irrecv.decode(&results))

Serial.println(vysledky.hodnota, HEX); irecv.resume(); // získať ďalšiu hodnotu

Môžete tiež prenášať IR príkazy. Podporované protokoly: NEC, Sony SIRC, Philips RC5, Philips RC6. Vysielacia IR LED musí byť pripojená na pin 3. Náčrt pre odoslanie IR kódu je uvedený v príklade.

#include IRsend irsend;

void setup()

Serial.begin(9600);

void loop()

if (Serial.read() != -1)

pre (int i = 0; i< 3; i++)

irsend.sendSony(0xa90, 12); // oneskorenie kódu napájania televízora Sony(100);

Náčrt pre príjem kódov IR diaľkového ovládača

Prvou úlohou je získať zoznam kľúčových kódov pre náš diaľkový ovládač.

Definujme zoznam tlačidiel diaľkového ovládača na ovládanie:

<>- pohyb vpred;

<↓>- pohyb vzad;

<←>- odbočiť vľavo;

<→>- Odbočiť doprava;

<–CH>- zvýšenie rýchlosti pri pohybe dopredu/dozadu;

- zníženie rýchlosti pri pohybe dopredu/dozadu;

<–VOL>- kruhový pohyb na mieste doľava;

- kruhový pohyb na mieste doprava;

<0>- zastavenie robota.

Spustite náčrt z príkladu a získajte kódy potrebné kľúče pre váš diaľkový ovládač. Hodnoty kódu sa odosielajú na sériový port.

#include

void setup()

// prerušenia pre IR

void loop()

// spracovanie kódu kliknutia if(ir_kod>0)

ir_go(ir_kod); Serial.println(ir_kod); ir_kod=0;

// získajte kód odoslaný z IR diaľkového ovládača void get_ir_kod()

odpojInterrupt(0); // zakáže prerušenie 0 if (irrecv.decode(&results))

if (vysledky.hodnota > 0 && vysledky.hodnota< 0xFFFFFFFF)

// Uplynula 1 sekunda?

if (ir_time2-ir_time1>1000)

(ir_kod = ir_dt;ir_time1=ir_time2;)

inak

ir_kod = 0;

irecv.resume();

Zapíšme ich ako konštanty

#define VPRED 1936 //

#define SPÄŤ 3984 // ↓

#define SPEED_UP 144 //ch+

#define LEFT 3472 // ←

#define RIGHT 1424 // →

#define STOP 2320 // 0 - stop

Príjem príkazu z diaľkového ovládača určíme prerušením 0 (na digitálnom pin2). Po prerušení sa spustí procedúra get_ir_kod(), ktorá určí kód prichádzajúci z diaľkového ovládača a zapíše ho do premennej ir_kod. Procedúra loop() kontroluje premennú ir_kod a ak je premenná nenulová (prijíma kód z diaľkového ovládača), zavolá výstupnú procedúru akcie ir_go(). Zapnuté v tomto štádiu- toto je výstup na sériový port akcie očakávanej stlačením klávesu.

Tento náčrt je uvedený v príklade.

Výsledok príkazu z diaľkového ovládača sa zobrazí na monitore sériového portu.

#include

// vstup IR prijímača int RECV_PIN = 2;

IRrecv irecv(RECV_PIN); výsledky decode_results; unsigned long ir_dt, old_ir; dlhý ir_kod;

unsigned long ir_time1, ir_time2;

// Kódy IR diaľkového ovládača (marmitek)

#define VPRED 1936

#define SPÄŤ 3984

#define SPEED_UP 144 //ch+

#define SPEED_DOWN 2192 //ch-

#define LEFT 3472

#define RIGHT 1424

#define CIRCLE_LEFT 3216 //vol+

#define CIRCLE_RIGHT 1168 //vol-

#define STOP 2320 //0

void setup()

// sériový port Serial.begin(9600);

// povolenie prijímača irecv.enableIRIn(); ir_time1=0;ir_time2=0;

// prerušenia pre IR

// FALLING – vyvolanie prerušenia pri zmene úrovne napätia

// z vysokej (HIGH) do nízkej (LOW) attachmentInterrupt(0, get_ir_kod, FALLING);

void loop()

// spracovanie kódu kliknutia if(ir_kod>0)

ir_go(ir_kod); ir_kod=0;

// získajte kód odoslaný z IR diaľkového ovládača void get_ir_kod()

odpojInterrupt(0); // zakáže prerušenie 0

if (irrecv.decode(&results))

if (vysledky.hodnota > 0 && vysledky.hodnota< 0xFFFFFFFF)

ir_dt = vysledky.hodnota; ir_time2=millis();

// Uplynula 1 sekunda?

if (ir_time2-ir_time1>1000)

(ir_kod = ir_dt;ir_time1=ir_time2;) inak

ir_kod = 0;

irecv.resume();

// aktivácia procedúry prerušenia 0 attachmentInterrupt(0, get_ir_kod, FALLING);

// akcia na základe prijatého kódu void ir_go(kod)

prepínač (kód)

case FORWARD: // smer dopredu Serial.print("forward\n");

prestávka;

case BACK: // smer dozadu Serial.print("späť\n");

prestávka;

case SPEED_UP: // speed++ Serial.print("speed++\n"); prestávka;

case SPEED_DOWN: // rýchlosť-- Serial.print("rýchlosť--\n"); prestávka;

case LEFT: // doľava Serial.print("left\n"); prestávka;

case RIGHT: // doprava Serial.print("right\n"); prestávka;

case CIRCLE_RIGHT: // krúžok doprava Serial.print("kruh_vpravo\n"); prestávka;

case CIRCLE_LEFT: // kruh doľava Serial.print("circle_left\n"); prestávka;

case STOP: // stop Serial.print("stop\n"); prestávka;

Začiatok alebo „Ako začalo zariadenie“

...Keď som prišiel, Victoria sedela na pohovke a pozerala na televízor. Bol to ťažký deň, tak sa jej nechcelo nič robiť. Pár minút sme pozerali nejaký popový seriál, potom sa to skončilo a Vika vypla televízor. V miestnosti sa stala tma. Vonku pršalo, a preto sa zdalo, že aj doma je zima.
Vika vstala z pohovky a začala hmatom hľadať vypínač. Nástenná lampa z nejakého dôvodu nevisela pri pohovke, ale na inej stene a ja som musel prešľapovať cez izbu, aby som rozsvietil svetlo. Keď ju konečne zapla, miestnosť bola naplnená teplou žiarou žiarovky.
Vedľa mňa na pokrčenej plachte ležal ovládač televízora. Spodné tlačidlá sú neoznačené a s najväčšou pravdepodobnosťou nepoužívané. A potom ma napadla zaujímavá myšlienka...
- Vic, chceš, aby som to urobil, aby si mohol zapnúť lampu pomocou diaľkového ovládača z krabice? K dispozícii sú aj ďalšie tlačidlá...

koncepcia
Naše zariadenie musí byť schopné prijímať signál z IR diaľkového ovládača, rozlíšiť „svoje“ tlačidlo od ostatných a ovládať záťaž. Prvý a posledný bod sú jednoduché ako sekera. Ale tá druhá je o niečo zaujímavejšia. Rozhodol som sa neobmedzovať sa na žiadne konkrétne diaľkové ovládanie (Prečo? - „To nie je zaujímavé!“), ale vytvoriť systém, ktorý dokáže rôzne modely diaľkové ovládače z rôzne vybavenie. Len keby sa IR prijímač nevzdal a s istotou zachytil signál.

Signál zachytíme pomocou fotodetektora. Navyše nie každý prijímač je vhodný - nosná frekvencia sa musí zhodovať s frekvenciou diaľkového ovládača. Nosná frekvencia prijímača je uvedená v jeho označení: TSOP17xx - 17 je model prijímača a xx je frekvencia v kilohertzoch. A nosná frekvencia Diaľkové ovládanie nájdete v dokumentácii alebo na internete. V princípe bude signál prijímať aj keď sa frekvencie nezhodujú, ale citlivosť bude na hovno - budete musieť strčiť diaľkové ovládanie priamo do prijímača.

Každá firma, ktorá vyrába domáce prístroje, je nútená dodržiavať normy pri výrobe hardvéru. A štandardné sú aj modulačné frekvencie diaľkových ovládačov. Vývojári si však potrpia na softvérovú stránku – rozmanitosť výmenných protokolov medzi diaľkovým ovládačom a zariadením je jednoducho úžasná. Preto som musel vymyslieť univerzálny algoritmus, ktorému na výmennom protokole nezáleží. Funguje to takto:

Pamäť zariadenia sa ukladá kontrolné body. Pre každý takýto bod je potrebné zaznamenať čas a stav výstupu z IR prijímača - 0 alebo 1.
Pri príjme signálu z diaľkového ovládača bude MK postupne kontrolovať každý bod. Ak sa všetky body zhodovali, potom to bolo práve to tlačidlo, pre ktoré bolo zariadenie naprogramované. A ak sa výstup z prijímača aspoň v jednom bode nezhoduje so šablónou, tak zariadenie nebude nijako reagovať.

Bugy však nikto nezrušil! Je možné, že signál sa bude líšiť od šablóny, ale
v kontrolných bodoch budú hodnoty rovnaké. Vyjde to falošný poplach. Vyzeralo by to ako vzácny bastard a je naozaj ťažké s ním bojovať! Ale v skutočnosti nie je všetko také zlé (a na niektorých miestach je to dokonca dobré).

Po prvé, máme digitálny signál, čo znamená, že impulzy prichádzajú s neustálym oneskorením (časovaním) a jednoducho nevznikajú. Preto, ak sú body dostatočne husté, nemusíte sa báť, že nejaký impulz vynecháte.

Po druhé, malý hluk (zvyčajne vyzerá ako zriedkavé krátke impulzy) vo väčšine prípadov prechádza lesom - pretože ak nezasiahne priamo kontrolný bod, neovplyvní systém vôbec. To znamená, že máme prirodzenú ochranu pred hlukom.

Druhý typ chýb (známy ako „Chýbajúci príkaz“) sa vyskytuje v dôsledku skutočnosti, že bod je umiestnený príliš blízko okraja impulzu (k miestu, kde signál na výstupe prijímača mení svoju úroveň).
Predstavte si, že niekoľko mikrosekúnd po kontrolnom bode by sa signál mal zmeniť z VYSOKÉHO na NÍZKY. Teraz si predstavte, že diaľkové ovládanie vydalo príkaz trochu rýchlejšie ako zvyčajne (stáva sa to pomerne často). Čelo impulzu sa posunulo v čase a teraz sa vyskytuje PRED kontrolným bodom! Výstup z prijímača sa nezhoduje so vzorom a systém sa resetuje.
Aby ste tomu zabránili, musíte umiestniť kontrolné body ďalej od frontov.

"Všetko je v pohode," poviete, "Ale kde môžem získať kontrolné body?" Tak na tomto som sa zasekol už dlho. V dôsledku toho som sa rozhodol zveriť umiestňovanie bodov vám.
Zariadenie má prepojku J1. Ak je pri zapnutí zatvorený, zariadenie bude hlúpo vysielať cez UART všetko, čo vyvedie IR prijímač. Na druhej strane drôtu tieto údaje prijíma môj program, ktorý zobrazuje impulzy z TSOP na obrazovke počítača. Jediné, čo musíte urobiť, je použiť myš na rozptýlenie kontrolných bodov pozdĺž tohto grafu a ich flashovanie do EEPROM. Ak nie je možné použiť UART, potom príde na záchranu jumper J2. Keď je zatvorený, zariadenie nevysiela dáta cez UART, ale ukladá ich do EEPROM.


Schéma
Jednoduché ako peklo. Ako ovládač som zobral ATTiny2313. Frekvencia 4 megahertz, z kremeňa, alebo interný RC reťazec.
Linky RX a TX pre komunikáciu a napájanie sú k dispozícii na samostatnom konektore. Tam sa zobrazí RESET, aby ste mohli preflashovať MK bez toho, aby ste ho vybrali zo zariadenia.
Výstup fotodetektora je pripojený na INT0, na napájanie je pripojený cez odpor 33k. Ak je silné rušenie, môžete tam dať menší odpor, napríklad 10k.
Na kolíkoch D4 a D5 sú prepojky. Jumper1 na D5 a Jumper2 na D4.

Napájací modul je pripojený na pin D6. Navyše som vzal najmenší triak, ktorý som mal - BT131. Jeho prúd je 1A - nie je v pohode, ale telo nie je príliš veľké - TO92. Pri malých nákladoch je to tak. Optočlen som vyrobil na MOC3023 - nemá snímač prechodu nulou, čiže je vhodný na plynulé riadenie záťaže (nikdy som to tu neimplementoval).

Port B je takmer úplne pripojený ku konektoru - môžete tam pripojiť indikátor alebo niečo iné. Tento istý konektor používam pri flashovaní firmvéru zariadenia. Pin B0 je obsadený LED.

Celé je to napájané cez LM70L05 a diódový mostík. To znamená, že pri vchode sa môžete odovzdať striedavé napätie, napríklad z transformátora. Hlavná vec je, že nepresiahne 25 voltov, inak zomrie stabilizátor alebo kondenzátor.

Platba dopadla takto:


Áno, je mierne odlišná od dosky, ktorá je v archíve. Ale to neznamená, že som si urobil uber-advanced board a dal vám demo verziu :). Naopak, moja doska má pár nedostatkov, ktoré vo finálnej verzii nie sú: nemám pin RESET pripojený na pin a LED visí na PB7. A to nie je príliš priaznivé pre programovanie v obvode.

Firmvér
Zariadenie môže pracovať v dvoch režimoch. V prvom - keď je J2 zatvorený - jednoducho vysiela impulzy z fotodetektora do UART. Začnime s tým:

UART pracuje rýchlosťou 9600, t.j. pri frekvencii 4 MHz zapisujeme do registra UBRR 25.

...počkáme, kým noha fotodetektora škubne. Hneď ako klesne (spočiatku visí na pull-up rezistore), spustíme časovač (TIMER/COUNTER1, ten so 16 bitmi) a zapneme prerušenie INT0 pre akúkoľvek zmenu vstupu - akúkoľvek logickú zmenu (ICS00 = 1 ). Časovač tiká...čakáme.

Pulz z diaľkového ovládača skončil - výstup z fotodetektora vystrelil, prerušenie fungovalo. Teraz zapíšeme hodnotu časovača do pamäte a resetujeme časovač. Musíte tiež zvýšiť ukazovateľ zápisu, aby ste mohli zapisovať do inej pamäťovej bunky pri nasledujúcom prerušení.

Ďalší impulz... škubne výstup... prerušenie... zápis hodnoty časovača do pamäte... resetovanie časovača... ukazovateľ + 2 (zapisujeme dva bajty naraz)...

A to bude pokračovať, kým nebude jasné, že koniec (RAM) je blízko. Alebo kým signál neskončí. V každom prípade zmrazíme časovač a zakážeme prerušenia. Potom pomaly hodíme všetko, čo sme nazbierali, do UARTu. Alebo, ak je J2 zatvorený - do EEPROM.

Na konci to môžete otupiť nekonečný kolobeh a počkajte na reset - misia dokončená.
A výstupom bude postupnosť čísel. Každý z nich predstavuje čas medzi zmenami stavu výstupu TSOP. Keď vieme, kde sa táto sekvencia začala (A my vieme! Toto je prechod z VYSOKÉHO na NÍZKE), môžeme obnoviť celý obraz:

Po inicializácii sedíme a čakáme, kým sa TSOP pohne. Hneď ako sa tak stane, načítame prvý bod z EEPROM a v jednoduchej slučke stlačíme toľko, koľko je tam napísané. V tomto prípade počítame čas v balíkoch po 32us. Keď vyjdeme zo strnulosti, skontrolujeme, čo je na výstupe prijímača.

Ak sa výstup nezhodoval s tým, čo sme očakávali, nie je to náš tím. Pokojne môžete počkať na koniec signálu a začať odznova.

Ak výstup zodpovedá našim očakávaniam, načítame ďalší bod a skontrolujeme ho. Takže kým nenarazíme na bod, ktorého čas = 0. To znamená, že už nie sú žiadne body. To znamená, že celý tím sa zhodoval a vy môžete ťahať náklad.

Ukazuje sa teda, že ide o jednoduchý algoritmus. Ale čím jednoduchšie, tým spoľahlivejšie!

Softina
Najprv som uvažoval o tom, že by som si predlohu automaticky zapamätal. To znamená, že zatvoríte prepojku, strčíte diaľkové ovládanie do TSOP a MK sám umiestni ovládacie body a vloží ich do EEPROM. Potom sa ukázalo, že nápad bol šialený: viac-menej adekvátny algoritmus by sa ukázal byť príliš zložitý. Alebo to nebude univerzálne.

Druhým nápadom bol program pre počítač, v ktorom si môžete sami nastaviť kontrolné body. Technologicky nie veľmi vyspelé, ale čokoľvek je lepšie, ako zveriť túto záležitosť MK.


Naučíme zariadenie reagovať na požadované tlačidlo na diaľkovom ovládači:

1) Zatvorte prepojku J1.

2) Pripojte UART. Ak nie je možné ho pripojiť, zatvorte prepojku J2. Potom zariadenie uloží dáta do EEPROM.

3) Zapnite napájanie.

4) Ak sa rozhodneme použiť UART, tak spustíme softvér a pozrieme sa na stavový riadok (v spodnej časti okna). Malo by povedať „ COM port OTVORENÉ." Ak to nie je napísané, hľadáme zárubňu v spojení a stlačíme tlačidlo „Pripojiť“.

5) Vezmite diaľkový ovládač a šťuknite požadované tlačidlo v TSOP. Hneď ako zariadenie zaznamená, že signál prišiel, LED sa rozsvieti. Ihneď potom začne zariadenie prenášať dáta cez UART (alebo zapisovať do EEPROM). Po dokončení prenosu LED zhasne.

6.1) Ak pracujeme cez UART, kliknite na tlačidlo „Načítať cez UART“. A sme spokojní s nápisom „Loaded the chart...“ v stavovom riadku.

6.2) Ak pracujeme cez EEPROM, tak ju načítame programátorom Pamäť EEPROM a uložte ho do *. bin súbor. (Presne bin!). Potom kliknite v programe na tlačidlo „Load.bin“ a vyberte súbor s EEPROM.

7) Pozeráme sa na načítaný graf - toto je signál z TSOP. Na bočnom paneli sa nachádza posúvač, pomocou ktorého môžete zmeniť mierku. Teraz klikneme myšou na rozvrh a nastavíme kontrolné body. Kliknite pravým tlačidlom myši body sú odstránené. Len ich nedávajte príliš blízko k predným častiam. Ukazuje sa niečo takéto:


8) Kliknite na „Save.bin“ a uložte body. Potom tento súbor flashujeme do EEPROM. Keďže čas medzi dvoma bodmi vtesnáme do 7 bitov, je obmedzený na 4 ms. Ak čas medzi dvoma bodmi prekročí túto hodnotu, program odmietne vložiť body do súboru.

9) Odstráňte prepojky. Reštartujte zariadenie. Pripravený!

Testovacie video

Ahojte všetci! Tu budeme hovoriť o tom, ako urobiť najjednoduchšie IR ovládanie (). Tento okruh môžete dokonca ovládať bežným diaľkovým ovládačom televízora. Hneď vás varujem, vzdialenosť nie je veľká - asi 15 centimetrov, ale aj tento výsledok poteší začiatočníka v práci. S podomácky vyrobeným vysielačom sa dosah zdvojnásobí, to znamená približne o ďalších 15 centimetrov. Diaľkové ovládanie je vyrobené jednoducho. Pripojíme IR LED k 9-voltovej „korune“ cez 100-150 ohmový odpor, pričom nastavujeme bežné tlačidlo bez upevnenia ju prilepte k batérii elektrickou páskou a elektrická páska by nemala rušiť infračervené žiarenie IR LED.

Na fotografii sú zobrazené všetky prvky, ktoré potrebujeme na zostavenie obvodu

1. Fotodióda (možná je takmer každá)
2. Rezistor pre 1 ohm a pre 300-500 ohmov (Pre prehľadnosť som na fotografiu umiestnil odpory pre 300 a 500 ohmov)
3. Trimmerový odpor v 47 izbách
4. Tranzistor KT972A alebo podobný v prúde a štruktúre.
5. Môžete použiť akúkoľvek nízkonapäťovú LED.

Schéma IR riadiaceho prijímača na jednom tranzistore:


Začnime vyrábať fotodetektor. Jeho diagram bol prevzatý z jednej referenčnej knihy. Najprv si tabuľu nakreslíme permanentnou fixou. Dá sa to ale urobiť aj závesnou inštaláciou, ale je vhodné to urobiť na DPS. Moja tabuľa vyzerá takto:


No, teraz, samozrejme, začnime spájkovať prvky. Spájkovanie tranzistora:



Spájkujte odpor 1 kOhm (Kilohm) a konštrukčný odpor.


A nakoniec spájkujeme posledný prvok- toto je odpor 300 - 500 Ohm, nastavil som ho na 300 Ohm. Zverejnil to s opačná strana vytlačená obvodová doska, pretože mi nedovolil dotknúť sa ho spredu, kvôli jeho mutáciám labiek =)


Celé to vyčistíme zubnou kefkou a alkoholom, aby sme zmyli zvyšnú kolofóniu. Ak je všetko bez chýb zmontované a fotodióda funguje správne, bude fungovať okamžite. Video tohto dizajnu v akcii si môžete pozrieť nižšie:

Vo videu je vzdialenosť malá, keďže ste sa museli pozerať na kameru aj na diaľkové ovládanie súčasne. Preto som nemohol zaostriť smery diaľkového ovládača. Ak namiesto fotodiódy dáte fotorezistor, bude reagovať na svetlo, osobne som si overil, že citlivosť je ešte lepšia ako v pôvodné schémy fotorezistor. Do obvodu som dodal 12V, funguje to v pohode - LED svieti jasne, jas a citlivosť fotorezistora je upravená. Momentálne vyberám prvky pomocou tohto obvodu, aby som mohol napájať IR prijímač od 220 voltov a výstup na žiarovku je tiež 220V. Špeciálne poďakovanie za poskytnutý diagram: thehunteronghosts . Materiál poskytol: