Բովանդակություն:
- Քայլ 1: Սարքավորում + կարգավորում
- Քայլ 2: Շղթայի կարգավորում
- Քայլ 3. Arduino կոդը և ingրամեկուսացում
- Քայլ 4: Raspberry Pi Code
- Քայլ 5: Ամեն ինչ միասին դնել
- Քայլ 6: Grafana կազմաձևում և վահանակի դիտում
- Քայլ 7: Ամփոփեք
Video: Հետևեք օդի որակին ՝ օգտագործելով Grafana և Raspberry Pi: 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ես փնտրում էի մի փոքր փոքրիկ IOT նախագիծ, և ընկերս խորհուրդ տվեց ծանոթանալ այս ձեռնարկին.
dzone.com/articles/raspberry-pi-iot-sensor…
Ես խստորեն խորհուրդ եմ տալիս հետևել ձեռնարկին ՝ մոնիտորինգի համար Raspberry Pi- ի ստեղծման ընթացքում շարունակելու համար: Այս ձեռնարկը կավարտի IoT պարզ սարքի նախագծման հետագա քայլերը, որը թույլ է տալիս բարձր հանդուրժողականություն սխալների նկատմամբ, ինչպես նաև այն, թե որքան օգտակար կարող է լինել Raspberry Pi- ն Arduino- ի հետ զուգակցվելիս:
Մտածում եմ նաև օդային տվիչների MQ* մոդելների արդյունավետության և որոշակի սահմանափակման մասին: MQ* տվիչները էժան են և բավականին արդյունավետ, և դրանք շատ հեշտ է տեղադրվել:
Ընդհանուր առմամբ, դա կօգնի ձեզ սկսել Arduino- ն ինտերնետին միացնել հնարավորինս պարզ ձևով և սահմանել ավելի թեթև ոտնահետքերի մոդուլների օգտագործման ուղին (վեր. ESP8266):
Զվարճանալ!
Քայլ 1: Սարքավորում + կարգավորում
Սարքավորումներ
- Raspberry Pi- ով տեղադրված Raspberry Pi
- Raspberry Pi էլեկտրամատակարարում
- Arduino Uno/համարժեք
- Արականից արական USB տեսակի B- ից մինչև A տեսակի (պետք է տրամադրվի ձեր Arduino- ի հետ)
- MQ* սենսորներից որևէ մեկը (ես օգտագործել եմ MQ-2, 4, 5 և 135)
- Անցումային լարերի տեսականի
- մինի տախտակ
Կարգավորել
Այս ձեռնարկը նախատեսված է որպես նուրբ ներածություն Arduino- ի և Raspberry Pi- ի օգտագործման համար. Դա կօգնի իմանալ, թե ինչպես օգտագործել linux տերմինալը: Այնուամենայնիվ, ես չեմ ենթադրում Arduino- ի կամ Raspberry Pi- ի վրա աշխատելու մեծ փորձ. Այն, ինչ ձեզ իսկապես պետք է, տրամադրված սարքավորումներն են և հետաքրքրասեր վերաբերմունքը:
- Դուք պետք է լրացնեք այս ձեռնարկի քայլերը:
- Խորհուրդ եմ տալիս Raspberry Pi- ի հետ ինտերֆեյսի համար օգտագործել Secure Shell (SSH), քանի որ դա թույլ է տալիս հեշտությամբ մուտքագրել հրամաններ: SSH- ի միջոցով միանալը տարբերվում է ՝ օգտագործում եք Windows, Linux կամ Mac: Linux- ը և Mac- ը բավականին հեշտ է օգտագործել ssh- ի վերաբերյալ (SSH- ի բացման հրամանը բառացիորեն ssh է): Ստուգեք Putty- ը Windows- ի համար: Խորհուրդ եմ տալիս դիտել էկրանը `որպես ծրագրի ընթացքում ձեր նիստը պահպանելու միջոց:
- Դուք նաև պետք է տեղադրեք Python- ը Raspbian- ի վրա: Երբ ես ավարտեցի այս քայլերը, ես պատրաստեցի հին SD քարտի պատճենը, որը ես գտնվում էի նախորդ նախագծից, որի վրա արդեն տեղադրված էր Python- ը: Եթե NOOBS/Raspbian- ի ձեր բաշխումը չունի Python 3.7 կամ ավելի բարձր տարբերակ, ստուգեք այս քայլերը ՝ աղբյուրից Python կազմելու համար:
- Getանոթացեք git- ին և տեղադրեք այն, եթե այն արդեն տեղադրված չէ Raspbian- ի ձեր բաշխման մեջ:
Քայլ 2: Շղթայի կարգավորում
Կա մեկ շրջան, որը ձեզ հարկավոր է կարգավորել Arduino- ում:
Ես տրամադրել եմ սխեմատիկ տարբերակ, որը կարող եք օգտագործել որպես հղում:
MQ-* գազի բոլոր տվիչների գեղեցկությունն այն է, որ 5 Վոլտ և Գրունտ միացում կատարելուց հետո Arduino- ի անալոգային կապում մուտքային դիմադրությունը թույլ է տալիս սենսորին ճիշտ աշխատել:
Carefulգույշ եղեք, որպեսզի ապահովեք, որ սենսորի անալոգային միացումն անջատիչ տախտակից միացված լինի Arduino- ին և ոչ թե թվային կապին: Եթե փորձարկման ժամանակ բախվում եք արժեքների շատ նեղ շրջանակի, խորհուրդ եմ տալիս նախ ստուգել ձեր կապը այստեղ:
Քայլ 3. Arduino կոդը և ingրամեկուսացում
Այս մեկին հաջորդող քայլում մենք Arduino տախտակը միացնելու ենք Raspberry Pi- ին: Նախքան դա անելը, մենք պետք է Arduino- ն կոդով ծածկենք սենսորը կարդալու համար, ինչպես նաև տվիչների տվյալները փոխանցենք Raspberry Pi- ին: Դա կարելի է անել ցանկացած եղանակով, որով դուք սովորաբար կոդը մղում եք Arduino- ին: Ես օգտագործել եմ երրորդ կողմի գործիք ՝ բացի Arduino IDE- ից, հետևաբար, ես Arduino գրադարանը ներառում եմ վերևում: Սա անհրաժեշտ չէ այլ նախագծերի համար:
Այս բաժնի վերջում ստուգեք պատճենելու/տեղադրելու կոդը:
Ինչ է անում կոդը
Կոդը ստեղծվում է չորս տարբեր սենսորներից տվյալներ ստանալու համար. Եթե դուք օգտագործում եք տարբեր տեսակի տվիչներ, խելամիտ կլինի փոխել Սերիական նավահանգստից ուղարկվող ելքային ազդանշանի անվանումները:
Օղակում մենք ստուգում ենք, արդյոք Raspberry Pi- ն մեզանից տվյալներ է պահանջում: Այսպիսով, մենք օգտագործում ենք շատ պարզ Master/Slave կոնֆիգուրացիա, որտեղ Raspberry Pi- ն անընդհատ տվյալների համար խնդրանքներ է ուղղում Arduino- ին: Սա շատ ավելի պարզ է, քան Arduino ծածկագրում հաշվիչ ունենալը, որովհետև ավելի հեշտ է ստուգել, թե ինչ արժեքներ են աշխատում Raspberry Pi- ից ՝ Arduino- ին նոր արժեքներ թաքցնելու փոխարեն:
Արդուինոն, երբ տվյալների խնդրանք է ստացել, արտադրանքը կձևակերպի որպես GET պարամետր. Սա կապված է HTTP մեթոդների հետ և պարզապես դիզայնի ընտրություն է: Եթե դուք նախագծեիք Arduino- ից սերիական նավահանգստի միջոցով հաղորդակցման սխեմա, ապա հեշտությամբ կարող եք գնալ որևէ այլ բանի, քանի դեռ այն նախագծում եք, որպեսզի տվյալները ողջամիտ տարանջատվեն: Ես ընտրեցի GET- ը, քանի որ այն ծանոթ և ամուր է:
Պարզ փորձարկում…
Arduino- ի առկայծումից և կոդը գործարկելուց հետո բացեք Arduino IDE- ի սերիական մոնիտորը: Եթե դուք ուղարկեք «H» մեկ նիշը (ապահովեք դրա կապիտալը), ապա կստանաք տվյալների բեռնվածություն: Շնորհավորում եմ, աշխատում է:
MQ-* տվյալների նմուշ, ասինքրոն կոլեկցիոներ
#ներառում |
int mq2 = A2; |
int mq4 = A3; |
int mq5 = A4; |
int mq135 = A5; |
int մուտքայինԲայթ; |
voidsetup () { |
pinMode (mq2, INPUT); |
pinMode (mq4, INPUT); |
pinMode (mq5, INPUT); |
pinMode (mq135, INPUT); |
Serial.begin (9600); |
} |
/* valuePrint- ը տպում է այս պիտակի արժեքը: |
* Ստեղծում է միայն կողմնակի բարդություններ: |
*/ |
voidvaluePrint (լարային պիտակ, int ընթերցում) { |
Serial.print (պիտակը); |
Serial.print ("="); |
Serial.print (ընթերցում); |
} |
voidloop () { |
// տեսնել, թե արդյոք կան մուտքային սերիական տվյալներ. |
եթե (Serial.available ()> 0) { |
// կարդալ սերիական բուֆերի ամենահին բայթը. |
// "Երբ դուք զանգահարում եք Serial.read- ին, բայթը հանվում է ստացման բուֆերից և վերադարձվում ձեր կոդին" |
incomingByte = Serial.read (); |
// եթե դա մեծատառ H է (ASCII 72), կարդացեք արժեքները և ուղարկեք դրանք ազնվամորու հյուրընկալողին: |
// TODO: համոզվեք, որ հաղորդագրությունը միշտ նույն երկարությունն է, ամեն անգամ |
եթե (մուտքայինԲայթ == 72) { |
int mq2Reading = analogRead (mq2); |
int mq4Reading = analogRead (mq4); |
int mq5Reading = analogRead (mq5); |
int mq135Reading = analogRead (mq135); |
Serial.print ("?"); |
valuePrint ("mq2", mq2 Ընթերցում); |
Serial.print ("&"); |
valuePrint ("mq4", mq4Reading); |
Serial.print ("&"); |
valuePrint ("mq5", mq5 Ընթերցում); |
Serial.print ("&"); |
valuePrint ("mq135", mq135 Ընթերցում); |
Serial.print ("\ n"); |
} |
} |
// սերիալը կարդալ միայն ամեն վայրկյան |
ուշացում (1000); |
} |
դիտել rawmain.cpp- ը, որը տեղակայված է it -ի կողմից GitHub- ի կողմից
Քայլ 4: Raspberry Pi Code
Այժմ, երբ դուք կազմաձևել եք Raspberry Pi- ն ըստ https://dzone.com/articles/raspberry-pi-iot-sensor…, այժմ կարող եք գործարկել Raspberry Client կոդը, որը տվյալներ կուղարկի MQTT- ի միջոցով մեր տվյալների բազային, որը նույնպես միանում է Գրաֆանային:
-
Համոզվեք, որ ձեր ազնվամորին միացված է ինտերնետին, այնուհետև կատարեք git clone հրաման ՝ ամբողջ ծածկագիրը Raspberry Pi- ին պատճենելու համար: Ձեր հրամանը մի փոքր նման կլինի.
git կլոն
-
Ազնվամորու Pi- ի տերմինալում կատարեք գրացուցակի փոփոխման հրամանը (cd) «raspberry_client» - ի մեջ.
cd raspberry_client.
-
Դուք պետք է օգտագործեք վիրտուալ միջավայր*: Պարզ. Վազիր
python3 -m venv env. Սա կստեղծի «env» կոչվող վիրտուալ միջավայր, որը մենք կօգտագործենք կախվածություններ տեղադրելու համար:
-
Այժմ մենք պետք է մուտք գործենք մեր վիրտուալ միջավայր: Գործարկել:
աղբյուր env/bin/ակտիվացնել. Այժմ դուք պատրաստ եք տեղադրել նախագծի կախվածությունը:
-
Փաթեթում, որը դուք պարզապես կլոնավորել եք, կա ֆայլ պահանջներ. Txt: Բացեք այս ֆայլը; կտեսնեք, որ մենք պահանջում ենք paho-mqtt և pyserial փաթեթները, ինչպես նաև դրանց համապատասխան տարբերակները: Գործողության միջոցով կարող եք դիտել ֆայլի բովանդակությունը
կատվի պահանջները. txt. Այս փաթեթները տեղադրելու համար ru
pip install -r պահանջները. txt.
- Սա ավարտում է կազմաձևը:
Բառացիորեն յուրաքանչյուր ձեռնարկ, որը օգտագործում է Python- ը, նշում է Վիրտուալ env- ը, և նույնիսկ այս փոքր նախագծի համար ես նշում կանեմ: Վիրտուալ միջավայրը թույլ է տալիս առանձնացնել կախվածության տարբերակները, ինչպես նաև առանձնացնել ձեր Python- ի աշխատանքային հոսքը. Դա ձեր Python- ի աշխատանքային տարածքները կարգի բերելու գեղեցիկ միջոց է: Եթե առաջին անգամ եք օգտագործում վիրտուալ միջավայրեր, կարճ կարդացեք դրանք այստեղ:
Ի՞նչ է անում ծածկագիրը…
Client.py ֆայլը ներմուծելու է գրադարանների մի շարք, ներառյալ մեր սեփական arduinosensor- ը: Հիմնական գործառույթում մենք կստանանք արժեքները Arduino- ից, տվյալները կհրապարակենք MQTT բրոքերին, այնուհետև կքնենք 10 վայրկյան:
Arduinosensor.py ֆայլը օժանդակ մեթոդների շարք է, որոնք պտտվում են paho.mqtt գրադարանում, ինչպես նաև ապահովում են Arduino- ի բեռնվածության հետ հաղորդակցվելու որոշ օգտակար սխեմաներ (տես ՝ parse_payload): Իհարկե, ծածկագիրը կցված է այս բաժնի վերջում:
Պարզ հաճախորդ, որը arduino- ի հետ շփվում է սերիական մոնիտորի միջոցով: Ակնկալեք, որ այստեղ կգտնեք ծածկագիրը, երբ այն հրապարակվի ՝
fromimportlibimportimport_module |
ներմուծողներ |
ներմուծման ժամանակը |
ներմուծողduinosensor |
defmain (): |
# բաց սահմանված հաճախորդ |
start_time = time.time () |
իսկ ճշմարիտ: |
ընթերցում = arduinosensor.get_values (os.environ.get ('PORT', "/dev/ttyUSB0")) |
arduinosensor.pub ("python_client", payload = ընթերցում) |
time.sleep (10.0- ((time.time () -start_time) %10.0)) |
if_name _ == "_ main_": |
հիմնական () |
դիտել rawclient.py- ն, որը տեղակայված է it -ի կողմից GitHub- ի կողմից
Քայլ 5: Ամեն ինչ միասին դնել
Մենք ունենք Raspberry Python կոդը, և մենք ունենք Arduino հաճախորդի կոդը: Եկեք անցնենք երկու սուբյեկտների միասին միացմանը:
Նախ, եկեք միացնենք Arduino- ն և ստեղծենք ճիշտ կազմաձևը.
-
Ձեր Raspberry Pi տերմինալում աշխատեք
python -m serial.tools.list_ports. Սա կցուցադրի սերիական հաղորդակցություն ապահովող բոլոր USB պորտերը:
-
Այժմ միացրեք ձեր Arduino- ն և սպասեք մոտ 2 վայրկյան, մինչև Ազնվամորին ճանաչի այն: Մուտքագրում
python -m serial.tools.list_ports ևս մեկ անգամ նորից ցույց կտա նավահանգիստները: Դուք կարող եք տեսնել լրացուցիչ ցուցակ, եթե դա իսկապես այդպես է, ապա այս նոր մուտքն այն մուտքն է, որին միացված է ձեր Arduino- ն: Սա, ամենայն հավանականությամբ, կլինի «/dev/ttyUSB0»:
-
Փորձեք գործարկել python ծածկագիրը ձեր վիրտուալ միջավայրում ՝ գործարկելով python3.7 client.py: Սպասեք մի քանի վայրկյան (առավելագույնը տասը). Եթե բացառության եք հանդիպում, դա նշանակում է, որ մենք պետք է փոխենք ազնվամորի pi- ի մեր com port- ի արժեքը: Եթե տեսնում եք, որ ծածկագիրը տպում է տող ՝ սկսած «Ուղարկված է հետևյալ բեռնվածությունից …» տառով, ապա լավ կլինի, որ Գրաֆանայի հետ անցնեք վերջին քայլին: Հուշում. Համոզվեք, որ վազում եք
էկրան -S python նախքան python հաճախորդին գործարկելը, հակառակ դեպքում, երբ դադարեցնեք ձեր կապը ձեր ազնվամորի pi- ի հետ, դուք կկորցնեք ձեր գործող python ծրագիրը: Տեխնիկապես, ձեզ հարկավոր չէ խստորեն օգտագործել «python» - ը որպես վերջին պարամետր, բայց ինձ դուր է գալիս իմ էկրանի նիստերին համապատասխան անուններ տալը:
-
COM նավահանգստի արժեքը փոխելու համար, նախքան ծածկագիրը գործարկելը, ստիպված կլինեք սահմանել միջավայրի փոփոխական: Դուք պետք է փորձեք սա յուրաքանչյուր հնարավոր արժեքի համար, որը ստացել եք python -m serial.tools.list_ports- ով աշխատելիս: Օրինակ, եթե իմ ստացած գրառումների քանակը երկու լիներ և հետևյալը լինեին.
- /dev/ttyUSB6
- /dev/acm0
-
ապա այն հրամանները, որոնք ես կաշխատեի, հետևյալն էին.
PORT = "/dev/ttyUSB6" python3.7 client.py, և եթե դա չաշխատեր, ես հետագայում կխախտեի
PORT = "/dev/acm0" python3.7 client.py
Այս քայլերն ավարտելուց հետո ծածկագիրը տվյալներ կհատկացնի մեր fluxdb տվյալների բազայի օրինակին, որը Grafana- ին միանալիս թույլ կտա դիտել մեր վահանակը:
Քայլ 6: Grafana կազմաձևում և վահանակի դիտում
Լավ, մենք այժմ գտնվում ենք վերջին փուլում: Այժմ մենք կօգտագործենք Grafana- ն ՝ պարզ վահանակ ստեղծելու համար:
- Միացեք ձեր Grafana- ի օրինակին: Քանի որ դուք հետևել եք dzone- ի սկզբնական հոդվածի քայլերին, դուք պետք է կարողանաք մուտք գործել ձեր ադմինիստրատոր օգտագործողի հետ: Շարունակեք և մուտք գործեք:
- Ձախ վահանակի վրա սավառնել «վահանակների» պատկերակի վրա `չորս քառակուսիներ: Կտտացրեք «Կառավարել»:
- Նոր էջում կտտացրեք «Նոր վահանակ»: Ավելին, կտտացրեք «Ավելացնել նոր վահանակ»:
-
Սա բացում է Grafana խմբագիրը: Մենք կստեղծենք մի պարզ տեսք, որը ցույց է տալիս մեկ չափիչ:
- Աջ վահանակում վահանակի վերնագիրը փոխեք իմաստալից մի բանի, օրինակ ՝ «Խոհանոցի ընթերցումներ»: Կարող եք նաև մուտքագրել կամայական նկարագրություն:
- Ներքևի ձախ մասում ՝ «Հարցում», մենք կավելացնենք մեկ ժամանակային շարք: Grafana- ն իսկապես փայլում է այստեղ, քանի որ մենք կարող ենք հեշտությամբ ստեղծել SQL հայտարարություններ կտտացման վրա հիմնված ինտերֆեյսով: «Լռելյայն» բաժնում ընտրեք InfluxDB:
- Այժմ, «Ա» կարդալու համար, «FROM» կետից ընտրեք «airtestt» չափումը: Եթե նայեք arduinosensor.py- ի get_values ֆունկցիայի սկզբնական պիթոնի կոդին, կտեսնեք, որ մենք սահմանում ենք այս airtestt աղյուսակը կոդի ներսում:
- Նմուշի համար եկեք գնանք «ԸՆՏՐԵԼ» կետ և ընտրեք դաշտը (mq4): Սկզբնապես մեր վահանակը մեզ կտա «միջին ()» ընտրությունը ՝ կտտացրեք այս ընտրության վրա և ընտրեք «Հեռացնել»: ապա կտտացրեք գումարած նշանի վրա և «Համախմբումներ» բաժնում ընտրեք «տարբեր ()»: Սա ցույց կտա կոնկրետ ժամանակային կետեր: Մենք կարող ենք ընտրել այլ միջոցներ, բայց առայժմ մեր վահանակը ցույց կտա mq4- ի հստակ ընթերցումներ:
- Կտտացրեք Պահել վերևի աջ կողմում, և դուք ավարտված եք:
Խնդիր առաջանալու դեպքում կարող եք հաստատել ձեր կարգավորումները կցված էկրանի նկարում:
Քայլ 7: Ամփոփեք
Այս ձեռնարկում դուք կարողացաք ստեղծել հզոր MQTT ցանց, որը բաղկացած է մեկ հանգույցից և միջնորդից: Դուք կարողացաք նաև պատկերացնել ձեր IOT տվյալները Grafana- ի միջոցով: Վերջապես, դուք կարողացաք կազմել այս պարզ համակարգի ճարտարապետությունը (հուսանք) ձեր դիտարկիչի և համակարգչի հարմարավետությունից ՝ SSH կապի միջոցով:
Կան որոշ բաներ, որոնց վրա գուցե ցանկանանք բարելավել:
- Մեր գրաֆիկի սենսորների ընթերցումները իրականում ճշգրիտ սենսորային ընթերցումներ չեն. Դրանք մեր սենսորից ելքային լարումն են: Նրանք պետք է ճշգրտվեն, ավելի մանրամասն ծանոթանալու համար այցելեք այս բլոգային գրառումը:
- Մեր ազնվամորու pi կոնֆիգուրացիան կարող է շատ ավելի թեթևացվել ՝ օգտագործելով arduino- ին միացված ESP8266 տախտակը և ամբողջությամբ հեռացնելով pi- ն: Դիտեք ESP8266 մոդուլի ներածությունը:
- Հնարավոր է, որ մենք ցանկանանք որոշակի իրադարձությունների վերաբերյալ ահազանգեր ավելացնել: Բարեբախտաբար, Գրաֆանան առաջարկում է դա անելու եղանակ:
Ես որոշ այլ ընթերցումներ կթողնեմ `ձեր երևակայությունը գայթակղելու համար IOT աշխարհով: Անհամբերությամբ սպասում եմ ձեզ հաջորդ ուսանելի ձեռնարկում:
Լրացուցիչ ընթերցումներ.
Խորհուրդ ենք տալիս:
Հետևեք ինձ - Raspberry Pi Smart Drone- ի ուղեցույց. 9 քայլ
Հետևեք ինձ - Raspberry Pi Smart Drone- ի ուղեցույց. Դուք միշտ մտածե՞լ եք, թե ինչպես պատրաստել անօդաչու սարք A -Z- ից: Այս ձեռնարկը ձեզ ցույց է տալիս, թե ինչպես կարելի է քայլ առ քայլ կատարել 450 մմ տրամաչափի քվոտոպտիչ ՝ մասերը գնելուց մինչև ձեր առաջին թռիչքի ժամանակ օդային ռոբոտի փորձարկումը: Բացի այդ, Raspberry Pi- ի և PiCamera- ի միջոցով կարող եք
Օդի մոնիտորինգի համակարգ `օգտագործելով NodeMCU և IOT Thingspeak: 4 քայլ
Օդի մոնիտորինգի համակարգ ՝ օգտագործելով NodeMCU և IOT Thingspeak. ThingSpeak- ը բաց կոդով IoT ծրագիր է և API ՝ սարքավորումների սարքերից և տվիչներից տվյալներ պահելու և առբերելու համար: Այն օգտագործում է HTTP արձանագրություն ինտերնետի կամ LAN- ի միջոցով `իր հաղորդակցության համար: MATLAB վերլուծությունը ներառված է ՝ վերլուծելու և պատկերացնելու
Օդի աղտոտման հայտնաբերում + օդի զտում `4 քայլ
Օդի աղտոտման հայտնաբերում + օդի զտում. Գերմանական շվեյցարական միջազգային դպրոցի աշակերտները (Արիստոբուլուս Լամ, Վիկտոր Սիմ, Նաթան Ռոզենցվայգ և Դեկլան Լոգես) աշխատել են MakerBay- ի անձնակազմի հետ `օդի աղտոտման չափման և օդի զտման արդյունավետության միասնական համակարգ արտադրելու համար: Այս
Հետևեք ինձ ռոբոտին ՝ օգտագործելով NodeMCU: 4 քայլ
Հետևեք ինձ ռոբոտին ՝ օգտագործելով NodeMCU: Շատ պարզ է Follow Me ռոբոտը ՝ օգտագործելով NodeMCU: Այն օգտագործում է NodeMCU HC SR04 հեռավորության տվիչ ՝ մոտակա օբյեկտը/ մարդուն զգալու համար: Երբ այն հայտնաբերի Օբյեկտը/ Մարդը, այն կսկսի հետևել
DIY տաք օդի զոդման երկաթ օգտագործելով 12-18 վոլտ DC 2-3 ամպեր. 18 քայլ (նկարներով)
DIY տաք օդի զոդման երկաթ օգտագործելով 12-18 վոլտ հոսանք ՝ 2-3 ամպեր. Սա իմ DIY հոդվածի առաջին տեղադրումն է համացանցում: Այնպես որ, ներեցեք ինձ տառասխալների, արձանագրությունների և այլնի համար: Հետևյալ հրահանգները ցույց են տալիս, թե ինչպես պատրաստել ԱՇԽԱՏԱՆՔԱՅԻՆ Ե airՐԱՅԻՆ eringոդման երկաթ, որը հարմար է զոդում պահանջող ԲՈԼՈՐ օգտագործման համար: Այս տաք օդի զոդումը