Բովանդակություն:
- Քայլ 1: Սենսորային մոդուլներ
- Քայլ 2: Սարքավորումներ
- Քայլ 3: Softwareրագրակազմ
- Քայլ 4: Տվյալների գրանցում
- Քայլ 5: Նմուշ ստացողի ծրագրակազմ
Video: Arduino ՌԴ սենսորային ապակոդավորիչ `5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Իմ նախորդ տունը հագեցած էր նախապես տեղադրված անվտանգության համակարգով, որն ուներ դռների տվիչներ, շարժման ցուցիչ և կառավարման վահանակ: Ամեն ինչ միացված էր առանձնասենյակում տեղադրված էլեկտրոնիկայի մեծ տուփին և հրահանգներ կար ֆիքսված հեռախոսին միացնելու համար `ահազանգի դեպքում ինքնաբերաբար զանգահարելու համար: Երբ ես փորձեցի խաղալ դրա հետ, ես հայտնաբերեցի, որ դռների տվիչներից մեկը թերի էր տեղադրված, իսկ մեկը ընդմիջվող էր ոչ պատշաճ դասավորության պատճառով: Այսքանը `անվտանգության ընկերության այցեքարտի վրա գովազդվող մասնագիտական տեղադրման մասին: Իմ լուծումն այն ժամանակ ինտերնետային անվտանգության տեսախցիկ գնելն էր և էժան անլար անվտանգության ահազանգը:
Շտապեք այսօր և այդ անլար ահազանգը նստած է իմ նկուղի տուփի մեջ: Էժան ՌԴ ընդունիչ ձեռք բերելուց հետո որոշեցի տեսնել, թե արդյոք կարո՞ղ եմ վերծանել տագնապի տվիչների և հեռակառավարման վահանակների փոխանցած հաղորդագրությունները, որոնք ես ունեմ: Ես հասկացա, որ քանի որ նրանք բոլորը աշխատում էին էժան ազդանշանային տուփով, նրանք բոլորը պետք է օգտագործեն նույն հաղորդագրության ձևաչափը ՝ այլ ID- ով: Շուտով պարզեցի, որ դրանք նման են միայն հաղորդագրությունների ընդհանուր կառուցվածքով: Այսպիսով, նախագիծը արագից չնչինից դարձավ շատ հետաքրքիր:
Քայլ 1: Սենսորային մոդուլներ
Ինչպես տեսնում եք վերևի նկարներում, հաղորդիչները ներառում են դռների բաց տվիչներ, շարժման դետեկտորներ, զինման հեռակառավարիչներ և ազդանշանային տուփը ծրագրավորելու համար օգտագործվող անլար ստեղնաշար: Ինչպես պարզվում է, այս սարքերից ոչ մեկը չի օգտագործում նույն համաժամացման երկարությունը կամ բիթերի տևողությունը: Միակ ընդհանրությունը, բացի հաղորդագրության երկարությունից, բիթերի հիմնական ձևաչափն է: Յուրաքանչյուր բիթ տևում է ֆիքսված ժամանակաշրջան ՝ զրոյի և մեկի միջև տարբերությունը բարձր/ցածր մասերի աշխատանքային ցիկլն է:
Վերևում ցուցադրված գեղեցիկ ալիքի ձևը այն չէ, ինչ ես առաջին անգամ ստացա: Քանի որ 433-ՄՀց հաճախականությունների տիրույթում այնքան շատ երթևեկություն կա, ես ստիպված եղա համոզվել, որ սենսորը միացնեմ միանգամից մի ձգան կատարելու հնարավորությունը սահմանելուց առաջ: Բարեբախտաբար, սենսորները միացված տվյալների տվյալների մի քանի պատճեն են հանում, և հեռակառավարման վահանակը և ստեղնաշարը շարունակում են հաղորդագրությունների թողարկումը, քանի դեռ ստեղնը սեղմված է: Օգտագործելով շրջանակը, ես կարողացա որոշել համաժամացման երկարությունը և յուրաքանչյուր տվյալների համար տվյալների բիտերի տևողությունը: Ինչպես արդեն նշվեց, համաժամացման ժամանակները տարբեր են, իսկ բիթերը ՝ տարբեր, սակայն հաղորդագրությունների ձևաչափերն ունեն ցածր մակարդակի համաժամացում, որին հաջորդում են տվյալների 24 բիթ և մեկ կանգառ բիթ: Դա ինձ բավական էր, որպեսզի կարողանայի ծրագրաշարի մեջ ստեղծել ընդհանուր ապակոդավորիչ ՝ առանց յուրաքանչյուր սարքի բոլոր տարբեր մանրամասների կոդ կոդավորելու:
Քայլ 2: Սարքավորումներ
Սկզբում ես ստեղծեցի սենսորային ապակոդավորիչ `օգտագործելով PIC միկրոկոնտրոլերը և հավաքման լեզուն: Ես վերջերս խաղում էի Arduino- ի տարբերակների հետ, ուստի մտածեցի, որ կտեսնեմ, եթե կարողանամ այն կրկնօրինակել: Պարզ սխեմատիկան ներկայացված է վերևում և կա նաև իմ նախատիպի նկարը: Արուինո Նանոյից դեպի ՌԴ ընդունիչ տախտակ գնալու համար ես ընդամենը օգտագործեցի երեք ընդհանուր թռիչքային լար: Էլեկտրաէներգիան և տվյալների մեկ տողը այն ամենն են, ինչ անհրաժեշտ է:
Եթե կարդաք իմ Instructable- ը «3-ը 1-ում ժամանակի և եղանակի ցուցադրման» վրա, կտեսնեք, որ ես օգտագործում եմ ընդհանուր RXB6, 433-ՄՀց ընդունիչ: Հնարավոր է, որ դուք կարողանաք իսկապես էժան ընդունիչներ աշխատել այս նախագծի համար անհրաժեշտ կարճ տիրույթում, բայց ես դեռ խորհուրդ եմ տալիս օգտագործել գերհետերոդինային ընդունիչ:
Քայլ 3: Softwareրագրակազմ
Theրագրակազմը ստացված բիթերը վերածում է ցուցադրվող ASCII նիշերի: Այն թողարկում է համաժամացման երկարության արժեքը և 1 և 0 բիթերի երկարությունները: Քանի որ ես արդեն գիտեի համաժամացման երկարությունները և բիտ ձևաչափերը, կարող էի ծրագրաշարը գրել հատուկ նրանց համար: Փոխարենը, ես որոշեցի տեսնել, թե արդյոք կարող եմ գրել այն համաժամացման երկարությունները դասավորելու և տվյալների բիթերն ինքնաբերաբար պարզելու համար: Դա պետք է ավելի հեշտ դարձնի փոփոխումը, եթե ես ուզում եմ ինչ -որ ժամանակ փորձել այլ ձևաչափեր հայտնաբերել: Կարևոր է նշել, որ ծրագրակազմը չգիտի հաղորդագրության առաջին բիթը 1 է, թե 0: Այն ենթադրում է, որ այն 1 է, բայց, եթե պարզվի, որ այն պետք է լիներ զրո, այն կշրջի բիթ լրացված հաղորդագրության մեջ, նախքան այն սերիական նավահանգիստը ուղարկելը:
Համաժամացման զարկերակի և տվյալների բիթերի ժամանակները որոշվում են `օգտագործելով INT0 արտաքին ընդհատման մուտքագրումը` ընդհատման կարգավորիչը գործարկելու համար: INT0- ը կարող է առաջացնել բարձրացման, ընկնելու կամ երկու եզրերի վրա կամ կայուն ցածր մակարդակի վրա: Softwareրագրակազմը ընդհատվում է երկու ծայրերում և չափում է այն ժամանակը, երբ զարկերակը մնում է ցածր: Դա պարզեցնում է իրերը, քանի որ հաղորդագրության սկիզբը/համաժամացումը ցածր մակարդակի զարկերակ է, և բիթերը կարող են որոշվել ՝ ելնելով դրանց ցածր մակարդակի ժամանակից:
Ընդհատումների կարգավորիչը նախ որոշում է, թե գրավված հաշվարկը բավականաչափ երկար է արդյոք սկզբնական/համաժամացման զարկերակ լինելու համար: Իմ ունեցած տարբեր սարքերն օգտագործում են 4, 9, 10 և 14 միլիվայրկյան համաժամացման իմպուլսներ: Նվազագույն/առավելագույն թույլատրելի համաժամացման արժեքների սահմանման հայտարարությունները ծրագրաշարում առաջ են և ներկայումս սահմանված են 3 և 16 միլիվայրկյանների համար: Բիթային ժամանակը նույնպես տարբերվում է սենսորների միջև, այնպես որ բիթերի վերծանման ալգորիթմը պետք է դա հաշվի առնի: Առաջին բիթի բիտ ժամանակը պահվում է այնպես, ինչպես հաջորդ բիթի ժամանակը, որն էական տարբերություն ունի առաջին բիտից: Հետագա բիտ ժամանակների ուղղակի համեմատությունը հնարավոր չէ, ուստի օգտագործվում է «կեղծ գործոնի» սահմանումը («տատանում»): Բիթերի վերծանումը սկսվում է ենթադրելով, որ առաջին տվյալների բիթը միշտ գրանցվում է որպես տրամաբանական 1. Այդ արժեքը պահվում է, այնուհետև օգտագործվում է հաջորդ բիթերը փորձարկելու համար: Եթե հետագա տվյալների բիտերի քանակը գտնվում է պահպանված արժեքի շեղման պատուհանում, ապա այն նույնպես գրանցվում է որպես տրամաբանություն 1. Եթե այն պահված արժեքի շեղման պատուհանից դուրս է, ապա այն գրանցվում է որպես տրամաբանություն 0. Եթե տրամաբանությունը 0 բիտ ժամանակն ավելի կարճ է, քան առաջին բիթ ժամանակը, այնուհետև դրոշ է դրված `ծրագրակազմին ասելու համար, որ բայթերը ցուցադրելուց առաջ անհրաժեշտ է շրջել: Միակ դեպքը, երբ այս ալգորիթմը ձախողվում է, այն է, երբ հաղորդագրության բիթերը բոլորը 0 են: Մենք կարող ենք ընդունել այդ սահմանափակումը, քանի որ այդ տեսակ հաղորդագրությունն անիմաստ է:
Ինձ հետաքրքրող սենսորներն ունեն հաղորդագրության երկարություն 24 տվյալների բիթ, բայց ծրագրակազմը չի սահմանափակվում այդ երկարությամբ: Կա բուֆեր մինչև յոթ բայթ (ավելին կարող է ավելացվել) և սահմանում է բայթերով հաղորդագրության նվազագույն և առավելագույն երկարությունը: Theրագրակազմը ստեղծվել է բիթերը հավաքելու, դրանք բայթերի վերածելու, ժամանակավորապես պահելու, այնուհետև սերիական պորտի միջոցով դրանք ASCII ձևաչափով թողարկելու համար: Հաղորդագրության ելքը խթանող իրադարձությունը նոր մեկնարկի/համաժամացման զարկերակի ստացումն է:
Քայլ 4: Տվյալների գրանցում
Theրագրակազմը ստեղծված է այնպես, որ փոխարկված տվյալները թողարկվեն որպես ASCII նիշ Arduino- ի սերիական (TX) ելքի միջոցով: Երբ կազմեցի PIC- ի տարբերակը, ես պետք է միացնեի համակարգչի տերմինալային ծրագրին `տվյալները ցուցադրելու համար: Arduino IDE- ի մեկ առավելությունն այն է, որ ներկառուցված է Serial Monitor գործառույթը: Ես սերիայի նավահանգստի փոխարժեքը սահմանեցի 115.2k, այնուհետև Serial Monitor- ի պատուհանը դրեցի նույն մակարդակի վրա: Այստեղ նկարահանված էկրանը ցույց է տալիս տիպիկ ցուցադրում ՝ իմ ունեցած տարբեր սենսորների ելքերով: Ինչպես տեսնում եք, տվյալները երբեմն կատարյալ չեն, բայց հեշտությամբ կարող եք որոշել, թե որն է յուրաքանչյուր սենսորի իրական արժեքը:
Քայլ 5: Նմուշ ստացողի ծրագրակազմ
Ես ներառել եմ ծրագրաշարի օրինակելի ցուցակ, որը ցույց է տալիս, թե ինչպես կարող եք օգտագործել հավաքված տեղեկատվությունը ՝ ձեր դիմումի համար հատուկ ծածկագրեր ստանալու համար: Այս օրինակը ստեղծվել է ՝ նմանակելու իմ Etekcity հեռավոր վարդակներից մեկը: Մեկ հրամանը միացնում է Nano- ում (D13) ներկառուցված LED- ը, իսկ մյուս հրամանը ՝ LED- ն: Եթե ձեր Arduino- ում ներկառուցված LED չկա, ապա ավելացրեք դիմադրիչը և LED- ը, ինչպես ցույց է տրված դիագրամում: Իրական կիրառման դեպքում այս ֆունկցիան միացնելու/անջատելու է էլեկտրական վարդակից (օգտագործելով ռելե կամ տրիակ): Համաժամացման ժամանակը, բիթը և տվյալների ակնկալվող բայթերը բոլորը նախապես սահմանվում են փոփոխման հեշտության համար: Դուք կարող եք օգտագործել տվյալների մնացած տողերից որևէ մեկը ՝ ձեր որոշակի ծրագրի համար իրերը միացնելու/անջատելու և այլն: Պարզապես ավելացրեք կիրառելի հրամանի ծածկագիրը և փոխարինեք LED միացման/անջատման տրամաբանությունը «հանգույցում» `ձեր կարիքներին համապատասխան:
Խորհուրդ ենք տալիս:
Երկուական ծառի Մորզ ապակոդավորիչ. 7 քայլ (նկարներով)
Երկուական ծառի Մորս ապակոդավորիչ ՝ a.articles {font-size: 110.0%; տառաչափը ՝ համարձակ; տառատեսակ ՝ շեղագիր; տեքստի ձևավորում. ոչ մեկը; ֆոնային-գույնը ՝ կարմիր;} ա. հոդվածներ ՝ սավառնել {ֆոնային-գույնը ՝ սև;} Այս հրահանգը բացատրում է, թե ինչպես վերծանել Մորզեի կոդը ՝ օգտագործելով Arduino Uno R3.T
Ինչպես կատարել պարզ DTMF (հնչերանգ) հեռախոսագծի ապակոդավորիչ `3 քայլ
Ինչպես կատարել պարզ DTMF (հնչերանգ) հեռախոսագծի ապակոդավորիչ. Սա պարզ նախագիծ է, որը թույլ է տալիս վերծանել DTMF ազդանշանները հիմնականում ցանկացած հեռախոսագծի վրա: Այս ձեռնարկում մենք օգտագործում ենք MT8870D ապակոդավորիչը: Մենք օգտագործում ենք նախապես կառուցված հնչերանգի ապակոդավորիչ, քանի որ, հավատացեք ինձ, թիկունքում ցավ է փորձել և դա անել
IR հեռակառավարիչ ապակոդավորիչ ՝ ARDUINO- ի օգտագործմամբ. 4 քայլ (նկարներով)
IR հեռակա ապակոդավորումը, որն օգտագործում է ARDUINO- ն. Սա ևս մեկ օգտվողի համար հարմար ձեռնարկ է `Arduino- ի և IR ընդունիչի միջոցով շատ պարզ IR Remote ապակոդավորիչ պատրաստելու համար: Այս ձեռնարկը կներառի ամեն ինչ `ծրագրաշարի տեղադրումից մինչև IR ընդունիչ օգտագործելը և ազդանշանների վերծանումը: Սրանք
IR հեռակառավարման ապակոդավորիչ Arduino- ի միջոցով. 7 քայլ
IR Remote Control Decoder Using Arduino: Hello Makers, This is a full tutorial how how decode any IR Remote control. Հետևեք ստորև բերված քայլերին
Arduino Magnetic Stripe ապակոդավորիչ. 4 քայլ (նկարներով)
Arduino Magnetic Stripe Decoder: տեղադրեք սա հետո