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

Կառուցեք պայծառության մոդուլ AtHome- ով ՝ 7 քայլ
Կառուցեք պայծառության մոդուլ AtHome- ով ՝ 7 քայլ

Video: Կառուցեք պայծառության մոդուլ AtHome- ով ՝ 7 քայլ

Video: Կառուցեք պայծառության մոդուլ AtHome- ով ՝ 7 քայլ
Video: Հայկական իմպրովիզացիաներ չանեք, ստանդարտներին համապատասխան թեքահարթակներ կառուցեք․ Տիգրան Ավինյան 2024, Նոյեմբեր
Anonim
Կառուցեք պայծառության մոդուլ AtHome- ի հետ
Կառուցեք պայծառության մոդուլ AtHome- ի հետ

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. Լուսավորության մոդուլի ուրվագիծը գրել

Luminosity մոդուլի ուրվագիծը գրել
Luminosity մոդուլի ուրվագիծը գրել

Եկեք ստեղծենք նոր ուրվագիծ և գրենք կոդը մեր մոդուլի համար:

Եթե էսքիզի բացատրությունը ձեզ չի հետաքրքրում, կարող եք պարզապես պատճենել և տեղադրել այն ձեր 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 մոդուլը

Փորձարկելով մեր AtHome մոդուլը
Փորձարկելով մեր AtHome մոդուլը
Փորձարկելով մեր AtHome մոդուլը
Փորձարկելով մեր AtHome մոդուլը

Էսքիզը Arduino- ում վերբեռնելու համար ընտրեք ձեր Arduino UNO տախտակը ՝ անցնելով «Գործիքներ»> «Պորտ»> «[COMx կամ/dev/x] (Arduino/Genuino UNO)»:

Վերջին բանը, պարզապես կտտացրեք «Վերբեռնում» կոճակին (շրջանագծի կոճակը, որի սլաքը դեպի աջ է ցույց տալիս, գործիքի տողի երկրորդ պատկերակը), որպեսզի էսքիզը ձեր տախտակում վերբեռնվի:

Արված է! Այժմ դուք մոդուլը պետք է աշխատեք և արժեքներ ուղարկեք ձեր համակարգչին, որոնք տեսանելի են Arduino- ի սերիական մոնիտորում: Դուք կարող եք ստուգել այն ՝ բացելով Arduino- ի «Սերիական մոնիտորը» «Գործիքներ» ընտրացանկում, և դուք պետք է ունենաք այս քայլի երկրորդ վերնագրի պատկերի նման ելք:)

Քայլ 7. Մոդուլի համար պատյան ստեղծելը

Մոդուլի համար պատյան կառուցելը
Մոդուլի համար պատյան կառուցելը

Դուք կարող եք կառուցել տուփի պարզ պատյան ձեր մոդուլի համար ՝ այն լազերային կտրելով 3 մմ նրբատախտակի տախտակի մեջ:

Մեր տուփի պատյանները պատրաստելու համար մենք օգտագործում ենք makercase ՝ կաղապարը պատրաստելու այն ցանկալի չափսերով, որոնք հետագայում հարմարեցնում ենք: Այս քայլին կից կգտնեք լուսավորության մոդուլի svg ֆայլը:

Այնուհետև պարզապես կպցրեք դեմքերը միասին, բացառությամբ մեկի, որպեսզի կարողանաք այն հետագայում բացել, ներս մտնել և LED- ն կպցնել պատյանի անցքի մեջ (մենք թափանցիկ ժապավեն ենք օգտագործում ՝ փոսը լցնելու համար և լույսը ցրելու համար, բացի LED- ն առջևից կպցնելուց: դրանից):

Այժմ պարզապես մարտկոց ավելացրեք ձեր Arduino- ին սնուցելու համար, փակեք պատյանը և ձեր մոդուլը պատրաստ է և պետք է լավ տեսք ունենա:)

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