INHOUDSOPGAWE:

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

Video: ESP-12 Infra Red Blaster: 7 stappe

Video: ESP-12 Infra Red Blaster: 7 stappe
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 afstandsbediening blaster met behulp van esp8266

Stuur afstandsbedieningskodes wat van die web af ontvang word, wat verskeie uitvoertoestelle ondersteun.

Ingeboude eenvoudige webwerf hoofsaaklik vir toetsing.

Normale gebruik is via POST -boodskappe wat van webblaaie of van IFTTT / Alexa -stembeheer afkomstig kan wees.

Ondersteun 'n Amazon Echo / Dot -aktiveer -detektor om te demp / stil te maak sodra die aktiveerwoord gepraat word.

Opdragte is Ăłf enkele opdragte Ăłf rye. Rye kan gestoor word met die naam van makros wat dan as opdragte of in ander rye gebruik kan word.

Onlangse geskiedenis en lys van makros kan verkry word via die webkoppelvlak

Ondersteun OTA -oplaai van nuwe firmware en gebruik WifiManager -biblioteek vir die aanvanklike opstel van wifi

Stap 1: Hardeware

Hardeware
Hardeware
Hardeware
Hardeware

Gebruik die volgende komponente

  • ESP-12F module
  • 3.3V -reguleerder (MP2307 mini -bokreguleerder)
  • MOSFET -skakelaars (AO3400)
  • Infrarood emitter (3 mm)
  • Ligafhanklike weerstand GL2258 (opsionele Alexa -aktiwiteitsdetektor)
  • Weerstande
  • Ontkoppelingskondensator (20uF)
  • USB -vroulike aansluiting (verkieslik soldeervriendelik met mou
  • 3 -pins IC -aansluitingstrook vir Alexa -detektor
  • Meganiese onderdele (kan 3D -gedruk word)

Kan in 'n ESP-12F-projekkas gemonteer word

  • Koppel die reguleerder aan die USB -aansluiting en plaas dit in die boks
  • Maak 'n IR -bestuurder op 'n klein stukkie vero -bord (3 drade, +5V, 0V hekinvoer)
  • Koppel IR -bestuurder aan USB +5V, 0V
  • Plaas 'n 3 -pins IC -aansluiting in die projektiekas as u Alexa -detektor gebruik. Koppel aan +3.3V, 0V en draad vir ingang
  • Maak ESP-12F op met 2.2K van GPIO15 tot GND, EN tot Vdd, 4K7 GPIO13 tot Vdd, Alexa-invoer na GPIO13, IR-bestuurder na GPIO14, 0V en Vdd tot 3.3V
  • Maak Alexa -detektor op en ondersteun buffer indien nodig.

Let op: dit kan makliker wees om eers ESP-12F te programmeer as u 'n seriële programmeringsfasiliteit of tydelike broodbordfasiliteit soos hierdie het om aan te sluit op die seriële poorte.

Daaropvolgende programmering kan gedoen word met behulp van die ingeboude OTA -opdatering.

Stap 2: sagteware

Die ir Blaster gebruik 'n Arduino -skets wat op github beskikbaar is

Dit moet aangepas word volgens die plaaslike omstandighede en dan saamgestel word in 'n esp8266 Arduino -omgewing.

Die volgende biblioteke benodig, die meeste is standaard of kan bygevoeg word. Die laaste twee is ingesluit in die git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (ingesluit in Git)
  • BitMessages (ingesluit in Git)

Artikels in die skets wat verander moet word, sluit in

  • Magtigingskode vir webtoegang AP_AUTHID
  • Wfi bestuurder wagwoord WM_PASSWORD
  • firmware OTA wagwoord update_password
  • Nuwe IR -toestelle / knoppiekodes (sien later)

Sodra dit gedoen is, moet dit eers opgelaai word met behulp van konvensionele oplaai.

Aangesien SPIFFS gebruik word, moet die geheue voorberei word deur die arduino ESP8266 Sketch Data -oplaaihulpmiddel te installeer en te gebruik. Dit laai die datamap as aanvanklike SPIFFS -inhoud op

As die toestel nie aan die plaaslike netwerk kan koppel nie (soos die eerste keer), sal die Wifi -bestuurder 'n toegangspunt skep (192.168.4.1). Koppel aan hierdie netwerk vanaf 'n telefoon of tablet, en blaai dan na 192.168.4.1 U kry 'n webkoppelvlak om aan te sluit op die plaaslike wifi. Daaropvolgende toegang sal dit gebruik. As die plaaslike netwerk verander, gaan dit terug na hierdie konfigurasiemodus.

Die daaropvolgende opdatering kan gedoen word deur 'n uitvoerbinair in die Arduino -omgewing op te stel en dan toegang tot die OTA -koppelvlak by ip/firmware te verkry.

Stap 3: Voeg toestel- / knoppiekodes by

Opmerking: hierdie afdeling het verander van die vorige metode, waar die konfigurasie wat voorheen in die kode saamgestel is. Dit gebruik nou lĂȘers wat van die SPIFF -lĂȘerstelsel gelaai word. Dit maak dit baie makliker om nuwe definisies op te laai.

Die knoppie -definisies is ingesluit in die buttonnames.txt -lĂȘer. Dit is 'n wĂȘreldwye lys van name vir alle afstandbeheer wat gebruik word, aangesien baie name gewoonlik voorkom. Soos verskaf, bevat dit besonderhede vir die afstandbeheer wat ek gebruik. Nuwe inskrywings kan bygevoeg word. Daar is plek vir 'n totaal van 160 name, maar dit kan vergroot word deur konstantes in bitMessages.h aan te pas en weer saam te stel. Die name wat hier gedefinieer word, is die name wat gebruik moet word by die stuur van opdragte.

Elke afstandtoestel word gedefinieer in 'n lĂȘer met die naam dev_remotename. Dit bestaan uit 'n konfig -afdeling bo -aan en dan 'n karteringstabel van knoppiesname tot kodes wat heks -snare is wat die stukkies bevat wat gestuur moet word. Slegs die vereiste knoppename moet gedefinieer word.

Die config -afdeling aan die begin van 'n apparaatlĂȘer bevat parameters wat gebruik moet word wanneer 'n kode gestuur word. Die eerste inskrywing is die toestelnaam wat gebruik word wanneer 'n opdrag gestuur word. Ander parameters word beskryf in die readme op die kode -webwerf.

Die meeste afstandbeheerders behoort tot een van drie protokolkategorieë (nec, rc5 en rc6). nec is waarskynlik die algemeenste en het 'n eenvoudige kopstruktuur en bitsydsberekening. Daar is 'n geringe variant hiervan, wat slegs verskil in die tydsberekening van die koppuls. rc5 en rc6 is protokolle wat deur Philips gedefinieer word, maar word ook deur ander vervaardigers gebruik. Hulle is 'n bietjie ingewikkelder en veral rc6 het 'n spesiale tydsvereiste vir een van die stukkies.

Om die kodes vir 'n nuwe afstandsbediening op te neem, gebruik ek 'n IR -ontvanger (TSOP) wat algemeen gebruik word met afstandsontvangers. Dit doen die basiese dekodering en gee 'n uitset op logiese vlak. Hulle het gewoonlik 'n 3,5 mm -aansluiting met +5V, GND, DATA -verbindings. Ek het een opgeoffer, die voorpunt verkort en deur 'n omgekeerde 3.3V -buffer gebring om 'n GPIO -pen op 'n Raspberry Pi te voer.

Ek gebruik dan 'n luislanghulpmiddel rxir.py (in git tools folder) om kodes vas te lĂȘ. Om die gebruik van 'n groot aantal knoppies makliker te maak, gebruik die instrument 'n teksdefinisie -lĂȘer om die knoppies op die afstandsbediening te definieer en is slegs die name van die knoppies in 'n groep op die afstandsbediening. Daar is byvoorbeeld 'n nuwe Sony-afstandsbediening en een stel drie tekslĂȘers op met die naam sonytv-cursor, sonytv-numbers, sonytv-playcontrols elk met die relevante knoppie-name in. Die instrument vra vir die toestel (sonytv), die afdeling (wyser) en watter protokol om te gebruik (nec, nec1, rc5, rc6). Dit sal dan opeenvolgend vir elke druk op die knoppie gevra word en resultate na 'n sonytv-ircodes-lĂȘer skryf. Afdelings kan herhaal word indien nodig om vas te stel of die opnames goed is. Bits uit die.ircodes -lĂȘer kan in die BitDevices -tabelle gewysig word.

Stap 4: Webbeheer en makros

Die basiese webbeheer is Ăłf 'n enkele kry Ăłf 'n json -pos wat 'n volgorde kan bevat.

Die get to /ir het 6 parameters

  • author - wat die magtigingskode bevat
  • toestel - die naam van die afgeleĂ« toestel
  • parameter - die naam van die knoppie
  • bits - 'n opsionele bitselling
  • herhaal - 'n opsionele herhalingstelling
  • wag - 'n vertraging in msekondes voordat die volgende opdrag uitgevoer kan word.

Die toestel kan ook 'nul' wees om slegs 'n vertraging te kry, 'makro' om die makro te gebruik waarna die parameter verwys, of 'opspoor' om die Alexa detect -funksie te gebruik (sien later).

Die pos na /irjson bestaan uit 'n json -struktuur soos

{

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

}

Die volgorde kan enige lengte hĂȘ en toestelle kan makroverwysings wees.

Dieselfde struktuur kan gebruik word om makros te definieer. Sluit net makro in: "makronaam", op die hoogste vlak, bv. na magtiging. Die werklike inhoud word gestoor in 'n lĂȘer genaamd macroname.txt

Makro's kan verwyder word deur dit sonder 'opdragte' te definieer.

Ander webopdragte

  • /recent (lys onlangse aktiwiteite)
  • /check (toon basiese status)
  • / (laai 'n webvorm om opdragte met die hand te stuur)
  • / wysig (laai 'n webvorm om lĂȘerslys te sien en lĂȘers uit te vee/ op te laai)
  • /edit? file = lĂȘernaam (sien inhoud van 'n spesifieke lĂȘer)
  • /herlaai (herlaai knoppiesname en toestellĂȘers. Gebruik nadat u een hiervan verander het)

Stap 5: Alexa Voice Control met behulp van IFTTT

Die eenvoudigste manier om die ir Blaster met Alexa te gebruik, is om IFTTT as 'n poort te gebruik.

Poort eers die poort wat gebruik is na u blaster in u router deur, sodat dit vanaf die internet toeganklik is. Dit kan goed wees om 'n dns -diens soos freedns te gebruik om u eksterne IP -adres van u routers 'n naam te gee en dit makliker te hanteer as hierdie IP verander.

Stel 'n IFTTT -rekening op en aktiveer die Maker Webhooks -kanaal en die Alexa -kanaal. As u dit doen, moet u by die Amazon -webwerf aanmeld om die IFTT -toegang moontlik te maak.

Skep 'n IF -sneller met behulp van die IFTTT Alexa -kanaal, kies die aksie gebaseer op 'n frase en voer die gewenste frase in (bv. Volume op).

Skep die aksie deur die Maker webhooks -kanaal te kies. Voer so iets in die URL -veld in

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


Hierdie aksie sal na die ir blaster gestuur word, waar dit die makro -volume -opgradering sal probeer uitvoer. 'N Mens kan 'n spesifieke toestel/knoppie hier wees, maar ek vind dit beter om makros te definieer en te gebruik, want dan kan die aksievolgorde maklik verander word deur die makro te herdefinieer.

'N Afsonderlike IFTTT -applet is nodig vir elke opdrag.

Stap 6: Inheemse Alexa Voice -vaardigheid

In plaas van IFTTT kan u 'n pasgemaakte vaardigheid bou in die ontwikkeling van Alexa. Dit sentraliseer al die verwerking op een plek en beteken dat u nie afsonderlike aksies vir elke knoppie hoef te maak nie.

U moet registreer as 'n Amazon Alexa -ontwikkelaar, en u moet registreer by die Amazon AWS -konsole -lambda -diens. U sal ook na die tutoriale moet kyk om die proses 'n bietjie te verstaan.

Aan die kant van die Alexa -ontwikkelaar moet u 'n nuwe aangepaste vaardigheid skep, die snellerwoord invoer en 'n lys opdragwoorde soos volume verhoog, gids, ens.

Alexa stuur dan die frase na 'n program wat op die lamda -diens loop, wat die frase interpreteer en 'n URL -oproep na die Ir -blaster maak om dit te doen.

Ek het die Alexa intention -skema en die konsole -lambda -funksie wat ek gebruik in die git ingesluit. Die URL moet gewysig word om na die toepaslike IP te verwys en die regte magtiging te hĂȘ. Om dit eenvoudig te hou, noem die lambda -funksies 'n makro met 'n kleinletter weergawe van die frase. Dit probeer ook die sneller -sleutelwoord wat soms ingesluit kan word, verwyder. Bv. blaster VOLUME up sal 'n makro genaamd volumeup noem as die snellerwoord blaster was.

Stap 7: Alexa aktiveer detector

Alhoewel die Echo / Dot -stemherkenning goed is, kan dit soms deurmekaar raak as die geluid vanaf 'n TV speel, tensy u naby kom en hard praat.

Om dit te verbeter, het ek 'n active -detector by my Dot gevoeg. Sodra die sleutelwoord (Alexa gesĂȘ word) die ring van LED's brand. Die detektor voer dit in die blaster waar dit die alexaon -makro sal gebruik om die TV te demp, net so aan die einde van die verwerking van 'n opdrag gaan die ligte af en die alexaoff -makro herstel die geluid.

Die 'detect' -opdrag kan ook gebruik word om dit aan en uit te skakel. So gebruik ek byvoorbeeld die aanvanklike turnon -makro om die opsporing en die afskakelmakro moontlik te maak om dit uit te skakel. Dit kan ook binne die aksiemakro's gebruik word om 'n werklike stom en ondempte koomand te ondersteun wat andersins problematies sou wees.

Die fisiese detektor is 'n ligafhanklike weerstand wat die stroombaan ondersteun. Ek monteer myne op die Dot met 'n 3D -gedrukte hakie

Aanbeveel: