Talaan ng mga Nilalaman:

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

Video: ESP-12 Infra Red Blaster: 7 Hakbang

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

Infra Red remote control blaster gamit ang esp8266

Nagpapadala ng mga remote control code na natanggap mula sa Web na sumusuporta sa maraming mga output device.

Itinayo sa simpleng web page pangunahin para sa pagsubok.

Ang normal na paggamit ay sa pamamagitan ng mga mensahe sa POST na maaaring magmula sa mga web page o mula sa IFTTT / Alexa control sa boses.

Sinusuportahan ang isang Amazon Echo / Dot activate detector upang i-mute / manahimik kaagad kapag binibigkas ang salita ng pag-activate.

Ang mga utos ay alinman sa solong mga utos o pagkakasunud-sunod. Ang mga pagkakasunud-sunod ay maaaring itago bilang pinangalanang macros na maaaring magamit bilang mga utos o sa iba pang mga pagkakasunud-sunod.

Ang kamakailang kasaysayan at listahan ng macros ay maaaring makuha sa pamamagitan ng web interface

Sinusuportahan ang pag-upload ng OTA ng bagong firmware at ginagamit ang WifiManager library para sa paunang pag-set up ng wifi

Hakbang 1: Hardware

Hardware
Hardware
Hardware
Hardware

Gumagamit ng mga sumusunod na sangkap

  • Module ng ESP-12F
  • 3.3V regulator (MP2307 mini buck regulator)
  • Mga switch ng MOSFET (AO3400)
  • Infra Red emitter (3mm)
  • Light Dependent Resistor GL2258 (Opsyonal na detector ng aktibidad ng Alexa)
  • Mga lumalaban
  • Pag-decoupling ng kapasitor (20uF)
  • USB babaeng socket (mas mabuti na maghinang na mag-solder na may manggas
  • 3 pin IC socket strip para sa detektor ng Alexa
  • Mga bahagi ng mekanikal (maaaring naka-print sa 3D)

Maaaring tipunin sa kahon ng proyekto ng ESP-12F

  • Ikabit ang regulator sa konektor ng USB at ipasok sa kahon
  • Gumawa ng IR driver papunta sa maliit na piraso ng vero board (3 wires, + 5V, 0V gate input)
  • Ikonekta ang driver ng IR sa USB + 5V, 0V
  • Ipasok ang 3 pin IC socket sa kahon ng proyekto kung gumagamit ng detector ng Alexa. Kumonekta sa + 3.3V, 0V at wire para sa pag-input
  • Gumawa ng ESP-12F na may 2.2K mula GPIO15 hanggang GND, EN hanggang Vdd, 4K7 GPIO13 hanggang Vdd, input ng Alexa sa GPIO13, IR driver sa GPIO14, 0V at Vdd hanggang 3.3V
  • Gumawa ng detektor ng Alexa at suportahan ang buffer kung kinakailangan.

Tandaan na maaaring mas madaling i-program ang ESP-12F muna kung mayroon kang isang uri ng serial programming facility o pansamantalang pasilidad sa breadboarding na tulad nito upang kumonekta sa mga serial port.

Ang kasunod na programa ay maaaring gawin gamit ang built in na update ng OTA.

Hakbang 2: Software

Gumagamit ang ir Blaster ng isang Arduino sketch na magagamit sa github

Kailangan itong ayusin upang umangkop sa mga lokal na kundisyon at pagkatapos ay naipon sa isang esp8266 na Arduino na kapaligiran.

Ang mga sumusunod na silid-aklatan kinakailangan, karamihan ay pamantayan o maaaring maidagdag. Ang huling dalawa ay kasama sa git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (kasama sa Git)
  • BitMessages (kasama sa Git)

Isama ang mga item sa sketch na papalitan

  • Ang code ng pahintulot para sa pag-access sa web sa AP_AUTHID
  • Ang password ng manager ng Wfi na WM_PASSWORD
  • firmware OTA password update_password
  • Mga bagong IR device / code ng pindutan (tingnan sa paglaon)

Kapag tapos na ito dapat muna itong mai-upload gamit ang maginoo na serial upload.

Tulad ng ginamit na SPIFFS pagkatapos ay dapat na ihanda ang memorya sa pamamagitan ng pag-install at paggamit ng arduino ESP8266 na tool sa pag-upload ng Sketch Data. I-a-upload nito ang folder ng data bilang paunang nilalaman ng SPIFFS

Kapag ang aparato ay hindi makakonekta sa lokal na network (tulad ng mangyayari sa unang pagkakataon) pagkatapos ay lilikha ang Wifi manager ng isang access point (192.168.4.1). Kumonekta sa network na ito mula sa isang telepono o tablet pagkatapos mag-browse sa 192.168.4.1 Makakakuha ka ng isang web interface upang kumonekta sa lokal na wifi. Gagamitin ito ng mga susunod na pag-access. Kung nagbago ang lokal na network pagkatapos ay babalik ito sa config mode na ito.

Ang kasunod na pag-update ay maaaring gawin sa pamamagitan ng pag-iipon ng isang binary na pag-export sa Arduino na kapaligiran at pagkatapos ay i-access ang interface ng OTA sa ip / firmware.

Hakbang 3: Magdagdag ng Mga Code ng Device / Button

Tandaan: Ang seksyon na ito ay nagbago mula sa nakaraang pamamaraan kung saan ang pagsasaayos na dating naipon sa code. Gumagamit na ito ngayon ng mga file na na-load mula sa SPIFFs filing system. Ginagawa nitong mas madali upang mag-upload ng mga bagong kahulugan.

Ang mga kahulugan ng pindutan ay kasama sa file ng mga buttonnames.txt. Ito ay isang pandaigdigang listahan ng mga pangalan sa lahat ng mga remote na ginagamit bilang maraming mga pangalan ay may posibilidad na maging karaniwan. Tulad ng ibinibigay naglalaman ito ng mga detalye para sa mga remote na ginagamit ko. Maaaring maidagdag ang mga bagong entry. Mayroong puwang para sa isang kabuuang 160 mga pangalan ngunit maaari itong madagdagan sa pamamagitan ng pagsasaayos ng mga pare-pareho sa bitMessages.h at muling pagsasaayos. Ang mga pangalan na tinukoy dito ay ang mga pangalan na gagamitin kapag nagpapadala ng mga utos.

Ang bawat remote na aparato ay tinukoy sa isang file na tinatawag na dev_remotename. Binubuo ito ng isang seksyon ng config sa itaas at pagkatapos ay isang talahanayan ng pagmamapa mula sa mga buttonnames hanggang sa mga code na mga hex string na naglalaman ng mga bit na ipapadala. Ang mga kinakailangang pindutan lamang ang kailangang tukuyin.

Ang seksyon ng config sa simula ng isang file ng aparato ay naglalaman ng mga parameter na gagamitin kapag nagpapadala ng isang code. Ang unang entry ay ang devicename na ginagamit kapag nagpapadala ng isang utos. Ang iba pang mga parameter ay inilarawan sa readme sa site ng code.

Karamihan sa mga remote ay nabibilang sa isa sa 3 mga kategorya ng protokol (nek, rc5 at rc6). Nasa marahil ay ang pinaka-karaniwan at may isang simpleng istraktura ng header at kaunting tiyempo. Mayroong isang bahagyang pagkakaiba-iba nito na naiiba lamang sa tiyempo ng header pulse. Ang rc5 at rc6 ay mga protokol na tinukoy ng Philips ngunit ginagamit din ng ilang ibang mga tagagawa. Ang mga ito ay medyo mas kumplikado at ang rc6 sa partikular ay may isang espesyal na kinakailangan sa oras para sa isa sa mga piraso.

Upang makuha ang mga code para sa isang bagong remote Gumagamit ako ng isang IR receiver (TSOP) na karaniwang ginagamit sa plug sa mga remote receiver. Ginagawa nito ang pangunahing pag-decode at nagbibigay ng output ng antas ng lohika. Karaniwan silang may kasamang 3.5mm jack na may mga koneksyon na + 5V, GND, DATA. Nagsakripisyo ako ng isa, pinaikling ang tingga at inilagay ito sa pamamagitan ng isang pabaliktad na 3.3V buffer upang pakainin ang isang GPIO pin sa isang Raspberry Pi.

Gumagamit ako pagkatapos ng isang python tool rxir.py (sa folder ng mga tool ng git) upang makuha ang mga code. Upang gawing mas madaling gamitin upang makuha ang isang malaking bilang ng mga pindutan pagkatapos ang tool ay gumagamit ng isang file ng kahulugan ng teksto upang tukuyin ang mga pindutan sa remote at ang mga pangalan lamang ng mga pindutan sa isang pangkat sa remote. Halimbawa, ang isa ay maaaring magkaroon ng isang bagong remote ng Sony at magtatakda ang isang 3 mga file ng teksto na tinatawag na sonytv-cursor, mga sonytv-number, sonytv-playcontrols bawat isa na may kaugnay na mga pangalan ng pindutan sa. Ang tool ay mag-uudyok para sa aparato (sonytv), ang seksyon (cursor) at aling protokol ang gagamitin (nek, nek1, rc5, rc6). Susunod na sususunod ito para sa bawat pindutin ang pindutan at isulat ang mga resulta sa isang sonytv-ircodes file. Maaaring maulit ang mga seksyon kung kinakailangan upang suriin ang mga nakunan ay mabuti. Ang mga piraso mula sa.ircodes file ay maaaring mai-edit sa mga talahanayan ng BitDevices.

Hakbang 4: Web Control at Macros

Ang pangunahing kontrol sa web ay alinman sa isang solong get o isang json post na maaaring maglaman ng isang pagkakasunud-sunod.

Ang get to / ir ay may 6 na mga parameter

  • auth - naglalaman ng code ng pagpapahintulot
  • aparato - ang pangalan ng malayuang aparato
  • parameter - ang pangalan ng pindutan
  • mga piraso - isang opsyonal na bilang ng kaunti
  • ulitin - isang opsyonal na bilang ng ulitin
  • maghintay - isang pagkaantala sa mseconds bago maisagawa ang susunod na utos.

Ang aparato ay maaari ding maging 'null' upang makakuha lamang ng isang pagkaantala, 'macro' upang magamit ang macro na tinukoy ng parameter, o 'tuklasin' upang magamit ang tampok na tuklas ng Alexa (tingnan sa paglaon).

Ang post sa / irjson ay binubuo ng isang json istraktura tulad ng

{

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

}

Ang pagkakasunud-sunod ay maaaring maging anumang haba at ang mga aparato ay maaaring mga sanggunian sa macro.

Ang parehong istraktura ay maaaring magamit upang tukuyin ang mga macros. Isama lamang ang macro: "macroname", sa pinakamataas na antas hal. pagkatapos ng auth Ang mga tunay na nilalaman ay nakaimbak sa isang file na tinatawag na macroname.txt

Maaaring matanggal ang Macros sa pamamagitan ng pagtukoy sa kanila ng walang "mga utos".

Iba pang mga utos sa web

  • / kamakailan lamang (naglilista ng kamakailang aktibidad)
  • / check (nagpapakita ng pangunahing katayuan)
  • / (naglo-load ng isang form sa web upang magpadala ng mga utos nang manu-mano)
  • / i-edit (naglo-load ng isang form sa web upang tingnan ang listahan ng file at tanggalin / i-upload ang mga file)
  • / edit? file = filename (tingnan ang mga nilalaman ng isang tukoy na file)
  • / i-reload (i-reload ang mga buttonname at file ng aparato. Gamitin pagkatapos baguhin ang anuman sa mga ito)

Hakbang 5: Alexa Control ng Boses Gamit ang IFTTT

Ang pinakasimpleng paraan upang magamit ang ir Blaster sa Alexa ay ang paggamit ng IFTTT bilang isang gateway.

Ipasa muna ang daungan ng port na ginamit sa iyong blaster sa iyong router upang ma-access ito mula sa internet. Maaari itong maging mahusay na gumamit ng isang serbisyo ng dns tulad ng freedns upang bigyan ang iyong mga router ng panlabas na ip isang pangalan at gawing mas madaling hawakan kung magbabago ang ip na ito.

Mag-set up ng isang IFTTT account at paganahin ang Maker Webhooks channel at ang Alexa channel. Kakailanganin mong mag-logon sa Amazon site kapag ginawa mo ito upang paganahin ang pag-access sa IFTT.

Lumikha ng isang IF trigger gamit ang IFTTT Alexa channel, piliin ang aksyon batay sa isang parirala at ipasok ang parirala na nais mo (hal. Dami ng dami).

Lumikha ng pagkilos sa pamamagitan ng pagpili sa Maker webhooks channel. Ipasok sa patlang ng URL ang isang bagay tulad ng

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

Ipapadala ang aksyon na ito sa ir blaster kung saan susubukan nitong maisagawa ang macro volumeup. Ang isa ay maaaring maging tukoy na aparato / mga pindutan dito kung nais ngunit mas masusumpungan ko ito upang tukuyin at gamitin ang mga macros dahil kung gayon ang pagkakasunud-sunod ng pagkilos ay madaling mabago sa pamamagitan lamang ng muling pagtukoy sa macro.

Ang isang magkahiwalay na IFTTT applet ay kinakailangan para sa bawat utos.

Hakbang 6: Katutubong Kasanayan sa Boses Alexa

Sa halip na IFTTT ang isa ay maaaring bumuo ng isang pasadyang kasanayan sa loob ng pag-unlad ng Alexa. Isinasentro nito ang lahat ng pagpoproseso sa isang lugar at nangangahulugang hindi mo kailangang lumikha ng magkakahiwalay na mga aksyon para sa bawat pindutan.

Kailangan mong magparehistro bilang isang developer ng Amazon Alexa at kailangan mong magparehistro sa serbisyo ng lambda ng Amazon AWS console. Kakailanganin mo ring tingnan ang mga tutorial upang maunawaan nang kaunti ang proseso.

Sa panig ng nag-develop ng Alexa kailangan mong lumikha ng isang bagong pasadyang kasanayan, ipasok ang salita ng pag-trigger nito at lumikha ng isang listahan ng mga salita ng utos tulad ng lakas ng tunog, gabay, atbp.

Pagkatapos ay ipinadala ni Alexa ang parirala sa isang program na tumatakbo sa serbisyo ng lamda na binibigyang kahulugan ang parirala at gumagawa ng isang tawag sa URL sa Ir blaster upang aksyunan ito.

Isinama ko ang iskema ng Alexa na hangarin at ang console lambda function na ginagamit ko sa git. Kailangang mabago ang URL upang tukuyin ang naaangkop na ip at magkaroon ng tamang pahintulot. Upang mapanatili itong simple, ang pag-andar ng lambda ay tumatawag sa isang macro na may puwang na nakuha ang mas mababang kaso ng bersyon ng parirala. Sinusubukan din nitong alisin ang keyword ng pag-trigger na kung minsan ay maaaring maisama. Hal. tatawag ang blaster VOLUME up ng isang macro na tinatawag na volumeup kung ang nag-trigger na salita ay blaster.

Hakbang 7: Ang Alexa Activate Detector

Bagaman ang pagkilala ng boses ng Echo / Dot ay mabuti maaari itong malito kung minsan kung ang tunog ay nagpe-play mula sa pagsabi ng isang TV maliban kung malapit ka at malakas na magsalita.

Upang mapabuti ito ay nagdagdag ako ng isang detector ng pag-activate sa aking Dot. Sa sandaling ang keyword (sinabi na Alexa) ang singsing ng mga LEDs ay ilaw up. Pinapainom ito ng detektor sa blaster kung saan gagamitin nito ang Alexaon macro upang i-mute ang TV, katulad sa pagtatapos ng pagproseso ng isang utos ang mga ilaw ay patayin at ibalik ng tunogoff macro ang tunog.

Maaari ding magamit ang command na 'tuklasin' upang i-on at i-off ito. Kaya halimbawa ginagamit ko ang paunang turnon macro upang paganahin ang pagtuklas at ang turnoff macro upang huwag paganahin ito. Maaari din itong magamit sa loob ng mga macros ng pagkilos upang suportahan ang isang tunay na walang imik at i-unmute ang coomand na kung saan ay magiging may problema.

Ang physical detector ay isang light dependant resistor na sinusuportahan ng circuit. Inilalagay ko ang minahan sa Dot gamit ang isang naka-print na bracket na 3D

Inirerekumendang: