Infrarød kontroll. Enhetens fjernkontrollkrets. Maksimal lasteeffekt på én kanal, W

(oversettelse fra engelsk)

Infrarøde stråler er mest billig måte til fjernkontroll enhet i det usynlige lysområdet. Nesten alle lyd- og videoenheter er IR-kontrollerte. I tilknytning til utbredt brukt av nødvendige komponenter, IR-kontroll har blitt veldig billig, noe som gjør den ideell for hobbyister å bruke til sine egne prosjekter.
Jeg vil forklare teorien bak IR-fjernkontrollen og noen av protokollene som brukes i forbrukerelektronikk.

Infrarød er faktisk vanlig lys med en viss farge... Vi mennesker kan ikke se denne fargen fordi bølgelengden er 950nm, som er under det synlige spekteret. Dette er en av grunnene til at IR-lys er valgt for fjernstyringsformål, vi ønsker å bruke, men vi er ikke interessert i å se dette lyset. En annen grunn er at IR-kontroller er ganske enkle å lage og derfor billige å produsere. Selv om vi mennesker ikke kan se infrarødt lys som sendes ut fra fjernkontrollen, betyr det ikke at vi ikke kan gjøre det synlig.

Videokamera eller digitalkamera kan "se" infrarødt lys, som du kan se på dette bildet. Hvis du har et webkamera som du er heldig, hold fjernkontrollen, trykk på hvilken som helst knapp og du vil se en blinkende indikator. Dessverre er det fortsatt mange kilder til infrarødt lys rundt oss. Solen er en lyskilde for dem alle, men det er for eksempel: lamper, stearinlys, sentralvarmesystemer, og til og med kroppen vår sender ut infrarødt lys. Faktisk avgir alt som avgir varme også infrarødt lys. Derfor må vi ta noen forholdsregler for å sikre at våre IR-meldinger når mottakeren uten feil.

Modulering

Modulering er nødvendig for at signalet vårt skal skille seg ut fra bakgrunnsstøyen. Med modulering blinker IR-signalet med en bestemt frekvens. IR-mottakeren vil være innstilt på den frekvensen, slik at den kan ignorere alt annet.

På bildet kan du se til venstre en basebåndsender som bruker en IR LED. Signalet registreres i mottakeren på den andre siden. I seriekommunikasjon snakker vi vanligvis om «markører» og «mellomrom». "Space" - perioden i fravær av signaler fra senderen. Det sendes ikke ut noe lys på dette tidspunktet. Etter nedetid går "markørene" av IR-pulser inn en viss frekvensområde... Frekvenser mellom 30 kHz og 60 kHz brukes ofte i forbrukerelektronikk... Ved mottakerens utgang er "mellomrom" representert av et høyt logisk nivå. "Marker" representerer lavt nivå... Vær oppmerksom på at "markører" og "mellomrom" ikke er 1-er og 0-ere som skal passeres. Det faktiske forholdet mellom "markører" og "mellomrom" og enere og nuller avhenger av protokollen som brukes. Mer informasjon om dette finner du på sidene som beskriver protokollene.

Sender

Sendere er vanligvis fjernkontroller med batterier. Den skal bruke så lite strøm som mulig og IR-signalet bør være så pålitelig som mulig for å oppnå akseptabel fjernkontroll. Den skal helst være støtsikker.
Mange brikker er designet for bruk som IR-sendere. Eldre brikker ble designet for bare én av flere protokoller som er i bruk i dag. På det nåværende tidspunkt gjør det svært lave forbruket av mikrokontrollere at de kan brukes i IR-sendere, og de er også mer fleksible i bruk. Hvis knappen ikke trykkes inn, er de i hvilemodus, i hvilken lav strøm forbruk. Prosessoren "våkner" for å sende den tilsvarende IR-kommandoen bare når en tast trykkes.
Kvartskrystaller brukes sjelden i slike konsoller. De er veldig skjøre og har en tendens til å knekke lett når fjernkontrollen slippes. Keramiske resonatorer er mye mer egnet fordi de tåler høye fysiske overbelastninger. At de er mindre nøyaktige er slett ikke viktig.
Strømmen gjennom LED-en (eller LED-ene) kan variere fra 100mA til over 1A! For å oppnå en akseptabel kontrollavstand må LED-strømmen være så høy som mulig. Her kan du velge et kompromiss mellom LED-parameter, batterilevetid og maksimal avstand. LED-strømmer kan være høye fordi LED-drivpulsene er svært korte. Den gjennomsnittlige strålingseffekten til LED-en bør ikke overstige maksimal verdi... Du må også sørge for at det raskeste gjeldende blikket for lysdioder ikke overskrides. Alle disse parameterne finnes i LED-spesifikasjonen.

Enkel transistorkrets som kan brukes til lysdioder. En transistor med passende hFE og koblingshastighet må tilpasses denne kretsen.
Motstandsverdien kan beregnes ved å bruke Ohms lov. Husk at det nominelle spenningsfallet per IR LED er ca. 1,1V.
Standard driver beskrevet ovenfor har en ulempe. Lekkasje av batterispenning, hvor strømmen gjennom LED-en vil avta, og dette vil føre til en reduksjon i kontrollavstanden.

For å unngå dette settes 2 dioder i serie i emitterkretsen. Med en serie pulser basert på transistoren vil spenningen begrenses til 1,2V. Base-emitteren til transistoren trekker fra 0,6V, noe som resulterer i en amplitude på 0,6V ved emitteren. Det er enkelt å beregne strømmen gjennom LED-en - igjen ved å bruke Ohms lov.

Mottaker

Det er mange forskjellige mottakere på markedet nå. De viktigste kriteriene for valg av modulasjonsfrekvens brukes og tilgjengelighet.

På bildet over kan du se et typisk blokkskjema over en slik IR-mottaker. Ikke bekymre deg hvis du ikke forstår delene, alt er bygget i én elektronisk komponent. Mottatt IR-signal fra deteksjonsfotodiode (på venstre side av diagrammet). Dette signalet forsterkes og begrenses i de to første trinnene. AGC fungerer som en begrenser for å oppnå et konstant pulsnivå, uavhengig av avstanden til konsollen. Deretter, fra AGC, går signalet til et båndpassfilter (BPF). Båndpassfilteret er innstilt til modulasjonsfrekvensen til konsollen. Totalt frekvensområde fra 30 kHz til 60 kHz for forbrukerelektronikk... Neste trinn: detektor, integrator og komparator. Hensikten med disse tre blokkene er å oppdage tilstedeværelsen av en modulasjonsfrekvens. Denne modulasjonsfrekvensen representerer utgangen fra komparatoren som et lavt signal.
Som jeg sa tidligere, er alle disse blokkene integrert i en enkelt Elektronisk komponent... Det er mange forskjellige produsenter av disse komponentene på markedet. Enhetene er tilgjengelig i flere versjoner, som hver er innstilt til en spesifikk modulasjonsfrekvens.
Merk at forsterkeren er satt til en veldig høy forsterkning. Derfor leser systemet veldig enkelt. Koble til en stor kondensator, ved i det minste 22mF, til strømforsyningen til mottakeren er obligatorisk. Noen datablad anbefaler å sette en motstand på 330 ohm i serie med strømforsyningen for ytterligere å skille strømmen fra resten av kretsen.

Det finnes flere produsenter av IR-mottakere på markedet. Siemens, Vishay Telefunken og er hovedleverandørene i Europa. Siemens har sin SFH506-xx-serie, der xx betegner modulasjonsfrekvensen på 30, 33, 36, 38, 40 eller 56kHz. Telefunken produserte deres TFMS5xx0- og TK18xx-serier, der xx igjen indikerer modulasjonsfrekvensen til enheten. Det ser ut til at disse komponentene allerede er avviklet. De blir erstattet av Vishay TSOP12xx, TSOP48xx og TSOP62xx.
Sharp, Xiamen Hualian og Japanese Electric er de 3 beste asiatiske IR-selskapene. Sharp produserer enheter med svært kryptiske navn som: GP1UD26xK, GP1UD27xK og GP1UD28xK, hvor x-en er relatert til frekvensmodulasjon. Hualian har sin egen HRMxx00-serie, det samme har HRM3700 HRM3800. Japanese Electric har en rekke enheter som ikke inkluderer modulasjonsfrekvensen i delnavnet. PIC12043LM er innstilt til 36,7 kHz og PIC12043LM er innstilt til 37,9 kHz.

Slutt?

Dette avslutter teorien om operasjon for IR-fjernkontrollsystemer designet for bruk i forbrukerelektronikk. Jeg forstår at det finnes andre måter å implementere IR-kontroll på, men jeg vil begrense meg til beskrivelsen ovenfor. Et av problemene som ikke dekkes her er sikkerhet. Sikkerhet spiller ingen rolle om jeg bare trenger å kontrollere videospilleren eller TV-en. Men når det gjelder å åpne en dør eller en bil, må nøkkelsignalet være unikt! Kanskje jeg skal snakke om dette senere, men ikke nå.
Jeg forstår også at min lille liste over produsenter er langt fra komplett. Det er neppe mulig å liste opp alle produsenter her. Du kan sende meg e-post hvis du har informasjon om andre protokoller som du mener må legges til sidene.
Denne siden er kun en beskrivelse av den grunnleggende teorien om hvordan IR-fjernkontroller fungerer. Den beskriver ikke protokollene som er involvert i kommunikasjonen mellom sender og mottaker. Det er forskjellige protokoller utviklet av forskjellige produsenter.

Infrarød fjernkontroll er en av de mest enkle måter interaksjon med elektroniske enheter... Så i nesten alle hjem er det flere slike enheter: en TV, musikksenter, videospiller, klimaanlegg. Men mest interessant applikasjon infrarød fjernkontroll- fjernkontroll av roboten. Faktisk, i denne leksjonen vil vi prøve å implementere en slik kontrollmetode ved å bruke den populære Arduino Uno-kontrolleren.

1. IR fjernkontroll

Hva skal til for å lære en robot å adlyde en infrarød (IR) fjernkontroll? Først trenger vi selve fjernkontrollen. Du kan bruke en vanlig TV-fjernkontroll, eller du kan kjøpe en miniatyrfjernkontroll for bilradio. Det er disse konsollene som ofte brukes til å kontrollere roboter.

Denne fjernkontrollen har 10 tallknapper og 11 knapper for å manipulere musikk: volum, spole tilbake, spille av, stopp osv. Mer enn nok for våre formål.

2. IR-sensor

For det andre, for å motta et signal fra fjernkontrollen, trenger vi en spesiell IR-sensor. Generelt kan vi oppdage infrarød stråling med en konvensjonell fotodiode/fototransistor, men i motsetning til den, oppfatter vår IR-sensor kun et infrarødt signal ved en frekvens på 38 kHz (noen ganger 40 kHz). Det er denne egenskapen som gjør at sensoren kan ignorere mye ekstern lysstøy fra belysningslamper og solen.

For denne opplæringen bruker vi den populære IR-sensoren. VS1838B, som har følgende egenskaper:

  • bærefrekvens: 38 kHz;
  • forsyningsspenning: 2,7 - 5,5 V;
  • forbruksstrøm: 50 μA.

Andre sensorer kan brukes, for eksempel: TSOP4838, TSOP1736, SFH506.

3. Tilkobling

Sensoren har tre ledninger (tre ben). Hvis du ser på sensoren fra siden av IR-signalmottakeren, som vist på figuren,

  • så til venstre vil det være - utgang til kontrolleren,
  • i midten - negativ strømkontakt (jord),
  • og til høyre er den positive strømkontakten (2,7 - 5,5V).

Skjematisk koblingsskjema

Layout utseende

4. Program

Ved å koble til IR-sensoren vil vi skrive et program for Arduino Uno. Til dette vil vi bruke standard bibliotek IR-fjernkontroll, som er designet nettopp for å forenkle arbeidet med mottak og overføring av IR-signaler. Ved hjelp av dette biblioteket vil vi motta kommandoer fra fjernkontrollen, og for det første er det bare å vise dem i monitorvinduet seriell port... Dette programmet er nyttig for oss for å forstå hvilken kode hver knapp gir.

#include "IRremote.h" IRrecv irrecv (2); // spesifiser utgangen som mottakeren er koblet til decode_results results; void oppsett () (Serial.begin (9600); // still inn hastigheten COM-port og irrecv.enableIRIn (); // begynn å motta) void loop () (if (irrecv.decode (& resultater)) (// hvis dataene kom Serial.println (results.value, HEX); // skriv ut dataene irrecv.resume (); / / godta neste kommando))

Vi laster programmet til Arduino. Etter det prøver vi å motta kommandoer fra fjernkontrollen. Åpne serieportmonitoren (Ctrl + Shift + M), ta opp fjernkontrollen og pek den mot sensoren. Ved å trykke på forskjellige knapper ser vi kodene som tilsvarer disse knappene i monitorvinduet.

Problem med å laste programmet

I noen tilfeller, når du prøver å laste programmet inn i kontrolleren, kan det vises en feil:

TDK2 ble ikke erklært i hans omfang

For å fikse det, slett bare to filer fra bibliotekmappen. Vi går inn i utforskeren. Gå til mappen der programmet er installert Arduino IDE(mest sannsynlig er dette "C: \ Program Files (x86) \ Arduino"). Så til bibliotekmappen:

... \ Arduino \ biblioteker \ RobotIRremote

Og slett filene: IRremoteTools.cpp og IRremoteTools.h. Start deretter Arduino IDE på nytt, og prøv igjen å laste ned programmet til kontrolleren.

5. Vi styrer LED-en ved hjelp av IR-fjernkontrollen

Nå som vi vet hvilke koder som tilsvarer knappene på fjernkontrollen, prøver vi å programmere kontrolleren til å tenne og slå av LED-en når volumknappene trykkes inn. For å gjøre dette trenger vi koder (kan variere, avhengig av fjernkontrollen):

  • FFA857 - volumøkning;
  • FFE01F - volum ned.

Som LED bruker vi den innebygde LED på pin 13, så koblingsskjemaet forblir det samme. Så programmet:

#include "IRremote.h" IRrecv irrecv (2); // spesifiser utgangen som mottakeren er koblet til decode_results results; void oppsett () (irrecv.enableIRIn (); // begynn å motta) void loop () (if (irrecv.decode (& results)) (// if the data came switch (results.value) (case 0xFFA857: digitalWrite ( 13, HIGH); break; case 0xFFE01F: digitalWrite (13, LOW); break;) irrecv.resume (); // godta neste kommando))

Last opp til Arduino og test. Vi trykker vol +- LED-en lyser. Vi trykker vol-- slukker. Nå, når du vet hvordan alt fungerer, kan du kontrollere robotens motorer eller andre hjemmelagde mikroelektroniske enheter i stedet for LED!


det ble laget en modul for å styre roboten via IR-kanalen. Det er det jeg vil skrive mer detaljert om. Siden det er mange søknader om dette.

Egentlig, hva er IR-kontroll - jeg tror det ikke er nødvendig å forklare. Nå mer vanlig kontroll over Wi-Fi, Bluetooth, ZigBee. Men om du trenger en enkel enhet som kan monteres "på kneet" med minimumskostnader da er denne artikkelen for deg. =)


Jeg vil ikke knytte denne artikkelen til en spesifikk mikrokontroller, men jeg vil beskrive de generelle prinsippene for drift av en IR-forsender med en AVR MK.

1. Hva kreves
Når du lager en enkel IR-kontroll, er den uuttalte standarden å bruke en Vishay TSOPxxxx-mottaker og en TSALxxxx-diode som sender.

I betegnelsen på TSOP-mottakere indikerer de to siste sifrene frekvensen (i kHz) som overført signal... Det er ingen spesielle vanskeligheter med å jobbe med disse komponentene. Du kan skrive din egen overføringsprotokoll, du kan bruke ferdige løsninger. I mitt tilfelle bestemte jeg meg for å koble de to mikrokontrollerne med en IR-kanal ved hjelp av USART. Prinsippet er det samme som om vi koblet to MK-er med vanlige ledninger. Den eneste nyansen er i moduleringen av bærefrekvensen og i timerinnstillingen.

2. Ordninger
For ikke å gjerde hager, vil vi bruke TSOP-svitsjekretsen fra dataarket:

TSOP-utgangen må kobles direkte til (RX)-inngangen til USART MK.

Med tilkoblingen av senderen er situasjonen litt annerledes. Siden mottakeren kun fungerer på en bestemt frekvens, må du stille inn samme frekvens på senderen. Det er ikke vanskelig å gjøre dette ved å programmere en timer. For ATmega16 vil det se slik ut:
TCCR1A = 0x40;
TCCR1B = 0x09;
OCR1AH ​​= 0x00;
OCR1AL = 0x84;

Den nødvendige frekvensen kan uttrykkes fra formelen:

OCRn - det vil være den ønskede verdien, som må konverteres til heksadesimalt format og skrives til OCR1A-registeret (for tilfellet med ATmega16 MK).

Nå vil TSOP motta signalet vårt. Men for å bruke USART, må vi modulere signalet vårt. Slik at dette kan gjøres, kobler vi IR-dioden i henhold til skjemaet:

3. Noe kode
Jeg skrev fastvaren i CodeVision AVR.

Slik vil koden for senderen se ut:
#inkludere
#inkludere

Ugyldig hoved (ugyldig)
{
PORTB = 0x00;
DDRB = 0x02;

DDRC = 0x00;
PORTC = 0xFF;

TCCR1A = 0x40;
TCCR1B = 0x09;
OCR1AH ​​= 0x00;
OCR1AL = 0x84; // Her legger vi inn verdien for frekvensen din

// Kommunikasjonsparametere: 8 data, 1 stopp, ingen paritet
// USART-modus: Asynkron
// USART Baud Rate: 2400
UCSRA = 0x00;
UCSRB = 0x08;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0xCF;

Mens (1)
{

Hvis (PINC.4 == 0x00) (putchar ("S");) / * B i dette tilfellet når du trykker på knappen som henger på PINC.4 sender MK tegnet "S". Som overføres til en annen kontroller via IR. * /
};
}

Jeg gir ikke mottakerkoden, fordi tar mye plass, men for persepsjon generelle prinsipper senderkoden blir nok, tror jeg.

I tillegg til fjernkontroll (selv om dette allerede er et bredt spekter av applikasjoner), kan du bruke denne metoden for sensorer for hindring / objektpassasje, og hvis du har mange slike sensorer, og de fungerer på samme frekvens, så forskjellige pakker kan overføres slik at de ikke lyser opp hverandre.

Lykke til! Jeg vil være glad for spørsmål / kritikk / forslag;)

UPD. Jeg bestemte meg for å legge ut et bilde av selve fjernkontrollen slik at man kan se at enheten ikke bare fungerer som kinesiske mottakere som kobles til en PC. Mulighetene er mye bredere og mer allsidige.

Generelt er fjernkontrollen (RCU) trådløs eller kablet enhet, designet for å kontrollere enhver mekanisme, gjenstand eller prosess på avstand. Alle fjernkontrollenheter er delt inn i grupper:

  • ved metoden for å motta strømforsyning: med kabel, autonom;
  • gjennom kanalen som brukes for å overføre kontrollsignaler: IR, ultralyd, radio, ledning, mekanisk stasjon;
  • etter funksjonalitet: med ett sett med kommandoer, universell for flere enheter fra samme produsent, programmerbar (lærer);
  • av mobilitet og andre egenskaper.

For øyeblikket er den vanligste typen fjernkontroll mobil autonom trådløs enhet med anleggsledelse infrarød kanal(IR). Det er denne typen fjernkontroller vi bruker i hverdagen, når vi sender kontrollsignaler til en TV, klimaanlegg, musikksenter, spiller og annet husholdningsapparater.

I de første konsollmodellene var det et minimum av kontrollelementer bare for å utføre grunnleggende funksjoner. Over tid har tilnærmingen endret seg: moderne produkter har et komplett sett med kontroller, og de kontrollerte enhetene selv inneholder et begrenset sett av dem.

Fjernkontroll enhet

Innretningen er en liten avlang plastboks. På den fremre delen er det knapper, ved hjelp av hvilke valg av kontrollkommando utføres.

På slutten av enheten er det hull for linsen til IR-senderen, som direkte sender kommandoen for utførelse. MED baksiden, under dekselet er det en nisje for å installere batterier. Vanligvis er dette to AAA-batterier.

Hvis vi demonterer fjernkontrollen ved å koble dens øvre del fra den nedre, vil vi se to elementer til. Først - trykt kretskort med kontaktputer og påmontert elektronikk.
Den andre er et overlegg laget av mykt elastisk materiale med hevede knapper kontroller med ledende skiver.

Infrarød trådløs fjernkontroll: hvordan den fungerer

Enheten til fjernkontrollen og betjeningen av fjernkontrollen er basert på enveis eller toveis overføring av informasjon mellom fjernkontrollen og det kontrollerte objektet ved bruk av lysstråler i det infrarøde området. IR-mottakere og -sendere brukes til å motta og sende signaler.

Konsollene som styrer klimaanlegget har en krets med en toveis informasjonsoverføringskanal: et kontrollsignal sendes til klimaanlegget, og enhetens driftsparametre og temperaturdata returneres tilbake.

Alle andre modeller er i det overveldende flertallet av tilfellene enkanals.

Sende og motta kommandoer

Ta operasjonen som er mest vanlig i hverdagen: fjernkontroll trådløs kontroll TV. Det første kretsen gjør er å bestemme hvilken knapp som ble trykket på. Bestemmelsesprinsippet er det samme som i data-tastatur: skanner en matrise av plasserte knapper. Men i motsetning til PC-tastaturet, på fjernkontrollen skannegenerator er i standby-modus og slås kun på når du trykker på knappene på fjernkontrollen. Dette gir en økonomisk bruk av batterier.

Deretter blir kontrollsignalet (kommando) kodet og overført av IR LED. Før overføringen av hovedsignalet synkroniseres sende- og mottaksenhetene, og korrespondansen til fjernkontrollkoden kontrolleres også på mottakersiden. Selve overføringen vil bli utført så lenge kontrollknappen holdes nede.

Det skal bemerkes at produsenter elektroniske enheter er ikke begrenset på noen måte i å lage algoritmer for koding av styresignaler og brukte modulasjonsfrekvenser. Dette fører til at ofte selv modeller av samme type fra samme produsent krever forskjellige kontrollpaneler for kontroll.

Fjernkontrollkrets

De fleste av ordningene for TV-fjernkontroller og andre husholdningsapparater er basert på de viktigste mikrokrets generere et kontrollsignal etter å ha trykket på den tilsvarende tasten, signalforsterker og IR LED... Den eneste forskjellen er i navnet og arrangementet av radioelementer inne i enhetens kabinett og på kretskortet.

Mikrokretsen er en spesialisert mikrokontroller, som den skrives inn i under produksjonsprosessen programkode... Det innspilte programmet endres da ikke under drift. Styret inneholder også kvartsresonator for å synkronisere frekvensen til mottakeren og senderen. Signalforsterkeren er en del av mikrokretsen eller er laget på et eget element.

Til selvskaping en slik enhet, i tillegg til amatørradioferdigheter, må du også kunne lage programkode for mikrokontrollere.

Fjernkontroll for PC

Fjernkontroll for personlig datamaskin kan være nyttig når du arbeider med et grensesnitt som operativsystem, og når du administrerer operasjonen ulike programmer... For eksempel administrere presentasjoner i Power point eller spille av medieinnhold i Mediasenter ... Noen ganger følger disse fjernkontrollene allerede med PC-en.

Produsenter av PC-fjernkontroller, i motsetning til TV, har implementert 2 løsninger: IR- og radiofjernkontroller. Faktum er at når den kontrolleres i det infrarøde området, samhandler den med enheten med en direkte siktlinje og i en avstand på opptil 10 m, noe som er tilstrekkelig for TV, men kan vise seg å være upraktisk for å kontrollere en PC , spesielt under presentasjoner. Radiofjernkontrollen øker denne avstanden opp til 30 m uavhengig av hindringer i signalveien.

Eksternt vil radiofjernkontrollen bare skille seg fra IR ved tilstedeværelsen av en liten antenne. Men for å kunne utføre kontroll trenger PC-en ett element til: en radio- eller infrarød signalmottaker installert i en datamaskin eller bærbar PC. Det kan enten være en innebygd enhet eller en modul koblet til USB-port... Det andre alternativet er å foretrekke.

Universal og/eller programmerbar fjernkontroll

Du kan trenge en universalfjernkontroll i to tilfeller:

  1. Ingen erstatning ble funnet for den tapte eller ødelagte gamle TV-fjernkontrollen eller andre husholdningsapparater.
  2. Mange forskjellige husholdningsapparater i ett rom gjør det ekstremt upraktisk å betjene det fra forskjellige konsoller, siden konseptet "riktig design" og "optimal ergonomi" er forskjellig for alle produsenter.

Det finnes to typer slike enheter: konsoller som husker kommandoer (elever), og programmerbare universelle fjernkontroller. I det første tilfellet brukes en standard TV-fjernkontroll eller annen enhet for å angi de nødvendige kodene. I den andre er listen over tilgjengelige koder og modeller av utstyr som kan kontrolleres i instruksjonene for kontrollenheten. Forskjellen er at til tross for de tusenvis av enhetsmodeller som støttes universelle fjernkontroller, ønsket enhet er kanskje ikke på denne listen.

"Læring" av lagringskonsollene utføres i henhold til brukermanualen og ved bruk av den originale fjernkontrollen. Hvis den kjøpte fjernkontrollen har færre taster på frontpanelet enn den "native", bør du først og fremst programmere bare de som er nødvendige.

Etter å ha kjøpt en universell multifunksjonell fjernkontroll, bør du ikke kaste de gamle standardene. For det første kan de være nødvendige hvis en ny plutselig mislykkes. For det andre kan det være at det universelle ikke inneholder noen nødvendige elementer... Og for det tredje kan de være nødvendige for omprogrammering i tilfelle feil eller bytte av batterier.

Smarttelefon som fjernkontroll

Et annet alternativ for en fjernkontroll for nesten alle enheter er å bruke en smarttelefon som en kontrollenhet. Samtidig kan det være implementert eller ikke implementert i overføring av signaler i IR-området (teknologi IrDA). I sistnevnte tilfelle utføres kontrollen via Bluetooth eller Wi-Fi. Den eneste begrensningen er det kontrollert enhet må også støtte disse kommunikasjonsprotokollene, som ikke er implementert på all teknologi.

Mer interessant som en fjernkontroll er varianten av en smarttelefon med en infrarød port. La oss vurdere dette på eksemplet med modellen Xiaomi Redmi 3 og en ganske gammel TV Daevoo... Vi må installere fra Google play spesiell søknad... Det kan være hva som helst, det viktigste er at kontrollobjektmodellen er nødvendig i listen over støttet utstyr. For denne telefonen med et skall fra MIUI det heter Mi fjernkontroll(Russisk språk er tilstede).

Plottet eller "Hvordan enheten begynte"

... Da jeg kom, satt Victoria på sofaen og stirret på TV-en. Det var en tøff dag, så hun ville ikke gjøre noe. I noen minutter så vi noen popserier, så ble det slutt og Vika skrudde av TV-en. Rommet ble mørkt. Det regnet ute, og det så ut til at det var kaldt hjemme også.
Vika reiste seg fra sofaen og begynte, ved berøring, å se etter bryteren fra lampen. Vegglampen hang av en eller annen grunn ikke ved sofaen, men på den andre veggen, og du måtte trampe over rommet for å skru på lyset. Da hun endelig slo den på, var rommet fullt varmt lys glødepærer.
Nær meg, på et krøllete laken, lå TV-fjernkontrollen. De nederste knappene er umerket og mest sannsynlig ikke brukt. Og så fikk jeg en interessant tanke...
– Vic, vil du at jeg skal lage det slik at lampen din kan slås på med fjernkontrollen fra esken? Det er til og med ekstra knapper ...

Konsept
Vår enhet må kunne motta signal fra IR-fjernkontrollen, skille "vår"-knapp fra andre, og kontrollere belastningen. Først og siste poeng enkel som en øks. Men den andre er litt mer interessant. Jeg bestemte meg for å ikke være begrenset til noen spesifikk fjernkontroll (Hvorfor? - "Ikke interessant så!"), men å lage et system som kan fungere med ulike modeller fjernkontroller fra diverse utstyr. Så lenge IR-mottakeren ikke passerer, og selvsikkert fanger opp signalet.

Vi vil fange signalet ved hjelp av en fotodetektor. Dessuten vil ikke alle mottakere passe - bærefrekvensen må samsvare med frekvensen til fjernkontrollen. Bærefrekvensen til mottakeren er angitt i merkingen: TSOP17xx - 17 er mottakermodellen, og xx er frekvensen i kilohertz. Og bærefrekvensen til konsollen finner du i dokumentasjonen eller på internett. I prinsippet vil signalet mottas, selv om frekvensene ikke stemmer, men følsomheten blir dårlig – du må stikke fjernkontrollen direkte inn i mottakeren.

Alle husholdningsapparater er tvunget til å følge standarder for produksjon av maskinvare. Og modulasjonsfrekvensene til konsollene er også standard. Men utviklerne kommer ut på programvaresiden - mangfoldet av utvekslingsprotokoller mellom konsollen og enheten er rett og slett fantastisk. Derfor måtte jeg finne på universell algoritme som ikke bryr seg om utvekslingsprotokollen. Det fungerer slik:

Enheten lagrer kontrollpunkter... For hvert slikt punkt må du registrere tiden og tilstanden til utgangen fra IR-mottakeren - 0 eller 1.
Når den mottar et signal fra fjernkontrollen, vil MC-en kontrollere hvert punkt sekvensielt. Hvis alle punktene er sammenfallende, var dette den samme knappen som enheten ble programmert til. Og hvis utgangen fra mottakeren i det minste på ett punkt ikke samsvarer med mønsteret, vil ikke enheten reagere på noen måte.

Ingen kansellerte imidlertid feilene! Det er mulig at signalet vil avvike fra malen, men
ved bruddpunktene vil verdiene være de samme. Det vil vise seg falsk alarm... Det virker som en sjelden zapadlo, og det er vanskelig å bekjempe det! Men faktisk er ikke alt så ille (og noen ganger til og med bra).

For det første har vi digitalt signal, som betyr at impulsene kommer med konstante forsinkelser (timinger) og bare ikke oppstår. Derfor, hvis punktene er tette nok, kan du ikke være redd for at noen impuls vil bli savnet.

For det andre går liten støy (ser vanligvis ut som sjeldne korte impulser) i de fleste tilfeller gjennom skogen - for hvis den ikke kommer direkte til kontrollpunktet, vil ikke nifiga påvirke systemet. Dette betyr at vi har naturlig beskyttelse mot støy.

Den andre typen feil (aka "Command Skip") oppstår på grunn av det faktum at punktet er plassert for nær pulsfronten (til stedet der signalet ved mottakerens utgang endrer nivået).
Tenk deg at noen få mikrosekunder etter bruddpunktet skal signalet endres fra HØYT til LAVT. Tenk deg nå at fjernkontrollen ga kommandoen litt raskere enn vanlig (det skjer ganske ofte). Fronten på impulsen har forskjøvet seg i tid, og nå skjer det FØR sjekkpunktet! Utgangen fra mottakeren vil ikke samsvare med mønsteret, og systemet vil nullstilles.
For å forhindre at dette skjer, må du plassere kontrollpunkter lenger fra frontene.

"Alt er kult" - sier du - "Men hvor kan jeg få kontrollpunktene?" Så jeg har vært dum om dette lenge. Som et resultat bestemte jeg meg for å overlate plasseringen av poeng til deg.
Enheten har en J1-jumper. Hvis den er lukket når den slås på, vil enheten dumt sende gjennom UART alt som IR-mottakeren gir ut. På den andre siden av ledningen mottas disse dataene av programmet mitt, som viser impulser fra TSOP på dataskjermen. Du trenger bare å bruke musen til å spre kontrollpunkter langs denne grafen og flashe dem inn i EEPROM. Hvis det ikke er mulighet til å bruke UART, kommer J2-jumperen til unnsetning. Når den er lukket, sender ikke enheten ut data via UART, men legger den til EEPROM.


Opplegg
Enkelt til skam. Jeg tok ATTiny2313 som kontroller. Frekvens 4 megahertz, fra kvarts, eller intern RC-krets.
RX- og TX-linjene for kommunikasjon og strøm bringes ut til en separat kontakt. RESET vises også der slik at du kan relash MK uten å fjerne den fra enheten.
Utgangen til fotodetektoren er koblet til INT0, den trekkes opp til strømforsyningen gjennom en 33k motstand. Hvis det er sterk interferens, så kan du sette en mindre motstand der, for eksempel 10k.
Det er jumpere på pinnene D4 og D5. Jumper1 på D5 og Jumper2 på D4.

En strømmodul er koblet til pin D6. Dessuten tok jeg triacen den minste av de jeg hadde - BT131. Strømmen er 1A - ikke kult, men dekselet er ikke for stort - TO92. For en liten belastning, det er det. Jeg laget opto-isolatoren på MOC3023 - den har ikke en nullkryssingssensor, noe som betyr at den er egnet for jevn kontroll last (jeg har aldri implementert det her).

Port B er nesten helt ført ut til kontakten - du kan feste en indikator eller noe annet der. Jeg bruker denne kontakten når jeg blinker enheten. Pin B0 er opptatt av en LED.

Det hele drives gjennom LM70L05 og en diodebro. Det vil si at du kan søke på innspillet AC spenning for eksempel fra en transformator. Hovedsaken er at den ikke overstiger 25 volt, ellers vil enten stabilisatoren eller kondensatoren dø.

Brettet ble slik:


Ja, det er litt forskjellig fra tavlen i arkivet. Men dette betyr ikke at jeg har laget meg et Über-avansert brett og ga deg en demoversjon :). Tvert imot har brettet mitt et par ulemper som ikke er i den endelige versjonen: Jeg har ingen RESET-pinne koblet til pinnen, og LED-en henger på PB7. Og dette er ikke særlig gunstig for in-circuit programmering.

Fastvare
Enheten kan operere i to moduser. I den første - når J2 er lukket - sender den ganske enkelt pulser fra fotodetektoren til UART. La oss begynne med det:

UART opererer med en hastighet på 9600, det vil si ved en frekvens på 4 MHz, skriver vi 25 til UBRR-registeret.

… Vi venter til fotodetektorbenet rykker. Så snart den gikk ned (i utgangspunktet dingler den på en opptrekksmotstand), starter vi timeren (TIMER / COUNTER1, den som er 16 bits) og slår på INT0-avbruddet for enhver inngangsendring - enhver logisk endring ( ICS00 = 1). Tidtakeren tikker ... venter.

Pulsen fra fjernkontrollen ble avsluttet - utgangen fra fotodetektoren skjøt opp, avbruddet ble utløst. Nå skriver vi timerverdien inn i minnet og tilbakestiller timeren. Du må også øke skrivepekeren for å skrive til et annet minnested i neste avbrudd.

Enda en impuls ... utgangen rykker ... avbryter ... skriver timerverdien til minnet ... tilbakestiller timeren ... peker + 2 (vi skriver to byte om gangen) ...

Og dette vil fortsette til det blir klart at slutten (på RAM) er nær. Eller til signalet slutter. I alle fall fryser vi timeren og deaktiverer avbrudd. Så, sakte, kaster vi ut alt vi har samlet inn i UART. Eller, hvis J2 er kortsluttet - i EEPROM.

Til slutt kan du sløve inn endeløs syklus og vent på tilbakestillingen - oppdraget er fullført.
Og utgangen vil være en sekvens av tall. Hver av dem er tiden mellom endringer i tilstanden til TSOP'a-utgangen. Når vi vet hvor denne sekvensen begynte (Og vi vet! Dette er forskjellen fra HØYT til LAV), kan vi gjenopprette hele bildet:

Etter initialisering sitter vi og venter på at TSOP skal rykke. Så snart dette skjedde, leste vi det første punktet fra EEPROM, og inn enkel løkke så dumt som det står. Samtidig teller vi tiden i pakker på 32us. Når vi kommer ut av stuporen, sjekker vi - det er noe ved utgangen til mottakeren.

Hvis produksjonen ikke falt sammen med det vi forventet, er ikke dette laget vårt. Du kan trygt vente på slutten av signalet og begynne på nytt.

Hvis utgangen oppfyller forventningene våre, laster vi inn neste punkt og sjekker det. Så til vi kommer over et punkt hvis tid = 0. Dette betyr at det ikke er flere poeng. Det betyr at hele laget har falt sammen, og du kan trekke lasset.

Så, det viser seg, en enkel algoritme. Men jo enklere, jo mer pålitelig!

Softina
Først tenkte jeg å gjøre automatisk memorering av malen. Det vil si at du lukker jumperen, stikker fjernkontrollen inn i TSOP, og MK selv setter kontrollpunktene og legger dem til EEPROM. Da ble det klart at ideen var gal: En mer eller mindre adekvat algoritme ville vise seg å være for komplisert. Eller det vil ikke være universelt.

Den andre ideen var et dataprogram, der du selv kan sette kontrollpunkter. Ikke for teknologisk avansert, men uansett bedre enn å stole på denne virksomheten til MK.


Vi lærer enheten å svare på ønsket knapp på fjernkontrollen:

1) Lukk jumper J1.

2) Vi kobler til UART. Hvis det ikke er mulig å koble den til, lukker vi J2-jumperen. Deretter vil enheten dumpe dataene inn i EEPROM.

3) Vi skrur på maten.

4) Hvis vi bestemmer oss for å bruke UART, starter vi programvaren og ser på statuslinjen (nederst i vinduet). Det skal stå "COM-port åpen". Hvis det ikke er skrevet, så leter vi etter en jamb i forbindelsen og stikker på "Koble til"-knappen.

5) Vi tar fjernkontrollen og pirker ønsket knapp i TSOP. Så snart enheten registrerer at signalet er borte, vil LED-en lyse. Umiddelbart etter det vil enheten begynne å overføre data via UART (eller skrive til EEPROM). Når overføringen er over, slås LED-en av.

6.1) Hvis vi jobber via UART, så trykk på knappen "Last inn via UART". Og vi gleder oss over påskriften "Lastet graf ..." i statuslinjen.

6.2) Hvis vi jobber gjennom EEPROM, så leser vi EEPROM-minnet med programmereren og lagrer det til *. bin-fil... (Akkurat bin!). Deretter trykker vi på "Load.bin"-knappen i programmet og velger filen fra EEPROM.

7) Se på det lastede diagrammet - dette er et signal fra TSOP. Det er en glidebryter på sidepanelet - du kan bruke den til å endre skalaen. Nå klikker vi på grafen med musen og setter kontrollpunkter. Høyre knapp punktene fjernes. Bare ikke plasser dem for nær frontene. Det viser seg noe slikt:


8) Klikk "Save.bin" og lagre poengene. Så flasher vi denne filen inn i EEPROM. Siden vi skyver tiden mellom to punkter inn i 7 biter, er den begrenset til 4ms. Hvis tiden mellom to punkter overskrider denne verdien, vil programmet nekte å skyve punktene inn i filen.

9) Fjern jumperne. Vi starter enheten på nytt. Klar!

Test video