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

SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար. 3 քայլ (նկարներով)
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար. 3 քայլ (նկարներով)

Video: SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար. 3 քայլ (նկարներով)

Video: SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար. 3 քայլ (նկարներով)
Video: Step-by-step ASP.NET MVC Tutorial for Beginners | Mosh 2024, Հուլիսի
Anonim
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար
SilverLight: Arduino- ի վրա հիմնված բնապահպանական մոնիտոր սերվերային սենյակների համար

Մի անգամ ինձ հանձնարարվեց որոնել բնապահպանական զոնդ `իմ ընկերության սերվերային սենյակում ջերմաստիճանը վերահսկելու համար: Իմ առաջին գաղափարն էր. Դրա համար ես սառը պատասխան ստացա ՝ աչքերը փակ աչքերով գլուխ ունեցող մարդկանցից, որ մենք դա չենք անի, քանի որ դրա ստեղծումը աշխատանքային ժամերին ավելի կարժենա, քան սարք գնելը: Իմ կյանքի մի մասի համար նման նեղլիկ մարդկանց ընդունելը մի բան էր, և ես պատվիրեցի որոշ EATON- ի անպետք ապրանքներ Ebay- ից և զանգահարեցի այն, բայց այդ պահին որոշեցի, որ իմ սեփական սերվերային սենյակի համար ես կկառուցեմ ամբողջությամբ բաց կոդով Arduino հիմնված սարք, որը շատ ավելի լավը կլինի, քան այն, ինչ ես պարզապես պատվիրեցի:

Այս նախագիծը կոչվում է SilverLight, մի՛ հարցրեք ինձ, թե որտեղի՞ց եմ այս անունները:) Ես պարզապես նայեցի կիսափայլ ակրիլային փայլուն տուփին և որոշեցի այս անունով, դա ոչ մի կապ չունի միկրոտնտեսական արտադրանքի հետ, ինչի մասին ես իմացա հետո:.

Քայլ 1: Սարքավորման ձևավորում

Սարքավորման դիզայն
Սարքավորման դիզայն
Սարքավորման դիզայն
Սարքավորման դիզայն
Սարքավորման դիզայն
Սարքավորման դիզայն

Առևտրային ապարատային ակնարկ:

Լավ, այնպես որ ես նույնիսկ չեմ սկսում սկսել, որի հիանալի գաղափարն էր շրջակա միջավայրի մոնիտորի տեղադրումը վերելքների մեջ, բայց ակնհայտ է, որ դրա համար շուկա կա, տեսնենք, թե ինչ կարող են դրանք անել:

Շրջակա միջավայրի մոնիթորինգի սարք COMPATIBILITY

10/100 Մբ ցանց-MS, PXGUPS, PXGPDP և PXGMS:

10/100 Մբ ConnectUPS-X, ConnectUPS-BD և ConnectUPS-E ՝ FW V3.01 և ավելի բարձր հզորությամբ: ՉԱՓԵՐ (LXWXH)

2.26 x 1.48 x 1.15 (դյույմ) 57.6 x 37.6 x 29.3 (մմ) Քաշ

1.19 ունց (34 գ)

Շատ օգտակար տեղեկատվություն է, այնպես չէ՞: Մի անհանգստացեք, քանի որ նրանք շատ բան չեն կարող անել: Նույնիսկ սկսելու համար ձեր UPS- ը պետք է ունենա մեկ այլ թանկարժեք լրացուցիչ քարտ, որը դա կապում է առանձին գնվող բնապահպանական սենսորի հետ, սովորաբար ստանդարտ CAT5 մալուխով (նույնիսկ մի փորձեք որևէ բան միացնել այդ նավահանգստին, քանի որ ստանդարտ ոչինչ չկա դրա մասին). Նրանք պնդում են, որ սարքին անհրաժեշտ է 10 րոպե «տաքանալու» համար, որն իրականում ժամեր էին, և երբ այն միացել էր, այն հայտնվել էր իրենց դանդաղ թարմացվող java ինտերֆեյսում, և մենք ունենք ջերմաստիճան և խոնավություն: Ահազանգերի վրա հիմնված պայմաններ ստեղծելը այս պահից հեշտ էր, բայց ո՞վ է հոգ տանում, որ ավելի լավ բան կառուցենք:

Այս նախագիծը իմ բազմաթիվ նախագծերի միավորում է ՝ «Նատալյա» եղանակային կայան, «Ֆենիքսի ստվեր»: Տուփը կարող է վերահսկել հետևյալ բնապահպանական սահմանափակումները.

  • Temերմաստիճանի/խոնավության/ջերմության ինդեքս
  • LPG- ի, ծխի, ալկոհոլի, պրոպան, ջրածնի, մեթանի և ածխածնի օքսիդի կոնցենտրացիան օդում (MQ2)
  • Արևային զգայունություն (սերվերի սենյակում լույսը վառվա՞ծ է)
  • Motion PIR տվիչ (նույնիսկ այսուհետ կարող եք լույսերը ինքնաբերաբար միացնել/անջատել շարժման տվիչի շնորհիվ, երբ ինչ -որ մեկը սենյակ է մտնում)

Այս բոլոր տվյալները գեղեցիկ ցուցադրվում են LCD էկրանին, միաժամանակ փոխանցվում են համակարգչին (Orange PI Zero) ՝ հետագա մշակման և ահազանգերի համար: Չնայած հնարավոր կլիներ ուղղակիորեն միացնել թվային սենսորները, ինչպիսիք են DHT- ն և MQ2- ի թվային կապը OrangePI- ին, ես միշտ գերադասում եմ օգտագործել հատուկ մանրադիտակներ այս առաջադրանքների համար, և երբ անհրաժեշտ է նաև LCD- ը թարմացնել և կատարել այլ ցածր մակարդակ: Arduino- ն պարզապես անպարտելի է և կարող է հուսալիորեն աշխատել անդադար երկար տարիներ (իրականում ոչ մի Arduino, որը աշխատում է 24/7 ռեժիմով, ինձ դեռ չի հաջողվել): OrangePI- ն իր թերություններով (խոստովանենք, որ դա 10 դոլար արժողությամբ համակարգիչ է), ինչպես օրինակ, չի կարող օգտագործվել ծանրաբեռնվածության համար, bsd աջակցություն չկա, ինտեգրված WiFi- ն փչացած է և այլն, կարող է հեշտությամբ կարգավորել փոքր ծանրաբեռնվածությունը, օրինակ ՝ սերիալային (USB) միջոցով սենսորների ընթերցումները և դրանք մշակելը:

Սա շատ պարզ ծրագիր է `սարքավորումների իմաստով, որը պահանջում է հետևյալ բաղադրիչները.

  • Arduino PRO Micro
  • LCD էկրան 2x16 նիշ RGB
  • AC-DC մեկուսիչ անջատիչ հոսանքի մոդուլ 220V դեպի 5V HLK-5M05 (դրանք շատ լավ են Arduino/ESP նախագծերի համար), սա 5V/5W տարբերակն է:
  • 2x300ohm ռեզիստորներ
  • 2xleds (կարմիր/կանաչ)
  • PIR շարժման ցուցիչ
  • MQ2 ցուցիչ
  • DHT22
  • LDR
  • 2X10Kohm դիմադրություն
  • Բզզոց
  • Orange PI Zero
  • մինի USB տվյալների մալուխ

Ես նույնիսկ չեմ անհանգստացել PCB պատրաստելու համար, պարզապես օգտագործված սովորական տախտակի համար, քանի որ բաղադրիչները կարող են պարզապես միացվել Arduino- ին (տես կից նկարները).

-DHT22- ը կպահանջի 10K ձգում դեպի VCC (թվային)

-LDR- ից կպահանջվի 10K քաշի իջեցում GND- ին (անալոգային)

-MQ2- ը կարող է ուղղակիորեն կապված լինել ցանկացած անալոգային քորոցին (անալոգային) <նախընտրեք օգտագործել անալոգը, քանի որ ինչու ոչ, երբ մենք ունենք անալոգային կապում MCU, որտեղ մենք կարող ենք ստանալ ճշգրիտ արժեքը ՝ սարքի հետևի վրա ինչ -որ կաթսա կարգավորելու փոխարեն ՝ բարձր կամ OWԱOWՐ դրանից, իմ դիզայնի սոսնձման պատճառով, որն ամեն դեպքում անհասանելի է: Ստուգեք ՝

-PIR- ը կարող է ուղղակիորեն կապված լինել ցանկացած քորոցի (թվային)

-LCD. Կարող է վարվել 4 կապով, կարող է միացվել ցանկացած քորոցին (թվային) կպահանջվի +2 RS/E (թվային)

-Buzzer: կարող է ուղղակիորեն միացված լինել Arduino- ի ցանկացած կապում (թվային)

Իմ օգտագործած pinout- ը կարելի է տեսնել ծածկագրում: Այս ամենից հետո ամեն ինչ միացնելը բավականին ուղիղ է, կարող եք դրանք կատարել նաև մեկ առ մեկ, համոզվեք, որ 1 սենսորը հիանալի է աշխատում, այնուհետև անցեք հաջորդին, այն ամենը, ինչ կարող եք սխալվել, սխալմամբ լարերը սխալ տեղեր կապելն է (օր. Vcc փոխելը /gnd սենսորի համար, մինչ այժմ սա երբեք չի սպանել իմ սարքերից որևէ մեկին): Այն, ինչ ես այստեղ կնշեի, որ ինձ համար կուտակված էին շատ VCC և GND- ներ, ես չէի կարող դրանք սեղմել տերմինալային շերտի միջով, այնպես որ դրանք բոլորը կպցրեցի:

Նաև DHT- ների մասին մի մոռացեք իմ մյուս նախագծերից. Եթե DHT գրադարանը տեղադրեք ձեր ծածկագրում, և DHT սենսորը միացված չէ կամ սխալ DHT- ն միացված չէ (օրինակ ՝ 11 -ը, որը օգտագործում եք 22 -ը), ինչը կարող է հանգեցնել ծրագրի: սկզբից հավերժ կախվել:

PIR շարժման հայտնաբերման տվիչների մասին, ինչպես տեսնում եք իմ նկարի վրա, դրանցից կեղծված կեղծիքներ կան, իրականում ես նույնիսկ կդժվարանայի գնել իսկական մեկը Ebay- ից: Կեղծիքները նույնքան լավ են աշխատում, նույնիսկ երկարաժամկետ հեռանկարում, բայց դրանց միացումն արտացոլված է, ինչը հանգեցնում է + և - կապումների հակադարձման, ինչպես նաև դրանք հեշտությամբ ճանաչելի են. խեցեղենները Իմ բախտը բերեց, որ իմ տուփի մեջ իսկական գտա, հակառակ դեպքում դիրքը փոխելը ինձ համար կպարգևեր 2 լուսարձակներ: Ես պարզել եմ, որ երկու կաթսաներն էլ ինձ համար գործի են դրել մինչև կեսգիշեր: Սա թույլ կտա ձեզ զգալ բավականաչափ երկար `զգալու համար նաև այն ժամանակ, երբ շարժում կա, թվային ոտքը մոտ մեկ րոպե կպահվի Բարձր դիրքում, այնպես որ դրա համար ստիպված չեք լինի լրացնել ծածկագիրը: Կեղծիքների վրա հեշտ է որոշել, թե որ կողմն է - և + պարզապես նայեք համապատասխան ոտքերին ՝ կապումներին միացված էլեկտրոլիտիկ կափարիչների համար:

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

Քայլ 2: Softwareրագրաշարի ձևավորում

Softwareրագրային ապահովման նախագծում
Softwareրագրային ապահովման նախագծում
Softwareրագրային ապահովման նախագծում
Softwareրագրային ապահովման նախագծում

Arduino ծածկագիրը նույնպես պարզ է, այն հիմնականում ձգում է սենսորների բոլոր ընթերցումները յուրաքանչյուր հանգույցի սկզբում: Միացնում է LED- ները, եթե շարժում կամ ծուխ կա, և ծխի առկայության դեպքում ազդանշանային ազդանշան է հնչում (սա միակ արգելափակման կոդն է, որի պատճառով այն կարճ արեցի), այնուհետև ցուցադրում է տվյալները LCD- ով և վերջապես դրանք ուղարկում համակարգչի միջոցով: 10 վայրկյան պահելու ժամկետով ՝ նավահանգիստը չլցնելու համար:

Այս նախագիծը օգտագործում է միակողմանի հաղորդակցություն Arduino-> OrangePI- ից, չկան որևէ տեսակի հրամաններ: Չնայած դա լիովին հնարավոր կլիներ դա անել այնպես, ինչպես ես դա արեցի իմ մյուս նախագծերից մեկում, որտեղ համակարգիչը կարող է ուղարկել LCD_PRINT1 կամ LCD_PRINT2 ՝ իր սեփական հաղորդագրությամբ LCD էկրանին մեկ տող վերագրելու համար (օրինակ ՝ ip հասցե, գործարկման ժամանակ, համակարգի ամսաթիվ, պրոցեսորի օգտագործումը), էկրանի տարածքը այնքան փոքր է 3 սենսորից տվյալները ցուցադրելու համար, որ ես նույնիսկ չանհանգստացա: SOL և SMK արժեքները կարող են երկուսն էլ հասնել մինչև 0000-1023-ի 4 թվանշան ՝ էկրանին վերցնելով արդեն 8 արժեքավոր նիշ:

LCD- ով դուք կարող եք նկատել ծածկագրում մի փոքր հնարք, որ յուրաքանչյուր չափված արժեքից հետո կիրառվում է սպիտակ տարածությունների տպում (""), այնուհետև կուրսորը տեղափոխում եմ ֆիքսված դիրքերի `նոր պատկերակները և տվյալները տեղադրելու համար: Դրանք այնտեղ են, քանի որ LCD- ն այնքան էլ խելացի չէ թվերը հասկանալու համար, այն պարզապես նկարում է այն, ինչ ստանում է, և, օրինակ, եթե դուք ունեցել եք 525 արևային արժեք, որը հանկարծակի իջել է 3 -ի, այն կցուցադրի 325 -ը ՝ թողնելով հին աղբը էկրանին: այնտեղ

C վերահսկիչ կոդը, որն աշխատում է OrangePI- ով և գրանցում է շրջակա միջավայրի տվյալները և անհրաժեշտության դեպքում էլ.

OrangePI- ն աշխատում է Armbian- ով (որը գրելու պահին հիմնված էր Debian Stretch- ի վրա): Ես սա կներառեմ ծրագրային ապահովման մասում, որովհետև դա ինչ -որ կերպ լուծեց: Ահա սարքի միջին էներգիայի արտահոսքը.

0.17 A - միայն Arduino + տվիչներ

0.5-0.62 A - OrangePI բեռնաթափում

0.31 A - Orange PI անգործուն վիճակում

0.29 A - Orange PI- ն անջատված է (չի կարող իսկապես փակվել, այն չունի ACPI կամ նման բան)

0.60 A - Սթրես -թեստ 100% պրոցեսորի օգտագործում 4 միջուկի վրա

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

Այժմ սա ինչ-որ չափով նյարդայնացնում է, քանի որ HLK-5M05- ը պնդում է, որ կարող է 5 Վ հաղորդել 5 Վ լարման դեպքում, ինչը հնարավորություն է տալիս ապահովել 1 Ամպեր, սակայն Չինաստանից դուրս եկող այս սարքերի դեպքում դուք պարզապես չգիտեք, որ 0.63 A գագաթը շատ ավելի ցածր էր, քան գնահատված առավելագույնը: արժեքը: Այսպիսով, ես անցնում էի վերագործարկման պարզ թեստեր, 10 վերաբեռնումից OrangePI- ն միայն երկու անգամ հաջողությամբ կբեռնվեր, ինչը գրեթե ստիպեց ինձ այն դուրս հանել նախագծից, քանի որ չեմ սիրում սխեմաների խելագարված անհամապատասխան վարքագիծը: Այսպիսով, ես սկսեցի գուգլել, գուցե կա ծրագիր ծրագրից էներգիայի սպառումը նվազեցնելու միջոց (քանի որ դա այն ժամանակ միայն խնդիր էր) և գտա մի հոդված, որը խոսում էր script.bin- ի փոփոխման մասին, բայց դա Orange PI համակարգչի և ֆայլերը բացակայում էին պահեստից, այնպես որ, որպես վերջին միջոց, ես արել եմ կախարդական «հարմարեցված արդիականացումը» ՝ որոնվածը, միջուկը և մնացած ամեն ինչը բարելավելու համար ՝ հույս ունենալով, որ այն ավելի քիչ կթափվի, և սարքը կբեռնվի և.

Linux silverlight 4.14.18-sunxi #24 SMP Չրք Փետր 9, 16:24:32 CET 2018 armv7l GNU/Linux

Linux silverlight 4.19.62-sunxi #5.92 SMP Չրք 31 Հուլիս 22:07:23 CEST 2019 armv7l GNU/Linux

Դա աշխատեց! Hardwareրագրային ապահովման խնդրին սարքավորումներ գցելը սովորաբար ծույլ java ծրագրավորողների տեղն է, բայց այս դեպքում մենք ծրագրային ապահովման հետ լուծել ենք ապարատային խնդիրը, ինչ մեծ հաջողություն: Ես կատարել եմ ևս 20 վերագործարկման փորձարկում, երբ սարքը գործարկում էր յուրաքանչյուր պատյան: Ես դեռ կնշեի, որ Opi- ն միացնելուց (միացնելը/անջատելը) հոսանքի ուժգնությունն այնքան մեծ է, որ Arduino- ն ցանկացած պահի կվերականգնվի (պարզ վերագործարկումը պարզապես կթրթի LCD- ը, բայց այլ խնդիրներ չի առաջացնի), բայց այս հարցը մնում է թաքնված, քանի որ երկուսը միասին կբեռնվեն:

Ես նաև դիտել եմ միջուկի մոդուլները.

usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 Lima sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils ttm sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer snd sun8i_ths soundcore cpufreq_dt uio_pdrv_genirq uio thermal_sys pwrseq_simple

Ի՞նչ է մեզ իրականում պետք սրանցից: Լավ է, որ pwr- ը և ջերմայինը կարող են օգտակար լինել, բայց առողջ, սերիական նավահանգիստ, wifi (արդեն կոտրված hw) մեզ պետք չէ, որ այս բոլորը կարող են հայտնվել սև ցուցակում: Հետագայում կստեղծեմ նաև անհատական միջուկ ՝ միայն անհրաժեշտ մոդուլներով:

Այն, ինչ մեզ անհրաժեշտ է, և այն լռելյայն բեռնված չէ, CDC ACM- ն է Arduino- ի հետ հաղորդակցվելու համար, այն միացնելու համար.

արձագանք «cdc-acm» >> /etc /մոդուլներ

Դրանից հետո դուք արդեն կարող եք ստուգել կապը հետևյալի հետ.

էկրան /dev /ttyACM0 9600

Դուք պետք է տեսնեք կարգավիճակի տվյալները, որոնք ուղարկվում են յուրաքանչյուր 10 վայրկյանում:

Ահազանգեր և մոնիտորինգ

Ինչ վերաբերում է ահազանգերին, ես պարզապես համակարգային () զանգեր եմ մտցնում C կառավարման կոդի մեջ, որը ստանում է տվյալները սերիայից, այնպես որ արտաքին գործիքներ չեն պահանջվում: Որոշ ահազանգերի օրինակ.

- Temերմաստիճանը անցնում է 30 C- ից

- Խոնավությունը անցնում է 70 % -ից (առողջ չէ սերվերների համար)

- Սենյակում հայտնաբերված շարժում (սա կարող է նյարդայնացնել, եթե շարունակեք գնալ ձեր սերվերների սենյակում)

- detectedխի կամ գազի հայտնաբերում (100 -ից ավելի ահազանգերին կարելի է լուրջ մոտենալ, ես խաղացել եմ այս սենսորի հետ և այն միանում է շատ իրերի, օրինակ ՝ սենսորի կողքին ծխի ստեղծումը հանգեցրեց 50 -ից մի փոքր ավելի, մինչդեռ ծխախոտ ծխելը o այն հասավ մինչև 500 -ի, այն նույնիսկ հայտնաբերեց գազեր սովորական դեզոդորանտից հեռվից)

Պատմական տվյալներ պահելու համար ես չխանգարեցի գործիք մշակել, որովհետև ինչու՞ նորից հայտնագործել անիվը, երբ մենք ստացել ենք հիանալի մոնիտորինգի շրջանակներ: Ես ցույց կտամ մի օրինակ, թե ինչպես ինտեգրվել սա իմ անձնական նախընտրածի ՝ Zabbix- ի մեջ.

apt-get տեղադրել zabbix-agent

Ավելացրեք ՝ /etc/zabbix/zabbix_agentd.conf

UserParameter = silverlight.hum, գլուխ -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 1}'

UserParameter = silverlight.tmp, գլուխ -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 2}' UserParameter = silverlight.sol, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 4}' UserParameter = silverlight.mot, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 5}' UserParameter = silverlight.smk, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{տպել $ 6}'

Zabbix_agentd -p- ի գործարկումը պետք է վերադարձնի համապատասխան արժեքները.

silverlight.hum [t | 41]

silverlight.tmp [t | 23] silverlight.sol [t | 144] silverlight.mot [t | 0] silverlight.smk [t | 19]

Theերմության ինդեքսը, ես այն հավաքում եմ, բայց դրա գործնական կիրառումը չեմ տեսնում, այնպես որ այն պարզապես գրանցված է: C կառավարման կոդի մեջ ես իրականացրել եմ մուտքագրման 2 գործառույթ, առաջինը մուտքագրելու է բոլոր տվյալները օգտագործողի համար հարմար ձևաչափով.

[SILVERLIGHT] Տվյալները ստացվել են ՝ 2019-09-10 23:36:08 => Խոնավություն ՝ 44, ջերմաստիճան ՝ 22, Բարև ՝ 25, Արևային ՝ 0, Շարժում ՝ 0, okeուխ ՝ 21

[SILVERLIGHT] Տվյալները ստացվել են ՝ 2019-09-10 23:36:18 => Խոնավություն ՝ 44, Temերմ. 22, Բարև ՝ 25, Արևային ՝ 0, Շարժում ՝ 0, Smուխ ՝ 21 [SILVERLIGHT] Տվյալներ ՝ 2019-09 -10 23:36:29 => Խոնավություն ՝ 44, ջերմաստիճան ՝ 22, բարև ՝ 25, արևային ՝ 0, շարժում ՝ 0, ծուխ ՝ 22 [SILVERLIGHT] Տվյալները ստացվել են 2019-09-10 23:36:39 => Խոնավություն ՝ 44, ջերմաստիճան ՝ 22, բարև ՝ 25, արևային ՝ 0, շարժում ՝ 0, ծուխ ՝ 21

Երկրորդը:

void logger2 (նշան *տեքստ) {

ՖԱՅԼ *f = բացել ("/dev/shm/silverlight-zbx.log", "w"); if (f == NULL) {printf ("Չհաջողվեց բացել հիշողության տեղեկամատյան! / n"); վերադարձ; } fprintf (f, "%s", տեքստ); fclose (f); վերադարձ; }

Սա հիշողության մեջ կդնի 1 գծային մատյան (վերացրեք sdcard- ի վրա անհարկի rw գործողությունները), որը հաջորդ անգամ միշտ կգրվի: Այս տեղեկամատյանը կպարունակի միայն տվյալների 6 սյունակ և ոչ մի ժամանակային նշան, այն հեշտությամբ ընթեռնելի է Zabbix- ի համար:

Որպես վերջնական բոնուս. Ինչպես ծրագրավորել Arduino- ն անմիջապես OrangePI- ից, որպեսզի ամեն անգամ ստիպված չլինեք քայլել սարքի մոտ և միացնել նոութբուքը:

Կան 2 եղանակ.

-Հեշտ միջոց. Տեղադրեք ամբողջական Arduino IDE- ն և գրադարաններն օգտագործում են որոշ հեռավոր աշխատասեղան, ինչպիսիք են X11- ը վերահասցեավորմամբ, Xrdp, Xvnc, Nxserver և այլն:

-Դժվար եղանակ. Տեղադրեք Arduino IDE- ն և օգտագործեք հրամանի տողը

Այս անգամ մենք ամենադժվար ճանապարհը կանենք, քանի որ ես սեր չեմ դնում X11 սերվերների վրա: Դրա համար ձեզ հարկավոր է 6 բաղադրիչ.

1, Arduino IDE ARM 32 բիթ ->

2, Python սերիա-> apt-get install python-serial

3, Arduino Makefile նախագիծ -> git clone

4, DHT գրադարան

5, Sparkfun տախտակի սահմանումներ

6, SilverLight.ino, հիմնական ծածկագիր

Ավելի հեշտ դարձնելու համար ես միացրել եմ վերջին 4 կետերի համար անհրաժեշտ ֆայլերը (sketchbook.tgz), այնպես որ ձեզ հարկավոր կլինի միայն առաջին 2 -ը:

Նախ լավագույնն է ստեղծել սովորական օգտվող, որն ունի rw մուտք դեպի USB պորտ.

ավելորդ արծաթ

usermod -a -G dialout արծաթ

SCP- ի sketchbook.tgz սարքը տեղադրեք նոր ստեղծված օգտվողի տնային գրացուցակում և հանեք այն հենց այնտեղ.

cd /home /արծաթ

tar xvzf sketchbook.tgz

Մի փոքր հասկանալու համար, թե ինչ է կատարվում գլխարկի տակ, երբ օգտագործում եք գրաֆիկական IDE- ն.

Arduino IDE- ն օգտագործելիս Arduino- ի ուրվագծի կառուցման աշխատանքային ընթացքը նկարագրված է Arduino կայքում https://www.arduino.cc/hy/Hacking/BuildProcess և ավելի մանրամասն այստեղ ՝ https://www.arduino.cc/ hy/Hacking/BuildProcess

Սովորաբար, Arduino- ի կառուցման ստանդարտ գործընթացն է.

. Ino ֆայլերը միացրեք հիմնական ուրվագծային ֆայլին: Հիմնական ուրվագծային ֆայլի փոխակերպում. Ավելացնել #include հայտարարությունը; ստեղծել հիմնական ուրվագծային ֆայլում բոլոր գործառույթների գործառույթների հայտարարություններ (նախատիպեր); կցել թիրախի main.cxx ֆայլի բովանդակությունը հիմնական էսքիզային ֆայլին: Կազմեք կոդը օբյեկտային ֆայլերին: Օբյեկտի ֆայլերը միացրեք. Hex ֆայլին, որը պատրաստ է այն Arduino- ում վերբեռնելու համար:

Որոշ փոքր տարբերություններ կան Arduino- ի ստանդարտ կառուցման գործընթացի և Arduino-Makefile- ի միջոցով կառուցման գործընթացի միջև.

Միայն մեկ.ino ֆայլ է ապահովվում: Ֆունկցիայի հայտարարագրերը ինքնաբերաբար չեն ստեղծվում.ino ֆայլում: Օգտվողը պետք է հոգա գործառույթի ճիշտ հայտարարագրերի ստեղծման մասին:

Կառուցման գործընթացի սիրտը Makefile- ն է: Մի անհանգստացեք, ամեն ինչ պատրաստ է ձեզ համար, դա մի փոքր ավելի բարդ է, երբ SparkFun շարքի նման ոչ ստանդարտ տախտակների համար այս ձևը կազմելիս:

BOARD_TAG = պրոմիկրո

ALTERNATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT =/dev/ttyACM0 USER_LIB_PATH =/տուն/արծաթ/էսքիզների գիրք/գրադարաններ ARDUINO_DIR = /opt/arduino-1.8.9 ներառում /home/silver/silvera

Եվ այն ամենը, ինչ անհրաժեշտ է մուտքագրել ՝

mkdir -p build-promicro-16MHzatmega32U4

make reset make [1]. մուտքագրելով «/home/silver/sketchbook»/home/silver/sketchbook/Arduino-Makefile/bin/ard-reset-arduino --caterina/dev/ttyACM0 make [1]. գրացուցակից դուրս գալը » /home/silver/sketchbook 'make do_upload make [1]. մուտքագրելով գրացուցակ'/home/silver/sketchbook '/opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P/dev/ttyACM0 / -U flash: w: build -promicro -16MHzatmega32U4/էսքիզների գիրք: hex: i ingրագրավորողին միանալը. Գտնված ծրագրավորող ՝ Id = "CATERIN"; տիպ = S Softwareրագրաշարի տարբերակ = 1.0; Սարքավորման տարբերակ տրված չէ: Merրագրավորողը աջակցում է ավտոմատ ավելացման ավելացմանը: Merրագրավորողն ապահովում է բուֆերացված հիշողության հասանելիությունը բուֆերային չափով = 128 բայթ: Merրագրավորողը ապահովում է հետևյալ սարքերը. (11580 բայթ). Շնորհակալություն.

Դե ինչ, շնորհակալություն avrdude, և այժմ մեր Arduino- ն վերականգնվում և ծրագրավորվում է նոր ծածկագրով, այն, ինչ կարող եք պարզապես խմբագրել vi- ով կամ ձեր սիրած խմբագրիչով տեղական մակարդակում, IDE- ների կարիք չկա: Նշեմ, որ վերբեռնելիս պետք է փակել և՛ C հսկողության ծրագիրը, և՛ էկրանը, և՛ որևէ այլ բան, որը մուտք է գործում arduino, հակառակ դեպքում նավահանգիստը կվերադառնա որպես /dev /ttyACM1:

Քայլ 3. Փակում և Todo ցուցակ

Փակում և Todo ցուցակ
Փակում և Todo ցուցակ
Փակում և Todo ցուցակ
Փակում և Todo ցուցակ
Փակում և Todo ցուցակ
Փակում և Todo ցուցակ

Չնայած ես իսկապես ստեղծեցի այս բնապահպանական տվիչների տուփը սերվերային սենյակների համար, դուք կարող եք այն օգտագործել քիմիայի/էլեկտրոնային լաբորատորիաների, պահեստների, սովորական սենյակների և այլ բաների համար: Եվ այո, քանի որ այն օգտագործում է TCP/IP- ն, դա IoT սարք է, G ես պետք է դա դնեի նաև վերնագրին, որպեսզի այն ավելի ձեռներեց լինի:)

Դուք կարող եք հեշտությամբ փոփոխել ինչպես ապարատային, այնպես էլ ծրագրային ապահովումը, որպեսզի կարողանաք ինքնաբերաբար միացնել սենյակի լույսերը: Նայեք իմ մյուս նախագծին. Phoenix- ի ստվեր, ինչպես է դա աշխատում լուսավորության կառավարման համար, դուք ունեք ամբողջ սարքավորումները նույն բանը կատարելու համար (այն օգտագործում է պահման ժամանակաչափերը ՝ լույսերը վառ պահելու համար, քանի դեռ շարժում է հայտնաբերվել շարժման մեջ: ժամանակաշրջան, եթե նորից շարժում կա, ժամաչափը կխփվի):

OrangePI- ի լիարժեք հավաքածուով `Armbian- ը, հնարավորություններն անսահմանափակ են, դուք կարող եք ստեղծել տեղական վեբ ինտերֆեյս` զրոյից գրված php- ում `պատմական տվյալները գրաֆիկների վրա ցուցադրելու համար: Արդյո՞ք սա ավելի լավ չէ, որ դուք ունեք ամբողջովին Բաց կոդով սարք, որը վերահսկում է ձեր սերվերային սենյակը, ինչով կարող եք հպարտանալ, եթե այդպես եք կարծում, ինքներդ կառուցեք այն:

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