คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

เซ็นเซอร์ร่วมกับ arduino เพื่อวัดความชื้นและอุณหภูมิในอากาศ การเชื่อมต่อโมดูล DHT11 กับ Arduino การเชื่อมต่อ Arduino nano เซ็นเซอร์อุณหภูมิและความชื้น

เมื่อสร้างโครงการที่คุณต้องการทราบความชื้นและอุณหภูมิของอากาศ คุณต้องมีเซ็นเซอร์ที่เหมาะสม ด้วยการเลือกสรรมากมายในท้องตลาด ตาเบิกกว้าง และคุณไม่รู้ว่าจะเลือกอะไรดี อย่างไรก็ตาม มีเซ็นเซอร์ที่ได้รับการพิสูจน์แล้วว่าใช้งานโดยนักวิทยุสมัครเล่นหลายพันคน หนึ่งในนั้นคือ DHT11 บทความนี้จะกล่าวถึงคุณสมบัติของการเชื่อมต่อ DHT11 กับ Arduino

เกี่ยวกับเซ็นเซอร์ DHT11

เซ็นเซอร์นี้มีไฮโกรมิเตอร์และเทอร์โมมิเตอร์ ซึ่งช่วยให้สามารถทราบอุณหภูมิและความชื้นในอากาศได้:

  • สำหรับความแม่นยำของอุปกรณ์ทุกอย่างเป็นไปตามลำดับเนื่องจากราคาต่ำ เปอร์เซ็นต์ของการเบี่ยงเบนสูงสุดคือ 5% เท่านั้น
  • วัดอุณหภูมิในช่วงตั้งแต่ 0 °С ถึง +50 °С อย่างที่คุณเห็น น่าเสียดายที่คุณไม่สามารถใช้งานเซ็นเซอร์นี้ในสภาพอากาศหนาวเย็นได้
  • สำหรับไฮโกรมิเตอร์ภายใน DHT11 นั้นค่อนข้างดีเช่นกัน โดยวัดความชื้นได้ในช่วง 20 ถึง 80%
  • ความเร็วในการทำงานโดยเฉลี่ย คุณสามารถส่งได้ไม่เกิน 1 คำขอต่อวินาที มากหรือน้อยขึ้นอยู่กับโครงการ ในกรณีส่วนใหญ่ เซ็นเซอร์นี้ใช้สำหรับการฝึกอบรมหรือสำหรับโครงการขนาดเล็ก เช่น การวัดอุณหภูมิในเรือนกระจกอัตโนมัติ ไม่จำเป็นต้องวัดอุณหภูมิและความชื้นเร็วกว่า 1 ครั้งต่อวินาที ตรงกันข้าม คุณต้องดูแลเรื่องการประหยัดพลังงานเพื่อให้โครงการของคุณทำงานจากแหล่งพลังงานแบบพกพาให้ได้มากที่สุด
  • เมื่อร้องขอ DHT11 จะดึง 2.5 mA

ซื้อที่ไหน

คุณสามารถซื้ออุปกรณ์ที่อธิบายไว้ใน Aliexpress ได้ในราคาที่ต่ำมาก - เฉลี่ย 50 รูเบิล โดยพื้นฐานแล้วขายพร้อมสายไฟสำหรับเชื่อมต่อ DHT11 กับ Arduino เสมอ แต่มันก็คุ้มค่าที่จะซื้อเซ็นเซอร์จากผู้ขายที่เชื่อถือได้ซึ่งมีบทวิจารณ์ในเชิงบวกเท่านั้น เนื่องจากอุปกรณ์ทำงานไม่ถูกต้อง

โดยวิธีการที่ไม่ได้ใช้การเชื่อมต่อ DHT11 กับ Arduino ด้วยอินพุตแบบอะนาล็อกเนื่องจากเซ็นเซอร์ได้รับการออกแบบในลักษณะที่แปลงค่าจากอะนาล็อกเป็นดิจิตอลเพื่อให้สะดวกในการทำงาน

ทำงานร่วมกับ DHT11

เซ็นเซอร์จำหน่ายใน 2 รุ่น:

  1. เซ็นเซอร์บริสุทธิ์ เมื่อซื้อเวอร์ชันนี้ คุณจะต้องเชื่อมต่อผ่านตัวต้านทาน ซึ่งทำให้เกิดความไม่สะดวกระหว่างการใช้งาน มี 4 พิน แต่ใช้เพียง 3 พินเท่านั้น
  2. โมดูล. มีหน้าสัมผัส 3 ตัวบนโมดูล ไม่จำเป็นต้องใช้ตัวต้านทานเมื่อทำการเชื่อมต่อ เนื่องจากมีอยู่แล้วในโมดูล ควรใช้ตัวเลือกนี้เนื่องจากราคาไม่แตกต่างกันและสะดวกกว่าในการทำงานกับโมดูล

ดังที่ได้กล่าวไปแล้ว เซ็นเซอร์มีหน้าสัมผัส 3 จุด: กราวด์, กำลังไฟ, ลอจิก (เอาต์พุตข้อมูล) ในการทำงานและเชื่อมต่อ DHT11 กับ Arduino คุณต้อง:

  • ติดตั้งไลบรารีที่อนุญาตให้คุณดำเนินการกับเซ็นเซอร์นี้ คุณสามารถดาวน์โหลดได้ทางอินเทอร์เน็ตและในการติดตั้ง คุณต้องถ่ายโอนเนื้อหาของไฟล์เก็บถาวรไปยังโฟลเดอร์ Libraries ในโฟลเดอร์รากของ Arduino
  • เราเชื่อมต่อพลังงานกับ 5V ใน Arduino, GND-กราวด์และพินที่สาม - เอาต์พุตข้อมูล - เราเชื่อมต่อกับพินดิจิทัลใน Arduino เช่น 2
  • หลังจากเชื่อมต่อ DHT11 กับ Arduino แล้ว คุณต้องอัปโหลดโค้ดโปรแกรมไปยังบอร์ด ตัวอย่างโค้ด:
#include "DHT.h" #define DHTPIN 2 // จำนวนพินที่เซ็นเซอร์เชื่อมต่อ // เริ่มต้นเซ็นเซอร์ DHT dht(DHTPIN, DHT11); void setup() ( Serial.begin(9600); dht.begin(); ) void loop() ( // Delay 2 วินาทีระหว่างการอ่าน delays(2000); //Read moisture float h = dht.readHumidity(); //Read temperature float t = dht.readTemperature(); //ตรวจสอบว่าการอ่านสำเร็จหรือไม่ if (isnan(h) || isnan(t)) ( Serial.println("ไม่สามารถอ่านค่าที่อ่านได้"); return; ) Serial.print("ความชื้น: "+h+" %\t"+"อุณหภูมิ: "+t+" *C "); )

รหัสทำอะไร:

  • ก่อนอื่น เราเชื่อมต่อไลบรารีเพื่อทำงานร่วมกับ Arduino
  • ต่อไปเราจะกำหนดหน้าสัมผัสที่เชื่อมต่อ DHT11 และบอกโปรแกรมว่าเซ็นเซอร์ตัวใดและหน้าสัมผัสใดอยู่
  • เราเริ่มอ่านค่าเพื่อดูว่าการอ่านนั้นสำเร็จหรือไม่ หากไม่มีปัญหาใดๆ พอร์ตมอนิเตอร์จะแสดงการอ่านค่าความชื้นและอุณหภูมิที่เซ็นเซอร์คำนวณไว้

แสดงผล

การส่งออกไปยังมอนิเตอร์พอร์ตนั้นไม่น่าสนใจ ลองพิจารณาการเชื่อมต่อ DHT11 กับ Arduino ด้วยเอาต์พุตไปยัง LCD 1602 I2C

นี่คือจอแสดงผลขนาดเล็กที่มีบอร์ด I2C เพื่อให้ทำงานได้สะดวกยิ่งขึ้น จอแสดงผลยังต้องการไลบรารีที่สามารถดาวน์โหลดได้จากอินเทอร์เน็ต

I2C เชื่อมต่อกับ Arduino ดังนี้: กราวด์และพลังงาน และ SDA และ SCL บน I2C เชื่อมต่อกับ Arduino บนพิน A4 และ A5 ตามลำดับ จากนั้นเราโหลดรหัสโปรแกรมลงใน Arduino:

#รวม #รวม จอแอลซีดี LiquidCrystal_I2C (0x27, 16, 2); #รวม เซ็นเซอร์ dht11; #กำหนด DHT11PIN ระดับ 2 ไบต์ = // เข้ารหัสสัญลักษณ์ระดับ ( B00111, B00101, B00111, B00000, B00000, B00000, B00000, ); void setup() ( lcd.init(); lcd.backlight(); lcd.createChar(1, degree); // สร้างตัวอักษรหมายเลข 1) void loop() ( int chk = sensor.read(DHT11PIN); lcd.setCursor(0, 0); lcd.print("Hum: %"); lcd.setCursor(11, 0); lcd.print(sensor.humidity ); lcd.setCursor(0, 1 ); lcd.print("อุณหภูมิ: 1C"); lcd.setCursor(11, 1); lcd.print(เซ็นเซอร์อุณหภูมิ); หน่วงเวลา(2000); )

อีกครั้ง รหัสนั้นง่ายมาก:

  • ประการแรก ห้องสมุดเชื่อมต่อกับจอแสดงผลและเซ็นเซอร์ DHT11
  • จากนั้นเราเข้ารหัสสัญลักษณ์องศาเพื่อให้จอแสดงผลสามารถแสดงได้
  • จากนั้นเราจะอ่านค่าจากเซ็นเซอร์และถ่ายโอนไปยังจอแสดงผล

ด้วยเหตุนี้ เมื่อใช้จอแสดงผลและ DHT11 เราได้อุปกรณ์ที่แสดงความชื้นและอุณหภูมิของห้องของเรา!

เซ็นเซอร์คอมโพสิต DHT11 มีเครื่องมือวัดที่มีประโยชน์สองอย่างพร้อมกัน - เทอร์โมมิเตอร์และไฮโกรมิเตอร์ ประการแรกวัดอุณหภูมิและประการที่สอง - ความชื้นในอากาศ โดยปกติแล้วเซ็นเซอร์สามารถซื้อได้ในกล่องพลาสติกดังกล่าว:

เพื่อความสะดวกในการใช้งาน พวกเราที่ RobotClass ได้สร้างโมดูลในฟอร์มแฟคเตอร์ 23×23 มม. ซึ่งเซ็นเซอร์ DHT11 มีตัวต้านทานแบบดึงขึ้นและขั้วต่อตัวผู้แบบสามขาซึ่งจำเป็นสำหรับการทำงานที่เหมาะสมอยู่แล้ว


ลักษณะเซ็นเซอร์:

  • แรงดันไฟฟ้า: ตั้งแต่ 3 ถึง 5 V;
  • ปริมาณการใช้ปัจจุบัน: 2.5 mA ในขณะที่การสำรวจความคิดเห็น (เวลาที่เหลือน้อยกว่า);
  • ช่วงการวัดความชื้น: ตั้งแต่ 20 ถึง 80% โดยมีความแม่นยำ 5%
  • ช่วงการวัดอุณหภูมิ: ตั้งแต่ 0 ถึง 50°C โดยมีความแม่นยำ ±2°C;
  • อัตราการสำรวจ: 1 Hz (หนึ่งครั้งต่อวินาที)

สามารถใช้เซ็นเซอร์ DHT11 เพื่อสร้างสถานีตรวจอากาศอย่างง่ายหรือตรวจสอบความชื้นในเรือนกระจก

นอกจาก DHT-11 แล้ว ยังมีเซ็นเซอร์ที่คล้ายกันอีกหลายตัวที่แตกต่างกันในด้านความแม่นยำ การใช้พลังงาน และอินเทอร์เฟซ ตัวอย่างเช่น เซ็นเซอร์ DHT-22 มีช่วงการวัดความชื้นตั้งแต่ 0 ถึง 100% และอุณหภูมิตั้งแต่ -40 ถึง 125°C

เซ็นเซอร์ DHT11 มีสายไฟสี่เส้น ซึ่งหนึ่งในนั้นไม่ได้ใช้ (#3)

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

เซ็นเซอร์ DHT11 1 2 4
Arduino Uno +5V 2 จีเอ็นดี

แผนภูมิวงจรรวม

ลักษณะเค้าโครง


สิ่งสำคัญคือต้องสังเกตว่าเราเชื่อมต่อเอาต์พุตที่สองของเซ็นเซอร์ ไม่เพียงแต่กับสาย GPIO ที่สองบน Arduino เท่านั้น แต่ยังรวมถึงกำลังไฟบวกผ่านตัวต้านทานแบบดึงขึ้น 4.7 kΩ ดังนั้นเราจึงกล่าวว่า "ดึง" สายข้อมูลเซ็นเซอร์ไปที่เครื่องหมายบวก นี่เป็นสิ่งจำเป็นสำหรับการทำงานที่เหมาะสมของ DHT11

การเชื่อมต่อโมดูล DHT11 ROC กับ Arduino

ในกรณีที่ใช้โมดูลจาก RobotClass การเชื่อมต่อจะมีลักษณะดังนี้

แผนภูมิวงจรรวม

ลักษณะเค้าโครง


โปรแกรมสำหรับการทำงานร่วมกับ DHT11

เมื่อเชื่อมต่อเซ็นเซอร์แล้ว เรามาเริ่มตั้งโปรแกรมคอนโทรลเลอร์กันเลย สิ่งแรกที่ควรทำคือติดตั้งไลบรารีเพิ่มเติมใน Arduino IDE มีไลบรารีมากมายสำหรับการทำงานกับ DHT แต่เราจะเลือกจากพอร์ทัล Adafruit มีลิงก์ไปยังห้องสมุดในตอนท้ายของบทเรียน

ติดตั้งไลบรารีและสร้างโปรแกรมทดสอบ:

#รวม
#รวม
#รวม

// เซ็นเซอร์เชื่อมต่อกับพิน #2
#กำหนด DHTPIN 2

// เลือกรุ่นเซ็นเซอร์โดยไม่ใส่หมายเหตุในบรรทัดที่ต้องการ
#กำหนด DHTTYPE DHT11 // DHT11
//#กำหนด DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// สร้าง dht object เพื่อใช้งาน
DHT_Unified dht(DHTPIN, DHTTYPE);

การตั้งค่าเป็นโมฆะ () (
Serial.begin(9600);
// เริ่มต้นเซ็นเซอร์
dht.begin();
}
เป็นโมฆะวน () (
เหตุการณ์ sensors_event_t;
// รับค่าอุณหภูมิ
dht.temperature().getEvent(&เหตุการณ์);
ถ้า (isnan (เหตุการณ์อุณหภูมิ)) (
// ในกรณีที่เซ็นเซอร์อุณหภูมิมีปัญหา ให้แสดงข้อความต่อไปนี้
Serial.println("อ่านอุณหภูมิผิดพลาด!");
}
อื่น(
// ข้อความส่งออกไปยังพอร์ต COM อุณหภูมิ: xxx°C
Serial.print("อุณหภูมิ:");
Serial.print (เหตุการณ์อุณหภูมิ);
Serial.println("°C");
}
// รับค่าความชื้น
dht.humidity().getEvent(&เหตุการณ์);
ถ้า (isnan(เหตุการณ์.relative_humidity)) (
// ในกรณีที่เซ็นเซอร์วัดความชื้นมีปัญหา ให้แสดงข้อความต่อไปนี้
Serial.println("ข้อผิดพลาดในการอ่านค่าความชื้น!");
}
อื่น(
// ข้อความส่งออกไปยังพอร์ต COM ความชื้น: xxx%
Serial.print("ความชื้น:");
Serial.print(เหตุการณ์.relative_humidity);
Serial.println("%");
}
ล่าช้า (1,000); // หยุดชั่วคราว 1 วินาทีก่อนการสำรวจความคิดเห็นครั้งต่อไป
}

ที่ด้านบนสุดของโปรแกรม มีสามบรรทัดที่มีคำสั่งdefinive ซึ่งสองบรรทัดจะถูกใส่ความคิดเห็น (นำหน้าด้วยเครื่องหมายทับสองตัว) เราสามารถยกเลิกหมายเหตุบรรทัดที่ต้องการได้ ทั้งนี้ขึ้นอยู่กับประเภทของเซนเซอร์ ตอนนี้เลือกเซ็นเซอร์ DHT11 แล้ว

เราโหลดโปรแกรมลงใน Arduino Uno เปิดจอภาพพอร์ตอนุกรม (Tools / Serial Monitor) และสังเกตผลการวัด!

งาน

  1. เรือนกระจกอัตโนมัติ จำเป็นต้องประกอบตัวควบคุมความชื้นอัตโนมัติซึ่งประกอบด้วยตัวควบคุม Arduino Uno เซ็นเซอร์วัดความชื้น DHT11 และรีเลย์ โปรแกรมควบคุมจะต้องตรวจสอบค่าความชื้นและอุณหภูมิทุกๆ 3 วินาที หากในระหว่างการตรวจสอบครั้งต่อไปความชื้นลดลงต่ำกว่า 50% ที่อุณหภูมิไม่ต่ำกว่า +20 องศา พัดลมจะเปิดโดยใช้รีเลย์ เพื่อความเรียบง่าย คุณสามารถเชื่อมต่อ LED ธรรมดากับรีเลย์ได้

บทสรุป

แม้ว่าเซ็นเซอร์วัดความชื้น DHT11 จะได้รับความนิยมมากที่สุด แต่ก็ไม่มีประสิทธิภาพที่โดดเด่น ตัวอย่างเช่น DHT22 ลูกพี่ลูกน้องขั้นสูงกว่ามีช่วงการวัดความชื้นและอุณหภูมิที่กว้างกว่า รวมถึงความแม่นยำที่มากกว่า

วัสดุที่มีประโยชน์

คุณสามารถดาวน์โหลดไฟล์เก็บถาวรพร้อมไลบรารีสำหรับการทำงานกับ DHT11 ได้ที่ลิงค์ต่อไปนี้:

คุณยังสามารถติดตั้งไลบรารีผ่านตัวจัดการไลบรารีใน Arduino IDE ในช่องค้นหาของผู้จัดการ ให้ป้อน " ไลบรารีเซ็นเซอร์ DHT โดย Adafruit«.

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

จากบทความนี้ คุณจะได้เรียนรู้:

ทักทาย! หลังแป้นพิมพ์ Gridin Semyon และในโพสต์นี้ฉันจะแสดงวิธีเชื่อมต่อเซ็นเซอร์อุณหภูมิและความชื้น DHT11 ฉันจะสาธิตรหัสและไลบรารี

เซ็นเซอร์ DHT11

DHT11อยู่ในกล่องพลาสติกขนาดเล็ก ที่เอาต์พุตของเซ็นเซอร์เป็นสัญญาณดิจิตอลและพารามิเตอร์สองตัวพร้อมกัน - อุณหภูมิและความชื้น ความหมายของการสื่อสารกับคอนโทรลเลอร์ Arduino มีดังนี้:

  1. ไมโครคอนโทรลเลอร์ร้องขอการอ่านและเปลี่ยนสัญญาณจาก 0 เป็น 1
  2. เซ็นเซอร์จะมองเห็นคำขอและตอบสนองโดยเปลี่ยนสัญญาณบิตจาก 0 เป็น 1
  3. เมื่อตกลงร่วมกันเซ็นเซอร์จะให้แพ็กเก็ตข้อมูล 5 ไบต์ (40 บิต) โดยมีอุณหภูมิในสองไบต์แรกความชื้นในสามและสี่ ไบต์ที่ห้าเป็นเช็คซัมเพื่อขจัดข้อผิดพลาดในการวัด

ลักษณะของเซ็นเซอร์อุณหภูมิและความชื้น DHT11

  • การกำหนดความชื้นในช่วง 20-80%
  • การตรวจจับอุณหภูมิตั้งแต่ 0°C ถึง +50°C
  • อัตราการสำรวจ 1 ครั้งต่อวินาที

ข้อเสียของเซ็นเซอร์คือไม่มีความแม่นยำและความเร็วสูง ข้อดีคือราคา ฉันคิดว่าคุณรู้อยู่แล้วว่าไม่มีฉัน))

เซ็นเซอร์ประกอบด้วยเซ็นเซอร์แบบคาปาซิทีฟสำหรับวัดความชื้นและเทอร์มิสเตอร์สำหรับวัดอุณหภูมิ การอ่านทั้งหมดดำเนินการโดยชิป ADC และส่งสัญญาณดิจิทัลออกมา

เซ็นเซอร์อุตสาหกรรมมักจะให้สัญญาณอะนาล็อกที่ 4-20 mA หรือ 0-10 V ซึ่งเป็นเซ็นเซอร์ที่วัดพารามิเตอร์สองตัวในคู่ ตัวอย่างเช่น ผลิตภัณฑ์ของบริษัท OWEN PVT10:

เขียนความคิดเห็นที่คุณใช้ในโครงการของคุณ? ความเห็นของคุณน่าสนใจมาก...

ลดราคาคุณสามารถค้นหาการดัดแปลงเซ็นเซอร์ Arduino รุ่นที่สอง - DHT22 ฉันจะบอกว่าช่วงการวัดนั้นใหญ่กว่ารุ่นเก่ามาก

  • การกำหนดความชื้นในช่วง 0-100%
  • ตรวจจับอุณหภูมิตั้งแต่ -40°C ถึง +125°C
  • ความถี่การสำรวจ 1 ครั้งต่อ 2 วินาที

การเชื่อมต่อเซ็นเซอร์ DHT11

เซ็นเซอร์มักทำในรูปแบบของแผ่นป้ายสำเร็จรูป ที่เอาต์พุตจะมี 3 พิน:

  • แหล่งจ่ายไฟ 5 V
  • สัญญาณ (S)
  • กราวด์ GND

ไม่จำเป็นต้องตั้งค่าความต้านทาน 10 kOhm เนื่องจากมีการบัดกรีเข้ากับบอร์ดแล้ว แผนภาพการเชื่อมต่อของเซ็นเซอร์และ Arduino UNO


คำอธิบายของรหัสโปรแกรม

ในการทำงานกับเซ็นเซอร์ของเรา คุณต้องเชื่อมต่อห้องสมุดพิเศษ เรียกว่า DHT.h คุณสามารถดาวน์โหลดได้ที่นี่ ลิงค์.

และตอนนี้เรามาดูภาพร่างของโปรแกรมสำหรับการทำงานกับเซ็นเซอร์

อาดูรโน่

#include "DHT.h" #define DHTPIN 2 // จำนวนพินที่เซ็นเซอร์เชื่อมต่อ // ยกเลิกการแสดงความคิดเห็นตามเซ็นเซอร์ที่ใช้ // เริ่มต้นเซ็นเซอร์ // DHT dht(DHTPIN, DHT22); DHT dht(DHTPIN, DHT11); void setup() ( Serial.begin(9600); dht.begin(); ) void loop() ( // Delay 2 วินาทีระหว่างการอ่าน delays(1000); //Read moisture float h = dht.readHumidity(); //Read temperature float t = dht.readTemperature(); //ตรวจสอบว่าการอ่านสำเร็จหรือไม่ if (isnan(h) || isnan(t)) ( Serial.println("ไม่สามารถอ่านค่าที่อ่านได้"); ) อื่น ( Serial.print("ความชื้น: "); Serial.print(h); Serial.print("%\t"); Serial.print("อุณหภูมิ: "); Serial.print(t); Serial.println("*C"); ) )

#รวม "dht.h"

#define DHTPIN 2 // จำนวนพินที่เซ็นเซอร์เชื่อมต่ออยู่

// ยกเลิกการแสดงความคิดเห็นตามเซ็นเซอร์ที่ใช้

// เริ่มเซ็นเซอร์

//DHT dht(DHTPIN, DHT22);

ดีเอชที ดีเอชที (DHTPIN , DHT11 );

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

อนุกรม. เริ่มต้น (9600) ;

ดีเอชที เริ่ม();

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

// หน่วงเวลา 2 วินาทีระหว่างการวัด

ล่าช้า (1,000) ;

// อ่านค่าความชื้น

ลอย h = dht . อ่านความชื้น ();

// อ่านอุณหภูมิ

ลอย t = dht . อ่านอุณหภูมิ ();

// ตรวจสอบว่าการอ่านสำเร็จหรือไม่

ถ้า (อิสนัน (h ) || isnan (t ) ) (

อนุกรม. พิมพ์ลน์( "ไม่สามารถอ่านหนังสือได้") ;

) อื่น (

อนุกรม. พิมพ์("ความชื้น:");

อนุกรม. พิมพ์ (ซ);

อนุกรม. พิมพ์("%\t");

การตรวจสอบพอร์ตใน Arduino IDE:

โปรแกรมสามารถรวมเครื่องมือหนึ่งที่น่าสนใจสำหรับการดูกราฟิก สามารถเปิดใช้งานได้ดังนี้: เครื่องมือ - พลอตเตอร์ผ่านการเชื่อมต่อแบบอนุกรม ฉันไม่รู้ มันแสดงอุณหภูมิให้ฉันเท่านั้น ถ้าใครรู้วิธีใช้หลายแผนภูมิแบ่งปันในความคิดเห็น นี่คือภาพที่ปรากฎ:

ถ้าใครไม่ชัดเจนมีวิดีโอสอนที่ยอดเยี่ยมจากพวกเขา

นี่คือที่ที่ฉันสิ้นสุดการโพสต์ของฉัน ในบทความหน้าฉันจะเขียนเกี่ยวกับ เขียนความคิดเห็น ถามคำถาม สมัครสมาชิก!

ฉันขอให้คุณประสบความสำเร็จ !!!

ขอแสดงความนับถือ Gridin Semyon

เชื่อมต่อ Arduino เข้ากับเซ็นเซอร์วัดความชื้นในดิน FC-28 เพื่อกำหนดว่าดินใต้ต้นไม้ของคุณต้องการน้ำเมื่อใด

ในบทความนี้ เราจะใช้ FC-28 Soil Moisture Sensor กับ Arduino เซ็นเซอร์นี้วัดปริมาณน้ำในดินตามปริมาตรและให้ระดับความชื้นแก่เรา เซ็นเซอร์ให้ข้อมูลอะนาล็อกและดิจิตอลแก่เราที่เอาต์พุต เราจะเชื่อมต่อในทั้งสองโหมด

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

เมื่อมีน้ำ ดินจะนำไฟฟ้าได้มากขึ้น ซึ่งหมายความว่าจะมีความต้านทานน้อยลง ดินแห้งเป็นตัวนำไฟฟ้าที่ไม่ดี ดังนั้นเมื่อมีน้ำน้อย ดินก็จะนำไฟฟ้าได้น้อยลง ซึ่งหมายความว่ามีความต้านทานมากขึ้น

เซ็นเซอร์ FC-28 สามารถเชื่อมต่อในโหมดอนาล็อกและดิจิตอล เราจะเชื่อมต่อก่อนในโหมดอะนาล็อกและจากนั้นในโหมดดิจิตอล

ข้อมูลจำเพาะ

ข้อมูลจำเพาะเซ็นเซอร์ความชื้นในดิน FC-28:

  • แรงดันไฟฟ้าอินพุต: 3.3–5V
  • แรงดันขาออก: 0–4.2V
  • กระแสเข้า: 35mA
  • สัญญาณเอาต์พุต: อะนาล็อกและดิจิตอล

พินเอาท์

เซ็นเซอร์วัดความชื้นในดิน FC-28 มีสี่พิน:

  • VCC: อำนาจ
  • A0: เอาต์พุตแบบอะนาล็อก
  • D0: เอาต์พุตดิจิตอล
  • GND: กราวด์

โมดูลนี้ยังมีโพเทนชิออมิเตอร์ที่จะตั้งค่าเกณฑ์ ค่าเกณฑ์นี้จะถูกนำไปเปรียบเทียบกับเครื่องเปรียบเทียบ LM393 LED จะส่งสัญญาณให้เราเห็นค่าที่สูงกว่าหรือต่ำกว่าเกณฑ์

โหมดอะนาล็อก

ในการเชื่อมต่อเซ็นเซอร์ในโหมดอะนาล็อก เราจำเป็นต้องใช้เอาต์พุตอะนาล็อกของเซ็นเซอร์ เซ็นเซอร์ความชื้นในดิน FC-28 ยอมรับค่าเอาต์พุตแบบอะนาล็อกตั้งแต่ 0 ถึง 1023

ความชื้นวัดเป็นเปอร์เซ็นต์ ดังนั้นเราจะเปรียบเทียบค่าเหล่านี้ตั้งแต่ 0 ถึง 100 แล้วแสดงบนจอภาพอนุกรม คุณสามารถตั้งค่าความชื้นต่างๆ และเปิด/ปิดปั๊มน้ำได้ตามค่าเหล่านี้

แผนภาพการเดินสายไฟ

เชื่อมต่อเซ็นเซอร์ความชื้นในดิน FC-28 เข้ากับ Arduino ดังนี้:

  • VCC FC-28 → 5V Arduino
  • GND FC-28 → GND Arduino
  • A0 FC-28 → A0 Arduino

รหัสสำหรับเอาต์พุตแบบอะนาล็อก

สำหรับเอาต์พุตแบบอะนาล็อก เราเขียนโค้ดต่อไปนี้:

int sensor_pin = A0; int output_value ; void setup() ( Serial.begin(9600); Serial.println("Reading From the Sensor ..."); delay(2000); ) void loop() ( output_value= analogRead(sensor_pin); output_value = map(output_value,550,0,0,100); Serial.print("Mositure: "); Serial.print(output_value); Serial.println("%"); delay(1000); )

คำอธิบายรหัส

ก่อนอื่น เราได้กำหนดตัวแปรสองตัว ตัวแปรหนึ่งสำหรับหน้าสัมผัสเซ็นเซอร์ความชื้นในดิน และอีกตัวแปรหนึ่งสำหรับเก็บเอาต์พุตของเซ็นเซอร์

int sensor_pin = A0; int output_value ;

ในฟังก์ชั่นการตั้งค่า คำสั่ง Serial.begin(9600)จะช่วยในการสื่อสารระหว่าง Arduino และจอภาพอนุกรม หลังจากนั้นเราจะพิมพ์ “Reading From the Sensor…” บนจอแสดงผลปกติ

การตั้งค่าเป็นโมฆะ () ( Serial.begin (9600); Serial.println ("การอ่านจากเซ็นเซอร์ ... "); ความล่าช้า (2000); )

ในฟังก์ชันลูป เราจะอ่านค่าจากเอาต์พุตอะนาล็อกของเซ็นเซอร์และเก็บค่าไว้ในตัวแปร output_value. จากนั้นเราจะเปรียบเทียบค่าเอาต์พุตตั้งแต่ 0-100 เนื่องจากความชื้นวัดเป็นเปอร์เซ็นต์ เมื่อเราอ่านค่าจากดินแห้ง ค่าเซ็นเซอร์คือ 550 และในดินเปียก ค่าเซ็นเซอร์คือ 10 เราเปรียบเทียบค่าเหล่านี้เพื่อให้ได้ค่าความชื้น หลังจากนั้นเราพิมพ์ค่าเหล่านี้บนจอภาพอนุกรม

Void loop() ( output_value= analogRead(sensor_pin); output_value = map(output_value,550,10,0,100); Serial.print("Mositure: "); Serial.print(output_value); Serial.println("%"); delay(1000); )

โหมดดิจิตอล

ในการเชื่อมต่อเซ็นเซอร์วัดความชื้นในดิน FC-28 ในโหมดดิจิตอล เราจะเชื่อมต่อเอาต์พุตดิจิตอลของเซ็นเซอร์กับขาดิจิตอล Arduino

โมดูลเซ็นเซอร์ประกอบด้วยโพเทนชิออมิเตอร์ซึ่งใช้เพื่อตั้งค่าเกณฑ์ จากนั้นค่าเกณฑ์จะถูกเปรียบเทียบกับค่าเอาต์พุตของเซ็นเซอร์โดยใช้ตัวเปรียบเทียบ LM393 ซึ่งวางอยู่บนโมดูลเซ็นเซอร์ FC-28 เครื่องเปรียบเทียบ LM393 เปรียบเทียบค่าเอาต์พุตของเซ็นเซอร์และค่าเกณฑ์ จากนั้นให้ค่าเอาต์พุตผ่านเอาต์พุตดิจิทัล

เมื่อค่าเซ็นเซอร์มากกว่าค่าเกณฑ์ เอาต์พุตดิจิตอลจะให้ 5V และ LED เซ็นเซอร์จะสว่างขึ้น มิฉะนั้น เมื่อค่าเซ็นเซอร์น้อยกว่าค่าเกณฑ์นี้ 0V จะถูกส่งไปยังเอาต์พุตดิจิตอลและไฟ LED จะไม่สว่างขึ้น

แผนภาพการเดินสายไฟ

การเชื่อมต่อเซ็นเซอร์วัดความชื้นในดิน FC-28 และ Arduino ในโหมดดิจิตอลมีดังนี้:

  • VCC FC-28 → 5V Arduino
  • GND FC-28 → GND Arduino
  • D0 FC-28 →พิน 12 Arduino
  • LED บวก → Pin 13 Arduino
  • LED ลบ → GND Arduino

รหัสสำหรับโหมดดิจิตอล

รหัสสำหรับโหมดดิจิทัลอยู่ด้านล่าง:

intled_pin=13; int sensor_pin=8; การตั้งค่าเป็นโมฆะ () ( pinMode(led_pin, OUTPUT); pinMode(sensor_pin, INPUT); ) void loop() ( if(digitalRead(sensor_pin) == HIGH)( digitalWrite(led_pin, HIGH); ) else ( digitalWrite(led_pin, LOW); delay(1000); ) )

คำอธิบายรหัส

ก่อนอื่น เราเริ่มต้นตัวแปร 2 ตัวเพื่อเชื่อมต่อเอาต์พุต LED และเอาต์พุตดิจิตอลของเซ็นเซอร์

int led_pin = 13; int sensor_pin = 8;

ในฟังก์ชันการตั้งค่า เราประกาศให้พิน LED เป็นพินเอาต์พุต เนื่องจากเราจะเปิดไฟ LED ผ่านพินนั้น เราประกาศให้ขาเซ็นเซอร์เป็นขาอินพุต เนื่องจาก Arduino จะรับค่าจากเซ็นเซอร์ผ่านขานี้

การตั้งค่าเป็นโมฆะ () ( pinMode (led_pin, OUTPUT); pinMode (sensor_pin, INPUT); )

ในฟังก์ชันลูป เราอ่านจากเอาต์พุตของเซ็นเซอร์ หากค่าสูงกว่าค่าเกณฑ์ LED จะเปิดขึ้น หากค่าเซ็นเซอร์ต่ำกว่าค่าเกณฑ์ ตัวบ่งชี้จะดับลง

Void loop() ( if(digitalRead(sensor_pin) == สูง)( digitalWrite(led_pin, HIGH); ) อื่น ( digitalWrite(led_pin, LOW); delay(1000); ) )

นี่เป็นการสรุปบทเรียนเบื้องต้นเกี่ยวกับการทำงานกับเซ็นเซอร์ FC-28 สำหรับ Arduino ขอให้โชคดีกับโครงการของคุณ

บทความครอบคลุมพื้นฐานการทำงานกับเซนเซอร์อุณหภูมิและความชื้นราคาประหยัดของซีรีส์ DHT

เซ็นเซอร์เหล่านี้เรียบง่ายและช้า แต่เหมาะสำหรับโครงการงานอดิเรกของ Arduino เซ็นเซอร์ DHT ประกอบด้วยสองส่วนหลัก: เซ็นเซอร์วัดความชื้นแบบคาปาซิทีฟและเทอร์มิสเตอร์ นอกจากนี้ในกรณีที่มีชิปง่าย ๆ สำหรับแปลงสัญญาณอะนาล็อกเป็นสัญญาณดิจิทัล การอ่านสัญญาณดิจิทัลที่เอาต์พุตนั้นค่อนข้างง่าย คุณสามารถใช้คอนโทรลเลอร์ใดก็ได้ ไม่จำเป็นต้องเป็น Arduino

ข้อมูลจำเพาะ DHT11 และ DHT22

เซ็นเซอร์ DHT มีสองเวอร์ชัน พวกเขามีลักษณะเกือบเหมือนกัน pinout ก็เหมือนกัน ความแตกต่างที่สำคัญคือลักษณะทางเทคนิค:

  • ถูกมาก.
  • แหล่งจ่ายไฟตั้งแต่ 3 ถึง 5V
  • คำนวณจากการวัดระดับความชื้นในช่วง 20% ถึง 80% ในกรณีนี้ ความแม่นยำในการวัดอยู่ในช่วง 5%
  • วัดอุณหภูมิในช่วง 0 ถึง 50 องศา ด้วยความแม่นยำ บวกหรือลบ 2%
  • ความถี่ในการวัดไม่เกิน 1 Hz (หนึ่งการวัดต่อวินาที)
  • ขนาดตัวเรือน: 15.5 มม. x 12 มม. x 5.5 มม.
  • ราคาถูก.
  • แหล่งจ่ายไฟตั้งแต่ 3 ถึง 5V
  • ปริมาณการใช้กระแสไฟฟ้าสูงสุดคือ 2.5mA ระหว่างการแปลง (เมื่อร้องขอข้อมูล)
  • คำนวณจากการวัดระดับความชื้นในช่วงตั้งแต่ 0% ถึง 100% ในกรณีนี้ ความแม่นยำของการวัดอยู่ในช่วง 2% -5%
  • วัดอุณหภูมิในช่วง -40 ถึง 125 องศา โดยมีความแม่นยำ บวกหรือลบ 0.5 องศาเซลเซียส
  • ความถี่ในการวัดสูงถึง 0.5 Hz (การวัดหนึ่งครั้งใน 2 วินาที)
  • ขนาดตัวเรือน: 15.1 มม. x 25 มม. x 7.7 มม.
  • 4 ตัวเชื่อมต่อ ระยะห่างระหว่างที่อยู่ติดกัน - 0.1 "

อย่างที่คุณเห็น DHT22 มีความแม่นยำมากกว่าและมีค่าที่วัดได้หลากหลายกว่า เซ็นเซอร์ทั้งสองมีเอาต์พุตดิจิตอลหนึ่งเอาต์พุต สามารถส่งคำขอได้ไม่เกินหนึ่งต่อวินาทีหรือสองครั้ง

การเชื่อมต่อเซ็นเซอร์ DHT กับ Arduino

เซ็นเซอร์เชื่อมต่อได้ง่าย เนื่องจากมีขั้วต่อขนาด 0.1 นิ้วที่ค่อนข้างยาว คุณจึงติดตั้งได้โดยตรงบนเขียงหั่นขนมหรือแผงวงจร (ดูภาพด้านล่าง)


การเชื่อมต่อโดยตรงกับ Arduino นั้นง่ายเช่นกัน มี 4 ขั้วต่อบนเซ็นเซอร์:

  • แหล่งจ่ายไฟ (VCC) - 3 ถึง 5 V.
  • เอาต์พุตข้อมูล
  • ไม่เชื่อมต่อ
  • โลก.

เพียงละเว้นตัวเชื่อมต่อ 3 มันจะไม่เชื่อมต่อ ขอแนะนำให้เชื่อมต่อตัวต้านทานแบบดึงขึ้น 10 kΩ ระหว่างกำลังและสัญญาณ Arduino มีตัวต้านทานในตัว แต่ค่า 100kOhm จะใช้ไม่ได้สำหรับเรา

รูปด้านล่างแสดงไดอะแกรมการเชื่อมต่อ DHT11 กับ Arduino ต่อสัญญาณจากเซ็นเซอร์เข้าที่ขา 2 เพื่อให้วงจรตรงกับภาพตัวอย่างด้านล่าง พินนี้สามารถเปลี่ยนแปลงได้ด้วยการแก้ไขที่เหมาะสมในโค้ด


อ่านข้อมูลจากเซ็นเซอร์ DHTxx

เราใช้ Arduino เพื่อทดสอบร่าง คุณสามารถใช้ไมโครคอนโทรลเลอร์อื่นที่รองรับไมโครวินาทีไทม์มิ่งได้