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

Իրական ժամանակի իրադարձությունների մասին ծանուցումներ `օգտագործելով NodeMCU (Arduino), Google Firebase և Laravel: 4 քայլ (նկարներով)
Իրական ժամանակի իրադարձությունների մասին ծանուցումներ `օգտագործելով NodeMCU (Arduino), Google Firebase և Laravel: 4 քայլ (նկարներով)

Video: Իրական ժամանակի իրադարձությունների մասին ծանուցումներ `օգտագործելով NodeMCU (Arduino), Google Firebase և Laravel: 4 քայլ (նկարներով)

Video: Իրական ժամանակի իրադարձությունների մասին ծանուցումներ `օգտագործելով NodeMCU (Arduino), Google Firebase և Laravel: 4 քայլ (նկարներով)
Video: №85 Ձեր կյանքը ձեր մտածողության և հավատքի արդյունք է: Ձգողականության ուժի օրենք: Էզոտերիկա: 2024, Հունիսի
Anonim
Image
Image
Իրական ժամանակի իրադարձությունների մասին ծանուցումներ `օգտագործելով NodeMCU (Arduino), Google Firebase և Laravel
Իրական ժամանակի իրադարձությունների մասին ծանուցումներ `օգտագործելով NodeMCU (Arduino), Google Firebase և Laravel

Երբևէ ցանկացե՞լ եք տեղեկացվել, երբ որևէ գործողություն է կատարվում ձեր կայքում, բայց էլ. Փոստը ճիշտ չէ: Ուզու՞մ եք ամեն անգամ վաճառք կատարելիս ձայն կամ զանգ լսել: Թե՞ ձեր անհապաղ ուշադրության կարիքը կա տանը արտակարգ իրավիճակի պատճառով:

Այս սարքը կարող է ձեզ իրական ժամանակում զգուշացնել այն ամենի մասին, ինչ ձեզ դուր է գալիս:

Քայլ 1: Լարացրեք շրջանը

Լարել սխեման
Լարել սխեման
Լարել սխեման
Լարել սխեման

Սարքը, որը ես կառուցել եմ, բաղկացած է NodeMCU տախտակից ՝ ազդանշանային ազդանշանով, որն ինձ տեղեկացնում է կայքում կատարված վաճառքների մասին: Միկրոկոնտրոլերը ծրագրավորված է Arduino ծրագրաշարի միջոցով, իսկ հրահրող մասը կարող է լինել ցանկացած վեբ, iOS կամ Android ծրագիր: Ես ստեղծել եմ երկու պարզ վեբ ծրագիր ՝ մեկը Laravel- ում, իսկ մյուսը ՝ պարզ HTML- ի և JavaScript- ի օրինակով:

Քանի որ NodeMCU տախտակը կարող է ապահով աշխատել մինչև կապերի վրա մինչև 12 մԱ հոսանք, ազդանշանը միացված է NPN տրանզիստորի միջոցով: Ես օգտագործել եմ 2N2222- ը, քանի որ դրանցից շատերը կողքիս են, բայց վստահ եմ, որ սկզբունքը նույնը կլինի ցանկացած այլ NPN տրանզիստորի դեպքում:

Շղթան միացնելու համար տրանզիստորի կոլեկտորը միացրեք տախտակի Vin քորոցին: Zանգի ձայնը գործում է 5 Վ լարման դեպքում, և քանի որ մենք սարքը սնուցելու ենք USB- ից, այս քորոցը մեզ կտա լարումը տախտակի 3.3 Վ կարգավորիչից առաջ:

Հաջորդը միացրեք ազդանշանի դրական կողմը տրանզիստորի էմիտերի վրա, իսկ ազդանշանի բացասական քորոցը `տախտակի ցանկացած հիմնավորված կապում: Ես օգտագործել եմ քորոց 2 -ը, բայց կարող եք նաև այն միացնել 9, 25 կամ 29 կապում:

Տրանզիստորի հիմքը միացված է D2 կապին, որը փոխկապակցված է Arduino ծրագրաշարի GPIO 4 -ի հետ: Այս կարգավորմամբ տրանզիստորը արդյունավետորեն կաշխատի որպես անջատիչ, որը միացնում է ազդանշանը յուրաքանչյուր իրադարձության համար: Theանգի ձայնի փոխարեն կարող եք միացնել ռելեն նույն կերպ, որպեսզի կարողանաք ցանկացած էլեկտրական սարք վարել, ինչպիսիք են լամպերը, մեքենաները կամ ազդանշանը, եթե ինչ -որ ազդանշանային սարք եք պատրաստում:

Քայլ 2: Պատրաստեք վեբ ծրագրեր

Պատրաստեք վեբ ծրագրեր
Պատրաստեք վեբ ծրագրեր
Պատրաստեք վեբ ծրագրեր
Պատրաստեք վեբ ծրագրեր
Պատրաստեք վեբ ծրագրեր
Պատրաստեք վեբ ծրագրեր

Սարքի գործարկման և իրական ժամանակի մասի համար մենք կօգտագործենք Google- ի Firebase Realtime Database- ը: Սա Google- ի կողմից պատրաստված NoSQL ամպային հիանալի տվյալների շտեմարան է, որն իրական ժամանակի տվյալների համաժամացում է ապահովում օգտագործվող յուրաքանչյուր հարթակի միջև:

Նախ ստեղծեք նախագիծը ձեր ընտրած անունով: Ստեղծվելուց հետո ստեղծեք «հաշվել» կոչվող մեկ հանգույց և գործարկեք այն 0 արժեքով, եթե դա լինի մեր սկզբնական հաշվարկը, որին ցանկանում ենք հետևել ապագայում:

Laravel հավելվածը օգտագործում է Kreait- ի «firebase-php» փաթեթը, և այն կապված է ստորև: Տեղադրեք փաթեթը ՝ գործարկելով «կոմպոզիտորը պահանջում է kreait/firebase-php»: Տեղադրումն ավարտվելուց հետո մենք պետք է ստեղծենք վերահսկիչ, որտեղ կատարվելու է գործողությունը: Ես մեթոդն անվանեցի «թարմացում» և այն միացրեցի երթուղիներում ՝ POST գործողությամբ:

Firebase- ի օրինակն առբերելու համար ձեզ հարկավոր է json ֆայլ, որը պետք է ներբեռնեք ձեր Firebase վահանակից: Տեղադրեք այս ֆայլը ձեր Laravel նախագծի արմատում և անվանեք այն firebase.json: Firebase- ի օրինակն առնելիս մենք պետք է տրամադրենք այս ֆայլի ուղին ՝ օգտագործելով withCredentials մեթոդը:

Firebase- ի օրինակը ստանալուց հետո մենք պետք է տեղեկանք ստանանք տվյալների բազայի և ավելի վաղ ստեղծված հանգույցի մասին: Յուրաքանչյուր գործողության դեպքում մենք կստանանք հանգույցի ընթացիկ արժեքը, կավելացնենք այն մեկով և կպահենք, եթե վերադառնանք տվյալների բազա: Սա հետևելու է մեր իրադարձություններին, որոնց մասին մենք պետք է տեղեկացնենք:

Նույնը կարելի է հասնել պարզ HTML- ով և JavaScript- ով ՝ օգտագործելով տրամադրված firebase գրադարանը: Դրանով մենք նախ պետք է տրամադրենք կազմաձևման զանգվածին համապատասխան պարամետրեր Firebase վահանակից և նախաստորագրենք ծրագիրը: Նախաստորագրվելուց հետո մենք ստանում ենք հղում այն հանգույցին, որտեղ մենք պահում ենք իրադարձությունների քանակը և կցում ենք ունկնդիրին `արժեքի ցանկացած փոփոխություն ստանալու համար:

Բացի այդ, ձևը ներկայացնելու փոխարեն, ինչպես Laravel- ի օրինակում, մենք այժմ ունենք JavaScript գործառույթ, որը կանչվում է կոճակի սեղմման վրա, թարմացնում է հաշվարկը և թարմացված արժեքը հետ գրում տվյալների բազայում:

Քայլ 3. Programրագրեք NodeMCU խորհուրդը

Programրագրեք NodeMCU խորհուրդը
Programրագրեք NodeMCU խորհուրդը
Programրագրեք NodeMCU խորհուրդը
Programրագրեք NodeMCU խորհուրդը
Programրագրեք NodeMCU խորհուրդը
Programրագրեք NodeMCU խորհուրդը

NodeMCU- ն ծրագրավորելու համար ես օգտագործել եմ Arduino ծրագրաշարը և տախտակը դրան տեղադրելուց հետո համոզվել եմ, որ ընտրել եմ համապատասխան տարբերակը և նավահանգիստը, որպեսզի կարողանամ վերբեռնել ծրագրակազմը: Իմը 1.0 տարբերակն է: Շարունակելուց առաջ կրկնակի ստուգեք ձեր տախտակը:

Arduino ծածկագրի առաջին մասը սահմանում է բոլոր անհրաժեշտ սահմանումները, որոնք դուք պետք է կարգավորեք ձեր սարքում: Առաջին նման կարգավորումը WiFi- ի ssid- ն է և դրա գաղտնաբառը, այնուհետև մենք պետք է կարգավորենք firebase- ի url- ը և firebase db գաղտնիքը: Unfortunatelyավոք, սա տվյալների շտեմարանին միանալու առաջարկվող միջոց չէ, բայց այս պահի դրությամբ դա միակ միջոցն է, որն ապահովում է գրադարանը: Այս գաղտնիքը կարող եք գտնել Settingsրագրի կարգավորումների, սպասարկման հաշիվների ընտրացանկում ՝ firebase վահանակում:

Հաջորդ սահմանումը այն ճանապարհն է, որը մենք ստուգելու ենք թարմացումների և սարքի ID- ի համար: Սարքի ID- ն անհրաժեշտ է, այնպես որ, եթե մենք ունենք մի քանի իրադարձություն նույն իրադարձությունների մասին ծանուցող սարքեր, մենք պետք է իմանանք, թե որ սարքն է մեզ տեղեկացրել իրադարձության մասին և դրա մասին գրառում կատարել: Վերջինը մենք պետք է կարգավորենք այն քորոցը, որով միացրել ենք ազդանշանը, և սա մեր դեպքում D2 է:

Կարգավորման գործառույթը սահմանում է ներկառուցված led կապը և D2 կապումներն ՝ որպես ելքեր, սկսեք սերիական հաղորդակցությունը ՝ իմանալու համար, թե ինչ է կատարվում և միանում է նշված WiFi ցանցին: Երբ կապը հաստատվի, այն սկսում է հաղորդակցությունը Firebase- ի հետ և ստանում է վերջին արժեքը, որի մասին մենք հայտնել ենք: Այնուհետև այն սկսում է լսել նշված ճանապարհի փոփոխությունները:

Հիմնական հանգույցում կա թարթման գործառույթի կանչ, որը թարթում է ներկառուցված led- ը 500 միլիվայրկյան շարունակ, որպեսզի մենք կարողանանք ասել, որ սարքն ակտիվ է: Երբ փոփոխություն է հայտնաբերվում և առկա են տվյալներ, որոնք կարող ենք կարդալ առկա գործառույթով, ընթերցվում է հանգույցի նոր արժեքը, տարբերությունը հաշվարկվում է, քանի որ այդ ընթացքում կարող էին լինել մի քանի իրադարձություններ, և յուրաքանչյուր անգամ հնչում է ազդանշան: տարբերությունից:

Օրինակ, եթե վերջին զեկուցված արժեքի և նոր արժեքի միջև տարբերությունը 4 է, ապա կստեղծվի 4 ազդանշան, որը ձեզ կտեղեկացնի, որ կատարվել է 4 նոր գնում: Ազդանշանային ազդանշանն օգտագործում է ներկառուցված հնչերանգային գործառույթը `որոշակի ժամանակահատվածում ազդանշանի միջոցով որոշակի հաճախականություն նվագարկելու համար:

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

Քայլ 4: Վայելեք ձեր սարքը:

Վայելեք ձեր սարքը
Վայելեք ձեր սարքը

Իմ օգտագործած ամբողջ ծածկագիրը հասանելի է իմ GitHub հաշվի ներքևում, որը կցված է ծրագրի սխեմատիկ հղմանը:

Աղբյուրի ծածկագիր

Սխեմատիկ

Կոդը կարող է հեշտությամբ ընդունվել `աշխատելու համար շատ տարբեր սցենարների և իրադարձությունների համար, և ես վստահ եմ, որ դուք շատ զվարճանալու եք դրա հետ խաղալով:

Ինձ համար սա իսկապես զվարճալի կառուցվածք էր, և ես կարողացա շատ բան սովորել դրա վրա, և դրա համար ես իսկապես երջանիկ եմ: Հուսով եմ, որ այն կարող է օգնել ձեզ ձեր նախագծում, բայց եթե ինքներդ ձեզ խճճված եք զգում դրա որևէ մասում կամ լրացուցիչ պարզաբանումների կարիք ունեք, ապա խնդրում եմ ինձ տեղյակ պահեք մեկնաբանություններում, և ես կանեմ հնարավորը ՝ ձեզ օգնելու համար:

Եթե ձեզ դուր եկավ նախագիծը, ապա բաժանորդագրվեք իմ YouTube ալիքին.

Համտեսեք ծածկագիրը

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