Բովանդակություն:
- Քայլ 1: Ավելացնել որոշ բաղադրիչներ
- Քայլ 2. Նշում Breadboards- ի մասին
- Քայլ 3: Ավելացրեք երկու տվիչ
- Քայլ 4: Լուսազգայուն սենսոր
- Քայլ 5: Սկսեք ծածկագիրը
- Քայլ 6: Սիմուլյացիա
- Քայլ 7: Լարացրեք ջերմաստիճանի տվիչը
- Քայլ 8: Փորձարկում և ստուգում
Video: Arduino Datalogger: 8 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Այս ձեռնարկում մենք պատրաստվում ենք պարզ տվյալների գրանցիչ կատարել Arduino- ի միջոցով: Բանն այն է, որ սովորեք Arduino- ի օգտագործման տեղեկատվության գրավման և տերմինալ տպելու հիմունքները: Մենք կարող ենք օգտագործել այս հիմնական կարգավորումը մի շարք առաջադրանքներ կատարելու համար:
Սկսելու համար.
Ձեզ հարկավոր կլինի Tinkercad (www.tinkercad.com) հաշիվ: Գլխավոր և գրանցվեք ձեր էլ. Փոստի կամ սոցիալական մեդիայի հաշվի հետ:
Մուտք գործելը տանում է ձեզ դեպի Tinkercad վահանակ: Կտտացրեք «Շրջաններ» ձախ և ընտրեք «Ստեղծել նոր շրջան»: Եկեք սկսենք!
Դուք կարող եք գտնել ամբողջական ֆայլը TInkercad Circuits- ում - Շնորհակալություն այն ստուգելու համար:
Քայլ 1: Ավելացնել որոշ բաղադրիչներ
Ձեզ հարկավոր են որոշ հիմնական բաղադրիչներ: Դրանք ներառում են.
- Arduino տախտակ
- Breadboard
Ավելացրեք դրանք ՝ դրանք որոնելով և սեղմելով քաշելով դեպի միջին տարածք:
Տեղադրեք տախտակը Arduino- ի վրա: Այն ավելի հեշտ է դարձնում ավելի ուշ դիտել կապերը:
Քայլ 2. Նշում Breadboards- ի մասին
Հացաթուղթը շատ օգտակար սարք է արագ նախատիպավորման համար: Մենք այն օգտագործում ենք բաղադրիչները միացնելու համար: Որոշ բաներ, որոնք պետք է նշել:
- Կետերը միացված են ուղղահայաց, բայց մեջտեղի գիծը բաժանում է այս կապը վերևի և ներքևի սյուներից:
- Սյուները կապված չեն ձախից աջ, ինչպես ամբողջ շարքում: Սա նշանակում է, որ բոլոր բաղադրիչները պետք է միացված լինեն սյուների վրա, այլ ոչ թե ուղղահայաց ներքև:
- Եթե Ձեզ անհրաժեշտ է օգտագործել կոճակներ կամ անջատիչներ, դրանք միացրեք ընդմիջման միջով: Մենք դրան կայցելենք ավելի ուշ ձեռնարկում:
Քայլ 3: Ավելացրեք երկու տվիչ
Երկու սենսորները, որոնք մենք օգտագործում ենք, հանդիսանում են Լուսազգայուն սենսոր և peratերմաստիճանի տվիչ:
Այս տվիչները գնահատում են լույսը և ջերմաստիճանը: Մենք օգտագործում ենք Arduino- ն `արժեքը կարդալու և Arduino- ի Serial monitor- ում ցուցադրելու համար:
Որոնեք և ավելացրեք երկու տվիչ: Համոզվեք, որ դրանք տեղադրված են սեղանի սյուների վրա: Նրանց միջև բավականաչափ տարածք դրեք, որպեսզի ավելի հեշտ լինի դրանք տեսնելը:
Քայլ 4: Լուսազգայուն սենսոր
- Լուսազգայուն սենսորի համար Arduino- ի 5V պինից մետաղալար ավելացրեք նույն սյունակին, ինչպես աջ ափը `հացաթխի հատվածում: Փոխեք մետաղալարերի գույնը կարմիր:
- Միացրեք ձախ ոտքը նույն սյունակի քորոցի միջոցով Arduino- ի A0 (A-zero) քորոցին: Սա անալոգային քորոցն է, որը մենք կօգտագործենք սենսորից արժեքը կարդալու համար: Գունավորեք այս մետաղալարը դեղին կամ կարմիրից սևից այլ բան:
-
Տեղադրեք դիմադրություն (որոնել և սեղմել-քաշել) գրատախտակին: Սա լրացնում է շրջանը և պաշտպանում է սենսորը և կապը:
- Շրջեք այն այնպես, որ այն անցնի սյուների վրայով:
- Մի ոտքը միացրեք տախտակի աջ ոտքի սյունակին
-
Տեղադրեք մետաղալարեր դիմադրության մյուս ծայրից դեպի գետնին
Փոխեք լարերի գույնը սևի:
- Կրկնակի ստուգեք բոլոր կապերը: Եթե ինչ -որ բան ճիշտ տեղում չէ, այն ճիշտ չի գործի:
Քայլ 5: Սկսեք ծածկագիրը
Եկեք նայենք այս բաղադրիչի ծածկագրին:
Նախ, նայեք այս քայլի երրորդ պատկերին: Այն պարունակում է երկու գործառույթ ունեցող մի ծածկագիր.
դատարկ կարգավորում ()
դատարկ շրջան ()
C ++ - ում բոլոր գործառույթներն ապահովում են իրենց վերադարձի տեսակը, այնուհետև անունը, այնուհետև երկու կլոր փակագծեր, որոնք կարող են օգտագործվել արգումենտներում փոխանցելու համար, սովորաբար որպես փոփոխական: Այս դեպքում վերադարձի տեսակը անվավեր է կամ ոչինչ: Անունը կազմաձևված է, և գործառույթը փաստարկներ չի վերցնում:
Կարգավորման գործառույթը գործարկվում է մեկ անգամ, երբ Arduino- ն գործարկում է (երբ այն միացնում կամ միացնում եք մարտկոցները):
Օղակի գործառույթը անցնում է միլիվայրկյան անընդմեջ հանգույցով, երբ կարգաբերման գործառույթն ավարտվում է:
Այն ամենը, ինչ դուք դնում եք օղակի գործառույթում, կաշխատի, երբ աշխատի Arduino- ն: Ամեն ինչ դրսում, որը կաշխատի միայն զանգահարելիս: Ինչպես եթե մենք սահմանենք և կանչենք մեկ այլ գործառույթ ՝ օղակից դուրս:
Առաջադրանք
Բացեք Code վահանակը Tinkercad- ի կոճակով: Փոխեք Blocks- ի բացվող տեքստը: Համաձայնեք նախազգուշացման տուփին, որը հայտնվում է: Այժմ ջնջեք այն ամենը, ինչ տեսնում եք, բացի այս նկարի երրորդ պատկերի տեքստից:
Փոփոխականներ
Սկսելու համար մենք պետք է որոշ փոփոխականներ հատկացնենք, որպեսզի մեր ծածկագիրը իսկապես արդյունավետ դարձնենք:
Փոփոխականները նման են դույլերի, որոնք կարող են պահել միայն մեկ օբյեկտ (C ++-ն այն է, ինչ մենք կոչում ենք օբյեկտային): Այո, մենք ունենք զանգվածներ, բայց դրանք հատուկ փոփոխականներ են, և դրանց մասին կխոսենք ավելի ուշ: Երբ մենք փոփոխական ենք նշանակում, մենք պետք է ասենք, թե որն է այն տեսակը, այնուհետև տվեք այն արժեք: Կարծես այսպիսին է.
int someVar = A0;
Այսպիսով, մենք նշանակեցինք փոփոխական և տվեցինք տիպի int: Int- ը ամբողջ թիվ է կամ ամբողջ թիվ:
«Բայց դու մի ամբողջ թիվ չօգտագործեցի՞ր», - լսում եմ, որ ասում ես. Դա ճիշտ է.
Arduino- ն ինչ -որ հատուկ բան է անում մեզ համար, որպեսզի կարողանանք օգտագործել A0- ն որպես ամբողջ թիվ, քանի որ մեկ այլ ֆայլում այն սահմանում է A0- ը որպես ամբողջ թիվ, այնպես որ մենք կարող ենք օգտագործել A0 հաստատունն այս ամբողջին հղում անելու համար ՝ առանց իմանալու, թե ինչ է դա: Եթե մենք պարզապես մուտքագրեինք 0, ապա մենք կանդրադառնայինք 0 -ի դիրքի թվային կապին, որը չէր աշխատի:
Այսպիսով, մեր ծածկագրի համար մենք փոփոխական կգրենք մեր կցած սենսորի համար: Թեև խորհուրդ եմ տալիս դրան տալ պարզ անուն, դա ձեզնից է կախված:
Ձեր ծածկագիրը պետք է լինի այսպիսին.
int lightSensor = A0;
void setup () {} void loop () {}
Այժմ, եկեք պատմենք Arduino- ին, թե ինչպես վարել սենսորը այդ կապում: Մենք կարգաբերման ներսում գործարկելու ենք քորոց ռեժիմը սահմանելու և Arduino- ին ասելու, թե որտեղ պետք է այն փնտրել:
int lightSensor = A0;
void setup () {pinMode (lightSensor, INPUT); } void loop () {}
pinMode գործառույթը Arduino- ին ասում է, որ քորոցը (A0) կօգտագործվի որպես INPUT քորոց: Ուշադրություն դարձրեք camelCaseUsed- ին (տե՛ս յուրաքանչյուր առաջին տառը մեծատառ է, քանի որ դրա մեջ կան բեկորներ, հետևաբար… ուղտ…!) Փոփոխականների և գործառույթների անունների համար: Սա պայմանական է և սովոր է սովորել:
Վերջապես, եկեք օգտագործենք analogRead գործառույթը ՝ որոշ տվյալներ ստանալու համար:
int lightSensor = A0;
void setup () {pinMode (lightSensor, INPUT); } void loop () {int reading = analogRead (lightSensor); }
Կտեսնեք, որ մենք ընթերցումը պահել ենք փոփոխականի մեջ: Սա կարևոր է, քանի որ մենք պետք է տպագրենք այն: Եկեք օգտագործենք Սերիայի գրադարանը (գրադարանը այն ծածկագիրն է, որը մենք կարող ենք ավելացնել մեր ծածկագրին ՝ գրելու համար ավելի արագ դարձնելու համար, պարզապես այն կոչելով այն իր սահմանմամբ) ՝ սա սերիական մոնիտորին տպելու համար:
int lightSensor = A0;
void setup () {// Սահմանել քորոց ռեժիմներ pinMode (lightSensor, INPUT); // Ավելացնել սերիական գրադարան Serial.begin (9600); } void loop () {// Կարդալ սենսորը int reading = analogRead (lightSensor); // Տպել արժեքը մոնիտորի Serial.print ("Light:"); Serial.println (ընթերցում); // հաջորդ հանգույցը հետաձգել 3 վայրկյան ուշացումով (3000); }
Մի քանի նոր բան! Նախ, դուք կտեսնեք դրանք.
// Սա մեկնաբանություն է
Մենք օգտագործում ենք մեկնաբանություններ ՝ այլ մարդկանց ասելու, թե ինչ է անում մեր ծածկագիրը: Դուք պետք է դրանք հաճախ օգտագործեք: Կոմպիլյատորը դրանք չի կարդա և դրանք կվերածի կոդի:
Այժմ մենք ավելացրեցինք նաև Սերիայի գրադարանը տողով
Serial.begin (9600)
Սա ֆունկցիայի օրինակ է, որն ընդունում է փաստարկ: Դուք գրադարանին անվանեցիք Serial, այնուհետև գործարկեց գործառույթը (մենք գիտենք, որ այն ֆունկցիա է կլոր փակագծերի պատճառով) և որպես արգումենտ փոխանցեց մի ամբողջ թիվ ՝ սահմանելով սերիական գործառույթը 9600 բաուդ: Մի անհանգստացեք ինչու - պարզապես իմացեք, որ այն աշխատում է, առայժմ:
Հաջորդ բանը, որ մենք արեցինք, տպումն էր սերիական մոնիտորի վրա: Մենք օգտագործեցինք երկու գործառույթ.
// Այս մեկը տպում է սերիալում ՝ առանց տողի ընդմիջման (վերջում մուտքագրում)
Serial.print ("Light:"); // Այս մեկը տողի ընդմիջում է դնում, այնպես որ ամեն անգամ կարդալ և գրելիս այն անցնում է նոր տողով Serial.println (ընթերցում);
Կարևոր է տեսնել, որ յուրաքանչյուրն ունի առանձին նպատակ: Համոզվեք, որ ձեր տողերում օգտագործվում են կրկնակի մեջբերման նշաններ, և որ դուք հեռանում եք տարածությունից երկու կետից հետո: Դա օգնում է օգտագործողի ընթերցանությանը:
Ի վերջո, մենք օգտագործեցինք հետաձգման գործառույթը ՝ մեր օղակը դանդաղեցնելու և այն կարդալու համար միայն երեք վայրկյանը մեկ անգամ ստիպելու համար: Սա գրված է հազարավոր վայրկյանների ընթացքում: Փոխեք այն 5 վայրկյանը մեկ անգամ կարդալու համար:
Հիանալի! Գնում ենք!
Քայլ 6: Սիմուլյացիա
Միշտ ստուգեք, որ իրերն աշխատում են ՝ գործարկելով սիմուլյացիան: Այս սխեմայի համար դուք նույնպես պետք է բացեք սիմուլյատորը `այն աշխատելու և ձեր արժեքները ստուգելու համար:
Սկսեք մոդելավորումը և ստուգեք սերիական մոնիտորը: Փոխեք լույսի սենսորի արժեքը `կտտացնելով այն և փոխելով արժեքը սահողով: Դուք նույնպես պետք է տեսնեք արժեքի փոփոխությունը սերիական մոնիտորի մեջ: Եթե դա այդպես չէ, կամ եթե Start Simulation կոճակը սեղմելիս սխալներ եք ստանում, ուշադիր վերադառնաք և ստուգեք ձեր ամբողջ ծածկագիրը:
- Կենտրոնացեք կարմիր վրիպազերծման պատուհանում նշված տողերի վրա, որոնք կներկայացվեն ձեզ:
- Եթե ձեր կոդը ճիշտ է, և սիմուլյացիան դեռ չի աշխատում, ստուգեք ձեր էլեկտրագծերը:
- Վերաբեռնել էջը. Հնարավոր է, որ դուք ունեք համակարգի/սերվերի հետ կապ չունեցող սխալ:
- Բռունցքը թափահարեք համակարգչի վրա և նորից ստուգեք: Բոլոր ծրագրավորողները դա անում են: Բոլորը The Ժամանակը:
Քայլ 7: Լարացրեք ջերմաստիճանի տվիչը
Ես պատրաստվում եմ ենթադրել, որ դուք հիմա ճիշտ ուղու վրա եք: Շարունակեք և միացրեք ջերմաստիճանի տվիչը, ինչպես ցույց է տալիս նկարը: Ուշադրություն դարձրեք 5V և GND լարերի տեղադրմանը նույն տարածության մեջ, ինչ լույսի համար: Սա նորմալ է: Այն նման է զուգահեռ միացման և սիմուլյատորի հետ խնդիրներ չի առաջացնի: Իրական միացումում դուք պետք է օգտագործեք ճեղքման տախտակ կամ վահան `էներգիայի ավելի լավ կառավարում և միացումներ ապահովելու համար:
Հիմա եկեք թարմացնենք ծածկագիրը:
Sensorերմաստիճանի տվիչի ծածկագիրը
Սա մի փոքր ավելի բարդ է, բայց միայն այն պատճառով, որ մենք պետք է որոշակի մաթեմատիկա անենք ընթերցումը փոխակերպելու համար: Դա այնքան էլ վատ չէ:
int lightSensor = A0;
int tempSensor = A1; void setup () {// Սահմանել քորոց ռեժիմներ pinMode (lightSensor, INPUT); // Ավելացնել սերիական գրադարան Serial.begin (9600); } void loop () {// sensorերմաստիճանի տվիչ // Երկու տատանումների ստեղծում մեկ տողի վրա - օ efficiency արդյունավետություն: // Float var ՝ տասնորդական բոց լարման, աստիճանների պահպանման համար; // Կարդացեք քորոցի արժեքը և փոխարկեք այն 0 - 5 -ի ընթերցման // Ըստ էության լարման = (5/1023 = 0.004882814); լարման = (analogRead (tempSensor) * 0.004882814); // Փոխակերպել աստիճանի C աստիճաններ C = (լարումը `0.5) * 100; // Տպել սերիական մոնիտորին Serial.print ("Temp:"); Serial.print (աստիճաններ C); Serial.println ("oC"); // Կարդացեք սենսորը int reading = analogRead (lightSensor); // Տպել արժեքը մոնիտորի Serial.print ("Light:"); Serial.println (ընթերցում); // հաջորդ հանգույցը հետաձգել 3 վայրկյան ուշացումով (3000); }
Որոշակի թարմացումներ եմ կատարել ծածկագրում: Եկեք առանձին անցնենք դրանց միջով:
Նախ, ես ավելացրեցի տողը
int tempSensor = A1;
Theիշտ այնպես, ինչպես lightSensor- ը, ես պետք է արժեքը պահեմ փոփոխականի մեջ, որպեսզի հետագայում այն ավելի հեշտ լինի: Եթե ես ստիպված լինեի փոխել այս սենսորի գտնվելու վայրը (ինչպես տախտակի վերալիցքավորումը), ապա ես պետք է փոխեմ միայն կոդի մեկ տողը, այլ ոչ թե որոնեմ ամբողջ կոդի բազայում ՝ A0 կամ A1 փոխելու համար և այլն:
Այնուհետև մենք ավելացրեցինք մի տող ՝ ընթերցումը և ջերմաստիճանը բոցում պահելու համար: Նշեք երկու փոփոխական մեկ տողի վրա:
բոց լարման, աստիճաններ C;
Սա իսկապես օգտակար է, քանի որ այն կրճատում է տողերի քանակը, որոնք ես պետք է գրեմ և արագացնում է ծածկագիրը: Այնուամենայնիվ, սխալներ գտնելը կարող է ավելի դժվար լինել:
Այժմ մենք կկատարենք ընթերցումը և կպահենք այն, այնուհետև այն կդարձնենք մեր ելքային արժեքին:
լարման = (analogRead (tempSensor) * 0.004882814);
աստիճան C = (լարման - 0.5) * 100;
Այդ երկու տողերը դժվար տեսք ունեն, բայց առաջինում մենք վերցնում ենք ընթերցումը և բազմապատկում այն 0.004 -ով … քանի որ այն փոխակերպում է 1023 -ը (անալոգային ընթերցումը վերադարձնում է այս արժեքը) 5 -ից ընթերցման:
Երկրորդ տողն այնտեղ բազմապատկում է այդ ընթերցումը 100 -ով ՝ տասնորդական կետը տեղափոխելու համար: Դա մեզ տալիս է ջերմաստիճանը: Կոկիկ!
Քայլ 8: Փորձարկում և ստուգում
Ամեն ինչ պլանավորվում է, դուք պետք է ունենաք աշխատանքային միացում: Փորձարկեք ՝ սիմուլյացիան գործարկելով և օգտագործելով սերիական մոնիտորը: Եթե սխալներ ունեք, ստուգեք, նորից ստուգեք և թափահարեք ձեր բռունցքը:
Դուք հասցրե՞լ եք: Կիսվեք և պատմեք մեզ ձեր պատմությունը:
Սա ձեզ համար ներդրված վերջին շրջանն է, որպեսզի կարողանաք խաղալ/փորձարկել վերջնական ստեղծագործությունը: Շնորհակալություն ձեռնարկն ավարտելու համար:
Խորհուրդ ենք տալիս:
GPS Para Norma (Datalogger EEPROM) ՝ 5 քայլ
GPS Para Norma (Datalogger EEPROM). Պարզ GPS տվյալների հավաքագրիչ ՝ հիմնված arduino- ի և EEPROM- ի ձայնագրման վրա =============================== ======================= Sencillo datalogger GPS para mascotas basado en arduino y grabacion en memoria EEPROM
Alaska Datalogger: 5 քայլ (նկարներով)
Alaska Datalogger. Ալյասկան գտնվում է կլիմայի փոփոխության առաջմղման եզրին: Բավականին անփոփոխ լանդշաֆտ ունենալու ունակությունը `բնակեցված ածխի հանքավայրերի տարատեսակներով, հնարավորություն է տալիս բազմաթիվ հետազոտությունների: Մեր ընկեր Մոնթին հնագետ է, ով օգնում է
Arduino Datalogger RTC- ով, Nokia LCD- ով և կոդավորիչով. 4 քայլ
Arduino Datalogger With RTC, Nokia LCD և Encoder: Մասեր. Arduino Nano կամ Arduino Pro Mini Nokia 5110 84x48 LCD DHT11 ջերմաստիճանի/խոնավության տվիչ DS1307 կամ DS3231 RTC մոդուլ `ներկառուցված AT24C32 EEPROM Էժան կոդավորիչով 3 անջատիչ կոնդենսատորներով: Առանձնահատկություններ. և en
Ciclop 3D Scanner My Way Քայլ առ քայլ ՝ 16 քայլ (նկարներով)
Ciclop 3D Scanner My Way Քայլ առ քայլ. Ողջույն, ես գիտակցելու եմ հանրահայտ Ciclop 3D սկաները: Բոլոր այն քայլերը, որոնք լավ բացատրված են սկզբնական նախագծում, ներկա չեն: Ես որոշ շտկումներ կատարեցի ՝ գործընթացը պարզեցնելու համար, նախ Ես տպում եմ հիմքը, իսկ հետո վերականգնում եմ PCB- ն, բայց շարունակում եմ
Raspberry Pi Zero W Datalogger: 8 քայլ (նկարներով)
Raspberry Pi Zero W Datalogger: Օգտագործելով Raspberry Pi Zero W- ը, կարող եք պատրաստել էժան և հեշտ օգտագործվող տվյալների ցուցիչ, որը կարող է կամ միացված լինել տեղական wifi ցանցին, կամ ծառայել որպես մուտքի կետ այն դաշտում, որը թույլ է տալիս ներբեռնել տվյալները անլար ձեր սմարթֆոնի հետ: Ներկայացնում եմ