Სარჩევი:

ამინდის სადგური Arduino UNO– ს გამოყენებით: 7 ნაბიჯი
ამინდის სადგური Arduino UNO– ს გამოყენებით: 7 ნაბიჯი

ვიდეო: ამინდის სადგური Arduino UNO– ს გამოყენებით: 7 ნაბიჯი

ვიდეო: ამინდის სადგური Arduino UNO– ს გამოყენებით: 7 ნაბიჯი
ვიდეო: #7 ESP8266 Modbus RTU & OP320 HMI პანელის დაპროგრამება 2024, ნოემბერი
Anonim
ამინდის სადგური Arduino UNO– ს გამოყენებით
ამინდის სადგური Arduino UNO– ს გამოყენებით

შემქმნელი: Hazel Yang

ეს პროექტი არის ამინდის სადგური, რომელიც იყენებს 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 სენსორი აგზავნის სერიულ მონაცემებს pin 2. ასე რომ, დააკავშირეთ მეორე პინი მარცხნიდან, "SDA" პინი უნდა იყოს დაკავშირებული პინ 2 -თან.

SSH1106 დისპლეისთვის ის იყენებს ანალოგურ პინს გადასაცემად. ეკრანის სქემა იქნება "SCL" პინი Arduino- ს "A5" და "SDA" pin Arduino- ს "A4". მიუხედავად იმისა, რომ პიქსელის პოზიციის მონაცემები განუწყვეტლივ გადადის, პროგრამის ჩვენების ფუნქცია იწვევს მხოლოდ ბრძანებას ყოველ ჯერზე, როდესაც ის კითხულობს მონაცემებს სენსორიდან.

სენსორს და ეკრანს შეუძლიათ გამოიყენონ 3.3V არდუინოს ჩართვისთვის, როგორც DC დენის შეყვანა. ძალაუფლებისთვის, ჩვენ უნდა დავუკავშიროთ ორივე "VCC" ქინძი არდუინოს "3.3V" - ს. და "GND" ქინძისთავები შეიძლება უბრალოდ იყოს დაკავშირებული Arduino დაფაზე არსებულ "GND" პინთან.

გამოიყენეთ USB A to B კაბელი, დაუკავშირეთ Arudino კომპიუტერს.

ნაბიჯი 4: მომზადება შედგენისთვის

"u8glib" SSH1106 ეკრანისთვის Olikraus– დან.

"DHT სენსორების ბიბლიოთეკა" DHT22 სენსორისთვის Adafruit– დან. თქვენ უნდა გადმოწეროთ ორი ბიბლიოთეკა: DHT22 სენსორული ბიბლიოთეკა:

U8glib:

და გამოიყენეთ "მართეთ ბიბლიოთეკა" IDE- ში, რათა მათ გახსნათ ფაილი. ბიბლიოთეკების მართვის ონლაინ ინსტრუქცია:

ნაბიჯი 5: ტესტი კოდი DHT22 სენსორის სერიული პორტისთვის

სატესტო კოეფიციენტი DHT22 სენსორის სერიული პორტისთვის (რომელიც არის DHT22 ბიბლიოთეკაში >> მაგალითები):

(შეგიძლიათ გამოტოვოთ ეს ნაწილი.)

ეს მხოლოდ DHT22 სენსორის შესამოწმებლად მონაცემებს ნორმალურად კითხულობს

#ჩართეთ

#ჩართეთ

#ჩართეთ

#ჩართეთ

#ჩართეთ

#განსაზღვრეთ DHTPIN 2

#განსაზღვრეთ DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup () {

სერიული.დაწყება (9600);

Serial.println (F ("DHT22 ტესტი!"));

dht. დაწყება ();

}

ბათილი მარყუჟი () {

// დაელოდეთ რამდენიმე წამს გაზომვებს შორის.

დაგვიანება (2000);

// კითხვის ტემპერატურა ან ტენიანობა დაახლოებით 250 მილიწამს იღებს!

// სენსორული მაჩვენებლები შეიძლება იყოს 2 წამამდე ძველი (ეს არის ძალიან ნელი სენსორი)

float h = dht.readHumidity ();

// ტემპერატურის ცელსიუსით წაკითხვა (ნაგულისხმევი)

float t = dht.readTemperature ();

// წაიკითხეთ ტემპერატურა ფარენჰეიტზე (isFahrenheit = true)

float f = dht.readTemperature (ჭეშმარიტი);

// შეამოწმეთ თუ წაკითხული ვერ მოხერხდა და გამოდით ადრე (ხელახლა ცდა).

თუ (ისნანი (თ) || ისნანი (t) || ისნანი (ვ)) {

Serial.println (F ("DHT სენსორიდან წაკითხვა ვერ მოხერხდა!"));

დაბრუნების;

}

// გამოთვალეთ სითბოს ინდექსი ფარენჰეიტში (ნაგულისხმევი)

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

// გამოთვალეთ სითბოს ინდექსი ცელსიუსში (isFahreheit = false)

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

Serial.print (F ("ტენიანობა:"));

სერიული. ბეჭდვა (თ);

Serial.print (F ("% ტემპერატურა:"));

სერიული. ბეჭდვა (t);

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

სერიული. ბეჭდვა (ვ);

Serial.print (F ("° F სითბოს ინდექსი:"));

სერიული. ბეჭდვა (hic);

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

სერიული. ბეჭდვა (hif);

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

}

// პროგრამის შედგენის შემდეგ დააწკაპუნეთ TOOLS >> SERIAL MONITOR მონაცემების შესამოწმებლად.

// ტესტირების პროგრამის დასრულება.

ნაბიჯი 6: პროექტის კოდი

#ჩართეთ

#ჩართეთ

#ჩართეთ

#ჩართეთ

#ჩართეთ

#განსაზღვრეთ 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 ();

// ტემპერატურის კითხვა ცელსიუსით (ნაგულისხმევი)

float t = sensor.readTemperature ();

// შეამოწმეთ თუ წაკითხული ვერ მოხერხდა და გამოდით ადრე (ხელახლა ცდა).

თუ (ისნანი (თ) || ისნანი (ტ)) {

u8g.print ("შეცდომა.");

for (;;);

დაბრუნების;

}

u8g.setPrintPos (4, 10);

u8g.print ("ტემპერატურა (C):");

u8g.setPrintPos (4, 25);

u8g. ბეჭდვა (t);

u8g.setPrintPos (4, 40);

u8g.print ("ტენიანობა (%):");

u8g.setPrintPos (4, 55);

u8g. ბეჭდვა (თ);

}

void setup (void) {

u8g.setRot180 ();

სერიული.დაწყება (9600);

სენსორი.დაწყება ();

}

ბათილი მარყუჟი (ბათილი) {

// სურათის მარყუჟი

u8g.firstPage ();

კეთება {

დახაზვა ();

} while (u8g.nextPage ());

// სურათის აღდგენა გარკვეული შეფერხების შემდეგ (2000);

}

// ძირითადი პროგრამის დასრულება.

ნაბიჯი 7: აღწერა

აღწერა
აღწერა

შემდეგ, ინიციალიზაცია მოახდინეთ pin სქემისათვის 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 მმ დენის ჯეკს. ის ინახავს პროგრამას თავის დისკზე და შეუძლია გააგრძელოს პროგრამა კვლავ ჩართვის შემდეგ.

გირჩევთ: