Cuprins:

ESP-12 Infra Red Blaster: 7 pași
ESP-12 Infra Red Blaster: 7 pași

Video: ESP-12 Infra Red Blaster: 7 pași

Video: ESP-12 Infra Red Blaster: 7 pași
Video: My journey of making a PERFECT! Universal IR Blaster 👀 2024, Iulie
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

Blaster cu telecomandă Infra Red folosind esp8266

Transmite codurile de telecomandă primite de pe Web care acceptă mai multe dispozitive de ieșire.

Construită într-o pagină web simplă, în principal pentru testare.

Utilizarea normală se face prin mesaje POST care pot proveni din pagini web sau din controlul vocal IFTTT / Alexa.

Suportă un detector de activare Amazon Echo / Dot pentru a dezactiva / opri imediat ce este rostit cuvântul de activare.

Comenzile sunt fie comenzi simple, fie secvențe. Secvențele pot fi stocate ca macro-uri numite, care pot fi apoi utilizate ca comenzi sau în alte secvențe.

Istoricul recent și lista de macrocomenzi pot fi obținute prin intermediul interfeței web

Suportă încărcarea OTA de firmware nou și folosește biblioteca WifiManager pentru configurarea inițială a wifi-ului

Pasul 1: Hardware

Hardware
Hardware
Hardware
Hardware

Utilizează următoarele componente

  • Modul ESP-12F
  • Regulator de 3,3 V (mini regulator MP2307)
  • Comutatoare MOSFET (AO3400)
  • Emitator infraroșu (3 mm)
  • Rezistor dependent de lumină GL2258 (detector opțional de activitate Alexa)
  • Rezistențe
  • Condensator de decuplare (20uF)
  • Priză feminină USB (preferabil lipită cu manșon
  • Bandă de priză IC cu 3 pini pentru detectorul Alexa
  • Piese mecanice (pot fi imprimate 3D)

Poate fi asamblat în cutia proiectului ESP-12F

  • Atașați regulatorul la conectorul USB și introduceți-l în cutie
  • Faceți driverul IR pe o bucată mică de placă vero (3 fire, + 5V, 0V intrare poartă)
  • Conectați driverul IR la USB + 5V, 0V
  • Introduceți mufa IC cu 3 pini în cutia de proiect dacă utilizați detectorul Alexa. Conectați-vă la + 3.3V, 0V și cablu pentru intrare
  • Faceți ESP-12F cu 2.2K de la GPIO15 la GND, EN la Vdd, 4K7 GPIO13 la Vdd, intrare Alexa la GPIO13, driver IR la GPIO14, 0V și Vdd la 3.3V
  • Alcătuiește detectorul Alexa și susține tamponul, dacă este necesar.

Rețineți că poate fi mai ușor să programați mai întâi ESP-12F dacă aveți un fel de facilitate de programare serială sau o instalație temporară de breadboarding ca aceasta pentru a vă conecta la porturile seriale.

Programarea ulterioară se poate face folosind actualizarea OTA încorporată.

Pasul 2: Software

Ir Blaster folosește o schiță Arduino disponibilă pe github

Acest lucru trebuie ajustat pentru a se potrivi condițiilor locale și apoi compilat într-un mediu Arduino esp8266.

Următoarele biblioteci sunt necesare, majoritatea sunt standard sau pot fi adăugate. Ultimele două sunt incluse în git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (inclus în Git)
  • BitMessages (incluse în Git)

Elementele din schiță care urmează să fie modificate includ

  • Cod de autorizare pentru acces web AP_AUTHID
  • Parola managerului Wfi WM_PASSWORD
  • firmware parola OTA update_password
  • Noi dispozitive IR / coduri de butoane (vezi mai târziu)

Odată ce ați făcut acest lucru, acesta ar trebui mai întâi încărcat folosind încărcarea în serie convențională.

Deoarece SPIFFS este utilizat, atunci memoria ar trebui pregătită prin instalarea și utilizarea instrumentului de încărcare arduino ESP8266 Sketch Data. Aceasta va încărca folderul de date ca conținut SPIFFS inițial

Când dispozitivul nu se poate conecta la rețeaua locală (așa cum se va întâmpla prima dată), atunci managerul Wifi va crea un punct de acces (192.168.4.1). Conectați-vă la această rețea de pe un telefon sau tabletă, apoi navigați la 192.168.4.1 Veți obține o interfață web pentru a vă conecta la wifi-ul local. Accesele ulterioare vor folosi acest lucru. Dacă rețeaua locală se schimbă, aceasta va reveni la acest mod de configurare.

Actualizarea ulterioară se poate face prin compilarea unui binar de export în mediul Arduino și apoi accesarea interfeței OTA de pe ip / firmware.

Pasul 3: Adăugați coduri de dispozitiv / buton

Notă: Această secțiune s-a modificat față de metoda anterioară în care configurația care a fost compilată anterior în cod. Acum folosește fișiere care sunt încărcate din sistemul de fișiere SPIFFs. Acest lucru face mult mai ușor să încărcați noi definiții.

Definițiile butoanelor sunt incluse în fișierul buttonnames.txt. Este o listă globală de nume pentru toate telecomenzile utilizate, deoarece multe nume tind să fie comune. După cum este furnizat, acesta conține detalii pentru telecomenzile pe care le folosesc. Pot fi adăugate intrări noi. Există spațiu pentru un total de 160 de nume, dar acest lucru poate fi mărit prin ajustarea constantelor în bitMessages.h și recompilarea. Numele definite aici sunt numele care trebuie utilizate la trimiterea comenzilor.

Fiecare dispozitiv la distanță este definit într-un fișier numit dev_remotename. Acesta constă dintr-o secțiune de configurare în partea de sus și apoi o tabelă de mapare de la nume de butoane la coduri care sunt șiruri hexagonale care conțin biții de trimis. Trebuie definite doar numele butoanelor necesare.

Secțiunea de configurare de la începutul unui fișier de dispozitiv conține parametri care trebuie utilizați la trimiterea unui cod. Prima intrare este numele dispozitivului care este utilizat la trimiterea unei comenzi. Alți parametri sunt descriși în readme-ul de pe site-ul codului.

Cele mai multe telecomenzi aparțin uneia dintre cele 3 categorii de protocol (nec, rc5 și rc6). nec este probabil cel mai comun și are o structură simplă a antetului și sincronizarea biților. Există o ușoară variantă a acestui lucru care diferă doar în timpul de impuls al antetului. rc5 și rc6 sunt protocoale definite de Philips, dar utilizate și de alți producători. Sunt puțin mai complicate și rc6 are în special o cerință specială de sincronizare pentru unul dintre biți.

Pentru a captura codurile pentru o nouă telecomandă, folosesc un receptor IR (TSOP) utilizat în mod obișnuit cu conectarea receptoarelor la distanță. Aceasta face decodarea de bază și oferă o ieșire la nivel logic. În mod normal, acestea vin cu o mufă de 3,5 mm cu conexiuni + 5V, GND, DATA. Am sacrificat unul, am scurtat plumbul și l-am introdus printr-un tampon inversor de 3,3 V pentru a alimenta un pin GPIO pe un Raspberry Pi.

Apoi folosesc un instrument python rxir.py (în folderul git tools) pentru a captura coduri. Pentru a ușura utilizarea capturării unui număr mare de butoane, instrumentul folosește un fișier de definire a textului pentru a defini butoanele de pe telecomandă și este doar numele butoanelor dintr-un grup de pe telecomandă. De exemplu, s-ar putea să aveți o nouă telecomandă Sony și să configurați 3 fișiere text numite sonytv-cursor, sonytv-numbers, sonytv-playcontrols fiecare cu numele butoanelor relevante. Instrumentul va solicita dispozitivul (sonytv), secțiunea (cursor) și ce protocol să utilizați (nec, nec1, rc5, rc6). Apoi va solicita secvențial pentru fiecare apăsare a butonului și va scrie rezultatele într-un fișier sonytv-ircodes. Secțiunile pot fi repetate dacă este necesar pentru a verifica capturile sunt bune. Biții din fișierul.ircodes pot fi editați în tabelele BitDevices.

Pasul 4: Control web și macrocomenzi

Controlul web de bază este fie un singur get, fie un post JSON care poate conține o secvență.

Get to / ir are 6 parametri

  • auth - care conține codul de autorizare
  • dispozitiv - numele dispozitivului la distanță
  • parametru - numele butonului
  • biți - un număr opțional de biți
  • repeat - un număr de repetări opțional
  • wait - o întârziere în msecunde înainte ca următoarea comandă să poată fi executată.

Dispozitivul poate fi, de asemenea, „nul” pentru a obține doar o întârziere, „macro” pentru a utiliza macro-ul la care se referă parametrul sau „detectare” pentru a utiliza caracteristica de detectare Alexa (vezi mai târziu).

Postarea către / irjson constă dintr-o structură json ca

{

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

}

Secvența poate avea orice lungime, iar dispozitivele pot fi referințe macro.

Aceeași structură poate fi utilizată pentru a defini macro-urile. Trebuie doar să includeți macro: „macroname”, la nivelul superior de ex. după autentificare. Conținutul real este stocat într-un fișier numit macroname.txt

Macrocomenzile pot fi șterse definindu-le fără „comenzi”.

Alte comenzi web

  • / recent (enumeră activitatea recentă)
  • / verifica (arată starea de bază)
  • / (încarcă un formular web pentru a trimite comenzi manual)
  • / edit (încarcă un formular web pentru a vizualiza lista de fișiere și a șterge / încărca fișiere)
  • / edit? file = nume de fișier (vizualizați conținutul unui anumit fișier)
  • / reload (reîncarcă numele butoanelor și fișierele dispozitivului. Se utilizează după modificarea oricăruia dintre acestea)

Pasul 5: Alexa Voice Control folosind IFTTT

Cel mai simplu mod de a utiliza ir Blaster cu Alexa este să utilizați IFTTT ca gateway.

Primul port redirecționează portul folosit la blasterul din router, astfel încât acesta să fie accesibil de pe internet. Poate fi bine să folosiți un serviciu dns, cum ar fi freedns, pentru a da routerelor un nume IP extern și pentru a face mai ușor de gestionat dacă acest IP se schimbă.

Configurați un cont IFTTT și activați canalul Maker Webhooks și canalul Alexa. Va trebui să vă conectați la site-ul Amazon atunci când faceți acest lucru pentru a permite accesul IFTT.

Creați un declanșator IF utilizând canalul IFTTT Alexa, alegeți acțiunea pe baza unei fraze și introduceți fraza dorită (de exemplu, creșterea volumului).

Creați acțiunea alegând canalul Maker webhooks. Introduceți în câmpul URL ceva de genul

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

Această acțiune va fi trimisă la ir-blaster unde va încerca să execute volumul macro. Unul poate fi specific dispozitiv / butoane aici, dacă se dorește, dar mi se pare mai bine să definesc și să folosesc macrocomenzi, deoarece secvența de acțiune poate fi ușor schimbată doar prin redefinirea macrocomenzii.

Este necesar un applet IFTTT separat pentru fiecare comandă.

Pasul 6: Abilitatea nativă Alexa Voice

În loc de IFTTT se poate construi o abilitate personalizată în cadrul dezvoltării Alexa. Aceasta centralizează toate procesările într-un singur loc și înseamnă că nu trebuie să creați acțiuni separate pentru fiecare buton.

Trebuie să vă înregistrați ca dezvoltator Amazon Alexa și trebuie să vă înregistrați la serviciul lambda al consolei Amazon AWS. De asemenea, va trebui să vă uitați la tutoriale pentru a înțelege puțin procesul.

Pe partea de dezvoltator Alexa, trebuie să creați o nouă abilitate personalizată, să introduceți cuvântul declanșator și să creați o listă de cuvinte de comandă, cum ar fi creșterea volumului, ghidul etc.

Alexa trimite apoi fraza către un program care rulează pe serviciul lamda care interpretează fraza și face un apel URL către blasterul Ir pentru a o acționa.

Am inclus schema intenției Alexa și funcția lambda a consolei pe care o folosesc în git. Adresa URL va trebui modificată pentru a face referire la adresa IP corespunzătoare și pentru a avea autorizația corectă. Pentru a simplifica funcțiile lambda, apelează o macro care are o versiune minusculă a frazei. De asemenea, încearcă să elimine cuvântul cheie declanșator care uneori poate fi inclus. De exemplu. blaster VOLUME up va apela o macro numită volume up dacă cuvântul declanșator a fost blaster.

Pasul 7: Alexa Activează Detector

Deși recunoașterea vocală Echo / Dot este bună, uneori se poate confunda dacă sunetul este redat de la un televizor, cu excepția cazului în care vă apropiați și vorbiți tare.

Pentru a îmbunătăți acest lucru, am adăugat un detector de activare la Dot. De îndată ce cuvântul cheie (se spune Alexa) se aprinde inelul de LED-uri. Detectorul alimentează acest lucru în blaster, unde va folosi macro-ul alexaon pentru a dezactiva televizorul, în mod similar la sfârșitul procesării unei comenzi, luminile se sting și macro-ul alexaoff restabilește sunetul.

Comanda „detectare” poate fi utilizată și pentru a activa sau dezactiva acest lucru. De exemplu, folosesc macro-ul turnon inițial pentru a permite detectarea și macro-ul de dezactivare pentru a-l dezactiva. Acest lucru poate fi, de asemenea, utilizat în macrocomenzile de acțiune pentru a susține o comandă reală de mutare și dezactivare a sunetului care altfel ar fi problematică.

Detectorul fizic este un rezistor dependent de lumină pe care îl suportă circuitul. Îl montez pe al meu pe Dot cu o paranteză imprimată 3D

Recomandat: