สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
การติดตามอุณหภูมิและความชื้นเป็นสิ่งสำคัญหากคุณมีเรือนกระจก หรือมีแผนในอนาคตที่จะอัพเกรดเรือนกระจกของคุณให้เป็นฟาร์มอัจฉริยะขนาดเล็ก
สำหรับ Instructable แรกของฉัน ฉันจะสาธิตวิธีสร้างต้นแบบ:
- เชื่อมต่อเซ็นเซอร์อุณหภูมิและความชื้น DHT11 กับ Arduino Mega 2560
- ตั้งโปรแกรม Arduino ใน C เพื่ออ่านข้อมูลเซ็นเซอร์
- แสดงข้อมูลอุณหภูมิและความชื้นบน LCD ที่เชื่อมต่อกับ Arduino
- สั่งให้ Arduino ส่งข้อมูลเซ็นเซอร์ไปยัง Raspberry Pi 3 รุ่น B+
- เขียนโค้ดใน Python เพื่อแสดงข้อมูลเซ็นเซอร์
ทำไมต้องใช้ RPi และ Arduino ร่วมกัน?
การเชื่อมต่อ Arduino และ RPi สามารถให้ความสามารถที่ยอดเยี่ยม หากคุณต้องการ I/O ที่ Arduino เชี่ยวชาญ และการสื่อสารเครือข่าย/มัลติเธรด/ภาพซึ่ง RPi ทำได้ดีกว่ามาก
กล่าวอีกนัยหนึ่ง เราจะใช้ Arduino เพื่อควบคุมงานที่เข้มข้น และใช้ RPi สำหรับงานที่เน้นการคำนวณ
Arduinos เวอร์ชันที่ทนทานมีวางจำหน่ายแล้วที่ Rugged-Circuits
ขั้นตอนที่ 1: รับฮาร์ดแวร์ Arduino & RPi
ชุดเริ่มต้น Arduino พร้อมใช้งานและให้คุณทดลองกับเซ็นเซอร์และอุปกรณ์ประเภทต่างๆ การจัดซื้อชุดสตาร์ทนั้นถูกกว่าแทนที่จะสั่งซื้อชิ้นส่วนต่างๆ แยกกัน ฉันได้ให้ลิงค์พันธมิตรด้านล่างซึ่งชี้ไปที่ Banggood และ Amazon US
Arduino Starter Kit (บางกู๊ด)
ชุดเริ่มต้น Arduino (Amazon US)
เมนบอร์ด Element14 RPi 3 B+ (Amazon US)
เคส Raspberry Pi 3 B+ (Amazon US)
การ์ด Micro SD ขนาด 32GB (Amazon US)
ขั้นตอนที่ 2: เชื่อมต่อ DHT11 & LCD กับ Arduino
ขั้นตอนที่ 3: ตั้งโปรแกรม Arduino
#arduino-dht11-lcd2004
#ผู้แต่ง: วสุ วีระเพ็ญ
#https://www.instructables.com/member/VasooV/ #อ่านข้อมูลจาก DHT11 ที่เชื่อมต่อกับ Arduino แสดงบน LCD2004 และส่งข้อมูลผ่านซีเรียลไปยัง Raspberry Pi
#รวม
#รวม
//จอ LCD ถูกกำหนดให้เป็นหมายเลขอุปกรณ์ 0x27 บนบัส I2C
LiquidCrystal_I2C จอแอลซีดี (0x27, 20, 4);
//DHT11 เชื่อมต่อกับพิน 8
ดีเอชที ดีเอชที; #define เซ็นเซอร์พิน 8
// Raspberry Pi เชื่อมต่อกับ Serial 0
#define serialPi Serial
การตั้งค่าเป็นโมฆะ () {
lcd.begin(20, 4); // เริ่มต้นอินเทอร์เฟซไปยังหน้าจอ LCD และระบุขนาด (ความกว้างและความสูง) ของจอแสดงผล lcd.init(); LCD.backlight(); serialPi.begin(9600); // Arduino ไปยังมอนิเตอร์แบบอนุกรม }
วงเป็นโมฆะ () {
//อ่านข้อมูลเซ็นเซอร์
int sensorData = DHT.read11 (sensorPin); อุณหภูมิลอย = DHT อุณหภูมิ; ความชื้นลอย = DHT.ความชื้น;
//อุณหภูมิการพิมพ์
lcd.setCursor(0, 0); lcd.print("อุณหภูมิ"); lcd.print (อุณหภูมิ); lcd.print (" C");
//พิมพ์ความชื้น
lcd.setCursor(0, 1); lcd.print("ความชื้น"); lcd.print(ความชื้น); lcd.print(" %");
//ส่งข้อมูลอุณหภูมิและความชื้นไปที่ Raspberry Pi
serialPi.print("");
//รอ 10 วินาที
ล่าช้า (10000); }
ขั้นตอนที่ 4: การตั้งค่า Arduino, LCD & DHT11 ที่ใช้งานได้
ขั้นตอนที่ 5: เชื่อมต่อ Raspberry Pi กับ Arduino
ขั้นตอนที่ 6: รหัส RPi Python เพื่ออ่านข้อมูลอนุกรมของพอร์ต USB
#rpi-arduino-dht11
#Raspberry Pi อ่านข้อมูลเซ็นเซอร์อุณหภูมิและความชื้นจาก Arduino
นำเข้าซีเรียล, สตริง, เวลา
#ในตัวอย่างนี้ /dev/ttyUSB0 ถูกใช้
#สิ่งนี้อาจเปลี่ยนแปลงในกรณีของคุณเป็น /dev/ttyUSB1, /dev/ttyUSB2 ฯลฯ ser = serial. Serial('/dev/ttyUSB0', 9600)
#บล็อกของรหัสต่อไปนี้ทำงานดังนี้:
#หากมีข้อมูลอนุกรม อ่านบรรทัด ถอดรหัสข้อมูล UTF8 #…ลบอักขระที่ต่อท้ายบรรทัด #…แยกข้อมูลเป็นอุณหภูมิและความชื้น #…ลบตัวชี้เริ่มต้นและสิ้นสุด () #…พิมพ์เอาต์พุตขณะ จริง: ถ้า ser.in_waiting > 0: rawserial = ser.readline() cookserial = rawserial.decode('utf-8').strip('\r\n') datasplit = cookserial.split(', ') temperature = datasplit[0].strip('') พิมพ์ (อุณหภูมิ) พิมพ์ (ความชื้น)