Բովանդակություն:
- Քայլ 1: Ստեղծեք ընդունիչի միավորը
- Քայլ 2: Հոտոտեք հեռախոսի կոդերը
- Քայլ 3. Արդյունքային ազդանշանի տառադարձում
- Քայլ 4: Հաղորդիչի միավորի ստեղծում
- Քայլ 5. Ազդանշանների փոխանցում Pi- ի միջոցով
- Քայլ 6. Նշում ժամանակի ճշգրտության վերաբերյալ
- Քայլ 7: Եզրակացություն
Video: Super Simple Raspberry Pi 433MHz տնային ավտոմատացում ՝ 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Այս ձեռնարկը մեկն է այն բազմաթիվներից, երբ խոսքը վերաբերում է Raspberry Pi- ին տան միջոցով անլար սարքերը կառավարելու համար: Ինչպես և շատ ուրիշներ, այն ձեզ ցույց կտա, թե ինչպես օգտագործել ձեր Pi- ին միացված էժան հաղորդիչ/ընդունիչ զույգը ՝ 433 ՄՀց հաճախականությամբ ռադիոհաճախականությունների տիրույթում աշխատող սարքերի հետ շփվելու համար: Այն ձեզ հատուկ ցույց կտա, թե ինչպես միացնել կամ անջատել ցանկացած էլեկտրական սարք ձեր Pi- ի միջոցով ՝ հրամանները փոխանցելով 433 ՄՀց հեռակառավարվող էլեկտրական վարդակների հավաքածուին:
Ինչու՞ ստեղծեցի այս ձեռնարկը, եթե այդքանն արդեն գոյություն ունեն: Հիմնականում այն պատճառով, որ գրեթե բոլոր մյուս ձեռնարկները, որոնց ես հանդիպեցի, կարծես չափազանց բարդ էին, հատկապես ծրագրային ապահովման մասում: Ես նկատեցի, որ նրանք մեծապես ապավինում էին երրորդ կողմի գրադարաններին, սցենարներին կամ ծածկագրերին ՝ ամբողջ աշխատանքը կատարելու համար: Շատերը չեն էլ բացատրում, թե ինչ է անում հիմքում ընկած ծածկագիրը. Նրանք պարզապես կխնդրեին ձեր Pi- ի վրա տեղադրել երկու -երեք ծրագրակազմ և կատարել մի շարք հրամաններ, առանց հարցերի: Ես իսկապես ուզում էի փորձել և օգտագործել իմ Pi- ն ՝ իմ տան շուրջ էլեկտրական սարքերը միացնելու և անջատելու համար ՝ օգտագործելով 433 ՄՀց հեռակառավարվող վարդակների հավաքածու, բայց ես ուզում էի ստեղծել իմ սեփական տարբերակը, որը ես կարող էի հասկանալ ՝ հուսով եմ, որ վերացնելով դրա անհրաժեշտությունը օգտագործել ուրիշի գրադարանները կամ սցենարները:
Այս մասին է այս ձեռնարկը: Այս համակարգի ծրագրային կողմը բաղկացած է Python- ի երկու շատ պարզ սցենարներից `մեկը ազդանշաններ ընդունելու և ձայնագրելու համար, և մեկը` այս ազդանշանները անլար հոսանքի վարդակներին հետ փոխանցելու համար: Ազդանշանի իրական ընդունումը/փոխանցումը հիմնված է միայն հեշտ օգտագործման RPi. GPIO գրադարանի վրա, որը, գոնե ինձ համար, նախապես տեղադրված էր Raspbian- ի հետ: Այս գրադարանը կարող է նաև ուղղակիորեն ներմուծվել Python:
Այս նախագծի համար ձեզ հարկավոր է
Ազնվամորի Պի: Modelանկացած մոդել պետք է աշխատի, ես օգտագործել եմ համակցված մեկնարկային հավաքածու, բայց գուցե ձեզ անհրաժեշտ է միայն կենտրոնական միավորը:
433 ՄՀց հաղորդիչ/ընդունիչ զույգ: Այս տիպի նախագծերում ամենից հաճախ օգտագործվողները սրանք են: Կապվածի պես հինգ տուփ գնելը ապահովում է, որ դուք ունեք մի քանի պահեստամաս:
433 ՄՀց հեռակառավարվող էլեկտրական վարդակների հավաքածու: Ես օգտագործեցի դրանք, որոնք ես շատ խորհուրդ կտայի, բայց կան անհամար մոդելներ: Պարզապես համոզվեք, որ նրանք գործում են այս հաճախականությամբ:
Շղթայի կառուցման որոշ պարագաներ: Ես խորհուրդ կտայի օգտագործել տախտակամած և մի քանի մալուխներ, որպեսզի հնարավորինս դյուրին դարձնեն շրջանի կառուցման գործընթացը:
[Եթե որոշեք գնել այս ապրանքներից որևէ մեկը, ես մեծապես կգնահատեի դա, եթե մուտք գործեիք ցուցակներին ՝ օգտագործելով վերը նշված հղումները, այդպիսով, ես ստանում եմ շահույթի չնչին մասնաբաժինը ՝ առանց որևէ լրացուցիչ ծախսերի ձեզ համար]:
Քայլ 1: Ստեղծեք ընդունիչի միավորը
Նախքան ձեր Pi- ն կարող եք հրամաններ ուղարկել հեռակառավարվող վարդակների վրա, դուք պետք է իմանաք, թե կոնկրետ ինչ ազդանշանների են նրանք արձագանքում: Հեռակառավարվող վարդակների մեծ մասը առաքվում է հեռախոսով, որը կարող է օգտագործվել որոշակի միավորները միացնելու կամ անջատելու համար: Իմ գնածների դեպքում հեռախոսը ունի չորս տող զուգված ON/OFF կոճակներ, որոնցից յուրաքանչյուրը ON կամ OFF ազդանշան է ուղարկում որոշակի վարդակից:
Սա հարց է առաջացնում. Ինչպես կարող ենք իմանալ, թե որ կոճակները որ վարդակին են համապատասխանում: Սա իրականում կախված է ձեր ունեցած մոդելից: Հիմնական պատճառներից մեկը, որ ես ընտրեցի վարդակի հատուկ ոճը (ներածության մեջ) այն է, որ միավորները կարող են կազմաձևվել ֆիզիկական անջատիչով, որպեսզի որոշակի վարդակից արձագանքի հեռախոսի վրա գտնվող ON/OFF կոճակների որոշակի փաթեթին: Սա նաև նշանակում է, որ դուք կարող եք վարդակից անջատել և տեղափոխել տան շուրջը ՝ իմանալով, որ յուրաքանչյուր միավոր միշտ կպատասխանի նույն ON/OFF ազդանշաններին:
Երբ պարզեք, թե ինչպես են ձեր վարդակները փոխազդում հեռախոսի հետ, ձեզ հարկավոր է օգտագործել ձեր 433 ՄՀց ընդունիչ սարքը (նկարը վերևում) `« հոտոտելու »հեռախոսի կողմից ուղարկվող կոդերը: Այս կոդերի ալիքի ձևերը գրանցելուց հետո կարող եք դրանք կրկնօրինակել Python- ի միջոցով և դրանք ուղարկել հաղորդիչ միավորի միջոցով:
Առաջին բանը, որ պետք է անել այստեղ, ձեր ստացողի կապումներն ամրացրեք Pi- ի GPIO- ի ճիշտ կապումներին: Ընդունիչի միավորն ունի չորս կապում, սակայն դրանցից միայն երեքն են անհրաժեշտ: Կարծում եմ, որ կենտրոնական երկու կապում տրվում է նույն ելքը, այնպես որ դուք միայն պետք է միանաք դրանցից մեկին (եթե չեք ցանկանում ստացված ազդանշանները հոսել GPIO- ի երկու առանձին կապում):
Վերևի պատկերը բավականին ամփոփում է էլեկտրագծերը: Ստացողի յուրաքանչյուր քորոց կարելի է ուղղակիորեն միացնել Pi- ի համապատասխան քորոցին: Գործընթացը մի փոքր էլեգանտ դարձնելու համար ես օգտագործում եմ տախտակամած և ցատկող մալուխներ: Նկատի ունեցեք, որ կարող եք ընտրել GPIO- ի տվյալների ցանկացած քորոց `կենտրոնական ընդունիչի ցանկացած կապակցիչին միանալու համար: Ես օգտագործել եմ «23» նշած քորոցը իմ Pi վերնագրում:
ԿԱՐԵՎՈՐ. Եթե վերը նշված պատկերի «3v3» նշումով կապը միացնեք Pi- ի ավելի բարձր լարման պինին (օրինակ ՝ 5v), ապա, ամենայն հավանականությամբ, կվնասեք Pi- ին, քանի որ GPIO կապանքները չեն կարող հանդուրժել 3v3- ից բարձր լարումները: Այլապես, դուք կարող եք այն սնուցել 5 վ լարման միջոցով և տեղադրել լարման բաժանարար ՝ անվտանգ լարում ՏՎՅԱԼՆԵՐԻ քորոցին ուղարկելու համար:
Այս լարման դեպքում ընդունիչի տիրույթը շատ մեծ չի լինի, հատկապես, եթե ալեհավաքը միացված չէ: Այնուամենայնիվ, այստեղ ձեզ երկար հեռավորություն պետք չէ. Քանի դեռ ստացողը կարող է վերցնել հեռախոսի ազդանշանները, երբ դրանք պահվում են միմյանց կողքին, դա այն է, ինչ մեզ պետք է:
Քայլ 2: Հոտոտեք հեռախոսի կոդերը
Այժմ, երբ ձեր ընդունիչը միացված է Pi- ին, կարող եք սկսել այս նախագծի առաջին հուզիչ փուլը `հոտը: Սա ներառում է կցված Python սցենարի օգտագործումը ՝ յուրաքանչյուր կոճակ սեղմելիս հեռախոսի փոխանցած ազդանշանը ձայնագրելու համար: Սցենարը շատ պարզ է, և ես խորհուրդ կտայի այն դիտելուց առաջ այն դիտել: Ի վերջո, այս նախագծի իմաստն այն է, որ դուք պարզապես կուրորեն չեք վարի ուրիշի ծածկագիրը:
Նախքան այս գործընթացը սկսելը, դուք պետք է համոզվեք, որ ունեք Python գրադարաններ, որոնք անհրաժեշտ են դիպուկ գրիչը գործարկելու համար: Դրանք թվարկված են սցենարի վերևում.
datetime- ից ներմուծել datetime
ներմուծել matplotlib.pyplot որպես pyplot ներմուծել RPi. GPIO որպես GPIO
RPi. GPIO- ն և ժամանակի գրադարանները ներառված էին իմ Raspbian բաշխման մեջ, բայց ես ստիպված էի տեղադրել matplotlib գրադարանը հետևյալ կերպ.
sudo apt-get տեղադրել python-matplotlib
Այս գրադարանը սովորաբար օգտագործվող գրաֆիկական գծագրման գրադարան է, որը շատ օգտակար է նույնիսկ այս նախագծից դուրս, ուստի այն տեղադրելը հաստատ չի կարող վնասել: Երբ ձեր գրադարանները արդիական կլինեն, դուք պատրաստ եք սկսել տվյալների գրանցումը: Ահա թե ինչպես է աշխատում սցենարը.
Երբ այն գործարկվում է (օգտագործելով «python ReceiveRF.py» հրամանը), այն կկարգավորի սահմանված GPIO- ի քորոցը որպես տվյալների մուտքագրում (լռելյայն 23 -րդ փին): Այնուհետև անընդհատ նմուշառում է քորոցը և մուտքագրում ՝ ստանում է թվային 1 թե 0: Սա շարունակվում է սահմանված տևողությամբ (կանխադրված 5 վայրկյան): Երբ այս ժամկետը լրանա, սցենարը կդադարեցնի տվյալների գրանցումը և կփակվի GPIO մուտքը: Այնուհետև այն կատարում է մի փոքր հետամշակում և գծագրում է ստացված մուտքային արժեքը ժամանակի համեմատ: Կրկին, եթե ունեք հարցեր այն մասին, թե ինչ է անում սցենարը, հավանաբար ինքներդ կարող եք պատասխանել դրանց նայելուն, թե ինչպես է այն աշխատում: Ես փորձել եմ ծածկագիրը հնարավորինս ընթեռնելի և պարզ դարձնել:
Այն, ինչ դուք պետք է անեք, պետք է ուշադրություն դարձնել, երբ սցենարը ցույց տա, որ այն ** սկսել է ձայնագրումը **: Երբ այս հաղորդագրությունը հայտնվի, դուք պետք է սեղմեք և պահեք հեռախոսի կոճակներից մեկը մոտ մեկ վայրկյան: Անպայման պահեք այն ընդունիչին մոտ: Երբ սցենարը ավարտի ձայնագրությունը, այն matplotlib- ի միջոցով կօգտագործի ձայնագրման միջակայքում ստացած ազդանշանի գրաֆիկական ալիքի ձևը: Խնդրում ենք նկատի ունենալ, եթե ձեր Pi- ին միացված եք SSH հաճախորդի միջոցով, ինչպիսին է PuTTY- ը, ապա ձեզ նույնպես պետք է բացել X11 ծրագիր, որը թույլ կտա ալիքի ձևի ցուցադրմանը: Ես օգտագործում եմ xMing- ը դրա համար (և այլ բաների համար, ինչպիսիք են ՝ իմ Pi- ում հեռավոր աշխատասեղան տեղադրելը): Հողամասի ցուցադրումը թույլ տալու համար պարզապես սկսեք xMing- ը, նախքան սցենարը գործարկելը և սպասեք արդյունքների հայտնվելուն:
Երբ հայտնվի ձեր matplotlib պատուհանը, հողամասի հետաքրքրության տարածքը պետք է բավականին ակնհայտ լինի: Դուք կարող եք պատուհանի ներքևի մասի հսկիչ սարքերը մեծացնելու համար, քանի դեռ չեք կարողացել ընտրել հեռախոսի փոխանցած ազդանշանի բարձր և ցածր կետերը, մինչ կոճակը պահված էր: Տե՛ս վերը նշված պատկերը ՝ ամբողջական կոդի օրինակ: Հավանաբար, ազդանշանը բաղկացած կլինի շատ կարճ իմպուլսներից, որոնք բաժանված են նմանատիպ ժամանակաշրջաններով, որտեղ ազդանշան չի ստացվում: Կարճ իմպուլսների այս բլոկին, հավանաբար, կհաջորդի ավելի երկար ժամանակաշրջան, որտեղ ոչինչ չի ստացվում, որից հետո օրինակը կկրկնվի: Կոդի մեկ օրինակին պատկանող օրինակը պարզելուց հետո այս էջի վերևում վերցրեք սքրինշոթը և շարունակեք հաջորդ քայլին ՝ այն մեկնաբանելու համար:
Քայլ 3. Արդյունքային ազդանշանի տառադարձում
Այժմ, երբ դուք հայտնաբերել եք որոշակի կոճակի ազդանշանին համապատասխանող պարբերական բարձունքների և նվազումների բլոկը, ձեզ հարկավոր կլինի այն պահելու և մեկնաբանելու եղանակ: Ազդանշանի վերը նշված օրինակում դուք կնկատեք, որ կան միայն երկու եզակի նախշեր, որոնք կազմում են ազդանշանի ամբողջ բլոկը: Երբեմն տեսնում ես կարճ բարձր, որին հաջորդում է երկար ցածր, իսկ երբեմն էլ հակառակն է `երկար բարձր, որին հաջորդում է կարճ ցածր: Երբ ես տառադարձում էի իմ ազդանշանները, որոշեցի օգտագործել անվանման հետևյալ պայմանագիրը.
1 = կարճ_ոն + երկար_վերջ 0 = երկար_ոն + կարճ_հեռացում
Նորից նայեք պիտակավորված ալիքի ձևին և կտեսնեք, թե ինչ նկատի ունեմ: Ձեր ազդանշանի համարժեք օրինաչափությունները հայտնաբերելուց հետո ձեզ մնում է հաշվել 1 -ը և 0 -ը `հաջորդականությունը կառուցելու համար: Երբ տառադարձվում է, վերը նշված ազդանշանը կարող է գրվել հետևյալ կերպ.
1111111111111010101011101
Այժմ պարզապես անհրաժեշտ է կրկնել այս գործընթացը ՝ ձեր հեռախոսի մյուս կոճակներին համապատասխանող ազդանշանները ձայնագրելու և արտագրելու համար, և դուք ավարտել եք գործընթացի առաջին մասը:
Նախքան հաղորդիչի միջոցով ազդանշանները նորից ուղարկելը, մի փոքր ավելի շատ աշխատանք կա անելու: 1 -ին կամ 0 -ին համապատասխանող բարձունքների և ցածրերի միջև ընկած ժամանակը շատ կարևոր է, և դուք պետք է համոզվեք, որ դուք գիտեք, թե իրականում որքան է տևում «կարճ_ոն» կամ «երկար_վերջը»: Իմ ծածկագրերի համար կար երեք ժամանակային տեղեկատվություն, որոնք ես պետք է քաղեի ազդանշանները կրկնօրինակելու համար.
- «Կարճ» միջակայքի տևողությունը, այսինքն ՝ 1 -ի սկիզբը կամ 0 -ի վերջը:
- «Երկար» միջակայքի տևողությունը, այսինքն ՝ 1 -ի վերջը կամ 0 -ի սկիզբը:
- «Ընդլայնված» միջակայքի տևողությունը: Ես նկատեցի, որ երբ հեռախոսը պահում էի կոճակը, ազդանշանի բլոկի յուրաքանչյուր կրկնվող օրինակի միջև կար «ընդլայնված_ անջատում» ժամանակահատված: Այս հետաձգումը օգտագործվում է համաժամացման համար և ունի ֆիքսված տևողություն:
Timամկետների այս արժեքները որոշելու համար կարող եք օգտագործել matplotlib պատուհանի խոշորացման գործառույթը `ամբողջովին մեծացնելու և կուրսորը տեղադրելու համար ազդանշանի համապատասխան մասերի վրա: Պատուհանի ներքևում գտնվող կուրսորը տեղադրելու ընթերցումը պետք է թույլ տա ձեզ որոշել, թե որքան լայն է ազդանշանի յուրաքանչյուր հատվածը, որը համապատասխանում է երկար, կարճ կամ ընդլայնված ընդմիջմանը: Նկատի ունեցեք, որ գծագրի x առանցքը ներկայացնում է ժամանակը, իսկ ցուցիչի ընթերցման x բաղադրիչը վայրկյանների միավորն է: Ինձ համար լայնությունները հետևյալն էին (վայրկյանների ընթացքում).
- կարճ_հետաձգում = 0.00045
- long_delay = 0.00090 (երկու անգամ ավելի երկար, քան «կարճ»)
- երկարաձգված_հետաձգում = 0,0096
Քայլ 4: Հաղորդիչի միավորի ստեղծում
Երբ հավաքեք ձեր ծածկագրերը և ժամանակի տվյալները, կարող եք անջատել ձեր ընդունիչ սարքը, քանի որ այն այլևս կարիք չի ունենա: Այնուհետև կարող եք հաղորդիչը միացնել ուղղակիորեն համապատասխան Pi GPIO կապումներին, ինչպես ցույց է տրված վերը նկարում: Ես գտել եմ, որ հաղորդիչ միավորների կապում պիտակավորված են, ինչը հեշտացնում է գործընթացը:
Այս դեպքում, նորմալ է էներգիան օգտագործել Pi- ից 5 վ սնուցման միջոցով, քանի որ ՏՎՅԱԼՆԵՐԻ քորոցը Pi- ին ազդանշաններ չի ուղարկի, այլ միայն դրանք կստանա: Բացի այդ, 5 վ էլեկտրամատակարարումը կապահովի ավելի մեծ փոխանցման տիրույթ, քան 3v3 մատակարարման օգտագործումը: Կրկին, դուք կարող եք միացնել Տվյալների կապը Pi- ի ցանկացած համապատասխան քորոցին: Ես օգտագործեցի 23 կապը (նույնը, ինչ ընդունիչի համար):
Մեկ այլ բան, որը խորհուրդ կտայի անել, հաղորդիչի վերևի աջ մասում գտնվող փոքր անցքին ալեհավաք ավելացնելն է: Ես օգտագործեցի 17 սմ երկարությամբ ուղիղ մետաղալար: Որոշ աղբյուրներ խորհուրդ են տալիս նման երկարությամբ ոլորված մետաղալարեր: Ես վստահ չեմ, թե որն է ավելի լավ, բայց ուղիղ մետաղալարն ինձ բավականաչափ հեռավորություն է տալիս, որպեսզի վարդակները միացնեմ/անջատեմ իմ փոքրիկ բնակարանի ցանկացած վայրից: Ամենալավն այն է, որ ալեհավաքը կպցնել, բայց ես մետաղալարից մի փոքր հեռացրեցի պլաստիկը և պղնձը փաթաթեցի անցքի միջով:
Հաղորդիչը միացնելուց հետո սարքաշարի կարգավորումն ավարտված է: Միակ բանը, որ այժմ պետք է անեք, ձեր վարդակները տեղադրեք տան շուրջը և դիտեք հաղորդիչների ծրագիրը:
Քայլ 5. Ազդանշանների փոխանցում Pi- ի միջոցով
Այստեղ է հայտնվում երկրորդ Python սցենարը: Այն նախագծված է լինելու նույնքան պարզ, որքան առաջինը, եթե ոչ ավելին: Կրկին, խնդրում ենք ներբեռնեք այն և նայեք ծածկագրին: Դուք պետք է խմբագրեք սցենարը `3 -րդ քայլում գրանցված տվյալների համաձայն ճիշտ ազդանշանները փոխանցելու համար, այնպես որ հիմա լավ ժամանակ է այն արագ հայացք նետելու համար:
Այս գրությունը գործարկելու համար անհրաժեշտ գրադարանները բոլորը նախապես տեղադրված էին իմ Pi- ի վրա, ուստի լրացուցիչ տեղադրման կարիք չկար: Դրանք թվարկված են սցենարի վերևում.
ներմուծման ժամանակը
ներմուծել sys ներմուծել RPi. GPIO որպես GPIO
Գրադարանի ներմուծման տակ կա այն տեղեկատվությունը, որը դուք պետք է խմբագրեք: Ահա, թե ինչ տեսք ունի այն լռելյայն (սա 3 -րդ քայլի միջոցով որոշված իմ վարդակների համապատասխան տեղեկատվությունն է).
a_on = '111111111111101010101011101'
a_off = '1111111111111010101010111' b_on = '1111111111101110101011101' b_off = '1111111111101110101010111' c_on = '1111111111101011101011101' c_off = '1111111111101011101010111' d_on = '1111111111101010111011101' d_off = '1111111111101010111010111' short_delay = 0,00045 long_delay = 0,00090 extended_delay = 0,0096
Այստեղ մենք ունենք ութ կոդի տող (իմ հեռախոսի յուրաքանչյուր զույգ միացման/անջատման կոճակների համար - դուք կարող եք ունենալ ավելի կամ ավելի քիչ կոդ), որին հաջորդում են ժամանակի մասին երեք տեղեկությունները, որոնք նույնպես որոշված են 3 -րդ քայլում: ճիշտ է մուտքագրել այս տեղեկատվությունը:
Երբ գոհ եք սցենարի մեջ մուտքագրված կոդերից/ուշացումներից (ցանկության դեպքում կարող եք վերանվանել ծածկագրի տողերի փոփոխականները), գրեթե պատրաստ եք համակարգը փորձարկել: Նախքան դա անելը, դիտեք սցենարի transmit_code () գործառույթը: Այստեղ է, որ տեղի է ունենում հաղորդակցության հետ իրական փոխազդեցությունը: Այս գործառույթը ակնկալում է, որ կոդի տողերից մեկը կուղարկվի որպես արգումենտ: Այնուհետև այն բացում է սահմանված քորոցը որպես GPIO ելք և շրջանցում կոդի տողի յուրաքանչյուր բնույթ: Այնուհետև այն միացնում կամ անջատում է հաղորդիչը ՝ ըստ ձեր մուտքագրած ժամանակային տեղեկատվության ՝ ծածկագրի տողին համապատասխանող ալիքի ձև ստեղծելու համար: Այն յուրաքանչյուր կոդ է ուղարկում մի քանի անգամ (լռելյայն ՝ 10) ՝ այն բաց թողնելու հավանականությունը նվազեցնելու համար և թողնում է երկարաձգված հետաձգում յուրաքանչյուր կոդի բլոկի միջև, ինչպես և հեռախոսը:
Սցենարը գործարկելու համար կարող եք օգտագործել հետևյալ հրամանների շարահյուսությունը.
python TransmitRF.py code_1 code_2…
Դուք կարող եք փոխանցել բազմաթիվ կոդերի տող `սցենարի մեկ գործարկմամբ: Օրինակ, (a) և (b) վարդակները միացնելու և վարդակից (c) անջատելու համար գործարկեք սցենարը հետևյալ հրամանով.
python TransmitRF.py a_on b_on c_off- ում
Քայլ 6. Նշում ժամանակի ճշգրտության վերաբերյալ
Ինչպես նշվեց, փոխանցվող միացման/անջատման իմպուլսների միջև ընկած ժամանակահատվածը բավականին կարևոր է: TransmitRF.py սցենարը օգտագործում է python- ի time.sleep () գործառույթը `ալիքների ձևերը ճիշտ զարկերակային ընդմիջումներով կառուցելու համար, սակայն հարկ է նշել, որ այս գործառույթը ամբողջովին ճշգրիտ չէ: Այն տևողությունը, որի համար այն ստիպում է սցենարին սպասել հաջորդ գործողությունը կատարելուն, կարող է կախված լինել տվյալ պահին պրոցեսորի բեռից: Դա ևս մեկ պատճառ է, թե ինչու է TransmitRF.py- ն յուրաքանչյուր կոդը մի քանի անգամ ուղարկում `միայն այն դեպքում, եթե time.sleep () գործառույթը ի վիճակի չլինի ճիշտ կառուցել ծածկագրի տվյալ օրինակը:
Անձամբ ես երբեք խնդիրներ չեմ ունեցել time.sleep () - ի հետ, երբ խոսքը վերաբերում է կոդերի ուղարկմանը: Այնուամենայնիվ, ես գիտեմ, որ իմ time.sleep () հակված է ունենալ մոտ 0.1ms սխալ: Ես դա որոշեցի ՝ օգտագործելով կից SleepTest.py սցենարը, որը կարող է օգտագործվել գնահատելու, թե որքան ճշգրիտ է ձեր Pi- ի time.sleep () գործառույթը: Իմ հատուկ հեռակառավարվող վարդակների համար ամենակարճ ուշացումը, որն ինձ անհրաժեշտ էր իրականացնել, 0.45 մ էր: Ինչպես ասացի, ես խնդիրներ չեմ ունեցել ոչ արձագանքող վարդակների հետ, ուստի թվում է, որ 0.45 ± 0.1ms- ը բավական լավ է:
Կան այլ մեթոդներ `ապահովելու համար, որ ուշացումն ավելի ճշգրիտ է. օրինակ, դուք կարող եք օգտագործել հատուկ PIC չիպ ՝ ծածկագրեր ստեղծելու համար, բայց նման բաները դուրս են այս ձեռնարկի շրջանակներից:
Քայլ 7: Եզրակացություն
Այս նախագիծը ներկայացրել է Raspberry Pi- ի և 433 ՄՀց հեռակառավարվող վարդակների միջոցով ցանկացած էլեկտրական սարքի կառավարման մեթոդ ՝ կենտրոնանալով պարզության և թափանցիկության վրա: Սա ամենահետաքրքիր և ճկուն նախագիծն է, որի համար ես օգտագործել եմ իմ Pi- ն, և դրա համար կան անսահմանափակ ծրագրեր: Ահա որոշ բաներ, որոնք այժմ կարող եմ անել իմ Pi- ի շնորհիվ.
- Միացրեք էլեկտրական տաքացուցիչը իմ մահճակալի կողքին, ահազանգիցս կես ժամ առաջ:
- Անջատեք ջեռուցիչը քնելուց մեկ ժամ անց:
- Միացրեք իմ մահճակալի լույսը, երբ ահազանգս անջատվում է, որպեսզի նորից չքնեմ:
- եւ շատ ավելի…
Այս առաջադրանքներից շատերի համար ես օգտագործում եմ crontab գործառույթը Linux- ում: Սա թույլ է տալիս ստեղծել ավտոմատ պլանավորված առաջադրանքներ ՝ որոշակի ժամանակներում TransmitRF.py սցենարը գործարկելու համար: Դուք կարող եք նաև օգտագործել Linux- ը հրամանով ՝ միանգամյա առաջադրանքներ կատարելու համար (որոնք, ինձ համար, անհրաժեշտ էր տեղադրել առանձին ՝ օգտագործելով «sudo apt-get install at»): Օրինակ, հաջորդ առավոտ առավոտյան ահազանգիցս կես ժամ առաջ վառարանս միացնելու համար ինձ մնում է միայն մուտքագրել.
ժամը 05: 30 -ին
python TransmitRF.py c_on
Դուք կարող եք նաև օգտագործել այս նախագիծը ՝ իմ Dropbox- ի տնային մոնիտորինգի համակարգի հետ համատեղ, սարքերը ինտերնետով կառավարելու համար: Շնորհակալություն կարդալու համար, և եթե ցանկանում եք ինչ -որ բան պարզաբանել կամ կիսել ձեր կարծիքը, խնդրում ենք տեղադրել մեկնաբանություն:
Խորհուրդ ենք տալիս:
Տնային ավտոմատացում ՝ 5 քայլ
Տան ավտոմատացում
Խոսակցական ավտոմատացում -- Աուդիո Արդուինոյից -- Ձայնով վերահսկվող ավտոմատացում -- HC - 05 Bluetooth մոդուլ. 9 քայլ (նկարներով)
Խոսակցական ավտոմատացում || Աուդիո Արդուինոյից || Ձայնով վերահսկվող ավտոմատացում || HC - 05 Bluetooth մոդուլ ՝ …………………………. Լրացուցիչ տեսանյութերի համար Բաժանորդագրվեք իմ YouTube ալիքին …. …. Այս տեսանյութում մենք կառուցել ենք Խոսող ավտոմատացում: Երբ դուք բջջային հեռախոսով ձայնային հրաման կուղարկեք, այն կմիացնի տնային սարքերը և հետադարձ կապ կուղարկի
Տնային ավտոմատացում Raspberry Pi- ի միջոցով `օգտագործելով ռելեային տախտակ. 7 քայլ
Տնային ավտոմատացում Raspberry Pi- ի միջոցով `օգտագործելով ռելեային տախտակ. Մարդկանց մեծ մասը ցանկանում է ունենալ մեծ հարմարավետություն, բայց ողջամիտ գներով: Մենք ծուլություն ենք զգում ամեն երեկո, երբ արևը մայր է մտնում և հաջորդ առավոտ լուսավորվում են տները ՝ կրկին անջատելով լույսերը, կամ միացնելու/անջատելու օդորակիչը/օդափոխիչը/ջեռուցիչները, ինչպես որ
Սկսելով տնային ավտոմատացում. Տնային օգնականի տեղադրում `3 քայլ
Սկսելով տնային ավտոմատացումից. Տնային օգնականի տեղադրում. Այժմ մենք պատրաստվում ենք սկսել տան ավտոմատացման շարքը, որտեղ մենք ստեղծում ենք խելացի տուն, որը թույլ կտա մեզ վերահսկել այնպիսի բաներ, ինչպիսիք են լույսերը, բարձրախոսները, տվիչները և այլն, օգտագործելով կենտրոնական հանգույցը, ինչպես նաև ձայնային օգնական: Այս գրառման մեջ մենք կսովորենք, թե ինչպես կատարել
Տնային ավտոմատացում Քայլ առ քայլ Wemos D1 Mini- ի միջոցով ՝ PCB դիզայնով. 4 քայլ
Տնային ավտոմատացում Wemos D1 Mini- ի միջոցով PCB դիզայնով. Տնային ավտոմատացում Քայլ առ քայլ Wemos D1 Mini- ի միջոցով ՝ PCB դիզայնով: Մի քանի շաբաթ առաջ մենք rootaid.com կայքում հրատարակեցինք «Տնային ավտոմատացում ՝ օգտագործելով ազնվամորի Pi» ձեռնարկը, որը լավ ընդունվեց հոբբիստների և քոլեջի ուսանողներ: Հետո եկավ մեր անդամներից մեկը