Բովանդակություն:
- Քայլ 1: Հավաքեք մասերը
- Քայլ 2: Պաշարներ
- Քայլ 3: Չափը մեծացրեք պատյանը
- Քայլ 4: Wire DC-DC փոխարկիչ
- Քայլ 5: Սարքերին էլեկտրամատակարարում
- Քայլ 6: Հաղորդալարերի ռելեի մոդուլի մուտքագրումներ
- Քայլ 7: IMP Power Jumper
- Քայլ 8: Մետաղական դարպասի կարգավիճակի մուտքագրումներ
- Քայլ 9: Տպեք կամ գնեք պատյան
- Քայլ 10: Deարդարեք ձեր գործը
- Քայլ 11: Հորատանցք լարերի համար
- Քայլ 12: Պատրաստեք և տեղադրեք միացման լարերը
- Քայլ 13: Երթուղու միացման լարեր
- Քայլ 14: Բաղադրիչների տեղադրում
- Քայլ 15: Կնքեք միացման լարերը
- Քայլ 16: Փակեք գործը
- Քայլ 17: Տեղադրեք Gate Operator- ում
- Քայլ 18: Սահմանեք Aux փոխանցման ռեժիմ
- Քայլ 19: IMP գործակալի և սարքի ծածկագիր
- Քայլ 20. Վեբ ծառայության PHP կոդ
Video: WebApp- ի վերահսկվող դարպասի օպերատորի հավելում (IoT). 20 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Ես հաճախորդ ունեմ, ով ուներ փակ տարածք, որտեղ շատերին էր պետք գալ ու գնալ: Նրանք չէին ցանկանում օգտագործել ստեղնաշար դրսից և ունեին միայն սահմանափակ թվով բանալիների հաղորդիչ: Լրացուցիչ keyfob- երի համար մատչելի աղբյուր գտնելը դժվար էր: Ես կարծում էի, որ հիանալի հնարավորություն կլինի բարձրացնել այս Liftmaster դարպասի օպերատորը ՝ IoT- ի հետ համատեղելի անհատական սարքավորումների, վեբ API- ի և վեբ հավելվածների ինտերֆեյսի հետ: Սա ոչ միայն լուծեց զանգվածային մուտքի խնդիրը, այլև բացեց լրացուցիչ գործառույթներ:
Վերևի վերջին լուսանկարում այն փորձարկման միավորն է, որը ես գրեթե մեկ տարի վազում էի ճարմանդային պայուսակում: Կարծում էի, որ ժամանակն է արդիականացման:
Սա լիովին գործող լուծում է ՝ այստեղ թվարկված բոլոր ծածկագրերով, ապարատային տեղեկատվությամբ և դիզայնով:
Բոլոր նախագծերի ֆայլերը նույնպես տեղակայված են GitHub- ում ՝ github.com/ThingEngineer/IoT-Gate-Operator-Addon
CodeIgniter WebApp ինտերֆեյսի օրինակն այստեղ տեղակայված է ՝ projects.ajillion.com/gate Այս օրինակը կապված չէ ուղիղ դարպասի հետ, այլ հանդիսանում է դարպասների վրա աշխատող ճշգրիտ ինտերֆեյսը և կոդը (հանած անվտանգության որոշ հնարավորություններ):
--
Էլ ավելի մեծ ինտեգրման համար կարող եք օգտագործել IFTTT գրադարանը Electric Imp- ի համար:
Քայլ 1: Հավաքեք մասերը
- Ձեզ անհրաժեշտ կլինի Էլեկտրական IMP ՝ առնվազն 4 GPIO- ով, ես IMP001- ն օգտագործում եմ ապրիլյան ճեղքման տախտակով:
- Կարգավորիչ `աղբյուրի լարումը իջեցնելու մինչև 5 Վ: Ես օգտագործում եմ DC-DC Buck Converter Step Down մոդուլ: eBoot- ի MP1584EN տարբերակը Amazon- ից:
- Երկակի (կամ ավելի) ռելեի մոդուլ կամ նման միացման սարք, որը կաշխատի IMP- ների ելքի հետ: Ես օգտագործում եմ այս մեկ JBtek 4 Channel DC 5V փոխանցման մոդուլը Amazon- ից:
- 4 մետաղալար պտուտակով տերմինալ: Ես օգտագործում եմ այս մեկը 5 հատ 2 տող 12P մետաղալար միակցիչ պտուտակով տերմինալային արգելափակում 300V 20A Amazon- ից:
Քայլ 2: Պաշարներ
Ձեզ նույնպես պետք կլինի.
- Մուտք դեպի 3D տպիչ կամ փոքր նախագծային տուփ
- 4 փոքր պտուտակներ ՝ մոտ 4 մմ x 6 մմ, պատյանների կափարիչի համար
- Միացման մետաղալար
- Մետաղալար կտրիչներ
- Մետաղալարեր
- Փոքր պտուտակահաններ
- Oldոդման երկաթ
- Տաք սոսինձ կամ սիլիկոն
- Zip կապեր
Քայլ 3: Չափը մեծացրեք պատյանը
Տեղադրեք ձեր մասերը `որոշելու համար, թե ինչ չափի պատյան է ձեզ հարկավոր: Ինչպես պատկերված է նկարում, ինձ պետք է մոտ 140 մմ լայնություն, 70 մմ խորություն և 30 մմ բարձրություն ունեցող պատյան:
Քայլ 4: Wire DC-DC փոխարկիչ
Կտրեք 3 զույգ կարմիր և սև միացման մետաղալար ՝ հոսանքի միացման համար ՝ DC-DC փոխարկիչ տախտակից և դուրս:
- Մուտք `100 մմ
- Արդյունք IMP- ին `90 մմ
- Ելք դեպի ռելեի մոդուլ `130 մմ
Sոդեք դրանք ձեր տախտակին, ինչպես ցույց է տրված:
Քայլ 5: Սարքերին էլեկտրամատակարարում
- Միացրեք DC-DC փոխարկիչի մուտքը պտուտակային տերմինալային բլոկի երկու կետերին:
- Կարճ 5 Վ ելքային լարերը միացրեք IMP- ին:
- Ավելի երկար 5 Վ ելքային լարերը միացրեք ռելեի մոդուլին:
Քայլ 6: Հաղորդալարերի ռելեի մոդուլի մուտքագրումներ
- Կտրեք 4 x 90 մմ լարեր ռելեի մոդուլի մուտքային միացումների համար: Ես օգտագործել եմ 4 առանձին գույներ `հետագայում կոդավորելու համար` հեշտ հղման համար:
- Հաղորդալարերը միացրեք ռելեի մոդուլի մուտքերին 1-4, այնուհետև IMP GPIO առաջին 4 բծերին (Pin1, 2, 5 և 7) համապատասխանաբար:
Քայլ 7: IMP Power Jumper
Հնարավոր է, որ անհրաժեշտ լինի օգտագործել USB հոսանք, մինչ սկզբնական շրջանում ծրագրավորում և փորձարկում եք ձեր IMP- ը: Ավարտելուց հետո, համոզվեք, որ հոսանքի ցատկիչը տեղափոխեք BAT կողմ:
Քայլ 8: Մետաղական դարպասի կարգավիճակի մուտքագրումներ
- Կտրեք 2 x 80 մմ լարեր ՝ կարգավիճակի մուտքերի համար:
- Միացրեք լարերը մնացած 2 պտուտակավոր տերմինալներին:
- Wոդման լարերը համապատասխանաբար IMP GPIO կետերի կողքին (Pin8 և 9):
Քայլ 9: Տպեք կամ գնեք պատյան
Այս գործի համար կարող եք ներբեռնել իմ. STL կամ.3D ֆայլը GitHub- ում կամ Thingiverse- ում
Եթե դուք չունեք մուտք դեպի 3D տպիչ, փոքր ընդհանուր նախագծի գործը կաշխատի:
Քայլ 10: Deարդարեք ձեր գործը
Որովհետեւ!
Ես իմ վրա դրեցի մի գրված տեքստ և պարզապես ներկեցի այն սև սուրով: Եթե դուք արկածախնդիր եք զգում, կարող եք օգտագործել ակրիլային ներկ, եղունգների լաք կամ այլ բան ՝ այն նույնիսկ ավելի փայլուն դարձնելու համար:
Քայլ 11: Հորատանցք լարերի համար
Հորատեք մի փոքր անցք 10-15 մմ տրամագծով այն կողմում, որտեղ բոլոր լարերը կհավաքվեն:
Ես Unibit- ը օգտագործեցի պլաստիկի մաքուր և հարթ անցքի համար:
Քայլ 12: Պատրաստեք և տեղադրեք միացման լարերը
Կտրեք 9 x 5-600 մմ լարեր `մեր սարքը դարպասի օպերատորի տախտակին ամրացնելու համար:
- 2 24V հոսանքի մուտքի համար
- 3 դարպասի կարգավիճակի համար (2 մուտք և ընդհանուր հիմք)
- 2 բաց դարպասի ազդանշանի համար
- 2 փակ դարպասի ազդանշանի համար
Շրջեք վերը թվարկված խմբերից յուրաքանչյուրը ՝ օգտագործելով փորվածք: Սա կդարձնի ամեն ինչ ավելի դյուրին և ավելի լավ տեսք:
Կպչեք և միացրեք լարերից յուրաքանչյուրը համապատասխան տերմինալներին, ինչպես ցույց է տրված:
Քայլ 13: Երթուղու միացման լարեր
Անցեք միացման լարերը անցքի միջով, ինչպես ցույց է տրված:
Քայլ 14: Բաղադրիչների տեղադրում
Տեղադրեք և ամրացրեք բաղադրիչները տաք սոսնձի կամ սիլիկոնի փոքր բշտիկով: Մի օգտագործեք շատ, եթե անհրաժեշտ է մաս հանել, դրանք բավականաչափ օգտագործեք դրանք ամրացնելու համար:
Ես ի սկզբանե ցանկանում էի պատյանը տպել սեղմիչներով/ներդիրներով ՝ տախտակները տեղում պահելու համար, բայց ինձ հարկավոր էր տեղադրել այն և ժամանակ չունեի: Ձեր պատյանին տախտակի տեսահոլովակներ ավելացնելը հաճելի կլինի:
Քայլ 15: Կնքեք միացման լարերը
Կցեք լարերը փակ սոսինձով կամ սիլիկոնով:
Քայլ 16: Փակեք գործը
Այս 3D տպված պատյանների ցանկում ես օգտագործել եմ փոքր ~ 4 մմ պտուտակներ: Եթե ձեզ անհանգստացնում է կեղտը կամ խոնավությունը, կափարիչի հոդի շուրջը տեղադրեք սիլիկոնե կամ տաք սոսինձ:
Քայլ 17: Տեղադրեք Gate Operator- ում
Հիմնական տախտակի վրա.
- Միացրեք երկու լարերը, որոնք միացված են ռելեի թողարկում 1 -ին Open Gate տերմինալին: (կարմիր/շագանակագույն լուսանկարներում)
- Միացրեք երկու լարերը, որոնք միացված են ռելեի ելքին 2, փակման դարպասի տերմինալին: (լուսանկարներում դեղին/կապույտ)
- Միացրեք երկու լարերը, որոնք միացված են DC-DC փոխարկիչի մուտքին 24V լրասարքի հոսանքի պտուտակների տերմինալներին (լուսանկարներում կարմիր/սև)
Ընդլայնման տախտակի վրա
- Ռելեի ընդհանուր պտուտակային տերմինալները ցատկեք մի փոքր մետաղալարով
- Միացրեք ընդհանուր հիմքը ռելեի ընդհանուր պտուտակային տերմինալներից մեկին (լուսանկարներում կանաչ)
- Միացրեք 2 դարպասի կարգավիճակի մուտքերը (IMP Pin8 և 9) ռելեի նորմալ բաց (NO) պտուտակային տերմինալներին (լուսանկարներում մոխրագույն/դեղին)
Ուղղեք լարերը, ամրացրեք դրանք կայծակաճարմանդով ՝ կոկիկ տեսք ունենալու համար և տեղ գտեք ձեր պատյանը ամրացնելու կամ տեղադրելու համար:
Կան լրացուցիչ, լիարժեք լուծման լուսանկարներ, որոնք տեղակայված են GitHub պահոցում:
Քայլ 18: Սահմանեք Aux փոխանցման ռեժիմ
Սահմանեք օժանդակ ռելեի անջատիչները, ինչպես ցույց է տրված լուսանկարում:
Սա IMP- ին կտա անհրաժեշտ ազդանշաններ `որոշելու, թե արդյոք դարպասը փակ է, բացվում է, բացվում է կամ փակվում:
Քայլ 19: IMP գործակալի և սարքի ծածկագիր
Electric Imp Գործակալի կոդ:
- Ստեղծեք նոր մոդել Electric Imp IDE- ում ՝
- Փոխարինեք URL- ը ՝ ձեր սերվերի վրա նշելու համար
// HTTP կարգավորիչի գործառույթ
գործառույթը httpHandler (req, resp) {try {local d = http.jsondecode (req.body); //server.log(d.c); եթե (d.c == "btn") {//server.log(d.val); device.send («btn», d.val); resp.send (200, «OK»); }} catch (ex) {// Եթե սխալ է եղել, այն հետ ուղարկեք պատասխան server.log- ում ("error:" + ex); resp.send (500, "Ներքին սերվերի սխալ." + նախկին); }} // Գրանցել HTTP մշակող http.onrequest (httpHandler); // GateStateChange մշակողի գործառույթ գործառույթը gateStateChangeHandler (տվյալներ) {// վեբ ծառայության տեղական URL = "https://projects.ajillion.com/save_gate_state"; // Սահմանել Content-Type վերնագիրը json local headers = {"Content-Type": "application/json"}; // Կոդավորեք ստացված տվյալները և գրանցեք տեղական մարմինը = http.jsonencode (տվյալները); server.log (մարմին); // Տվյալներն ուղարկեք ձեր վեբ ծառայության http.post (url, վերնագրեր, տեքստ).sendsync (); } // գրանցել gateStateChange կարգավորիչ սարքը. On ("gateStateChange", gateStateChangeHandler);
Electric Imp Գործակալի կոդ:
- Ձեր մոդելին նշանակեք Imp սարք
- Հաստատեք, որ ապարատային կապում նշված է որպես միացված
// Debouce գրադարան
#պահանջել «Button.class.nut: 1.2.0» // Այլ անուն gateOpen GPIO pin (active low) gateOpen <- hardware.pin2; // Կեղծանուն դարպասի համար Փակեք հսկողության GPIO կապը (ակտիվ ցածր) դարակը Փակեք-- hardware.pin7; // Կարգավորեք «gateOpen» - ը որպես թվային ելք ՝ թվային 1 (բարձր) gateOpen.pen.configure սկզբնական արժեքով (DIGITAL_OUT, 1); // Կարգավորեք «gateClose» - ը որպես թվային ելք ՝ թվային 1 (բարձր) դարպասի մեկնարկային արժեքով Close.configure (DIGITAL_OUT, 1); // Կեղծանուն GPIO- ի համար, որը ցույց է տալիս, որ դարպասը շարժվում է (N. O.) gateMovingState <- կոճակ (hardware.pin8, DIGITAL_IN_PULLUP); // Կեղծանուն GPIO- ի համար, որը ցույց է տալիս, որ դարպասը լիովին բաց է (N. O.) gateOpenState <- կոճակ (hardware.pin9, DIGITAL_IN_PULLUP); // Գլոբալ փոփոխական դարպասի վիճակը պահելու համար (Բաց = 1 / Փակ = 0) տեղական lastGateOpenState = 0; // Latch Timer օբյեկտ local latchTimer = null agent.on ("btn", function (data) {switch (data.cmd) {case "open": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer); latchTimer = imp.wakeup (1, releaseOpen); server.log ("Բաց հրաման ստացվեց"); ընդմիջման գործ "latch30m": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer); latchTimer = imp.wakeup (1800, releaseOpen); server.log ("Latch30m հրաման ստացվեց"); ընդմիջման գործ "latch8h": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer); latchTimer = imp.wakeup (28800, releaseOpen); server.log («Latch8h հրամանը ստացվել է»); ընդմիջման գործը «փակել». If (latchTimer) imp.cancelwakeup (latchTimer); gateOpen.write (1); gateClose.write (0); latchTimer = imp: գործառույթը releaseOpen () {if (latchTimer) imp.cancelwakeup (latchTimer); gateOpen.write (1); //server.log(" imամաչափի թողարկված դարպասըԲացեք անջատիչի կոնտակտը »); } գործառույթը releaseClose () {if (latchTimer) imp.cancelwakeup (latchTimer); gateClose.write (1); //server.log(" imամաչափի թողարկված դարպասըՓակեք անջատիչի կոնտակտը »); } gateMovingState.onPress (գործառույթ () {// Ռելեն ակտիվացված է, դարպասը շարժվում է //server.log(" դարպասը բացվում է)); տեղական տվյալներ = {"gatestate": 1, "timer": hardware.millis ()}; agent.send ("gateStateChange", տվյալներ);}). onRelease (գործառույթը () {// Ռելեը բաց է թողնված, դարպասը հանգստանում է //server.log("Gate փակ է "); տեղական տվյալներ = {"gatestate": 0, "timer": hardware.millis ()}; agent.send ("gateStateChange", տվյալներ);}); gateOpenState.onPress (գործառույթ () {// Ռելեն ակտիվացված է, դարպասը լիովին բաց է //server.log(" դարպասը բաց է "); տեղական տվյալներ = {" gatestate ": 2," timer ": hardware.millis ()}; agent.send («gateStateChange», տվյալներ);}). onRelease (գործառույթը () {// ռելեդը բաց է թողնված, դարպասը լիովին բաց չէ //server.log(" դարպասը փակվում է)); տեղական տվյալներ = {"gatestate": 3, "timer": hardware.millis ()}; agent.send ("gateStateChange", տվյալներ);});
Քայլ 20. Վեբ ծառայության PHP կոդ
Այս կոդը ես գրել եմ CodeIgniter շրջանակի համար, քանի որ այն ավելացրել եմ հին գոյություն ունեցող նախագծին: Կառավարիչը և դիտման ծածկագիրը կարող են հեշտությամբ հարմարվել ձեր նախընտրած շրջանակին:
Ամեն ինչ պարզ պահելու համար ես JSON- ի տվյալները պահեցի հարթ ֆայլում ՝ տվյալների պահպանման համար: Եթե Ձեզ անհրաժեշտ է գրանցում կամ տվյալների հետ կապված ավելի բարդ գործառույթներ, օգտագործեք տվյալների բազա:
Այաքսի գրադարանը, որը ես գրել և օգտագործել եմ այս նախագծում, կարող է ներբեռնվել GitHub պահոցից ՝ ThingEngineer/Codeigniter-jQuery-Ajax
PHP վերահսկիչի ծածկագիր
- app/controllers/projects.php
- Համոզվեք, որ տվյալների ուղին հասանելի է ձեր PHP սցենարով ՝ ինչպես գտնվելու վայրով, այնպես էլ կարդալու/գրելու իրավունքներով:
բեռ-> օգնական (զանգված («ֆայլ», «ամսաթիվ»));
$ data = json_decode (read_file ('../ app/logs/gatestate.data'), TRUE); switch ($ data ['gatestate']) {case 0: $ view_data ['gatestate'] = 'Փակ'; ընդմիջում; դեպք 1: $ view_data ['gatestate'] = 'Բացում…'; ընդմիջում; դեպք 2: $ view_data ['gatestate'] = 'Բացել'; ընդմիջում; դեպք 3: $ view_data ['gatestate'] = 'Փակում…'; ընդմիջում; } $ last_opened = json_decode (read_file ('../ app/logs/projects/gateopened.data'), TRUE); $ view_data ['last_opened'] = ժամանակի բաց ($ last_opened ['last_opened'], ժամանակը ()): ' առաջ'; // Բեռնել դիտում $ t ['data'] = $ view_data; $ this-> բեռ-> դիտում ('gate_view', $ t); } գործառույթը save_gate_state () {$ this-> load-> helper ('ֆայլ'); $ data = file_get_contents ('php: // մուտքագրում'); write_file ('../ app/logs/projects/gatestate.data', $ data); $ data = json_decode ($ data, TRUE); if ($ data ['gatestate'] == 1) {$ last_opened = զանգված ('last_opened' => ժամանակ ()); write_file ('../ app/logs/projects/gateopened.data', json_encode ($ last_opened)); }} գործառույթը get_gate_state () {$ this-> load-> helper (զանգված («ֆայլ», «ամսաթիվ»)); $ this-> բեռ-> գրադարան ('այաքս'); $ data = json_decode (read_file ('../ app/logs/projects/gatestate.data'), TRUE); $ last_opened = json_decode (read_file ('../ app/logs/projects/gateopened.data'), TRUE); $ data ['last_opened'] = ժամանակի բաց ($ last_opened ['last_opened'], ժամանակը ()): ' առաջ'; $ this-> ajax-> output_ajax ($ data, 'json', FALSE); // ուղարկեք json- ի տվյալները, մի գործադրեք ajax- ի հարցումը}}/ * Ֆայլի նախագծերի ավարտը. php *// * Գտնվելու վայրը ՝./application/controllers/projects.php */
PHP Դիտման ծածկագիր.
Ես օգտագործեցի Bootstrap- ը առջևի մասի համար, քանի որ այն արագ, հեշտ և արձագանքող է: Կարող եք ներբեռնել այստեղ ՝ https://getbootstrap.com (jQuery- ն ներառված է)
- app/controllers/gate_view.php
- Փոխարինեք ձեր գործակալի ծածկագիրը ձեր Electric Imp գործակալի ծածկագրով
IoT Gate Օպերատոր Addon IoT Դարպաս Օպերատոր Addon
- տուն
- Ադմինիստրատոր
Open Gate Latch Բաց 30 րոպե Պահում բաց 8 ժամ Փակել Now Gate Status. agent.electricimp.com/YOUR-AGENT-CODE '; $.փոստ (url, JSONout); } $ ("#open_gate"). կտտացրեք (գործառույթ () {var JSONout = '{"c": "btn", "val": {"cmd": "open"}}'; sendJSON (JSONout); $ («#կարգավիճակ»). տեքստ («Բացում…»);}); $ ("#latch30m_gate"). կտտացրեք (գործառույթ () {var JSONout = '{"c": "btn", "val": {"cmd": "latch30m"}}'; sendJSON (JSONout); $ ("#կարգավիճակ"). տեքստ («Բացում …»);}); $ ("#latch8h_gate"). կտտացրեք (գործառույթ () {var JSONout = '{"c": "btn", "val": {"cmd": "latch8h"}}'; sendJSON (JSONout); $ ("#կարգավիճակ"). տեքստ («Բացում …»);}); $ ("#close_gate"). կտտացրեք (գործառույթ () {var JSONout = '{"c": "btn", "val": {"cmd": "close"}}'; sendJSON (JSONout); $ ("#կարգավիճակ"). տեքստ ("Փակում …");}); գործառույթը resetStatus () {// Target url var target = 'https://projects.ajillion.com/get_gate_state'; // Պահանջել var data = {գործակալ: 'app'}; // Ուղարկեք ajax գրառման $.ajax ({url: target, dataType: 'json', type: 'POST', data: data, success: function (data, textStatus, XMLHttpRequest) {switch (data.gatestate) {case 0: $ («#կարգավիճակ»). Տեքստ («Փակ»); ընդմիջում; գործ 1: $ ("#կարգավիճակ"): տեքստ («Բացում …»); ընդմիջում; գործ 2: $ ("#կարգավիճակ").text («Բաց»); ընդմիջում; դեպք 3: $ («#կարգավիճակ»). տեքստ («փակվում է …»); ընդմիջում; կանխադրված ՝ $ ("#կարգավիճակ"). տեքստ ("Սխալ");} $ ("#last_opened"). տեքստ (data.last_opened);}, սխալ. գործառույթ (XMLHttpRequest, textStatus, errorThrown) {// Սխալի հաղորդագրություն $ ("#կարգավիճակ"). տեքստ ('Սերվերի սխալ');}}); setTimeout (resetStatus, 3000); }
Խորհուրդ ենք տալիս:
Arduino PH ստանդարտ աղի հավելում. 7 քայլ
Arduino PH- ի աղի ստանդարտ հավելում. Ներածություն. Այս փորձի նպատակն է օգտագործել Arduino uno- ի հետ pH սենսոր `չափելու ծորակի ջրի, քացախի և Mountain Dew ըմպելիքների լարվածությունը, որպես Հիմալայան վարդագույն աղի ստանդարտ հավելում: Նպատակն է ոչ միայն տեսնել, թե ինչպես ավելացնել
Ամբողջական խելացի տան հավելում. 8 քայլ
Ամբողջական խելացի տան հավելում. Իմ նախորդ նախագիծը « The Complete Smart Home " հաջողությամբ աշխատում է գրեթե 5 տարի ՝ առանց որևէ խնդիրների: Այժմ, երբ ես որոշեցի հետադարձ կապ ավելացնել դրան ՝ առանց որևէ փոփոխության ներկայիս սխեմայի և սխեմատիկ պատկերի վերաբերյալ: Այսպիսով, այս հավելյալ կողմը
Անտենա `դարպասի բացման տիրույթը երկարացնելու համար. 6 քայլ (նկարներով)
Անտենա `ընդլայնելու դարպասների բացման տիրույթը. Երբ ձյունը իսկապես խորանում է Լեռան Հուդում, շատ զվարճալի է դահուկներով սահելը, սահելը, ձյան ամրոցներ կառուցելը և երեխաներին տախտակամածից գցելը խորը փոշու մեջ: Բայց մռայլ իրերն այնքան էլ զվարճալի չեն, երբ փորձում ենք վերադառնալ մայրուղի և բացել դարպասը ՝
Ավտոմատ դարպասի սահիչ մինչև $ 100: 15 քայլ (նկարներով)
Ավտոմատ դարպասի սահիչ մինչև 100 դոլար. Ամռանը հայրս ինձ դրդեց մտածել դարպասների ավտոմատացման համակարգ գնելու և այն տեղադրելու մասին: Այսպիսով, ես սկսեցի իմ հետազոտությունը և փնտրեցի փաթեթային լուծումներ AliExpress- ի և տեղական վաճառողների վերաբերյալ: Տեղական վաճառողները առաջարկում էին ամբողջական լուծումներ, ներառյալ
Գրպանի օպերատորի լազերային պատյան ՝ 3 քայլ (նկարներով)
Pocket Operator Lasercut Case. Teenage Engineering- ի առաջիկա Pocket 33 օպերատորների և PO-35 օպերատորների գովազդով ես որոշեցի, որ ժամանակն է կիսվել իմ պարզ " գործով " որ ես պատրաստել եմ իմ PO-20- ի համար: Դա իսկապես պարզ է: Այնքան պարզ է իրականում, որ այն պահվում է մամուլի միջոցով