Բովանդակություն:
- Քայլ 1: Բաղադրիչների հավաքում
- Քայլ 2: Տեղադրեք մեր գրադարանը
- Քայլ 3: Պահանջվող գրադարանների տեղադրում
- Քայլ 4: Մոդուլի հավաքում
- Քայլ 5. Լուսավորության մոդուլի ուրվագիծը գրել
- Քայլ 6: Փորձարկելով մեր AtHome մոդուլը
- Քայլ 7. Մոդուլի համար պատյան ստեղծելը
Video: Կառուցեք պայծառության մոդուլ AtHome- ով ՝ 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
AtHome- ը EITHECH- ից AtHome խմբի կողմից կատարված բաց և բաց ծրագրային ապահովման ուսանողական ծրագիր է, որի նպատակն է զարգացնել մի քանի անհատական սենսորային մոդուլների փոխկապակցված լուծում, որը հաղորդակցվում է ինքնասպասարկվող տվյալների բազայի հետ, որը բացահայտում է սմարթֆոնների և վեբ հավելվածների սնուցման համար օգտագործվող API- ն: Մոդուլները վերահսկում են տան ներքին միջավայրը և ունակ են օգտվողին տեսողական արձագանք տալ ՝ կանաչից (լավից) կարմիրից (վատից), իսկ փոխանցված տվյալները օգտագործողի կողմից տեսանելի են մոդուլի սերիական հաղորդակցության միջոցով կամ մեր ծրագրերը, եթե դրանք օգտագործում եք:
Թեև այս նախագիծը դեռևս գտնվում է ակտիվ զարգացման փուլում, մեր մոդուլների հիմնական գործառույթներն այժմ պատրաստ են և, ենթադրաբար, հեշտ օգտագործման համար `հարմարեցված մոդուլներ մշակելու համար: Այսպիսով, դրա համար ես առաջարկում եմ ձեզ տեսնել, թե ինչպես կարելի է կառուցել ձեր սեփական պարզ մոդուլը լուսավորության մոդուլի այս օրինակով:
Այս մոդուլները հիմնականում կառուցված են Arduino- ի հետ համատեղելի տախտակով (Arduino- ի մասնակի միջուկը պետք է բավարար լինի, քանի դեռ ունի Stream, Wire և UART հոսքի աջակցություն), թողարկման դեպքում LED (կարմիր կամ RGB) կարմիր գույն ստացող, տվիչ, էլեկտրամատակարարում (պատի էներգիայի մատակարարում կամ մարտկոց) և լազերային կտրված պատյան:
Այո, դա հաստատ նոր չէ, կան բազմաթիվ սենսորային նախագծեր, բայց մենք հույս ունենք, որ այլ գործառույթներ, ինչպիսիք են առողջության հետ կապված խնդիրների հայտնաբերումը, հաղորդակցումը և տեղեկատվության պահպանումը ինքնասպասարկվող սերվերի վրա և վիզուալիզացիայի հավելվածը, կօգնեն ձեզ: Կամ եթե պարզապես ցանկանում եք վերահսկել ձեր տունը, պարզ նախագծեր կամ ոչ պակաս հետաքրքիր:)
Քայլ 1: Բաղադրիչների հավաքում
Այս նախագծի համար ձեզ հարկավոր կլինի մի քանի բաղադրիչ ՝ ձեր AtHome մոդուլը կառուցելու համար.
- 1x Arduino- Համատեղելի տախտակ. Այստեղ ես կօգտագործեմ Arduino UNO (բայց այն նաև աշխատում է այլ տախտակների հետ, ինչպիսիք են TI Launchpads և ESP8266 տախտակները)
- 1x սենսոր. Ես կօգտագործեմ TSL2561 լուսավորության սենսոր (աջակցվող տվիչների ցանկը հասանելի է մեր գրադարանի փաստաթղթերում)
- 1x led. Ես այստեղ կօգտագործեմ Grove Chainable RGB LED (բայց դա կարող է լինել նաև պարզ կարմիր լապտեր կամ NeoPixel)
- Dupont Wires
Համատեղելի բաղադրիչների ցանկը հասանելի է մեր ծրագրի փաստաթղթերի վրա:
Քայլ 2: Տեղադրեք մեր գրադարանը
Մեր գրադարանը տեղադրելու համար ձեզ հարկավոր է ներբեռնել մեր պահոցից (այն հետագայում կհրապարակենք Arduino IDE ցուցակում և PlatformIO- ում) ՝ այս հղումով.
gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy
Այնուհետև մտեք Arduino IDE և ընտրեք «Էսքիզ> Ներառել գրադարանը> Ավելացնել. ZIP գրադարան…»: Այնուհետև ընտրեք «artifacts.zip» անունով zip ֆայլը և կտտացրեք «Լավ»:
Քայլ 3: Պահանջվող գրադարանների տեղադրում
Մեր գրադարանին աշխատելու համար անհրաժեշտ է, որ ձեր համակարգչում տեղադրվեն այլ գրադարաններ.
- Arkhipenko TaskScheduler գրադարան
- SEEED Studio Grove Digital Light Sensor գրադարան
- SEEED Studio Grove Chainable RGB LED գրադարան
- Adafruit NeoPixel գրադարան
Դուք կարող եք դրանք տեղադրել Arduino IDE- ի գրադարանի մենեջերի միջոցով ՝ անցնելով «Էսքիզ»> «Ներառել գրադարանը»> «Գրադարանների կառավարում …»:
Նոր բացվող պատուհանում սպիտակ որոնման դաշտում գրեք այն գրադարանի անունը, որը ցանկանում եք տեղադրել, այնուհետև կտտացրեք դրա բլոկի վրա: Կհայտնվի «Տեղադրեք» կոճակը, պարզապես անհրաժեշտ է սեղմել դրա վրա, և IDE- ն այն կներբեռնի և կտեղադրի ձեզ համար:
Քայլ 4: Մոդուլի հավաքում
Սկսենք սենսորից: TSL2561- ի VCC կապը Arduino- ի 5V կապին, սենսորի GND կապը միացրեք Arduino- ի GND կապին և սենսորի SDA և SCL կապին Arduino- ի SDA և SCL կապումներին:. Այժմ դուք ավարտված եք:
Այժմ, Grove Chainable RGB LED- ի VCC կապը միացրեք Arduino- ի 5V pin- ին և LED- ի GND կապին Arduino- ի երկրորդ GND- ին: Եթե դուք Arduino- ն եք որպես ընդամենը մեկ 5V քորոց, կարող եք օգտագործել տախտակ `Arduino- ի 5v- ը միացնելու համար տախտակի + տողին և դրա վրա միացնելով ձեր բոլոր բաղադրիչները` 5V կապում, կամ դրանք միասին զոդել տախտակի կտորի վրա կամ օգտագործեք wago միակցիչներ կամ այն, ինչ նախընտրում եք: Այժմ, ձեր LED- ի CI կապը միացրեք ձեր Arduino- ի 7 -ին և ձեր LED- ի DI- քորոցը `ձեր Arduino- ի 8 -ին: Եթե դուք չունեք այդպիսի LED, մի անհանգստացեք, հնարավոր է օգտագործել ձեր Arduino տախտակի կամ դասական LED- ի ներկառուցված լուսադիոդային ծածկագիրը `ընդամենը փոքր փոփոխությամբ:
Քայլ 5. Լուսավորության մոդուլի ուրվագիծը գրել
Եկեք ստեղծենք նոր ուրվագիծ և գրենք կոդը մեր մոդուլի համար:
Եթե էսքիզի բացատրությունը ձեզ չի հետաքրքրում, կարող եք պարզապես պատճենել և տեղադրել այն ձեր Arduino IDE- ում.
#ներառում
օգտագործելով LightModule = AtHomeModule; Հոսք *հոսքեր = {& Սերիա, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; GroveChainableLED հանգույց (& grovePins); LightModule *մոդուլ = LightModule:: getInstance (); void setup () {// տեղադրեք ձեր տեղադրման կոդը այստեղ ՝ մեկ անգամ գործարկելու համար. Serial.begin (9600); module-> setStreams (հոսքեր); GroveDigitalLightSensor *lightSensor = նոր GroveDigitalLightSensor (); մոդուլ-> setSensor (lightSensor); մոդուլ-> setDisplay (& led); մոդուլ-> տեղադրում (); } void loop () {// տեղադրեք ձեր հիմնական կոդը այստեղ ՝ անընդհատ գործարկելու համար. module-> run (); }
Եթե ցանկանում եք հասկանալ, թե ինչ է անում այս կոդը, կարող եք կարդալ հետևյալը, կամ եթե ձեզ չի հետաքրքրում, կարող եք ուղղակիորեն անցնել հաջորդ քայլին:
Սկսելու համար, մենք պետք է ներառենք մեր գրադարանը մեր ուրվագծում `ուրվագծի վերևում գրելով այս տողը.
#ներառում
Այժմ մենք պետք է ստեղծենք կեղծանուն այն մոդուլի օբյեկտի համար, որը մենք կօգտագործենք: Դուք կարող եք տեսնել այն որպես տուփ, որի մի քանի կոճակներ օգտագործվում են բաղադրիչները փոխելու, գործարկելու, դադարեցնելու և այլնի համար: Քանի որ այն տուփ է, որը կառուցված է կաղապարի միջոցով (ինչպես սովորական ձևանմուշը, որը մենք օգտագործում ենք որպես մարդիկ, այն ունի նախնական հիմք, և Arduino- ի կազմողը կառուցում է վերջնական ծածկագիրը `հիմնվելով նրան տրված պարամետրերի վրա)` սահմանելով սենսորի արժեքը ներկայացնող տեսակը և սենսորային արժեքների քանակը, որոնք մենք ցանկանում ենք պահել հիշողության մեջ, այն նշված է իր անվան մեջ և սովորաբար պետք է կրկնվել ամեն անգամ, երբ ցանկանում ենք օգտագործել այն: Ինչը մի փոքր նյարդայնացնում է, այդ իսկ պատճառով մենք նոր անուն, այլ անուն կկապենք այս տուփի ամբողջական անվան հետ:
Ասենք, օրինակ, ես ցանկանում եմ, որ այս տուփը կոչվի «LightModule», քանի որ այն կօգտագործվի լուսավորության մոնիտորինգի մոդուլ իրականացնելու համար, և ես ուզում եմ միաժամանակ պահել միայն 1 արժեք: Լուսավորությունը լյուքսում որպես անբաժանելի տեսակ ներկայացված է մեր TSL2561 սենսորով, որը համակարգիչների կողմից ներկայացված է որպես uint16_t: Մեր ծածկանունն այսպիսի տեսք կունենա.
օգտագործելով LightModule = AtHomeModule;
հիմնաբառի «օգտագործումը» նշանակում է, որ մենք ստեղծում ենք կեղծանուն, և այն անունը, որը մենք տալիս ենք անմիջապես հետո, համապատասխանում է «=» նիշից հետո հաջորդականությանը:
«AtHomeModule» - ն այս տուփի իրական անունն է, որը մենք տալիս ենք նոր անուն, իսկ արժեքի ներկայացումը և հիշողության մեջ պահվող արժեքների թիվը սահմանող պարամետրերը թվարկված են «» միջև:
Այժմ, երբ մենք հետագայում օգտագործենք «AtHomeModule» անունը, Arduino- ն կիմանա, որ դա վերաբերում է «AtHomeModule» ամբողջական անունին:
Եթե ցանկանում եք, որ ձեր տուփը 1 -ի փոխարեն կարողանա պահել 5 արժեք, ապա պարզապես պետք է «1» -ը փոխարինել «5» -ով, և Arduino- ն ձեզ համար կստեղծի այլ տուփ, որը կկարողանա անել այն, ինչ ցանկանում եք: Այնուամենայնիվ, նկատի ունեցեք, որ եթե մոդուլը ծրագրված է ուղարկել իր արժեքները նախքան սենսորի 5 արժեքների արդյունավետ չափման ժամանակը, դուք երբեք չեք տեսնի դրանցից 5 -ի ուղարկումը, քանի որ այն ուղարկում է միայն նոր արժեքները վերջին վերբեռնումից ի վեր:
Հաջորդը, մենք պետք է ստեղծենք ցուցիչ պարունակող ցուցիչ Arduino հոսքերի վրա, որոնք օգտագործվում են մոդուլի կողմից հաղորդակցվելու համար, որոնք միշտ ավարտվում են keyworkd «nullptr» - ով: Այստեղ ես օգտագործում եմ միայն Arduino- ի «Սերիական» հոսքը, որը համակարգչի հետ շփվում է USB պորտով, ուստի զանգվածը հետևյալն է.
Հոսք *հոսքեր = {& Սերիա, nullptr};
«*» Նիշը նշանակում է, որ տիպը ցուցիչ է (տարրի գտնվելու վայրը, այլ ոչ թե տարրի ինքնը), իսկ «» փակագծերը նշանակում են, որ Arduino- ում դա զանգված է, ուստի կարող ենք բազմակի արժեքներ դնել:
Հաջորդը, մենք պետք է ստեղծենք մեր LED- ը: Դա անելու համար մենք պետք է գրենք հետևյալ երկու տողերը.
GroveChainableLED:: Pins grovePins = {7, 8};
GroveChainableLED հանգույց (& grovePins);
Եթե դուք չունեք Grove RGB LED, բայց դեռ ցանկանում եք տեսողական հետադարձ կապ, կարող եք դա անել ուրվագծի պարզ փոփոխությամբ: Երկու նախորդ տողերը փոխարինեք այս տողով.
Մոնոխրոմատիկ LED լույս (LED_BUILTIN);
Այս կոնֆիգուրացիայում կանաչ ներկառուցված LED- ը կմիանա այնքան ժամանակ, քանի դեռ վերահսկվող արժեքը լավ է առողջության համար և կանջատվի, երբ այն կապից դուրս է: Եթե նախընտրում եք այն միացնել, երբ այն կապից դուրս է (քանի որ օրինակ, կարմիր LED- ի փոխարեն օգտագործում եք 13 -ի փին կանաչի փոխարեն), փոխարենը կարող եք օգտագործել այս տողը.
Մոնոխրոմատիկ LED լույս (LED_BUILTIN, ճշմարիտ);
Հաջորդ քայլը ինքն է ստեղծել մեր մոդուլը: Դա արվել է առաջին անգամ, երբ մենք գտնում ենք դրա գտնվելու վայրը հիշողության մեջ ՝ զանգահարելով «getInstance» մեթոդը, այսպես.
LightModule *մոդուլ = LightModule:: getInstance ();
Այնուհետև մենք պետք է պարամետրեր սահմանենք Arduino- ի «setup ()» գործառույթում ՝ սկսած Arduino էսքիզներում սովորական «Serial» պորտի սկզբնավորմամբ.
Serial.begin (9600);
Մենք ստեղծում ենք լույսի ցուցիչ ՝ գրելով այս տողը.
GroveDigitalLightSensor *lightSensor = նոր GroveDigitalLightSensor ();
Այնուհետև մենք մեր մոդուլին ասում ենք, որ Arduino Stream- ում ցուցիչների մեր զանգվածը օգտագործի դրանց միջոցով հաղորդակցվելու համար.
module-> setStreams (հոսքեր);
Մենք նաև ասում ենք մեր մոդուլին օգտագործել մեր լույսի ցուցիչը `լուսավորության ինտենսիվությունը վերահսկելու համար, որտեղ մոդուլը գտնվում է.
մոդուլ-> setSensor (lightSensor);
Մենք ասում ենք մեր մոդուլին ՝ օգտագործել մեր LED- ն ՝ տեսողական հետադարձ կապ հաղորդելու համար.
մոդուլ-> setDisplay (& led);
Վերջապես, մենք ասում ենք մեր մոդուլին, որ նա պատրաստ է կատարել ցանկացած ներքին կոնֆիգուրացիա, որն անհրաժեշտ է ՝ կանչելով իր «կարգաբերման» գործառույթը.
մոդուլ-> տեղադրում ();
Մեր վերջին քայլն այժմ կոչելն է մեր մոդուլի «run ()» գործառույթը, որը կոչված է կոչվելու Arduino- ի «loop» ֆունկցիայի յուրաքանչյուր կրկնելիս ՝ գրելով այս տողը «loop» գործառույթի ներսում.
մոդուլ-> վազում ();
Այժմ, մեր ուրվագիծը վերջապես պատրաստ է վերբեռնել Arduino և փորձարկել մեր մոդուլը:
Քայլ 6: Փորձարկելով մեր AtHome մոդուլը
Էսքիզը Arduino- ում վերբեռնելու համար ընտրեք ձեր Arduino UNO տախտակը ՝ անցնելով «Գործիքներ»> «Պորտ»> «[COMx կամ/dev/x] (Arduino/Genuino UNO)»:
Վերջին բանը, պարզապես կտտացրեք «Վերբեռնում» կոճակին (շրջանագծի կոճակը, որի սլաքը դեպի աջ է ցույց տալիս, գործիքի տողի երկրորդ պատկերակը), որպեսզի էսքիզը ձեր տախտակում վերբեռնվի:
Արված է! Այժմ դուք մոդուլը պետք է աշխատեք և արժեքներ ուղարկեք ձեր համակարգչին, որոնք տեսանելի են Arduino- ի սերիական մոնիտորում: Դուք կարող եք ստուգել այն ՝ բացելով Arduino- ի «Սերիական մոնիտորը» «Գործիքներ» ընտրացանկում, և դուք պետք է ունենաք այս քայլի երկրորդ վերնագրի պատկերի նման ելք:)
Քայլ 7. Մոդուլի համար պատյան ստեղծելը
Դուք կարող եք կառուցել տուփի պարզ պատյան ձեր մոդուլի համար ՝ այն լազերային կտրելով 3 մմ նրբատախտակի տախտակի մեջ:
Մեր տուփի պատյանները պատրաստելու համար մենք օգտագործում ենք makercase ՝ կաղապարը պատրաստելու այն ցանկալի չափսերով, որոնք հետագայում հարմարեցնում ենք: Այս քայլին կից կգտնեք լուսավորության մոդուլի svg ֆայլը:
Այնուհետև պարզապես կպցրեք դեմքերը միասին, բացառությամբ մեկի, որպեսզի կարողանաք այն հետագայում բացել, ներս մտնել և LED- ն կպցնել պատյանի անցքի մեջ (մենք թափանցիկ ժապավեն ենք օգտագործում ՝ փոսը լցնելու համար և լույսը ցրելու համար, բացի LED- ն առջևից կպցնելուց: դրանից):
Այժմ պարզապես մարտկոց ավելացրեք ձեր Arduino- ին սնուցելու համար, փակեք պատյանը և ձեր մոդուլը պատրաստ է և պետք է լավ տեսք ունենա:)
Խորհուրդ ենք տալիս:
M5StickC Թույն տեսք ունեցող ժամացույց մենյուով և պայծառության հսկողությամբ ՝ 8 քայլ
M5StickC Cool Looking Watch մենյուով և պայծառության վերահսկիչով .Դիտեք ցուցադրական տեսանյութ
LED շերտի պայծառության վերահսկիչ `4 քայլ
LED շերտի պայծառության վերահսկիչ. LED շերտերն ամբողջ աշխարհում հայտնի են ցածր լարման և պայծառության սպառման համար: Երբեմն մենք պետք է կարգավորենք այս LED շերտերի լարման մատակարարումը և պայծառությունը, օրինակ ՝ ձեր քնի ընթացքում դուք կարող եք անհանգստանալ պայծառ
Պայծառության վերահսկում, Arduino (անիմացիաներով) ՝ 7 քայլ
Պայծառության վերահսկում, Arduino (Շարժապատկերներով). Վերջին մի քանի տարիների ընթացքում ես կառուցել եմ երկու փինբոլ մեքենա (pinballdesign.com) և երկու ռոբոտի գլուխ (grahamasker.com), որոնցից յուրաքանչյուրը վերահսկվում է Arduinos- ի կողմից: Ինժեներ -ճարտարագետի կարիերա ունենալով ՝ ես լավ եմ մեխանիզմների նախագծման հարցում, սակայն
24 Վտ հզորությամբ լուսադիոդային լուսավորություն ՝ պայծառության վերահսկմամբ ՝ 8 քայլ (նկարներով)
24 Վտ հզորությամբ լույսը լուսավորում է պայծառության հսկողություն. Սնունդը աճելն իմ ամենասիրած զբաղմունքներից է, քանի որ ես օրգանական սննդի և առողջ սնվելու մեծ երկրպագու եմ: Այս հրահանգը ցույց կտա ձեզ, թե ինչպես կարելի է կառուցել լուսադիոդային լուսավորություն կարմիր/կապույտ պայծառության կարգավորիչներով ՝ ձեր աճող կարիքներին համապատասխան և թույլ կտա ձեզ փորձառու լինել
Պայծառության վերահսկում PWM- ի վրա հիմնված LED հսկողություն ՝ սեղմիչ կոճակների, ազնվամորի Pi- ի և քերծվածքի միջոցով. 8 քայլ (նկարներով)
Պայծառության վերահսկում PWM- ի վրա հիմնված LED հսկողություն ՝ օգտագործելով սեղմման կոճակներ, ազնվամորի Pi և քերծվածք. Ես փորձում էի գտնել մի տարբերակ, որը բացատրում էր, թե ինչպես է PWM- ն աշխատում իմ ուսանողների համար, ուստի ես ինքս ինձ խնդիր դրեցի ՝ փորձելու վերահսկել լուսադիոդի պայծառությունը ՝ օգտագործելով 2 կոճակ - մեկ կոճակ, որը մեծացնում է լուսադիոդի պայծառությունը, իսկ մյուսը ՝ այն լուսավորող: Առաջադիմելու համար