Indholdsfortegnelse:

ESP-12 Infra Red Blaster: 7 trin
ESP-12 Infra Red Blaster: 7 trin

Video: ESP-12 Infra Red Blaster: 7 trin

Video: ESP-12 Infra Red Blaster: 7 trin
Video: Arduino, ESP8266 - IR Remote 2024, Juli
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

Infra Red fjernbetjening blaster ved hjælp af esp8266

Overfører fjernbetjeningskoder modtaget fra web, der understøtter flere outputenheder.

Indbygget enkel webside hovedsageligt til test.

Normal brug er via POST -meddelelser, der kan komme fra websider eller fra IFTTT / Alexa stemmestyring.

Understøtter en Amazon Echo / Dot -aktiveringsdetektor for at slå lyden fra / stille, så snart aktiveringsordet er talt.

Kommandoer er enten enkeltkommandoer eller sekvenser. Sekvenser kan gemmes som navngivne makroer, som derefter kan bruges som kommandoer eller i andre sekvenser.

Seneste historik og liste over makroer kan fås via webgrænsefladen

Understøtter OTA -upload af ny firmware og bruger WifiManager -bibliotek til første opsætning af wifi

Trin 1: Hardware

Hardware
Hardware
Hardware
Hardware

Bruger følgende komponenter

  • ESP-12F modul
  • 3.3V regulator (MP2307 mini buck regulator)
  • MOSFET switches (AO3400)
  • Infra Red emitter (3mm)
  • Lysafhængig modstand GL2258 (valgfri Alexa aktivitetsdetektor)
  • Modstande
  • Afkoblingskondensator (20uF)
  • USB hunstik (helst loddevenlig med ærme
  • 3 -polet IC -stikdåse til Alexa -detektor
  • Mekaniske dele (kan 3D -printes)

Kan samles i ESP-12F projektboks

  • Sæt regulatoren til USB -stikket og sæt den i boksen
  • Fyld IR -driver på et lille stykke verobord (3 ledninger, +5V, 0V gateindgang)
  • Tilslut IR -driver til USB +5V, 0V
  • Indsæt 3 -polet IC -stik i projektboksen, hvis du bruger Alexa -detektor. Tilslut til +3.3V, 0V og ledning til input
  • Lav ESP-12F med 2,2K fra GPIO15 til GND, EN til Vdd, 4K7 GPIO13 til Vdd, Alexa input til GPIO13, IR driver til GPIO14, 0V og Vdd til 3.3V
  • Lav Alexa -detektor og understøt buffer, hvis det kræves.

Bemærk, at det kan være lettere at programmere ESP-12F først, hvis du har en slags seriel programmeringsfacilitet eller midlertidig breadboarding-facilitet som denne til at oprette forbindelse til de serielle porte.

Efterfølgende programmering kan udføres ved hjælp af den indbyggede OTA -opdatering.

Trin 2: Software

Ir Blaster bruger en Arduino -skitse tilgængelig på github

Dette skal justeres, så det passer til lokale forhold og derefter kompileres i et esp8266 Arduino -miljø.

Følgende biblioteker er nødvendige, de fleste er standard eller kan tilføjes. De to sidste er inkluderet i git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (inkluderet i Git)
  • BitMessages (inkluderet i Git)

Elementer i skitsen, der skal ændres, omfatter

  • Godkendelseskode til webadgang AP_AUTHID
  • Wfi -administratoradgangskode WM_PASSWORD
  • firmware OTA password update_password
  • Nye IR -enheder / knapkoder (se senere)

Når dette er gjort, skal det først uploades ved hjælp af konventionel seriel upload.

Da SPIFFS bruges, skal hukommelsen forberedes ved at installere og bruge arduino ESP8266 Sketch Data upload -værktøjet. Dette uploader datamappen som det oprindelige SPIFFS -indhold

Når enheden ikke kan oprette forbindelse til det lokale netværk (som det vil ske første gang), vil Wifi -manager oprette et adgangspunkt (192.168.4.1). Opret forbindelse til dette netværk fra en telefon eller tablet, og søg derefter til 192.168.4.1 Du får en webgrænseflade til at oprette forbindelse til den lokale wifi. Efterfølgende adgang vil bruge dette. Hvis det lokale netværk ændres, skifter det tilbage til denne konfigurationstilstand.

Efterfølgende opdatering kan udføres ved at kompilere en eksport binær i Arduino miljø og derefter få adgang til OTA interface på ip/firmware.

Trin 3: Tilføj enheds- / knapkoder

Bemærk: Dette afsnit er ændret fra tidligere metode, hvor konfiguration, der tidligere blev kompileret til koden. Det bruger nu filer, der er indlæst fra SPIFFs arkiveringssystem. Dette gør det meget lettere at uploade nye definitioner.

Knappedefinitionerne er inkluderet i filen buttonnames.txt. Det er en global liste over navne på tværs af alle fjernbetjeninger i brug, da mange navne har en tendens til at være almindelige. Som leveret indeholder dette oplysninger om de fjernbetjeninger, jeg bruger. Nye poster kan tilføjes. Der er plads til i alt 160 navne, men dette kan øges ved at justere konstanter i bitMessages.h og kompilere igen. Navnene, der er defineret her, er de navne, der skal bruges ved afsendelse af kommandoer.

Hver fjernenhed er defineret i en fil kaldet dev_remotename. Den består af en konfigurationssektion øverst og derefter en kortlægningstabel fra knapnavne til koder, som er hex -strenge, der indeholder de bits, der skal sendes. Kun de nødvendige knapnavne skal defineres.

Konfigurationssektionen i begyndelsen af en enhedsfil indeholder parametre, der skal bruges, når du sender en kode. Den første post er enhedsnavnet, der bruges, når du sender en kommando. Andre parametre er beskrevet i readme på kodewebstedet.

De fleste fjernbetjeninger tilhører en af 3 protokolkategorier (nec, rc5 og rc6). nec er sandsynligvis den mest almindelige og har en simpel headerstruktur og bit timing. Der er en lille variant af denne, som kun adskiller sig i headerpuls -timingen. rc5 og rc6 er protokoller defineret af Philips, men bruges også af nogle andre producenter. De er lidt mere komplicerede og især rc6 har et specielt timingkrav til en af bitene.

For at fange koderne til en ny fjernbetjening bruger jeg en IR -modtager (TSOP), der normalt bruges sammen med stikmodtagere. Dette udfører den grundlæggende afkodning og giver et output på logisk niveau. De leveres normalt med et 3,5 mm stik med +5V, GND, DATA -tilslutninger. Jeg ofrede en, forkortede føringen og satte den gennem en inverterende 3.3V buffer for at fodre en GPIO -pin på en Raspberry Pi.

Jeg bruger derefter et python -værktøj rxir.py (i mappen git tools) til at fange koder. For at gøre det lettere at bruge til at fange et stort antal knapper, bruger værktøjet en tekstdefinitionsfil til at definere knapperne på fjernbetjeningen og er bare navnene på knapperne i en gruppe på fjernbetjeningen. For eksempel kan man have en ny Sony-fjernbetjening, og man opretter 3 tekstfiler kaldet sonytv-cursor, sonytv-numbers, sonytv-playcontrols hver med de relevante knapnavne i. Værktøjet beder om enheden (sonytv), sektionen (markør) og hvilken protokol der skal bruges (nec, nec1, rc5, rc6). Det vil derefter spørge sekventielt for hvert tastetryk og skrive resultater til en sonytv-ircodes-fil. Sektioner kan gentages, hvis det er nødvendigt for at kontrollere, at optagelser er gode. Bits fra.ircodes -filen kan redigeres i BitDevices -tabellerne.

Trin 4: Webkontrol og makroer

Den grundlæggende webkontrol er enten et enkelt get eller et json -indlæg, som kan indeholde en sekvens.

Get to /ir har 6 parametre

  • auth - indeholdende autorisationskoden
  • enhed - navnet på den eksterne enhed
  • parameter - navnet på knappen
  • bits - et valgfrit bitantal
  • gentag - et valgfrit antal gentagelser
  • vent - en forsinkelse i msekunder, før den næste kommando kan udføres.

Enheden kan også være 'nul' for at få bare en forsinkelse, 'makro' til at bruge den makro, parameteren henviser til, eller 'detektere' for at bruge Alexa -detekteringsfunktionen (se senere).

Indlægget til /irjson består af en json -struktur som

{

"auth": "1234", "kommandoer": [{"device": "yamahaAV", "parameter": "hdmi4", "wait": "5000", "bits": "0", "repeat": "1"}, {"device": "yamahaAV", "parameter": "mute", "wait": "100", "bits": "0", "repeat": "1"}]

}

Sekvensen kan have en hvilken som helst længde, og enheder kan være makrohenvisninger.

Den samme struktur kan bruges til at definere makroer. Inkluder bare makro: "makronavn", på øverste niveau f.eks. efter godkendelse. Det faktiske indhold gemmes i en fil kaldet macroname.txt

Makroer kan slettes ved at definere dem uden "kommandoer".

Andre webkommandoer

  • /recent (viser nylig aktivitet)
  • /check (viser grundstatus)
  • / (indlæser en webformular for at sende kommandoer manuelt)
  • / rediger (indlæser en webformular for at se fillisten og slette/ uploade filer)
  • /edit? file = filnavn (se indholdet i en bestemt fil)
  • /reload (genindlæser Buttonnavne og enhedsfiler. Brug efter ændring af nogen af disse)

Trin 5: Alexa Voice Control ved hjælp af IFTTT

Den enkleste måde at bruge ir Blaster med Alexa er at bruge IFTTT som en gateway.

Første port videresender porten, der bruges til din blaster i din router, så den er tilgængelig fra internettet. Det kan være godt at bruge en dns -service som freedns til at give dine routere ekstern ip et navn og gøre det lettere at håndtere, hvis denne ip ændres.

Opret en IFTTT -konto, og aktiver Maker Webhooks -kanalen og Alexa -kanalen. Du bliver nødt til at logge på Amazon -webstedet, når du gør dette for at aktivere IFTT -adgangen.

Opret en IF -trigger ved hjælp af IFTTT Alexa -kanalen, vælg handlingen baseret på en sætning og indtast den ønskede sætning (f.eks. Volumen op).

Opret handlingen ved at vælge Maker -webhooks -kanalen. Indtast noget i URL -feltet

myip: port/irjson? plain = {"auth": "1234", "comm …

Denne handling sendes til ir blaster, hvor den vil forsøge at udføre makro volumen op. Man kan være specifik enhed/knapper herinde, hvis det ønskes, men jeg finder det bedre at definere og bruge makroer, for så kan handlingssekvensen let ændres ved blot at omdefinere makroen.

En separat IFTTT -applet er nødvendig for hver kommando.

Trin 6: Indfødt Alexa Voice Skill

I stedet for IFTTT kan man bygge en brugerdefineret færdighed inde i Alexa -udvikling. Dette centraliserer al behandling ét sted og betyder, at du ikke behøver at oprette separate handlinger for hver knap.

Du skal registrere dig som en Amazon Alexa -udvikler, og du skal registrere dig hos Amazon AWS -konsollen lambda -service. Du bliver også nødt til at se på selvstudierne for at forstå processen lidt.

På Alexa -udviklersiden skal du oprette en ny brugerdefineret færdighed, indtaste dens triggerord og oprette en liste med kommandoord som volumen op, guide osv.

Alexa sender derefter sætningen til et program, der kører på lamda -tjenesten, som fortolker sætningen og foretager et URL -opkald til Ir -blaster for at udføre den.

Jeg har inkluderet Alexa intention -skemaet og konsol -lambda -funktionen, jeg bruger i git. URL'en skal ændres for at henvise til den relevante ip og have den rette autorisation. For at gøre det enkelt kalder lambda -funktionerne en makro, der har en mellemstørrelsesversion af sætningen med mellemrum. Det forsøger også at fjerne trigger -søgeordet, som nogle gange kan inkluderes. F.eks. blaster VOLUME up kalder en makro kaldet volumeup, hvis triggerordet var blaster.

Trin 7: Alexa Aktiver detektor

Selvom stemmegenkendelse fra Echo / Dot er god, kan det nogle gange blive forvirret, hvis lyden afspilles fra f.eks. Et fjernsyn, medmindre du kommer tæt på og taler højt.

For at forbedre dette tilføjede jeg en aktiveringsdetektor til min prik. Så snart søgeordet (Alexa siges) lyser ringen af lysdioder. Detektoren føder dette ind i blasteren, hvor den vil bruge alexaon -makroen til at dæmpe fjernsynet, på samme måde ved afslutningen af behandlingen af en kommando slukker lysene, og alexaoff -makroen genopretter lyden.

Kommandoen 'detekter' kan også bruges til at tænde og slukke denne. Så for eksempel bruger jeg den indledende turnon -makro til at aktivere detektionen og slukkemakroen til at deaktivere den. Dette kan også bruges inden for handlingsmakroerne til at understøtte en ægte lydløs og lydløs coomand, som ellers ville være problematisk.

Den fysiske detektor er en lysafhængig modstand, som kredsløbet understøtter. Jeg monterer min på prikken med et 3D -printet beslag

Anbefalede: