สารบัญ:

สถานีตรวจอากาศโดยใช้ Arduino UNO: 7 ขั้นตอน
สถานีตรวจอากาศโดยใช้ Arduino UNO: 7 ขั้นตอน

วีดีโอ: สถานีตรวจอากาศโดยใช้ Arduino UNO: 7 ขั้นตอน

วีดีโอ: สถานีตรวจอากาศโดยใช้ Arduino UNO: 7 ขั้นตอน
วีดีโอ: Arduino ESP8266 BLYNK IOT - ทดลอง Sensor DHT22/DHT11 วัดอุณหภูมิ และ ความชื้นในอากาศ 2024, กรกฎาคม
Anonim
สถานีตรวจอากาศโดยใช้ Arduino UNO
สถานีตรวจอากาศโดยใช้ Arduino UNO

สร้างโดย: Hazel Yang

โครงการนี้เป็นสถานีตรวจอากาศที่ใช้บอร์ด Arduino UNO เพื่อควบคุมการไหลของข้อมูล เซ็นเซอร์ DHT22 เพื่อรวบรวมข้อมูล และหน้าจอ OLED เพื่อแสดงข้อมูล

ขั้นตอนที่ 1: รายการสินค้า

รายการสินค้า
รายการสินค้า

1. หน้าจอ: OLED, 1.3 Display SH1106, I2C สีขาว ---- PID: 18283

2. เซนเซอร์: เซนเซอร์ความชื้นและอุณหภูมิแบบดิจิตอล DHT22 ---- PID: 7375

3. การเชื่อมต่อ: สายจัมเปอร์ ---- 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

หรือคุณสามารถใช้สิ่งนี้เพื่อจ่ายไฟให้กับบอร์ด: อะแดปเตอร์ AC/DC 5V 2A ---- PID: 10817

ขั้นตอนที่ 2: การแนะนำแบบสัมพัทธ์

แนะนำญาติ
แนะนำญาติ
แนะนำญาติ
แนะนำญาติ

บทนำของหน้าจอ: 1.3 OLED Display White

1. คุณสามารถค้นหาเอกสารที่แสดงการตั้งค่าพื้นฐานและคำอธิบาย:

การแนะนำเซ็นเซอร์: เซ็นเซอร์ความชื้นและอุณหภูมิ DHT22 1. คุณสามารถค้นหาเอกสารที่แสดงคำอธิบาย:

ขั้นตอนที่ 3: เชื่อมต่อวงจร

ต่อวงจร
ต่อวงจร

เซ็นเซอร์ DHT22 จะส่งข้อมูลอนุกรมไปที่พิน 2 ดังนั้น ต่อพินที่สองจากซ้าย พิน "SDA" ควรเชื่อมต่อกับพิน 2

สำหรับจอแสดงผล SSH1106 จะใช้พินอะนาล็อกในการส่งสัญญาณ วงจรของหน้าจอจะเป็นพิน "SCL" กับพิน "A5" ของ Arduino และพิน "SDA" ของ Arduino กับ "A4" ของ Arduino ในขณะที่ข้อมูลตำแหน่งพิกเซลกำลังส่งอย่างต่อเนื่อง ฟังก์ชันการแสดงผลในโปรแกรมจะทริกเกอร์คำสั่งเพียงครั้งเดียวทุกครั้งที่อ่านข้อมูลจากเซ็นเซอร์

ทั้งเซ็นเซอร์และหน้าจอสามารถใช้ 3.3V เพื่อจ่ายไฟให้กับ Arduino เป็นอินพุตไฟ DC ในการจ่ายไฟ เราต้องเชื่อมต่อทั้งพิน "VCC" กับ "3.3V" ของ Arduino และหมุด "GND" สามารถเชื่อมต่อกับพิน "GND" บนบอร์ด Arduino ได้ง่ายๆ

ใช้สาย USB A ถึง B เชื่อมต่อ Arudino กับคอมพิวเตอร์

ขั้นตอนที่ 4: เตรียมคอมไพล์

"u8glib" สำหรับหน้าจอ SSH1106 จาก Olikraus

"ไลบรารีเซ็นเซอร์ DHT" สำหรับเซ็นเซอร์ DHT22 จาก Adafruit คุณควรดาวน์โหลดสองไลบรารี: ไลบรารีเซ็นเซอร์ DHT22:

U8glib:

และใช้ "จัดการไลบรารี" ใน IDE เพื่อคลายซิป คำแนะนำการจัดการห้องสมุดออนไลน์:

ขั้นตอนที่ 5: รหัสทดสอบสำหรับพอร์ตอนุกรมเซ็นเซอร์ DHT22

ทดสอบ coe สำหรับพอร์ตอนุกรมเซ็นเซอร์ DHT22 (ซึ่งอยู่ภายในไลบรารี DHT22>>ตัวอย่าง):

(คุณสามารถข้ามส่วนนี้ได้)

เพียงเพื่อทดสอบเซ็นเซอร์ DHT22 จะอ่านข้อมูลได้ตามปกติ

#รวม

#รวม

#รวม

#รวม

#รวม

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

การตั้งค่าเป็นโมฆะ () {

Serial.begin(9600);

Serial.println(F("DHT22 ทดสอบ!"));

dht.begin();

}

วงเป็นโมฆะ () {

// รอสักครู่ระหว่างการวัด

ล่าช้า (2000);

// อุณหภูมิหรือความชื้นในการอ่านจะใช้เวลาประมาณ 250 มิลลิวินาที!

// การอ่านค่าเซ็นเซอร์อาจเป็น 'เก่า' ได้ถึง 2 วินาที (เป็นเซ็นเซอร์ที่ช้ามาก)

ลอย h = dht.readHumidity();

// อ่านอุณหภูมิเป็นเซลเซียส (ค่าเริ่มต้น)

float t = dht.readTemperature();

// อ่านอุณหภูมิเป็นฟาเรนไฮต์ (isFahrenheit = true)

float f = dht.readTemperature(จริง);

// ตรวจสอบว่าการอ่านล้มเหลวและออกก่อนกำหนดหรือไม่ (เพื่อลองอีกครั้ง)

if (isnan(h) || isnan(t) || isnan(f)) {

Serial.println(F("ไม่สามารถอ่านจากเซ็นเซอร์ DHT!"));

กลับ;

}

// คำนวณดัชนีความร้อนในฟาเรนไฮต์ (ค่าเริ่มต้น)

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

// คำนวณดัชนีความร้อนในเซลเซียส (isFahreheit = false)

float hic = dht.computeHeatIndex(t, h, เท็จ);

Serial.print(F("ความชื้น: "));

Serial.print(h);

Serial.print(F("% อุณหภูมิ: "));

Serial.print(t);

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

Serial.print(f);

Serial.print(F("°F ดัชนีความร้อน: "));

Serial.print(hic);

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

Serial.print(hif);

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

}

// หลังจากคอมไพล์โปรแกรมแล้ว ให้คลิก TOOLS >> SERIAL MONITOR เพื่อตรวจสอบข้อมูล

// สิ้นสุดโปรแกรมการทดสอบ

ขั้นตอนที่ 6: รหัสสำหรับโครงการ

#รวม

#รวม

#รวม

#รวม

#รวม

#define DHTPIN 2

#define DHTTYPE DHT22

#รวม "U8glib.h"

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);

เซ็นเซอร์ DHT (DHTPIN, DHTTYPE);

โมฆะวาด (โมฆะ) {

u8g.setFont(u8g_font_unifont);

ลอย h = sensor.readHumidity();

// อ่านอุณหภูมิเป็นเซลเซียส (ค่าเริ่มต้น)

ลอย t = sensor.readTemperature();

// ตรวจสอบว่าการอ่านล้มเหลวและออกก่อนกำหนดหรือไม่ (เพื่อลองอีกครั้ง)

ถ้า (isnan (h) || isnan (t)) {

u8g.print("ผิดพลาด");

สำหรับ(;;);

กลับ;

}

u8g.setPrintPos(4, 10);

u8g.print("อุณหภูมิ(C):");

u8g.setPrintPos(4, 25);

u8g.print(t);

u8g.setPrintPos(4, 40);

u8g.print("ความชื้น(%):");

u8g.setPrintPos(4, 55);

u8g.print(h);

}

การตั้งค่าเป็นโมฆะ (เป็นโมฆะ) {

u8g.setRot180();

Serial.begin(9600);

sensor.begin();

}

วงโมฆะ (เป็นโมฆะ) {

// ห่วงภาพ

u8g.firstPage();

ทำ {

วาด();

} ในขณะที่ (u8g.nextPage());

// สร้างภาพใหม่หลังจากดีเลย์ล่าช้า (2000);

}

// สิ้นสุดโปรแกรมหลัก

ขั้นตอนที่ 7: คำอธิบาย

คำอธิบาย
คำอธิบาย

จากนั้นเริ่มต้นวงจรพินสำหรับบอร์ด Arduino เนื่องจากไลบรารีเซ็นเซอร์ต้องการข้อมูลเพื่อประกาศวัตถุ

และคุณสามารถทดสอบข้อมูลของเซ็นเซอร์ได้โดยการตรวจสอบข้อมูลเอาต์พุตผ่านพินดิจิทัล 2 โดยใช้ฟังก์ชันที่เรียกว่า "Serial.print()" เนื่องจากความถี่ของการส่งข้อมูลอยู่ที่ประมาณ 1 การอ่านทุกๆ 2 วินาที (ซึ่งก็คือ 0.5 Hz) เมื่อตั้งโปรแกรมไว้ใน Arduino IDE เราจึงต้องตั้งค่าการหน่วงเวลาภายในฟังก์ชันลูปให้มากกว่า 2 วินาที ดังนั้นจึงมี "delay(2000)" ภายในฟังก์ชันลูป เพื่อให้แน่ใจว่าข้อมูลจะได้รับการรีเฟรชบ่อยๆ ในฟังก์ชัน "draw" ให้ดึงข้อมูลจากพอร์ตข้อมูลอนุกรมและใส่ลงในจำนวนทศนิยมโดยใช้ฟังก์ชัน "readHumidity" และ "readTemperature"

พิมพ์ความชื้นและอุณหภูมิโดยใช้ฟังก์ชันการพิมพ์ในไฟล์ "u8glib" คุณสามารถปรับตำแหน่งโดยเปลี่ยนตัวเลขในฟังก์ชัน "setPrintPos" ฟังก์ชันการพิมพ์สามารถแสดงข้อความและตัวเลขได้โดยตรง

ในการตั้งค่าฮาร์ดแวร์ ให้รอพอร์ตอนุกรม 10 วินาที จากนั้นเรียกใช้ฟังก์ชันเริ่มต้นสำหรับเซ็นเซอร์ ตามวงจรของฉัน หน้าจอของฉันกลับด้าน ดังนั้นฉันจึงรวมฟังก์ชัน "setRot180" เพื่อหมุนจอแสดงผลด้วย

ฟังก์ชันลูปของบอร์ด Arduino เป็นฟังก์ชันหลัก มันยังคงเรียกใช้ฟังก์ชันการวาดเพื่อแสดงข้อความและข้อมูลทุกครั้งที่รีเฟรชเซ็นเซอร์

หน้าจอมีลักษณะดังนี้:

คุณสามารถถอด Arduino UNO ออกจากคอมพิวเตอร์ของคุณและจ่ายไฟโดยใช้อะแดปเตอร์จ่ายไฟ 5V DC ที่เชื่อมต่อกับแจ็คจ่ายไฟขนาด 2.1 มม. โดยจะเก็บโปรแกรมไว้ในไดรฟ์และสามารถเรียกใช้โปรแกรมได้อย่างต่อเนื่องอีกครั้งหลังจากเปิดเครื่องแล้ว

แนะนำ: