สารบัญ:

Arduino อุณหภูมิและความชื้นเซนเซอร์: 7 ขั้นตอน
Arduino อุณหภูมิและความชื้นเซนเซอร์: 7 ขั้นตอน

วีดีโอ: Arduino อุณหภูมิและความชื้นเซนเซอร์: 7 ขั้นตอน

วีดีโอ: Arduino อุณหภูมิและความชื้นเซนเซอร์: 7 ขั้นตอน
วีดีโอ: สอนวิธีใช้ Arduino AHT20 เซนเซอร์วัดอุณหภูมิและความชื้น Arduino ESP8266 ESP32 จบในคลิปเดียว 2024, พฤศจิกายน
Anonim

โดย Thundertronics ติดตามเพิ่มเติมโดยผู้เขียน:

PIC16F877A ตัวแปลงอนาล็อกเป็นดิจิตอล (ADC)
PIC16F877A ตัวแปลงอนาล็อกเป็นดิจิตอล (ADC)
PIC16F877A ตัวแปลงอนาล็อกเป็นดิจิตอล (ADC)
PIC16F877A ตัวแปลงอนาล็อกเป็นดิจิตอล (ADC)
อินเทอร์เฟซ LCD พร้อมไมโครคอนโทรลเลอร์ PIC16F877A
อินเทอร์เฟซ LCD พร้อมไมโครคอนโทรลเลอร์ PIC16F877A
อินเทอร์เฟซ LCD พร้อมไมโครคอนโทรลเลอร์ PIC16F877A
อินเทอร์เฟซ LCD พร้อมไมโครคอนโทรลเลอร์ PIC16F877A
DIY พาวเวอร์ซัพพลายแบบตั้งโต๊ะแบบโมดูลาร์
DIY พาวเวอร์ซัพพลายแบบตั้งโต๊ะแบบโมดูลาร์
DIY พาวเวอร์ซัพพลายแบบตั้งโต๊ะแบบโมดูลาร์
DIY พาวเวอร์ซัพพลายแบบตั้งโต๊ะแบบโมดูลาร์

ในบทช่วยสอนนี้ ฉันจะอธิบายการสร้างเซ็นเซอร์อุณหภูมิและความชื้นโดยใช้บอร์ด Arduino pro mini พร้อมเซ็นเซอร์ DHT11 (หรือ DHT22)

ขั้นตอนที่ 1: ดูวิดีโอ

สิ่งสำคัญคือต้องดูวิดีโอก่อนที่จะไปยังขั้นตอนถัดไป วิดีโออธิบายทุกอย่างและสาธิตวิธีการทำ อย่างไรก็ตาม ในบทความนี้ ผมจะเขียนข้อมูลทางเทคนิคและรายละเอียดเพิ่มเติม

www.youtube.com/watch?v=56LKl7Xd770

ขั้นตอนที่ 2: ชิ้นส่วนที่จำเป็น

ส่วนที่จำเป็นสำหรับโครงการนี้คือ:

1- Arduino pro mini board (หรือ Arduino ใด ๆ)

2- DHT11 เซ็นเซอร์อุณหภูมิและความชื้น (หรือ DHT22)

3- 16x2 จอ LCD.

4- โครงที่คุณเลือก โดยควรเป็นแบบเดียวกับที่ใช้ในวิดีโอ

5- 10K โพเทนชิออมิเตอร์

6- ขั้วสกรู.

7- ตัวต้านทานที่มีค่าต่างกัน.

แบตเตอรี่ 8-9v.

ในขณะที่เครื่องมือที่จำเป็นคือ:

1- สว่านมือเหมือนเดรมิล

2- บิตที่แตกต่างกันสำหรับสว่านเนื่องจากเราจะใช้บิตเรียบและบิตตัด

3- ช่วยมือ.

บวกกับเครื่องมืออิเล็กทรอนิกส์ทั่วไป เช่น มัลติมิเตอร์ และอื่นๆ

ขั้นตอนที่ 3: การออกแบบแผนผัง

การออกแบบแผนผัง
การออกแบบแผนผัง

ในโครงการนี้ ฉันได้เลือกทำ PCB แทนการเดินสายด้วยตัวเอง ดังนั้นฉันจึงใช้เครื่องมือออนไลน์ EasyEDA สำหรับงานซึ่งเป็นประสบการณ์ที่ดี

นี่คือหน้าของโครงการที่เว็บไซต์ easyEDA:

คำอธิบายของแผนผังมีดังนี้:

1- ฉันใช้อแดปเตอร์ ICSP 6 พินเพื่อตั้งโปรแกรม Arduino pro mini เนื่องจากไม่ได้มาพร้อมกับออนบอร์ด มันคือ J2 ที่แผนผัง

2- R2 คือ 100 Ohms และตั้งค่าความสว่างของ LCD โดยพื้นฐานแล้ว คุณสามารถใส่ความต้านทานได้มากกว่า 100R หากคุณต้องการให้ไฟหลังจอ LCD หรี่ลง หรือดีกว่านั้น ให้ใช้โพเทนชิออมิเตอร์เพื่อทำหน้าที่เป็นตัวต้านทานแบบอนุกรมตัวแปร

3- JP1 เป็นเพียงตัวเชื่อมต่อที่มี PCB ที่ดี ฉันไม่เคยใส่ขั้วจริง แต่บัดกรีสายไฟแทน ทำตามที่คุณต้องการ

4- U2 เป็นขั้วต่อแบตเตอรี่ ที่นี่ ฉันชอบขั้วสกรูที่ดีเพื่อการเชื่อมต่อที่แน่นหนา คุณสามารถบัดกรีสายไฟได้ แต่ต้องแน่ใจว่าได้ใส่บัดกรีให้เพียงพอเพื่อให้การเชื่อมต่อแน่นพอที่จะทนต่อการสั่นไหว

5- LCD1 เป็นส่วนประกอบ LCD ใน easyEDA มีการเชื่อมต่อพื้นฐานกับ Arduino pro mini ตรวจสอบให้แน่ใจว่าหมุดที่นี่เหมือนกับหมุดในซอฟต์แวร์

6- RV1 เป็นโพเทนชิออมิเตอร์ 10K เพื่อตั้งค่าคอนทราสต์ LCD ควรใช้เพียงครั้งเดียวและเมื่อคุณเปิดเครื่อง LCD เป็นครั้งแรก

ขั้นตอนที่ 4: การออกแบบ PCB

การออกแบบ PCB
การออกแบบ PCB
การออกแบบ PCB
การออกแบบ PCB

หลังจากเสร็จสิ้นการออกแบบแผนผังและเข้าใจความหมายทั้งหมดแล้ว ก็ถึงเวลาสร้าง PCB สำหรับมัน

คุณควรกด "แปลงเป็น PCB" ใน EasyEDA เพื่อสร้าง PCB ในตัวแก้ไข PCB จากนั้นเริ่มวางชิ้นส่วนและทำการกำหนดเส้นทางตามปกติ ฉันขอแนะนำว่าอย่าใช้เราเตอร์อัตโนมัติ

ฉันใช้จุดแวะจำนวนมากเพื่อย้ายจากชั้นบนลงล่างเนื่องจากพื้นที่มีน้อย

ขั้นตอนที่ 5: สร้าง PCB

ตอนนี้การออกแบบ PCB เสร็จสิ้นแล้ว เราตรวจสอบทุกอย่างแล้วและไม่พบปัญหาใด ๆ เราจำเป็นต้องส่งไฟล์การออกแบบ (ดอกเกอร์เบอร์) ไปยังบริษัทผลิต PCB ที่เราเลือก เพื่อให้มันทำแทนเราได้

บริษัทที่ฉันเลือกคือ JLCPCB พวกเขาดีที่สุดสำหรับโครงการดังกล่าวและการสร้างต้นแบบและเสนอราคาเพียง 2 $ สำหรับการออกแบบของคุณทั้ง 10 ชิ้น!

ตอนนี้เราคลิก (….) และเลือก JLCPCB เราถูกนำไปยังเว็บไซต์ JLCPCB เนื่องจากเป็นพันธมิตรกับ EasyEDA ตอนนี้กรอกทุกอย่างแล้วสั่งซื้อ ตอนนี้รอจนกว่า PCB จะมาถึง

เป็นมูลค่าการกล่าวขวัญว่า JLCPCB ไม่เพียงแต่มี EasyEDA ที่เกี่ยวข้องเท่านั้น แต่ยังมีร้านค้าส่วนประกอบขนาดใหญ่อีกด้วย! ประโยชน์ที่ได้รับคือการได้รับทั้งคำสั่งซื้อ PCB และส่วนประกอบที่จัดส่งพร้อมกัน! ได้ ไม่จำเป็นต้องรอให้ 2 แพ็คเกจมาถึงแยกกัน แต่มารวมกันเป็นแพ็คเกจเดียวแทน ฉันขอแนะนำให้ใช้สิ่งนี้

ขั้นตอนที่ 6: การประกอบ

เรามี PCB เพียงอย่างเดียวพร้อมทุกอย่างแล้ว ถึงเวลาที่จะรวบรวมทุกอย่างเข้าด้วยกัน

ขั้นแรก เราต้องประสานอุปกรณ์อิเล็กทรอนิกส์ตามแผนผัง เป็นเรื่องง่ายสำหรับโครงการนี้

หลังจากบัดกรีเสร็จแล้ว ให้ตัดรูที่จำเป็นในโครงพลาสติก จากนั้นยึด PCB กับส่วนประกอบอื่นๆ ภายในด้วยปืนกาวร้อน

ตอนนี้คุณควรใช้โพเทนชิออมิเตอร์เพื่อปรับความคมชัดของ LCD ในขณะที่เลือกวาล์วตัวต้านทานที่จำเป็นสำหรับความสว่าง ฉันเลือก 100R

ขั้นตอนที่ 7: รหัส

โค้ดสำหรับโครงการนี้แนบมากับขั้นตอนนี้ โดยมีคำอธิบายดังนี้

// รวมรหัสไลบรารี:#include #include "DHT.h" // ตั้งค่า DHT Pin #define DHTPIN 2

รวมไลบรารีที่จำเป็นและกำหนดพิน 2 ของ Arduino pro mini เป็นพินข้อมูลสำหรับเซ็นเซอร์ อย่าลืมติดตั้งไลบรารีเหล่านี้หากคุณไม่มี

// เริ่มต้นไลบรารีด้วยหมายเลขของพินอินเทอร์เฟซ LiquidCrystal lcd (9, 8, 7, 6, 5, 4); #define DHTTYPE DHT11 DHT dht (DHTPIN, DHTTYPE);

ตอนนี้เริ่มต้นไลบรารี LCD ด้วยหมุดเหล่านี้ตามแผนผังเอง ใช้ไลบรารี DHT และเลือก DHT11 เป็นเซ็นเซอร์ที่จะใช้ ดังนั้นหากคุณมี DHT22 คุณควรเปลี่ยน

บรรทัดสุดท้ายบอกว่าเรามีเซ็นเซอร์ DHT11 และพินข้อมูลอยู่ที่พิน "DHTPIN" ซึ่งเป็นพิน 2 ตามที่เรากำหนดไว้ก่อนหน้านี้

การตั้งค่าเป็นโมฆะ () {// ตั้งค่าจำนวนคอลัมน์และแถวของ LCD: lcd.begin (16, 2); dht.begin(); lcd.setCursor(0, 0); lcd.print("อุณหภูมิและ"); lcd.setCursor(0, 1); lcd.print("เซ็นเซอร์ความชื้น"); ล่าช้า (3000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("THUNDERTRONICS"); lcd.setCursor(0, 1); lcd.print("ฮอสซัม โมกราบี"); ล่าช้า (3000); }

ตอนนี้เป็นเวลาตั้งค่า! และนี่คือสิ่งที่เกิดขึ้น:

LCD เป็นแบบ 16 คูณ 2

เริ่มคำสั่ง DHT เพื่อรับค่า

พิมพ์ "เซ็นเซอร์อุณหภูมิและความชื้น" บน 2 บรรทัด

หน่วงเวลา 3 วินาที

ล้างจอแสดงผล

พิมพ์ "THUNDERTRONICS" ที่บรรทัดแรก แล้วพิมพ์ "Hossam Moghrabi" ที่บรรทัดที่ 2

หน่วงเวลา 3 วินาที

^ฉันได้ทำสิ่งนี้เป็นหน้าจอต้อนรับซึ่งใช้เวลาประมาณ 6 วินาทีหรือมากกว่านั้นก่อนที่จะแสดงค่า

วงเป็นโมฆะ () { // อ่านความชื้น int h = dht.readHumidity (); // อ่านอุณหภูมิใน c int t = dht.readTemperature(); ถ้า (isnan (h) || isnan (t)) { lcd.print ("ข้อผิดพลาด"); กลับ; }

ตอนนี้เราอยู่ในวงจรนิรันดร์ของเราซึ่งจะวนซ้ำไปซ้ำมา

จัดเก็บการอ่านค่าความชื้นภายในตัวแปร "h" และการอ่านค่าอุณหภูมิภายในตัวแปร "t"

ต่อไปเรามีคำสั่ง if โดยทั่วไปจะส่งคืนข้อความแสดงข้อผิดพลาดเมื่อมีข้อผิดพลาด ทิ้งไว้โดยไม่เปลี่ยน

ตอนนี้เรามีค่าทั้งหมดที่เราต้องการแล้ว

lcd.setCursor(0, 0); lcd.print("อุณหภูมิ = "); lcd.print(t); lcd.print(" "); lcd.print((ถ่าน)223); lcd.print ("C"); lcd.setCursor(0, 1); lcd.print("ความชื้น = "); lcd.print(h); lcd.print (" %"); // lcd.print("Hossam Moghrabi"); ล่าช้า (2000);

สุดท้าย เราแสดงค่าเหล่านี้บนจอ LCD คุณสามารถเปลี่ยนได้ตามที่คุณต้องการ เนื่องจากเป็นเพียงการพิมพ์ค่าภายในตัวแปร "h" และ "t" การหน่วงเวลา 2 วินาทีนั้นเป็นทางเลือก แต่คุณจะไม่ได้รับประโยชน์มากนักจากการทำให้เร็วขึ้น เนื่องจากตัวเซ็นเซอร์เองไม่ได้เร็วขนาดนั้น และถึงแม้จะเป็นเช่นนั้น ค่าทางกายภาพก็ไม่เคยเปลี่ยนแปลงเร็วขนาดนั้น ดังนั้น 2 วินาทีจึงเร็วมากสำหรับงาน!

อย่างนั้นแหละ!

แนะนำ: