Բովանդակություն:

ESP-12 Infra Red Blaster: 7 քայլ
ESP-12 Infra Red Blaster: 7 քայլ

Video: ESP-12 Infra Red Blaster: 7 քայլ

Video: ESP-12 Infra Red Blaster: 7 քայլ
Video: My journey of making a PERFECT! Universal IR Blaster 👀 2024, Հուլիսի
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

Ինֆրակարմիր հեռակառավարման բլաստեր ՝ օգտագործելով esp8266

Փոխանցում է վեբից ստացված հեռակառավարման կոդերը, որոնք աջակցում են բազմաթիվ ելքային սարքեր:

Կառուցված է պարզ վեբ էջ հիմնականում փորձարկման համար:

Սովորական օգտագործումը կատարվում է POST հաղորդագրությունների միջոցով, որոնք կարող են գալ վեբ էջերից կամ IFTTT / Alexa ձայնային հսկողությունից:

Աջակցում է Amazon Echo / Dot- ի ակտիվացման դետեկտորին ՝ խոսքն ակտիվացնելուն պես լռելու / լռեցնելու համար:

Հրամանները կամ առանձին հրամաններ են, կամ հաջորդականություններ: Հաջորդականությունները կարող են պահվել որպես մակրոներ, որոնք կարող են օգտագործվել որպես հրամաններ կամ այլ հաջորդականություններ:

Վերջին պատմությունը և մակրոների ցանկը կարելի է ձեռք բերել վեբ ինտերֆեյսի միջոցով

Աջակցում է նոր որոնվածի OTA- ի բեռնումին և օգտագործում է WifiManager գրադարանը նախնական wifi տեղադրման համար

Քայլ 1: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ

Օգտագործում է հետևյալ բաղադրիչները

  • ESP-12F մոդուլ
  • 3.3V կարգավորիչ (MP2307 mini buck կարգավորիչ)
  • MOSFET անջատիչներ (AO3400)
  • Ինֆրակարմիր ճառագայթիչ (3 մմ)
  • Լուսից կախված դիմադրություն GL2258 (ըստ ցանկության Alexa գործունեության դետեկտոր)
  • Ռեզիստորներ
  • Կոնդենսատորի անջատում (20uF)
  • USB կանացի վարդակից (նախընտրելի է զոդել թևի հետ միասին)
  • 3 պին IC վարդակից ՝ Alexa դետեկտորի համար
  • Մեխանիկական մասեր (կարող են 3D տպագրվել)

Կարող է հավաքվել ESP-12F նախագծի տուփի մեջ

  • Կարգավորիչը ամրացրեք USB միակցիչին և տեղադրեք տուփի մեջ
  • Կազմեք IR վարորդը vero տախտակի փոքր կտորի վրա (3 լար, +5V, 0V դարպասի մուտք)
  • IR վարորդը միացրեք USB +5V, 0V
  • Տեղադրեք 3 պին IC վարդակից ծրագրի տուփի մեջ, եթե օգտագործում եք Alexa դետեկտոր: Մուտքի համար միացեք +3.3 Վ, 0 Վ և լարին
  • Կազմեք ESP-12F 2.2K- ով GPIO15- ից GND, EN- ից Vdd, 4K7 GPIO13- ից Vdd, Alexa մուտքագրում GPIO13- ին, IR վարորդին GPIO14- ին, 0V- ով և Vdd- ից մինչև 3.3V
  • Կազմեք Alexa դետեկտոր և անհրաժեշտության դեպքում աջակցեք բուֆերը:

Ուշադրություն դարձրեք, նախ կարող եք ավելի հեշտ ծրագրավորել ESP-12F- ը, եթե սերիական նավահանգիստներին միանալու համար ունեք սերիական ծրագրավորման ինչ-որ հաստատություն կամ նմանատիպ հացաբուլկեղենի ժամանակավոր հաստատություն:

Հետագա ծրագրավորումը կարող է կատարվել `օգտագործելով ներկառուցված OTA թարմացումը:

Քայլ 2: Softwareրագրակազմ

Ir Blaster- ը օգտագործում է Arduino էսքիզ, որը հասանելի է github- ում

Սա պետք է ճշգրտվի, որպեսզի համապատասխանի տեղական պայմաններին, այնուհետև կազմվի esp8266 Arduino միջավայրում:

Հետևյալ գրադարաններն անհրաժեշտ են, դրանցից շատերը ստանդարտ են կամ կարող են ավելացվել: Վերջին երկուսը ներառված են git- ում:

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (ներառված է Git- ում)
  • BitMessages (ներառված է Git- ում)

Էսքիզում փոփոխվող տարրերը ներառում են

  • Վեբ մուտքի թույլտվության կոդ AP_AUTHID
  • Wfi մենեջերի գաղտնաբառ WM_PASSWORD
  • որոնվածը OTA գաղտնաբառ update_password
  • Նոր IR սարքեր / կոճակների կոդեր (տես ավելի ուշ)

Երբ դա արվի, այն նախ պետք է վերբեռնվի ՝ օգտագործելով սովորական սերիական վերբեռնում:

Քանի որ SPIFFS- ն օգտագործվում է, հիշողությունը պետք է պատրաստվի `տեղադրելով և օգտագործելով arduino ESP8266 Sketch Data- ի բեռնման գործիքը: Սա կբեռնի տվյալների թղթապանակը որպես սկզբնական SPIFFS բովանդակություն

Երբ սարքը չի կարող միանալ տեղական ցանցին (ինչպես դա տեղի կունենա առաջին անգամ), ապա Wifi մենեջերը կստեղծի մուտքի կետ (192.168.4.1): Միացեք այս ցանցին հեռախոսից կամ պլանշետից, ապա թերթեք 192.168.4.1 հասցեով: Տեղական wifi ցանցին միանալու համար կստանաք վեբ ինտերֆեյս: Հետագա մուտքերը կօգտագործեն սա: Եթե տեղական ցանցը փոխվի, այն կվերադառնա այս կազմաձևման ռեժիմին:

Հետագա թարմացումը կարող է կատարվել ՝ կազմելով արտահանման երկուական Arduino միջավայրում, այնուհետև մուտք գործելով OTA ինտերֆեյս ip/որոնվածով:

Քայլ 3: Ավելացրեք սարքի / կոճակի կոդեր

Նշում. Այս բաժինը փոխվել է նախորդ մեթոդից, որտեղ նախկինում կազմված էր ծածկագրին: Այժմ այն օգտագործում է ֆայլեր, որոնք բեռնված են SPIFFs ֆայլերի համակարգից: Սա շատ ավելի հեշտացնում է նոր սահմանումների վերբեռնումը:

Կոճակի սահմանումները ներառված են buttonnames.txt ֆայլում: Այն օգտագործվող բոլոր հեռակառավարվող անվանումների գլոբալ ցուցակ է, քանի որ շատ անուններ հակված են սովորական լինել: Ինչպես տրամադրված է, այն պարունակում է մանրամասներ, որոնք ես օգտագործում եմ: Նոր գրառումներ կարող են ավելացվել: Ընդհանուր առմամբ 160 անուն կա, բայց դա կարող է ավելացվել bitMessages.h- ում հաստատունները ճշգրտելով և նորից կազմելով: Այստեղ սահմանված անուններն այն անուններն են, որոնք պետք է օգտագործվեն հրամաններ ուղարկելու ժամանակ:

Յուրաքանչյուր հեռավոր սարք սահմանվում է dev_remotename անունով ֆայլում: Այն բաղկացած է կազմաձևման վերևից, այնուհետև քարտեզագրման աղյուսակից ՝ կոճակների անուններից մինչև ծածկագրեր, որոնք վեցանկյուն տողեր են, որոնք պարունակում են ուղարկվող բիթերը: Պետք է սահմանել միայն պահանջվող կոճակների անունները:

Սարքի ֆայլի սկզբում կազմաձևման բաժինը պարունակում է պարամետրեր, որոնք պետք է օգտագործվեն ծածկագիր ուղարկելու ժամանակ: Առաջին մուտքն այն անվան անունն է, որն օգտագործվում է հրաման ուղարկելու ժամանակ: Այլ պարամետրեր նկարագրված են կոդի կայքում ՝ readme- ում:

Հեռակառավարման վահանակների մեծ մասը պատկանում է արձանագրությունների 3 կատեգորիաներից մեկին (nec, rc5 և rc6): nec- ը, ամենայն հավանականությամբ, ամենատարածվածն է և ունի վերնագրի պարզ կառուցվածք և բիթերի ժամանակ: Կա դրա մի փոքր տարբերակ, որը տարբերվում է միայն վերնագրի զարկերակային ժամանակաչափով: rc5 և rc6- ը Philips- ի կողմից սահմանված արձանագրություններ են, բայց նաև օգտագործվում են որոշ այլ արտադրողների կողմից: Նրանք մի փոքր ավելի բարդ են, և rc6- ը, մասնավորապես, բիթերից մեկի համար ունի ժամանակի հատուկ պահանջ:

Նոր հեռակառավարման կոդերը գրավելու համար ես օգտագործում եմ IR ընդունիչ (TSOP), որը սովորաբար օգտագործվում է հեռակառավարիչ սարքերի միացման միջոցով: Սա կատարում է հիմնական վերծանումը և տալիս տրամաբանական մակարդակի ելք: Սովորաբար դրանք գալիս են 3,5 մմ խցիկով ՝ +5V, GND, DATA միացումներով: Ես զոհաբերեցի մեկը, կրճատեցի կապարը և դրեցի այն շրջադարձային 3.3 Վ բուֆերի միջով, որպեսզի GPIO կապը կերակրեմ Raspberry Pi- ով:

Այնուհետև ես օգտագործում եմ python գործիք rxir.py (git գործիքների թղթապանակում) ՝ կոդեր գրավելու համար: Մեծ թվով կոճակներ գրավելն ավելի դյուրին դարձնելու համար գործիքը տեքստի սահմանման ֆայլ է օգտագործում ՝ հեռակառավարման կոճակները սահմանելու համար և դա հեռակառավարման վահանակի մի խմբի կոճակների անուններն են: Օրինակ, մեկը կարող է ունենալ Sony- ի նոր հեռակառավարիչ և ստեղծել 3 տեքստային ֆայլ, որոնք կոչվում են sonytv- կուրսոր, sonytv- համարներ, sonytv-playcontrols, որոնցից յուրաքանչյուրը `համապատասխան կոճակի անուններով: Գործիքը կհրավիրի սարքի (sonytv), հատվածի մասին: (կուրսորը) և որն արձանագրություն օգտագործել (nec, nec1, rc5, rc6): Այնուհետև յուրաքանչյուր կոճակի համար հաջորդաբար կհրավիրվի և արդյունքներ կգրի sonytv-ircodes ֆայլին: Բաժինները կարող են կրկնվել, եթե պահանջվում է `ստուգելու, որ գրավումները լավն են:. Ircodes ֆայլից բիթերը կարող են խմբագրվել BitDevices աղյուսակներում:

Քայլ 4: Վեբ վերահսկում և մակրոներ

Հիմնական վեբ հսկողությունը կամ մեկ get է, կամ json գրառում, որը կարող է պարունակել հաջորդականություն:

Get to /ir- ն ունի 6 պարամետր

  • author - պարունակում է թույլտվության ծածկագիր
  • սարք - հեռավոր սարքի անվանումը
  • պարամետր - կոճակի անունը
  • բիթ - բիտերի ընտրովի հաշվարկ
  • կրկնել - կրկնվող պարտադիր հաշվարկ
  • սպասել - mseconds- ի ուշացում, մինչև հաջորդ հրամանը կատարվի:

Սարքը կարող է լինել նաև «անվավեր» ՝ ընդամենը ուշացում ստանալու համար, «մակրո» ՝ պարամետրով նշված մակրոտն օգտագործելու համար, կամ «հայտնաբերել» ՝ Alexa- ի հայտնաբերման գործառույթն օգտագործելու համար (տե՛ս ավելի ուշ):

/Irjson- ին ուղղված գրառումը բաղկացած է նման json կառուցվածքից

{

"auth": "1234", "հրամաններ": [{"սարք": "yamahaAV", "պարամետր" ՝ "hdmi4", "սպասել" `" 5000 "," bits ":" 0 "," կրկնել "՝" 1 "}, {"սարք": "yamahaAV", "պարամետր" ՝ "լուռ", "սպասել" ՝ "100", "բիթ" ՝ "0", "կրկնել" ՝ "1"}]

}

Հերթականությունը կարող է ունենալ ցանկացած երկարություն, իսկ սարքերը `մակրո հղումներ:

Նույն կառուցվածքը կարող է օգտագործվել մակրոներ սահմանելու համար: Պարզապես ներառեք մակրո ՝ «մակրոանուն», վերին մակարդակում, օրինակ. հեղինակությունից հետո: Իրական բովանդակությունը պահվում է macroname.txt անունով ֆայլում

Մակրոները կարող են ջնջվել ՝ դրանք առանց «հրամանների» սահմանելու:

Այլ վեբ հրամաններ

  • /վերջին (թվարկում է վերջին գործողությունները)
  • /ստուգում (ցույց է տալիս հիմնական կարգավիճակը)
  • / (բեռնում է վեբ ձև ՝ հրամանները ձեռքով ուղարկելու համար)
  • / խմբագրել (բեռնում է վեբ ձև ՝ ֆայլերի ցուցակը դիտելու և ֆայլերը ջնջելու/ վերբեռնելու համար)
  • /խմբագրել? file = ֆայլի անունը (դիտել որոշակի ֆայլի բովանդակությունը)
  • /վերաբեռնում (վերաբեռնում է կոճակների անունները և սարքի ֆայլերը: Օգտագործեք դրանցից որևէ մեկը փոխելուց հետո)

Քայլ 5: Alexa ձայնային կառավարում IFTTT- ի միջոցով

Alex Blaster- ի հետ ir Blaster- ի օգտագործման ամենապարզ միջոցը IFTTT- ի օգտագործումն է որպես դարպաս:

Առաջին նավահանգիստը փոխանցեք ձեր բլաստերի համար օգտագործվող նավահանգիստը ձեր երթուղիչում, որպեսզի այն հասանելի լինի ինտերնետից: Կարող է լավ լինել օգտագործել frenns- ի նման dns ծառայությունը ՝ ձեր երթուղիչներին արտաքին ip անուն տալու համար, և այն ավելի հեշտ դարձնելու համար, եթե այս ip- ն փոխվի:

Ստեղծեք IFTTT հաշիվ և միացրեք Maker Webhooks ալիքը և Alexa ալիքը: Երբ դա անեք, IFTT մուտքը միացնելու համար հարկավոր է մուտք գործել Amazon կայք:

Ստեղծեք IF ձգան ՝ օգտագործելով IFTTT Alexa ալիքը, ընտրեք գործողությունը արտահայտության հիման վրա և մուտքագրեք ձեր ուզած արտահայտությունը (օրինակ ՝ ձայնի բարձրացում):

Ստեղծեք գործողություն ՝ ընտրելով Maker վեբհուկերի ալիքը: Մուտքագրեք URL դաշտում նման բան

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

Այս գործողությունը կուղարկվի ir blaster, որտեղ նա կփորձի կատարել մակրո ծավալը: Wantedանկության դեպքում այստեղ կարող են լինել հատուկ սարք/կոճակներ, բայց ես ավելի լավ եմ համարում սահմանել և օգտագործել մակրոներ, քանի որ այդ դեպքում գործողությունների հաջորդականությունը կարող է հեշտությամբ փոխվել ՝ պարզապես մակրո սահմանելով:

Յուրաքանչյուր հրամանի համար անհրաժեշտ է առանձին IFTTT հավելված:

Քայլ 6: Մայրենի Alexa ձայնային հմտություն

IFTTT- ի փոխարեն կարելի է կառուցել անհատական հմտություն Alexa զարգացման ներսում: Սա կենտրոնացնում է ամբողջ մշակումը մեկ տեղում և նշանակում է, որ անհրաժեշտ չէ յուրաքանչյուր կոճակի համար առանձին գործողություններ ստեղծել:

Դուք պետք է գրանցվեք որպես Amazon Alexa ծրագրավորող և գրանցվեք Amazon AWS վահանակի lambda ծառայության հետ: Դուք նաև պետք է նայեք ձեռնարկներին ՝ գործընթացը մի փոքր հասկանալու համար:

Alexa մշակողի կողմից դուք պետք է ստեղծեք նոր հատուկ հմտություն, մուտքագրեք դրա ձգան բառը և ստեղծեք հրամանի բառերի ցուցակ, ինչպիսիք են ձայնի բարձրացումը, ուղեցույցը և այլն:

Alexa- ն այնուհետև արտահայտությունն ուղարկի lamda ծառայության վրա աշխատող ծրագրին, որը մեկնաբանում է արտահայտությունը և URL- ով զանգահարում է Ir blaster- ին ՝ այն գործարկելու համար:

Ես ներառել եմ Alexa մտադրության սխեման և մխիթարել lambda գործառույթը, որն օգտագործում եմ git- ում: URL- ը պետք է փոփոխվի `համապատասխան ip- ին հղում կատարելու և ճիշտ թույլտվություն ունենալու համար: Պարզության համար lambda գործառույթները կոչում են մակրո, որն ունի արտահայտության փոքրատառ տարբերակ: Այն նաև փորձում է հեռացնել ձգան հիմնաբառը, որը երբեմն կարող է ներառվել: Օրինակ ՝ blaster VOLUME up- ը կանչում է մակրո կոչվող ծավալի բարձրացում, եթե ձգան բառը պայթեցուցիչ էր:

Քայլ 7: Alexa- ի ակտիվացման դետեկտոր

Չնայած Echo / Dot ձայնի ճանաչումը լավ է, այն երբեմն կարող է շփոթվել, եթե ձայնը հնչում է հեռուստացույցից, եթե չմոտենաք և բարձրաձայն խոսեք:

Սա բարելավելու համար ես ավելացրեցի ակտիվացման դետեկտոր իմ Dot- ին: Հենց հիմնաբառը (ասվում է Alexa) LED- ների օղակը լուսավորվում է: Դետեկտորը այն սնուցում է պայթեցուցիչ սարքի մեջ, որտեղ այն կօգտագործի alexaon մակրոտն ՝ հեռուստացույցը խլացնելու համար, նմանապես հրամանի մշակման ավարտին լույսերը մարում են, և alexaoff մակրոտն վերականգնում է ձայնը:

«Բացահայտել» հրամանը կարող է օգտագործվել նաև այն միացնելու և անջատելու համար: Օրինակ, ես օգտագործում եմ նախնական turnon մակրոը `հայտնաբերումը միացնելու համար, իսկ անջատման մակրոտն` այն անջատելու համար: Սա կարող է օգտագործվել նաև գործողության մակրոների ներսում `իրական համր և չլսող համախմբին աջակցելու համար, որն այլապես խնդրահարույց կլիներ:

Ֆիզիկական դետեկտորը լույսից կախված դիմադրություն է, որը միացումն ապահովում է: Ես իմը տեղադրում եմ Կետի վրա ՝ 3D տպված փակագծով

Խորհուրդ ենք տալիս: