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

Եղանակային կայան Arduino UNO- ի միջոցով. 7 քայլ
Եղանակային կայան Arduino UNO- ի միջոցով. 7 քայլ

Video: Եղանակային կայան Arduino UNO- ի միջոցով. 7 քայլ

Video: Եղանակային կայան Arduino UNO- ի միջոցով. 7 քայլ
Video: Lesson 01 Arduino Boards | Robojax Arduino Step By Step Course 2024, Հուլիսի
Anonim
Եղանակային կայան Arduino UNO- ի միջոցով
Եղանակային կայան Arduino UNO- ի միջոցով

Հեղինակ ՝ Հազել Յանգ

Այս նախագիծը եղանակային կայան է, որն օգտագործում է Arduino UNO տախտակը ՝ տվյալների հոսքը վերահսկելու համար, DHT22 տվիչ ՝ տվյալները հավաքելու համար և OLED էկրան ՝ տվյալները ցույց տալու համար:

Քայլ 1: Նյութերի ցուցակ

Նյութերի ցուցակ
Նյութերի ցուցակ

1. Էկրան ՝ OLED, 1.3 դյույմ SH1106, I2C սպիտակ գույն ---- PID: 18283

2. Սենսոր. Թվային խոնավության և ջերմաստիճանի տվիչ DHT22-PID: 7375

3. Միանում է. Jumper Wires ---- PID: 10316 կամ 10318 կամ 10312 (կախված երկարությունից) կամ կարող եք օգտագործել ամուր մետաղալար 22 AWG-PID: 22490

Հացաթուղթ ---- PID: 10686 կամ 10698 կամ 103142 (կախված չափից)

4. Էլեկտրաէներգիա. Այս մալուխը կարող է միացվել միայն համակարգչի USB պորտին, և մալուխը օգտագործվում է նաև IDE և Arduino տախտակի միջև տվյալների փոխանցման համար: USB մալուխ, A- ից B, M/M, 0.5M (1.5FT) ---- PID: 29862

Կամ դուք կարող եք դա օգտագործել տախտակը սնուցելու համար ՝ 5V 2A AC/DC ադապտեր ---- PID: 10817:

Քայլ 2: Հարաբերական ներածություն

Հարաբերական ներածություն
Հարաբերական ներածություն
Հարաբերական ներածություն
Հարաբերական ներածություն

Էկրանի ներածություն ՝ 1.3 դյույմանոց OLED էկրան ՝ սպիտակ

1. Դուք կարող եք գտնել փաստաթուղթը, որը ցույց է տալիս հիմնական կարգավորումը և նկարագրությունները ՝

Սենսորի ներածություն. Խոնավության և ջերմաստիճանի տվիչ DHT22 1. Դուք կարող եք գտնել փաստաթուղթը, որը ցույց է տալիս նկարագրությունները ՝

Քայլ 3: Միացրեք շղթան

Միացրեք շրջանը
Միացրեք շրջանը

DHT22 սենսորը սերիական տվյալներ է ուղարկում 2 -րդ կապին: Այսպիսով, ձախից միացրեք երկրորդ քորոցը, «SDA» կապը պետք է միացված լինի 2 -րդ կապին:

SSH1106 ցուցադրման համար այն օգտագործում է անալոգային քորոց փոխանցելու համար: Էկրանի սխեման լինելու է «SCL» կապը Arduino- ի «A5» և «SDA» կապում ՝ Arduino- ի «A4» - ի համար: Մինչ պիքսելային դիրքի տվյալները անընդհատ փոխանցվում են, ծրագրում ցուցադրման գործառույթը գործարկում է հրամանը միայն ամեն անգամ, երբ սենսորից տվյալները կարդում է:

Ինչպես սենսորը, այնպես էլ էկրանը կարող են օգտագործել 3.3 Վ լարման հզորությունը Arduino- ն որպես DC հոսանքի աղբյուր: Սնուցման համար մենք պետք է միացնենք երկու «VCC» կապումներն Arduino- ի «3.3V» - ին: Իսկ «GND» կապումներն ուղղակի կարելի է միացնել Arduino- ի տախտակի «GND» քորոցին:

Օգտագործեք USB A- ից B մալուխը, Arudino- ն միացրեք համակարգչին:

Քայլ 4: Պատրաստվեք կազմելու համար

«u8glib» ՝ SSL1106 էկրանի համար ՝ Olikraus- ից:

«DHT տվիչների գրադարան» ՝ Adafruit- ի DHT22 տվիչի համար: Դուք պետք է ներբեռնեք երկու գրադարան ՝ DHT22 տվիչների գրադարան ՝

U8glib:

Եվ IDE- ում օգտագործեք «կառավարել գրադարանը» `դրանք չփակված դարձնելու համար: Գրադարանների կառավարման առցանց հրահանգ ՝

Քայլ 5. DHT22 սենսորային սերիայի նավահանգստի փորձարկման կոդ

Փորձարկման գործակից DHT22 սենսորային սերիայի նավահանգստի համար (որը գտնվում է DHT22 գրադարանի ներսում >> օրինակներ).

(Դուք կարող եք բաց թողնել այս հատվածը):

Պարզապես DHT22 սենսորը փորձարկելու համար տվյալները սովորաբար կարդում են:

#ներառում

#ներառում

#ներառում

#ներառում

#ներառում

#սահմանեք DHTPIN 2 -ը

#սահմանեք DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

Serial.begin (9600);

Serial.println (F ("DHT22 թեստ!"));

dht.begin ();

}

դատարկ շրջան () {

// Չափումների միջև սպասեք մի քանի վայրկյան:

ուշացում (2000);

// Ընթերցանության ջերմաստիճանը կամ խոնավությունը տևում է մոտ 250 միլիվայրկյան:

// Սենսորների ընթերցումները կարող են նաև լինել մինչև 2 վայրկյան «հին» (դա շատ դանդաղ սենսոր է)

բոց h = dht.readHumidity ();

// Կարդացեք ջերմաստիճանը որպես Celsius (կանխադրված)

float t = dht.readTemperature ();

// Կարդացեք ջերմաստիճանը որպես Ֆարենհայտ (isFahrenheit = true)

float f = dht.readTemperature (ճշմարիտ);

// Ստուգեք, եթե որևէ ընթերցում ձախողվեց և շուտ դուրս եկեք (նորից փորձելու համար):

եթե (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F («Չհաջողվեց կարդալ DHT սենսորից»));

վերադարձ;

}

// Ֆարենհեյթում հաշվարկել ջերմության ինդեքսը (կանխադրված)

float hif = dht.computeHeatIndex (f, h);

// heatելսիուսի ջերմաստիճանի հաշվարկ (isFahreheit = false)

float hic = dht.computeHeatIndex (t, h, false);

Serial.print (F ("Խոնավություն"));

Serial.print (h);

Serial.print (F ("% peratերմաստիճանը."));

Serial.print (t);

Serial.print (F ("° C"));

Serial.print (f);

Serial.print (F ("° F atերմության ինդեքս."));

Serial.print (այստեղ);

Serial.print (F ("° C"));

Serial.print (hif);

Serial.println (F ("° F"));

}

// ilingրագիրը կազմելուց հետո կտտացրեք TOOLS >> SERIAL MONITOR ՝ տվյալները ստուգելու համար:

// Թեստավորման ծրագրի ավարտը:

Քայլ 6: Codeրագրի ծածկագիր

#ներառում

#ներառում

#ներառում

#ներառում

#ներառում

#սահմանեք DHTPIN 2 -ը

#սահմանեք DHTTYPE DHT22

#ներառել «U8glib.h»

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT սենսոր (DHTPIN, DHTTYPE);

դատարկ վիճակահանություն (անվավեր) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// Կարդացեք ջերմաստիճանը որպես Celsius (կանխադրված)

float t = sensor.readTemperature ();

// Ստուգեք, եթե որևէ ընթերցում ձախողվեց և շուտ դուրս եկեք (նորից փորձելու համար):

եթե (isnan (h) || isnan (t)) {

u8g.print («Սխալ»);

համար (;;);

վերադարձ;

}

u8g.setPrintPos (4, 10);

u8g.print ("Temերմաստիճանը (C):");

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Խոնավություն (%):");

u8g.setPrintPos (4, 55);

u8g. տպագիր (ժ);

}

դատարկ կարգավորում (դատարկ) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

դատարկ շրջան (դատարկ) {

// նկարի հանգույց

u8g.firstPage ();

անել {

նկարել ();

} while (u8g.nextPage ());

// վերականգնել պատկերը որոշ ուշացումներից հետո (2000);

}

// Հիմնական ծրագրի ավարտը:

Քայլ 7: Նկարագրություն

Նկարագրություն
Նկարագրություն

Այնուհետև գործարկեք կապի սխեման Arduino տախտակի համար: Քանի որ սենսորային գրադարանը պահանջում է տվյալներ ՝ օբյեկտը հայտարարելու համար:

Եվ դուք կարող եք ստուգել տվիչի տվյալները `վերահսկելով ելքային տվյալները թվային 2 -րդ կապի միջոցով` օգտագործելով «Serial.print ()» գործառույթը: Քանի որ տվյալների փոխանցման հաճախականությունը մոտավորապես 1 ընթերցում է յուրաքանչյուր 2 վայրկյանը մեկ (ինչը 0.5 Հց է), երբ ծրագրավորված է Arduino IDE- ով, մենք պետք է օղակի գործառույթի ներսում ուշացումը սահմանենք ավելի քան 2 վայրկյան: Այսպիսով, օղակի գործառույթի ներսում կա «հետաձգում (2000)»: Սա ապահովում է, որ տվյալները հաճախակի թարմացվեն: «Ոչ ոքի» գործառույթում ստացեք տվյալները սերիական տվյալների պորտից և դրանք դրեք լողացող թվերի վրա ՝ օգտագործելով «readHumidity» և «readTemperature» գործառույթները:

Տպեք խոնավությունը և ջերմաստիճանը ՝ օգտագործելով «u8glib» ֆայլում տպման գործառույթը: Դուք կարող եք հարմարեցնել դիրքը ՝ փոխելով «setPrintPos» գործառույթի համարը: Տպման գործառույթը կարող է ուղղակիորեն ցույց տալ տեքստը և թվերը:

Սարքաշարը կարգավորելու համար սերիական նավահանգստին տվեք 10 վայրկյան ուշացում: Այնուհետև զանգահարեք սենսորի մեկնարկի գործառույթը: Ըստ իմ սխեմայի, իմ էկրանը գլխիվայր էր: Այսպիսով, ես ներառեցի նաև «setRot180» գործառույթը ՝ էկրանը պտտելու համար:

Arduino տախտակի հանգույցի գործառույթը հիմնական գործառույթն է: Այն անընդհատ կանչում է վիճակահանության գործառույթը ՝ տեքստը և տվյալները ցուցադրելու համար ամեն անգամ, երբ սենսորը թարմացվում է:

Էկրանի տեսքն այսպիսին է.

Դուք կարող եք անջատել Arduino UNO- ն ձեր համակարգչից և միացնել այն ՝ օգտագործելով 5V DC հոսանքի ադապտեր, որը միանում է դրա 2.1 մմ հզորության վարդակին: Այն պահում է ծրագիրը իր սկավառակի ներսում և կարող է շարունակաբար գործարկել ծրագիրը սնուցվելուց հետո:

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