Innholdsfortegnelse:

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

Video: ESP-12 Infra Red Blaster: 7 trinn

Video: ESP-12 Infra Red Blaster: 7 trinn
Video: My journey of making a PERFECT! Universal IR Blaster 👀 2024, November
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

Infra Red fjernkontroll blaster med esp8266

Overfører fjernkontrollkoder mottatt fra web som støtter flere utdataenheter.

Bygget i enkel webside hovedsakelig for testing.

Normal bruk er via POST -meldinger som kan komme fra nettsider eller fra IFTTT / Alexa -talekontroll.

Støtter en Amazon Echo / Dot -aktiveringsdetektor for å dempe / dempe så snart aktiveringsordet er talt.

Kommandoer er enten enkeltkommandoer eller sekvenser. Sekvenser kan lagres som navngitte makroer som deretter kan brukes som kommandoer eller i andre sekvenser.

Nyere historie og liste over makroer kan fås via webgrensesnittet

Støtter OTA -opplasting av ny fastvare og bruker WifiManager -bibliotek for første oppsett av wifi

Trinn 1: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare

Bruker følgende komponenter

  • ESP-12F-modul
  • 3.3V regulator (MP2307 mini buck regulator)
  • MOSFET -brytere (AO3400)
  • Infra Red emitter (3mm)
  • Lysavhengig motstand GL2258 (valgfri Alexa aktivitetsdetektor)
  • Motstander
  • Frakoblingskondensator (20uF)
  • USB hunkontakt (helst loddetinnvennlig med hylse
  • 3 -pinners IC -kontaktlist for Alexa -detektor
  • Mekaniske deler (kan skrives ut i 3D)

Kan monteres i ESP-12F prosjektboks

  • Fest regulatoren til USB -kontakten og sett den inn i esken
  • Gjør IR -driveren på et lite verobord (3 ledninger, +5V, 0V gateinngang)
  • Koble IR -driveren til USB +5V, 0V
  • Sett inn 3 -pinners IC -kontakt i prosjektboksen hvis du bruker Alexa -detektor. Koble til +3.3V, 0V og ledning for inngang
  • Lag ESP-12F med 2,2K fra GPIO15 til GND, EN til Vdd, 4K7 GPIO13 til Vdd, Alexa-inngang til GPIO13, IR-driver til GPIO14, 0V og Vdd til 3,3V
  • Lag Alexa -detektor og støtt buffer hvis nødvendig.

Vær oppmerksom på at det kan være lettere å programmere ESP-12F først hvis du har en slags seriell programmeringsfunksjon eller midlertidig brødbrett som dette for å koble til serielle porter.

Påfølgende programmering kan gjøres ved hjelp av den innebygde OTA -oppdateringen.

Trinn 2: Programvare

Ir Blaster bruker en Arduino -skisse tilgjengelig på github

Dette må justeres for å passe lokale forhold og deretter kompileres i et esp8266 Arduino -miljø.

Følgende biblioteker trengs, de fleste er standard eller kan legges til. De to siste er inkludert i git.

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

Elementer i skissen som skal endres inkluderer

  • Autorisasjonskode for nettilgang AP_AUTHID
  • Wfi manager passord WM_PASSWORD
  • fastvare OTA passord update_password
  • Nye IR -enheter / knappekoder (se senere)

Når dette er gjort, bør det først lastes opp ved hjelp av vanlig seriell opplasting.

Siden SPIFFS brukes, bør minnet forberedes ved å installere og bruke arduino ESP8266 Sketch Data -opplastingsverktøyet. Dette vil laste opp datamappen som innledende SPIFFS -innhold

Når enheten ikke kan koble til det lokale nettverket (som vil skje første gang), vil Wifi Manager opprette et tilgangspunkt (192.168.4.1). Koble til dette nettverket fra en telefon eller et nettbrett, og bla deretter til 192.168.4.1 Du får et webgrensesnitt for å koble til det lokale wifi. Senere tilganger vil bruke dette. Hvis det lokale nettverket endres, vil det gå tilbake til denne konfigurasjonsmodusen.

Etterfølgende oppdatering kan gjøres ved å kompilere en eksportbinari i Arduino -miljø og deretter få tilgang til OTA -grensesnittet på ip/firmware.

Trinn 3: Legg til enhets- / knappekoder

Merk: Denne delen har endret seg fra forrige metode der konfigurasjon som tidligere ble kompilert i koden. Den bruker nå filer som er lastet fra SPIFFs arkivsystem. Dette gjør det mye lettere å laste opp nye definisjoner.

Knappdefinisjonene er inkludert i filen buttonnames.txt. Det er en global navneliste på tvers av alle fjernkontroller som brukes, da mange navn pleier å være vanlige. Som levert inneholder dette detaljer for fjernkontrollene jeg bruker. Nye oppføringer kan legges til. Det er plass til totalt 160 navn, men dette kan økes ved å justere konstanter i bitMessages.h og kompilere på nytt. Navnene som er definert her er navnene som skal brukes når du sender kommandoer.

Hver ekstern enhet er definert i en fil som heter dev_remotename. Den består av en konfigurasjonsseksjon øverst og deretter en kartleggingstabell fra knappnavn til koder som er hex -strenger som inneholder bitene som skal sendes. Bare de nødvendige knappnavnene må defineres.

Konfigurasjonsdelen i begynnelsen av en enhetsfil inneholder parametere som skal brukes når du sender en kode. Den første oppføringen er enhetsnavnet som brukes når du sender en kommando. Andre parametere er beskrevet i readme på kodesiden.

De fleste fjernkontrollene tilhører en av tre protokollkategorier (nec, rc5 og rc6). nec er trolig den vanligste og har en enkel topptekststruktur og bit timing. Det er en liten variant av dette som bare er forskjellig i overskriftens puls -timing. rc5 og rc6 er protokoller definert av Philips, men brukes også av noen andre produsenter. De er litt mer kompliserte og spesielt rc6 har et spesielt timingkrav for en av bitene.

For å fange kodene for en ny fjernkontroll bruker jeg en IR -mottaker (TSOP) som vanligvis brukes med pluggbare fjernmottakere. Dette gjør den grunnleggende dekodingen og gir en logisk nivåutgang. De kommer vanligvis med en 3,5 mm jack med +5V, GND, DATA -tilkoblinger. Jeg ofret en, forkortet ledningen og satte den gjennom en inverterende 3.3V buffer for å mate en GPIO -pin på en Raspberry Pi.

Jeg bruker deretter et python -verktøy rxir.py (i mappen git tools) for å fange koder. For å gjøre det lettere å bruke for å fange et stort antall knapper, bruker verktøyet en tekstdefinisjonsfil for å definere knappene på fjernkontrollen og er bare navnene på knappene i en gruppe på fjernkontrollen. For eksempel kan en ha en ny Sony-fjernkontroll og en sette opp 3 tekstfiler som heter sonytv-cursor, sonytv-numbers, sonytv-playcontrols hver med de relevante knappene i. Verktøyet vil be om enheten (sonytv), delen (markør) og hvilken protokoll som skal brukes (nec, nec1, rc5, rc6). Den vil deretter spørre sekvensielt for hvert knappetrykk og skrive resultater til en sonytv-ircodes-fil. Delene kan gjentas hvis det er nødvendig for å kontrollere at fangster er gode. Biter fra.ircodes -filen kan redigeres i BitDevices -tabellene.

Trinn 4: Nettkontroll og makroer

Den grunnleggende webkontrollen er enten et enkelt get eller et json -innlegg som kan inneholde en sekvens.

Get to /ir har 6 parametere

  • auth - som inneholder autorisasjonskoden
  • enhet - navnet på den eksterne enheten
  • parameter - navnet på knappen
  • bits - et valgfritt bittall
  • gjenta - en valgfri gjentattelling
  • vent - en forsinkelse i msekunder før neste kommando kan utføres.

Enheten kan også være 'null' for å få bare en forsinkelse, 'makro' for å bruke makroen referert til av parameteren, eller 'detektere' for å bruke Alexa detekteringsfunksjonen (se senere).

Innlegget til /irjson består av 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 være hvilken som helst lengde, og enheter kan være makrohenvisninger.

Den samme strukturen kan brukes til å definere makroer. Bare ta med makro: "makronavn", på øverste nivå f.eks. etter autorisasjon. Det faktiske innholdet er lagret i en fil som heter macroname.txt

Makroer kan slettes ved å definere dem uten "kommandoer".

Andre webkommandoer

  • /recent (viser nylig aktivitet)
  • /sjekk (viser grunnleggende status)
  • / (laster inn et nettskjema for å sende kommandoer manuelt)
  • / rediger (laster inn et webskjema for å se fillisten og slette/ laste opp filer)
  • /edit? file = filnavn (se innholdet i en bestemt fil)
  • /reload (laster inn nytt navn og enhetsfiler. Brukes etter endring av noen av disse)

Trinn 5: Alexa Voice Control ved hjelp av IFTTT

Den enkleste måten å bruke ir Blaster med Alexa er å bruke IFTTT som en gateway.

Porten først porten som ble brukt til blasteren din i ruteren, så den er tilgjengelig fra internett. Det kan være bra å bruke en dns -tjeneste som freedns for å gi ruterne ekstern ip et navn og gjøre det lettere å håndtere hvis denne ip -en endres.

Sett opp en IFTTT -konto og aktiver Maker Webhooks -kanalen og Alexa -kanalen. Du må logge deg på Amazon -nettstedet når du gjør dette for å aktivere IFTT -tilgangen.

Lag en IF -utløser ved hjelp av IFTTT Alexa -kanalen, velg handlingen basert på en setning og skriv inn setningen du vil ha (f.eks. Volum opp).

Lag handlingen ved å velge Maker webhooks -kanalen. Skriv inn nettadressefeltet slik

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

Denne handlingen vil bli sendt til ir blaster der den vil prøve å utføre makrovolumet. Man kan være spesifikk enhet/knapper her hvis det er ønskelig, men jeg synes det er bedre å definere og bruke makroer, for da kan handlingssekvensen enkelt endres bare ved å definere makroen på nytt.

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

Trinn 6: Native Alexa Voice Skill

I stedet for IFTTT kan man bygge en tilpasset ferdighet i Alexa -utvikling. Dette sentraliserer all behandling på ett sted og betyr at du ikke trenger å opprette separate handlinger for hver knapp.

Du må registrere deg som en Amazon Alexa -utvikler, og du må registrere deg hos Amazon AWS -konsollen lambda -tjenesten. Du må også se på opplæringsprogrammene for å forstå prosessen litt.

På Alexa -utviklersiden må du opprette en ny tilpasset ferdighet, skrive inn triggerordet og lage en liste over kommandoord som volum opp, guide osv.

Alexa sender deretter uttrykket til et program som kjører på lamda -tjenesten som tolker uttrykket og ringer et URL -nummer til Ir -blaster for å utføre det.

Jeg har inkludert Alexa intention -skjemaet og konsoll -lambda -funksjonen jeg bruker i git. Nettadressen må endres for å referere til den aktuelle ip -en og ha den riktige autorisasjonen. For å gjøre det enkelt kaller lambda -funksjonene en makro som har en mellomstor versjon av uttrykket med mellomrom. Den prøver også å fjerne utløserordet som noen ganger kan inkluderes. F.eks. blaster VOLUME up vil kalle en makro som kalles volumeup hvis triggerordet var blaster.

Trinn 7: Alexa Aktiver detektor

Selv om Echo / Dot -stemmegjenkjenning er bra, kan det noen ganger bli forvirret hvis lyden spilles fra si en TV med mindre du kommer nær og snakker høyt.

For å forbedre dette la jeg til en aktiveringsdetektor i Dot. Så snart søkeordet (Alexa er sagt) lyser ringen av LED -er. Detektoren mater dette inn i blasteren der den vil bruke alexaon -makroen for å dempe TV -en, på samme måte ved slutten av behandlingen av en kommando slukker lysene og alexaoff -makroen gjenoppretter lyden.

Kommandoen 'detekter' kan også brukes til å slå denne på og av. Så for eksempel bruker jeg den første turnon -makroen for å aktivere deteksjonen og avstengningsmakroen for å deaktivere den. Dette kan også brukes i handlingsmakroene for å støtte en ekte dempet og dempende komand som ellers ville være problematisk.

Den fysiske detektoren er en lysavhengig motstand som kretsen støtter. Jeg monterer min på prikken med en 3D -trykt brakett

Anbefalt: