Innehållsförteckning:

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

Video: ESP-12 Infra Red Blaster: 7 steg

Video: ESP-12 Infra Red Blaster: 7 steg
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 fjärrkontroll blaster med esp8266

Sänder fjärrkontrollkoder mottagna från webben som stöder flera utdataenheter.

Inbyggd enkel webbsida främst för testning.

Normal användning sker via POST -meddelanden som kan komma från webbsidor eller från röststyrning IFTTT / Alexa.

Stöder en Amazon Echo / Dot -aktiveringsdetektor för att stänga av / tysta så fort aktiveringsord talas.

Kommandon är antingen enskilda kommandon eller sekvenser. Sekvenser kan lagras som namngivna makron som sedan kan användas som kommandon eller i andra sekvenser.

Ny historik och lista över makron kan erhållas via webbgränssnittet

Stöder OTA -uppladdning av ny firmware och använder WifiManager -biblioteket för första wifi -installation

Steg 1: Hårdvara

Hårdvara
Hårdvara
Hårdvara
Hårdvara

Använder följande komponenter

  • ESP-12F-modul
  • 3.3V regulator (MP2307 mini buck regulator)
  • MOSFET -omkopplare (AO3400)
  • Infra Red emitter (3mm)
  • Ljusberoende motstånd GL2258 (valfri Alexa aktivitetsdetektor)
  • Motstånd
  • Avkopplingskondensator (20uF)
  • USB honauttag (helst lödvänligt med hylsa
  • 3 -stifts IC -uttagslist för Alexa -detektor
  • Mekaniska delar (kan skrivas ut i 3D)

Kan monteras i ESP-12F projektlåda

  • Anslut regulatorn till USB -kontakten och sätt in den i lådan
  • Fyll på IR -drivrutinen på en liten bit verobord (3 trådar, +5V, 0V grindingång)
  • Anslut IR -drivrutinen till USB +5V, 0V
  • Sätt i 3 -stifts IC -uttag i projektlådan om du använder Alexa -detektor. Anslut till +3.3V, 0V och kabel för ingång
  • Gör upp ESP-12F med 2,2K från GPIO15 till GND, EN till Vdd, 4K7 GPIO13 till Vdd, Alexa ingång till GPIO13, IR-drivrutin till GPIO14, 0V och Vdd till 3,3V
  • Skapa Alexa -detektor och stödbuffert vid behov.

Observera att det kan vara lättare att programmera ESP-12F först om du har någon form av seriell programmeringsfunktion eller tillfällig breadboarding som denna för att ansluta till seriella portar.

Efterföljande programmering kan göras med den inbyggda OTA -uppdateringen.

Steg 2: Programvara

Ir Blaster använder en Arduino -skiss tillgänglig på github

Detta måste justeras för att passa lokala förhållanden och sedan sammanställas i en esp8266 Arduino -miljö.

Följande bibliotek behövs, de flesta är standard eller kan läggas till. De två sista ingår i git.

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

Objekt i skissen som ska ändras inkluderar

  • Behörighetskod för webbåtkomst AP_AUTHID
  • Wfi -chefslösenord WM_PASSWORD
  • firmware OTA lösenord update_password
  • Nya IR -enheter / knappkoder (se senare)

När detta är gjort bör det först laddas upp med konventionell serieöverföring.

Eftersom SPIFFS används bör minnet förberedas genom att installera och använda arduino ESP8266 Sketch Data uppladdningsverktyg. Detta laddar upp datamappen som initialt SPIFFS -innehåll

När enheten inte kan ansluta till det lokala nätverket (som kommer att hända första gången) skapar Wifi Manager en åtkomstpunkt (192.168.4.1). Anslut till detta nätverk från en telefon eller surfplatta och bläddra sedan till 192.168.4.1 Du får ett webbgränssnitt för att ansluta till det lokala wifi. Senare åtkomst kommer att använda detta. Om det lokala nätverket ändras går det tillbaka till detta konfigurationsläge.

Efterföljande uppdatering kan göras genom att sammanställa en exportbinär i Arduino -miljö och sedan komma åt OTA -gränssnittet på ip/firmware.

Steg 3: Lägg till enhets- / knappkoder

Obs: Det här avsnittet har ändrats från tidigare metod där konfiguration som tidigare kompilerades i koden. Den använder nu filer som laddas från SPIFFs arkiveringssystem. Detta gör det mycket lättare att ladda upp nya definitioner.

Knappdefinitionerna ingår i filen buttonnames.txt. Det är en global namnlista över alla fjärrkontroller som används eftersom många namn tenderar att vara vanliga. Som levererad innehåller den information om de fjärrkontroller jag använder. Nya poster kan läggas till. Det finns plats för totalt 160 namn men detta kan ökas genom att justera konstanter i bitMessages.h och kompilera om. Namnen som definieras här är namnen som ska användas när du skickar kommandon.

Varje fjärrenhet definieras i en fil som heter dev_remotename. Den består av en konfigurationssektion högst upp och sedan en mappningstabell från knappnamn till koder som är hexsträngar som innehåller bitarna som ska skickas. Endast de knappar som krävs behöver definieras.

Konfigurationsdelen i början av en enhetsfil innehåller parametrar som ska användas när en kod skickas. Den första posten är enhetsnamnet som används när du skickar ett kommando. Andra parametrar beskrivs i readme på kodwebbplatsen.

De flesta fjärrkontroller tillhör en av tre protokollkategorier (nec, rc5 och rc6). nec är förmodligen den vanligaste och har en enkel rubrikstruktur och bit timing. Det finns en liten variant av detta som endast skiljer sig i rubrikpulstiden. rc5 och rc6 är protokoll som definieras av Philips men också används av vissa andra tillverkare. De är lite mer komplicerade och särskilt rc6 har ett speciellt tidskrav för en av bitarna.

För att fånga koder för en ny fjärrkontroll använder jag en IR -mottagare (TSOP) som vanligtvis används med anslutna fjärrmottagare. Detta gör den grundläggande avkodningen och ger en logisk nivåutmatning. De levereras normalt med ett 3,5 mm -uttag med +5V, GND, DATA -anslutningar. Jag offrade en, förkortade ledningen och lade den genom en inverterande 3.3V -buffert för att mata en GPIO -pin på en Raspberry Pi.

Jag använder sedan ett pythonverktyg rxir.py (i mappen git tools) för att fånga koder. För att göra det enklare att använda för att fånga ett stort antal knappar använder verktyget en textdefinitionsfil för att definiera knapparna på fjärrkontrollen och är bara namnen på knapparna i en grupp på fjärrkontrollen. Till exempel kan en ha en ny Sony-fjärrkontroll och en ställer in tre textfiler som heter sonytv-cursor, sonytv-numbers, sonytv-playcontrols var och en med relevanta knappnamn i. Verktyget frågar efter enheten (sonytv), avsnittet (markör) och vilket protokoll som ska användas (nec, nec1, rc5, rc6). Den kommer sedan att uppmanas att ordna varje knapptryckning och skriva resultat till en sonytv-ircodes-fil. Avsnitt kan upprepas om det behövs för att kontrollera att fångster är bra. Bitar från.ircodes -filen kan redigeras i BitDevices -tabellerna.

Steg 4: Webbkontroll och makron

Den grundläggande webbkontrollen är antingen en enda get eller ett json -inlägg som kan innehålla en sekvens.

Get to /ir har 6 parametrar

  • auth - som innehåller behörighetskoden
  • enhet - namnet på fjärrenheten
  • parameter - namnet på knappen
  • bitar - ett valfritt bitantal
  • repeat - ett valfritt antal repetitioner
  • vänta - en fördröjning i msekunder innan nästa kommando kan köras.

Enheten kan också vara "null" för att bara få en fördröjning, "makro" för att använda makrot som parametern refererar till, eller "detektera" för att använda Alexa -detekteringsfunktionen (se senare).

Inlägget till /irjson består av en json -struktur som

{

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

}

Sekvensen kan vara vilken längd som helst och enheter kan vara makroreferenser.

Samma struktur kan användas för att definiera makron. Inkludera bara makro: "makronamn", på översta nivån t.ex. efter aut. Det faktiska innehållet lagras i en fil som heter macroname.txt

Makron kan raderas genom att definiera dem utan några "kommandon".

Andra webbkommandon

  • /recent (listar ny aktivitet)
  • /check (visar grundstatus)
  • / (läser in ett webbformulär för att skicka kommandon manuellt)
  • / redigera (läser in ett webbformulär för att visa fillista och ta bort/ ladda upp filer)
  • /edit? file = filnamn (visa innehållet i en specifik fil)
  • /reload (laddar om namn och enhetsfiler. Använd efter att någon av dessa har ändrats)

Steg 5: Alexa Voice Control med IFTTT

Det enklaste sättet att använda ir Blaster med Alexa är att använda IFTTT som en gateway.

Porta först porten som används till din blaster i din router så att den är tillgänglig från internet. Det kan vara bra att använda en dns -tjänst som freedns för att ge dina routers externa ip ett namn och göra det lättare att hantera om denna ip ändras.

Skapa ett IFTTT -konto och aktivera Maker Webhooks -kanalen och Alexa -kanalen. Du måste logga in på Amazonas webbplats när du gör detta för att aktivera IFTT -åtkomst.

Skapa en IF -utlösare med hjälp av IFTTT Alexa -kanalen, välj åtgärden baserat på en fras och ange den fras du vill ha (t.ex. volym upp).

Skapa åtgärden genom att välja Maker webhooks -kanalen. Ange något i URL -fältet

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

Denna åtgärd kommer att skickas till ir blaster där den kommer att försöka utföra makrovolymen. Man kan vara specifik enhet/knappar här om så önskas men jag tycker att det är bättre att definiera och använda makron för då kan åtgärdssekvensen enkelt ändras genom att omdefiniera makrot.

En separat IFTTT -applet behövs för varje kommando.

Steg 6: Native Alexa Voice Skill

Istället för IFTTT kan man bygga en anpassad färdighet inom Alexa -utveckling. Detta centraliserar all behandling på ett ställe och innebär att du inte behöver skapa separata åtgärder för varje knapp.

Du måste registrera dig som en Amazon Alexa -utvecklare och du måste registrera dig hos Amazon AWS -konsolens lambda -tjänst. Du måste också titta på självstudierna för att förstå processen lite.

På Alexa -utvecklarsidan måste du skapa en ny anpassad färdighet, ange dess triggerord och skapa en lista med kommandord som volym upp, guide etc.

Alexa skickar sedan frasen till ett program som körs på lamda -tjänsten som tolkar frasen och gör ett URL -anrop till Ir blaster för att utföra den.

Jag har inkluderat Alexa intention -schemat och konsolens lambda -funktion som jag använder i git. Webbadressen måste ändras för att referera till lämplig ip och ha rätt behörighet. För att hålla det enkelt kallar lambda -funktionerna ett makro som har en mellanslagsversion av frasen med mellanslag. Det försöker också ta bort triggerordet som ibland kan inkluderas. T.ex. blaster VOLUME up kallar ett makro som kallas volym upp om triggerordet var blaster.

Steg 7: Alexa Aktivera detektor

Även om Echo / Dot -röstigenkänningen är bra kan det ibland bli förvirrat om ljudet spelas från säg en TV om du inte kommer nära och pratar högt.

För att förbättra detta lade jag till en aktiveringsdetektor till min prick. Så snart sökordet (Alexa sägs) lyser ringen av lysdioder. Detektorn matar detta in i blastern där den kommer att använda alexaon -makrot för att stänga av TV: n, på samma sätt i slutet av behandlingen av ett kommando slocknar lamporna och alexaoff -makrot återställer ljudet.

Kommandot 'detect' kan också användas för att slå på och av detta. Så till exempel använder jag det första turnon -makrot för att aktivera detektering och avstängningsmakro för att inaktivera det. Detta kan också användas inom åtgärdsmakronen för att stödja en verklig tyst och avstängd coomand som annars skulle vara problematisk.

Den fysiska detektorn är ett ljusberoende motstånd som kretsen stöder. Jag monterar min på pricken med en 3D -tryckt konsol

Rekommenderad: