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

Arduino Datalogger: 8 քայլ (նկարներով)
Arduino Datalogger: 8 քայլ (նկարներով)

Video: Arduino Datalogger: 8 քայլ (նկարներով)

Video: Arduino Datalogger: 8 քայլ (նկարներով)
Video: Arduino nano, ads1115, lcd2004, rtc ds1307, SD card shield, 8-16ch adc data logger 2024, Նոյեմբեր
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

Այս ձեռնարկում մենք պատրաստվում ենք պարզ տվյալների գրանցիչ կատարել Arduino- ի միջոցով: Բանն այն է, որ սովորեք Arduino- ի օգտագործման տեղեկատվության գրավման և տերմինալ տպելու հիմունքները: Մենք կարող ենք օգտագործել այս հիմնական կարգավորումը մի շարք առաջադրանքներ կատարելու համար:

Սկսելու համար.

Ձեզ հարկավոր կլինի Tinkercad (www.tinkercad.com) հաշիվ: Գլխավոր և գրանցվեք ձեր էլ. Փոստի կամ սոցիալական մեդիայի հաշվի հետ:

Մուտք գործելը տանում է ձեզ դեպի Tinkercad վահանակ: Կտտացրեք «Շրջաններ» ձախ և ընտրեք «Ստեղծել նոր շրջան»: Եկեք սկսենք!

Դուք կարող եք գտնել ամբողջական ֆայլը TInkercad Circuits- ում - Շնորհակալություն այն ստուգելու համար:

Քայլ 1: Ավելացնել որոշ բաղադրիչներ

Ավելացնել որոշ բաղադրիչներ
Ավելացնել որոշ բաղադրիչներ
Ավելացնել որոշ բաղադրիչներ
Ավելացնել որոշ բաղադրիչներ
Ավելացնել որոշ բաղադրիչներ
Ավելացնել որոշ բաղադրիչներ

Ձեզ հարկավոր են որոշ հիմնական բաղադրիչներ: Դրանք ներառում են.

  • Arduino տախտակ
  • Breadboard

Ավելացրեք դրանք ՝ դրանք որոնելով և սեղմելով քաշելով դեպի միջին տարածք:

Տեղադրեք տախտակը Arduino- ի վրա: Այն ավելի հեշտ է դարձնում ավելի ուշ դիտել կապերը:

Քայլ 2. Նշում Breadboards- ի մասին

Նշում Breadboards- ի մասին
Նշում Breadboards- ի մասին

Հացաթուղթը շատ օգտակար սարք է արագ նախատիպավորման համար: Մենք այն օգտագործում ենք բաղադրիչները միացնելու համար: Որոշ բաներ, որոնք պետք է նշել:

  1. Կետերը միացված են ուղղահայաց, բայց մեջտեղի գիծը բաժանում է այս կապը վերևի և ներքևի սյուներից:
  2. Սյուները կապված չեն ձախից աջ, ինչպես ամբողջ շարքում: Սա նշանակում է, որ բոլոր բաղադրիչները պետք է միացված լինեն սյուների վրա, այլ ոչ թե ուղղահայաց ներքև:
  3. Եթե Ձեզ անհրաժեշտ է օգտագործել կոճակներ կամ անջատիչներ, դրանք միացրեք ընդմիջման միջով: Մենք դրան կայցելենք ավելի ուշ ձեռնարկում:

Քայլ 3: Ավելացրեք երկու տվիչ

Ավելացնել երկու սենսոր
Ավելացնել երկու սենսոր

Երկու սենսորները, որոնք մենք օգտագործում ենք, հանդիսանում են Լուսազգայուն սենսոր և peratերմաստիճանի տվիչ:

Այս տվիչները գնահատում են լույսը և ջերմաստիճանը: Մենք օգտագործում ենք Arduino- ն `արժեքը կարդալու և Arduino- ի Serial monitor- ում ցուցադրելու համար:

Որոնեք և ավելացրեք երկու տվիչ: Համոզվեք, որ դրանք տեղադրված են սեղանի սյուների վրա: Նրանց միջև բավականաչափ տարածք դրեք, որպեսզի ավելի հեշտ լինի դրանք տեսնելը:

Քայլ 4: Լուսազգայուն սենսոր

Լուսազգայուն սենսոր
Լուսազգայուն սենսոր
Լուսազգայուն սենսոր
Լուսազգայուն սենսոր
Լուսազգայուն սենսոր
Լուսազգայուն սենսոր
Լուսազգայուն սենսոր
Լուսազգայուն սենսոր
  1. Լուսազգայուն սենսորի համար Arduino- ի 5V պինից մետաղալար ավելացրեք նույն սյունակին, ինչպես աջ ափը `հացաթխի հատվածում: Փոխեք մետաղալարերի գույնը կարմիր:
  2. Միացրեք ձախ ոտքը նույն սյունակի քորոցի միջոցով Arduino- ի A0 (A-zero) քորոցին: Սա անալոգային քորոցն է, որը մենք կօգտագործենք սենսորից արժեքը կարդալու համար: Գունավորեք այս մետաղալարը դեղին կամ կարմիրից սևից այլ բան:
  3. Տեղադրեք դիմադրություն (որոնել և սեղմել-քաշել) գրատախտակին: Սա լրացնում է շրջանը և պաշտպանում է սենսորը և կապը:

    • Շրջեք այն այնպես, որ այն անցնի սյուների վրայով:
    • Մի ոտքը միացրեք տախտակի աջ ոտքի սյունակին
    • Տեղադրեք մետաղալարեր դիմադրության մյուս ծայրից դեպի գետնին

      Փոխեք լարերի գույնը սևի:

  4. Կրկնակի ստուգեք բոլոր կապերը: Եթե ինչ -որ բան ճիշտ տեղում չէ, այն ճիշտ չի գործի:

Քայլ 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: Փորձարկում և ստուգում

Փորձարկում և ստուգում
Փորձարկում և ստուգում

Ամեն ինչ պլանավորվում է, դուք պետք է ունենաք աշխատանքային միացում: Փորձարկեք ՝ սիմուլյացիան գործարկելով և օգտագործելով սերիական մոնիտորը: Եթե սխալներ ունեք, ստուգեք, նորից ստուգեք և թափահարեք ձեր բռունցքը:

Դուք հասցրե՞լ եք: Կիսվեք և պատմեք մեզ ձեր պատմությունը:

Սա ձեզ համար ներդրված վերջին շրջանն է, որպեսզի կարողանաք խաղալ/փորձարկել վերջնական ստեղծագործությունը: Շնորհակալություն ձեռնարկն ավարտելու համար:

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