Introduserer TV Devil, en enkel fjernkontroll Arduino Prank

Annonse

Annonse
Annonse

Skjul dette i stuen din og le da TiVo-boksen er tilsynelatende besatt av en demon som krever å se osteiske shoppingkanaler. Enten ditt ultimate mål er å slå av hver TV i nabolaget eller bygge en universell Siri-kontrollert fjernkontroll, fungerer dette prosjektet som et godt utgangspunkt for å lære grunnleggende om IR-kontroll og mottakere.

I denne "pranken" vil vi lage en enhet som registrerer, deretter spiller tilbake, en rekke IR-fjernkommandoer. Det vil fungere med en hvilken som helst enhet som bruker en IR-fjernkontroll, eller til og med en blanding av enheter samtidig - innspilling av opptil 10 nøkkelpresser.

komponenter

Her er en liste over de tingene du trenger for dette prosjektet:

  • Arduino og patch ledninger
  • IR-mottaker, for eksempel TSOP382 - men du bør kunne finne en kompatibel i gammel elektronikk. Jeg trakk meg ut av en ekstra RGB lysstyring. De har vanligvis 3 ben og er svarte, med den ene siden som ligner en LED som er hakket i halve og sittende fast. Jeg er sikker på at det er et teknisk ord for det.
  • IR sender LED, som TIL38 - igjen, disse er ganske vanlig, men jeg kjøpte en ny high power en fra Maplin; de ser identisk ut med andre LEDer, så vær sikker på at du ikke får dem blandet i ditt elektronikksett!
  • Passende motstand for IR-LED - bruk denne LED-kalkulatoren gitt strømspenningen (5 V fra Arduino), og fremspenningen og strømmen fra LED-databladet (vanligvis rundt 1, 2 V @ 20 mA). Dette kom ut som 220 ohm i mitt tilfelle.
  • Trykknapp, og 10k pulldown og 100 ohm motstander.
  • Last ned IR-fjernbiblioteket ved Ken Shirriff fra Github og legg inn mappen Arduino / Libraries . Det er også noen eksempler på kode vi skal bruke, som da skal være tilgjengelige fra Arduino Open -> Biblioteker- menyen.

komponenter

kabling

Takle denne kretsen i tre deler - bryteren er litt fiddly, men alt annet er enkelt. Husk det korte beinet på LED-lampen med flatflaten er katoden (negativ eller bakken); Det lange benet er anoden (positiv).

kretsdiagram-ir-prank

Motta signaler

Gå videre og åpne bibliotekene / IRremote / IRrecvDemo eksempelkoden. Kontroller at RECV_Pin er satt riktig, kompilere og last opp, og åpne deretter seriekonsollen ved 9600 baud. Ta tak i fjernkontrollen du må håndtere, sikte den på mottakeren din og begynn å trykke på knapper. Ulike knapper vil produsere forskjellige koder; noen vil indikere et langt trykk med den opprinnelige koden og deretter FFFFFF, mens forskjellige fjernkontroller bare kan gjenta koden igjen.

irrecv

For en mer detaljert visning av dataene som mottas, ta en titt på IRrecvDump- eksemplet i stedet, som vil indikere både typen mottatt signal (32-bits NEC i dette tilfellet) og de råverdiene. Godt å vite, men i de fleste tilfeller vil du bare ha dekoderte verdier.

irdump

Gjenta et signal

Vi vil ikke skrive vår prank i dag fra begynnelsen, så gå videre og sjekk ut IRrecord- eksemplet. Kodekompleksiteten øker sterkt her, men det er for det meste alt å takle håndtere forskjellige typer IR-koder - det er i utgangspunktet det som skjer inni løkken:

  • Kontroller at knappen er trykket, gjenta det lagrede signalet, hvis det er, og gjenta hvert 50 ms til det er trykket ned.
  • Hvis du ikke trykker på og et signal oppdages, registrerer du det.

Den største begrensningen i dette eksemplet er at den bare fungerer med en kode om gangen, så hvis du trykker på en annen fjernkontroll, overskriver den den siste. Knappen repliserer bare det siste signalet det mottok. Kompil og kjør koden slik at du kan ta en tur med denne grunnleggende signalreplikatoren. For å spille av et enkelt signal virker det fint, men det er lite praktisk bruk i stikk eller på annen måte.

Pranken!

La oss endre det litt for å ta opp 10 eller flere onde signaler. Du kan finne den fullstendige koden her, men her er en oversikt over endringene jeg gjorde hvis du vil ha en programmering for deg selv:

  • Definer 3 nye arrayer med størrelse 10 for å lagre et sett med signaler hver gang en blir oppdaget, og et heltall for å lagre størrelsen på disse arrays.
  • Oppbevar en indeks av hvor vi for øyeblikket befinner seg i den gruppen. Øk indeksen hver gang et signal oppdages - men øk ikke hvis signalet er en gjentakskode.
  • En boolsk verdi som stopper mer blir registrert når vi har nådd maksimumet.
  • En boolsk til å indikere om vi er i avspillingsmodus eller ikke, i stedet for å holde nede knappen; Endret også knappens logikk for å bytte til dette.

Merk at indikatorlampen på Arduino (pin 13) vil aktiveres når minnet er fullt. Akkurat nå må du ta opp 10 knappetrykk - ikke mindre - og replay-modus venter 1 sekund mellom hver knappespill. Her er det i aksjon:

Du kan enten spille med å lage flere IR-pranker eller vurdere dette en god start på et mer episk hjemmeautomatiseringsprosjekt. Hjemmautomatiseringsguide Med Raspberry Pi og Arduino Home Automation Guide Med Raspberry Pi og Arduino Hjemmautomatiseringsmarkedet oversvømmes med dyre forbrukssystemer, uforenlig med hverandre og kostbar å installere. Hvis du har en Raspberry Pi og en Arduino, kan du i utgangspunktet oppnå det samme ved ... Les mer; og ikke glem å sjekke ut alle de andre Arduino-prosjektene. Del dine kreasjoner (eller problemer) i kommentarene, og vær så snill å vise din takknemlighet for denne artikkelen ved å dele den på dine favoritt sosiale nettverk!

Bilde kreditt: DaGoaty

In this article