- ภาพรวมของ DHT11 Sensor:
- ข้อกำหนดเบื้องต้น:
- การติดตั้ง Adafruit LCD library บน Raspberry Pi:
- การติดตั้ง Adafruit DHT11 library บน Raspberry Pi:
- แผนภูมิวงจรรวม:
- การเขียนโปรแกรม Python สำหรับเซ็นเซอร์ DHT11:
- การวัดความชื้นและอุณหภูมิโดยใช้ Raspberry Pi:
อุณหภูมิและความชื้นเป็นพารามิเตอร์ที่พบบ่อยที่สุดที่ได้รับการตรวจสอบในทุกสภาพแวดล้อม มีเซ็นเซอร์มากมายให้เลือกสำหรับการวัดอุณหภูมิและความชื้นแต่เซ็นเซอร์ที่ใช้มากที่สุดคือDHT11เนื่องจากมีช่วงการวัดและความแม่นยำที่เหมาะสม นอกจากนี้ยังทำงานร่วมกับการสื่อสารด้วยพินเดียวและด้วยเหตุนี้จึงง่ายต่อการเชื่อมต่อกับไมโครคอนโทรลเลอร์หรือไมโครโปรเซสเซอร์ ในบทช่วยสอนนี้เราจะเรียนรู้วิธีการเชื่อมต่อเซ็นเซอร์ DHT11 ยอดนิยมกับ Raspberry Piและแสดงค่าของอุณหภูมิและความชื้นบนหน้าจอ LCD 16x2 เราใช้มันเพื่อสร้าง IoT Raspberry Pi Weather Station แล้ว
ภาพรวมของ DHT11 Sensor:
เซ็นเซอร์ DHT11 สามารถวัดความชื้นสัมพัทธ์และอุณหภูมิโดยมีคุณสมบัติดังต่อไปนี้
ช่วงอุณหภูมิ: 0-50 ° C ความแม่นยำของอุณหภูมิ: ± 2 ° C ช่วงความชื้น: 20-90% RH ความชื้นความแม่นยำ: ± 5%
เซ็นเซอร์ DHT11 มีให้เลือกทั้งในรูปแบบโมดูลหรือแบบเซ็นเซอร์ ในบทช่วยสอนนี้เรากำลังใช้รูปแบบโมดูลของเซ็นเซอร์ความแตกต่างเพียงอย่างเดียวระหว่างทั้งสองอย่างคือในรูปแบบโมดูลเซ็นเซอร์มีตัวเก็บประจุกรองและตัวต้านทานแบบดึงขึ้นที่ติดอยู่กับขาเอาต์พุตของเซ็นเซอร์ ดังนั้นหากคุณใช้เซ็นเซอร์เพียงอย่างเดียวให้แน่ใจว่าคุณได้เพิ่มส่วนประกอบทั้งสองนี้ เรียนรู้ DHT11 เชื่อมต่อกับ Arduino
DHT11 Sensor ทำงานอย่างไร:
เซ็นเซอร์ DHT11 มาพร้อมกับปลอกสีฟ้าหรือสีขาวภายในปลอกนี้เรามีส่วนประกอบสำคัญสองอย่างที่ช่วยให้เรารับรู้ความชื้นสัมพัทธ์และอุณหภูมิองค์ประกอบแรกคือคู่ของขั้วไฟฟ้า; ความต้านทานไฟฟ้าระหว่างอิเล็กโทรดทั้งสองนี้ถูกกำหนดโดยพื้นผิวที่มีความชื้น ดังนั้นความต้านทานที่วัดได้จึงแปรผกผันกับความชื้นสัมพัทธ์ของสิ่งแวดล้อม ความชื้นสัมพัทธ์ที่สูงขึ้นจะเป็นค่าความต้านทานและในทางกลับกัน โปรดทราบว่าความชื้นสัมพัทธ์แตกต่างจากความชื้นจริง ความชื้นสัมพัทธ์วัดปริมาณน้ำในอากาศเทียบกับอุณหภูมิในอากาศ
ส่วนประกอบอื่น ๆ พื้นผิวติดตั้งกทช Thermistor คำว่า NTC ย่อมาจากค่าสัมประสิทธิ์อุณหภูมิเชิงลบสำหรับการเพิ่มขึ้นของอุณหภูมิค่าความต้านทานจะลดลง
ข้อกำหนดเบื้องต้น:
สันนิษฐานว่า Raspberry Pi ของคุณมีแฟลชระบบปฏิบัติการอยู่แล้วและสามารถเชื่อมต่ออินเทอร์เน็ตได้ หากไม่เป็นเช่นนั้นให้ทำตามบทแนะนำการเริ่มต้นใช้งาน Raspberry Pi ก่อนดำเนินการต่อ
นอกจากนี้ยังสันนิษฐานว่าคุณสามารถเข้าถึง pi ของคุณผ่านทางหน้าต่างเทอร์มินัลหรือผ่านแอพพลิเคชั่นอื่น ๆ ซึ่งคุณสามารถเขียนและรันโปรแกรม python และใช้หน้าต่างเทอร์มินัลได้
การติดตั้ง Adafruit LCD library บน Raspberry Pi:
ค่าของอุณหภูมิและความชื้นจะแสดงบนจอ LCD 16 * 2 Adafruit มีไลบรารีให้เราใช้งาน LCD นี้ในโหมด 4 บิตได้อย่างง่ายดายดังนั้นให้เราเพิ่มลงใน Raspberry Pi ของเราโดยเปิดหน้าต่างเทอร์มินัล Pi และทำตามขั้นตอนด้านล่าง
ขั้นตอนที่ 1:ติดตั้งคอมไพล์บน Raspberry Pi ของคุณโดยใช้บรรทัดด้านล่าง Gitช่วยให้คุณสามารถโคลนไฟล์โครงการใด ๆ บน Github และใช้กับ Raspberry pi ของคุณ ห้องสมุดของเราอยู่ใน Github ดังนั้นเราจึงต้องติดตั้ง git เพื่อดาวน์โหลดไลบรารีนั้นลงใน pi
apt-get install git
ขั้นตอนที่ 2:บรรทัดต่อไปนี้เชื่อมโยงไปยังเพจ GitHub ที่มีไลบรารีอยู่เพียงแค่รันบรรทัดเพื่อโคลนไฟล์โปรเจ็กต์บนโฮมไดเร็กทอรี Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
ขั้นตอนที่ 3:ใช้คำสั่งด้านล่างเพื่อเปลี่ยนไดเร็กทอรีบรรทัดเพื่อเข้าสู่ไฟล์โปรเจ็กต์ที่เราเพิ่งดาวน์โหลด บรรทัดคำสั่งได้รับด้านล่าง
ซีดี Adafruit_Python_CharLCD
ขั้นตอนที่ 4:ภายในไดเร็กทอรีจะมีไฟล์ชื่อ setup.py เราต้องติดตั้งเพื่อติดตั้งไลบรารี ใช้รหัสต่อไปนี้เพื่อติดตั้งไลบรารี
sudo python setup.py ติดตั้ง
นั่นคือไลบรารีควรได้รับการติดตั้งสำเร็จแล้ว ในทำนองเดียวกันให้ดำเนินการติดตั้งไลบรารี DHT ซึ่งมาจาก Adafruit
การติดตั้ง Adafruit DHT11 library บน Raspberry Pi:
DHT11 Sensor ทำงานด้วยหลักการของระบบสายเดียว ค่าของอุณหภูมิและความชื้นจะถูกตรวจจับโดยเซ็นเซอร์แล้วส่งผ่านขาเอาต์พุตเป็นข้อมูลอนุกรม จากนั้นเราสามารถอ่านข้อมูลเหล่านี้ได้โดยใช้พิน I / O บน MCU / MPU เพื่อให้เข้าใจว่าอ่านค่าเหล่านี้อย่างไรคุณจะต้องอ่านแผ่นข้อมูลของเซ็นเซอร์ DHT11 แต่ตอนนี้เพื่อให้ง่ายขึ้นเราจะใช้ไลบรารีเพื่อพูดคุยกับเซ็นเซอร์ DHT11
ห้องสมุด DHT11ให้โดย Adafruit สามารถใช้สำหรับการ DHT11, DHT22 และเซ็นเซอร์อุณหภูมิลวดหนึ่งอื่น ๆ เช่นกัน ขั้นตอนในการติดตั้งไลบรารี DHT11 ก็คล้ายกับขั้นตอนการติดตั้งไลบรารี LCD บรรทัดเดียวที่จะเปลี่ยนคือลิงก์ของเพจ GitHub ที่บันทึกไลบรารี DHT
ป้อนบรรทัดคำสั่งสี่บรรทัดทีละบรรทัดบนเทอร์มินัลเพื่อติดตั้งไลบรารี DHT
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py ติดตั้ง
เมื่อเสร็จแล้วคุณจะติดตั้งไลบรารีทั้งสองบน Raspberry Pi ของเราได้สำเร็จ ตอนนี้เราสามารถดำเนินการเชื่อมต่อฮาร์ดแวร์ได้แล้ว
แผนภูมิวงจรรวม:
แผนภาพวงจรที่สมบูรณ์การเชื่อมต่อ DH11 กับ Raspberry pi แสดงไว้ด้านล่างซึ่งสร้างขึ้นโดยใช้ Fritzing ทำตามการเชื่อมต่อและสร้างวงจร
ทั้งเซ็นเซอร์ LCD และ DHT11ทำงานร่วมกับแหล่งจ่ายไฟ + 5V ดังนั้นเราจึงใช้หมุด 5V บน Raspberry Pi เพื่อจ่ายไฟทั้งคู่ ตัวต้านทานแบบดึงขึ้นที่มีค่า 1k ใช้กับขาเอาต์พุตของเซ็นเซอร์ DHT11 หากคุณใช้โมดูลคุณสามารถหลีกเลี่ยงตัวต้านทานนี้ได้
หม้อจอนของ 10kจะถูกเพิ่มในขาวีของจอแอลซีดีในการควบคุมระดับความคมชัดของจอแอลซีดี นอกเหนือจากนั้นการเชื่อมต่อทั้งหมดนั้นค่อนข้างตรงไปตรงมา แต่โปรดสังเกตว่าคุณใช้พิน GPIO ตัวใดในการเชื่อมต่อพินเนื่องจากเราจะต้องใช้ในโปรแกรมของเรา แผนภูมิด้านล่างนี้จะช่วยให้คุณสามารถหาหมายเลขพิน GPIO ได้
ใช้แผนภูมิและทำการเชื่อมต่อของคุณตามแผนภาพวงจร ฉันใช้เขียงหั่นขนมและสายจัมเปอร์เพื่อทำการเชื่อมต่อ เนื่องจากฉันใช้โมดูล DHT11 ฉันจึงต่อสายเข้ากับ Raspberry Pi โดยตรง ฮาร์ดแวร์ของฉันมีลักษณะดังนี้ด้านล่าง
การเขียนโปรแกรม Python สำหรับเซ็นเซอร์ DHT11:
เราต้องเขียนโปรแกรมเพื่ออ่านค่าของอุณหภูมิและความชื้นจากเซ็นเซอร์ DHT11จากนั้นจึงแสดงสิ่งเดียวกันบน LCD เนื่องจากเราได้ดาวน์โหลดไลบรารีสำหรับเซ็นเซอร์ LCD และ DHT11 แล้วรหัสจึงควรตรงไปตรงมามาก โปรแกรมหลามสมบูรณ์สามารถพบได้ในตอนท้ายของหน้านี้ แต่คุณสามารถอ่านเพิ่มเติมที่จะเข้าใจวิธีการทำงานของโปรแกรม
เราต้องนำเข้าไลบรารี LCD และไลบรารี DHT11ลงในโปรแกรมของเราเพื่อใช้ฟังก์ชันที่เกี่ยวข้องกับมัน เนื่องจากเราได้ดาวน์โหลดและติดตั้งไว้ใน Pi แล้วเราจึงสามารถใช้บรรทัดต่อไปนี้เพื่อนำเข้าได้ เรายังนำเข้าไลบรารีเวลาเพื่อใช้ฟังก์ชันหน่วงเวลา
เวลานำเข้า # เวลานำเข้าสำหรับการสร้าง การนำเข้า ล่าช้าAdafruit_CharLCD เป็น LCD # นำเข้าห้องสมุด LCD นำเข้า Adafruit_DHT # นำเข้า DHT Library สำหรับเซ็นเซอร์
ต่อไปเราจะต้องระบุหมุดที่เชื่อมต่อกับเซ็นเซอร์และใช้เซ็นเซอร์อุณหภูมิประเภทใด ตัวแปร sensor_name ถูกกำหนดให้กับ Adafruit_DHT.DHT11 เนื่องจากเราใช้เซ็นเซอร์ DHT11 ที่นี่ ขาเอาต์พุตของเซ็นเซอร์เชื่อมต่อกับ GPIO 17 ของ Raspberry Pi และด้วยเหตุนี้เราจึงกำหนดตัวแปร 17 ให้กับ sensor_pin ดังที่แสดงด้านล่าง
sensor_name = Adafruit_DHT.DHT11 # เรากำลังใช้เซ็นเซอร์ DHT11 sensor_pin = 17 # เซ็นเซอร์เชื่อมต่อกับ GPIO17 บน Pi
ในทำนองเดียวกันเราต้องกำหนดด้วยว่าGPIO หมุดใดที่ LCD เชื่อมต่ออยู่ ที่นี่เราใช้LCD ในโหมด 4 บิตดังนั้นเราจะมีพินข้อมูลสี่พินและพินควบคุมสองพินเพื่อเชื่อมต่อกับพิน GPIO ของไพ นอกจากนี้คุณสามารถเชื่อมต่อพินแบ็คไลท์กับพิน GPIO หากเราต้องการควบคุมแบ็คไลท์ด้วย แต่ตอนนี้ฉันไม่ได้ใช้มันดังนั้นฉันจึงกำหนด 0 ให้
lcd_rs = 7 #RS ของ LCD เชื่อมต่อกับ GPIO 7 บน PI lcd_en = 8 #EN ของ LCD เชื่อมต่อกับ GPIO 8 บน PI lcd_d4 = 25 # D4 ของ LCD เชื่อมต่อกับ GPIO 25 บน PI lcd_d5 = 24 # D5 ของ LCD คือ เชื่อมต่อกับ GPIO 24 บน PI lcd_d6 = 23 # D6 ของ LCD เชื่อมต่อกับ GPIO 23 บน PI lcd_d7 = 18 # D7 ของ LCD เชื่อมต่อกับ GPIO 18 บน PI lcd_backlight = 0 #LED ไม่ได้เชื่อมต่อดังนั้นเราจึงกำหนดให้เป็น 0
คุณยังสามารถเชื่อมต่อ LCD ในโหมด 8 บิตด้วย Raspberry pi แต่จากนั้นพินอิสระจะลดลง
ไลบรารี LCD จาก Adafruit ที่เราดาวน์โหลดมาสามารถใช้กับจอแสดงผล LCD ทุกประเภท ในโครงการของเราเรากำลังใช้จอ LCD ขนาด 16 * 2 ดังนั้นเราจึงกล่าวถึงจำนวนแถวและคอลัมน์ให้กับตัวแปรตามที่แสดงด้านล่าง
lcd_columns = 16 #for 16 * 2 LCD lcd_rows = 2 #for 16 * 2 LCD
ตอนนี้เราได้ประกาศพิน LCD และจำนวนแถวและคอลัมน์สำหรับ LCD แล้วเราสามารถเริ่มต้นการแสดงผล LCD ได้โดยใช้บรรทัดต่อไปนี้ซึ่งส่งข้อมูลที่จำเป็นทั้งหมดไปยังไลบรารี
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # ส่งรายละเอียดพินทั้งหมดไปที่ไลบรารี
ในการเริ่มโปรแกรมเราจะแสดงข้อความแนะนำเล็ก ๆโดยใช้ ฟังก์ชัน lcd.message () จากนั้นให้เวลาล่าช้า 2 วินาทีเพื่อให้อ่านข้อความได้ สำหรับการพิมพ์บน 2 ครั้งบรรทัดคำสั่ง \ n สามารถใช้เป็นที่แสดงด้านล่าง
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # ให้เวลาข้อความ แนะนำการนอนหลับ (2) # รอ 2 วินาที
สุดท้ายใน while loop ของเราเราควรอ่านค่าของอุณหภูมิและความชื้นจากเซ็นเซอร์และแสดงบนหน้าจอ LCD ทุกๆ 2 วินาที โปรแกรมที่สมบูรณ์ภายใน while loop แสดงอยู่ด้านล่าง
ในขณะที่ 1: #Infinite Loop
ความชื้นอุณหภูมิ = Adafruit_DHT.read_retry (sensor_name, sensor_pin) # อ่านจากเซ็นเซอร์และบันทึกค่าตามลำดับในตัวแปรอุณหภูมิและความชื้น
lcd.clear () # ล้างหน้าจอ LCD lcd.message ('Temp =%.1f C'% อุณหภูมิ) # แสดงค่าของอุณหภูมิ lcd.message ('\ nHum =%.1f %%'% ความชื้น) #Display ค่าของ Humidity time.sleep (2) # รอ 2 วินาทีจากนั้นอัปเดตค่า
เราสามารถรับค่าอุณหภูมิและความชื้นจากเซ็นเซอร์ได้อย่างง่ายดายโดยใช้บรรทัดเดียวด้านล่างนี้ ในขณะที่คุณสามารถเห็นมันกลับสองค่าที่ถูกเก็บไว้ในที่มีความชื้นและอุณหภูมิตัวแปร sensor_name และ sensor_pin รายละเอียดจะถูกส่งผ่านเป็นพารามิเตอร์; ค่าเหล่านี้ได้รับการอัปเดตในช่วงเริ่มต้นของโปรแกรม
ความชื้นอุณหภูมิ = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
ในการแสดงชื่อตัวแปรบนหน้าจอ LCD เราสามารถใช้ตัวระบุเช่น & d,% c เป็นต้นได้ที่นี่เนื่องจากเรากำลังแสดงตัวเลขทศนิยมที่มีเพียงหนึ่งหลักหลังจุดทศนิยมเราจึงใช้ตัวระบุ%.1f เพื่อแสดงค่าใน อุณหภูมิและความชื้นที่แปรปรวน
lcd .message ('Temp =%.1f C'% อุณหภูมิ) lcd .message ('\ nHum =%.1f %%'% ความชื้น)
การวัดความชื้นและอุณหภูมิโดยใช้ Raspberry Pi:
ทำการเชื่อมต่อตามแผนภาพวงจรและติดตั้งไลบรารีที่ต้องการ จากนั้นเปิดโปรแกรม python ที่ให้ไว้ในตอนท้ายของหน้านี้ LCD ของคุณควรแสดงข้อความแนะนำจากนั้นแสดงค่าอุณหภูมิและความชื้นปัจจุบันตามที่แสดงในภาพด้านล่าง
หากคุณไม่พบว่าไม่มีอะไรปรากฏบนจอ LCD ให้ตรวจสอบว่าหน้าต่าง python shell แสดงข้อผิดพลาดใด ๆ หรือไม่หากไม่มีข้อผิดพลาดปรากฏขึ้นจากนั้นตรวจสอบการเชื่อมต่อของคุณอีกครั้งและปรับโพเทนชิออมิเตอร์เพื่อเปลี่ยนระดับความคมชัดของ LCD และตรวจสอบว่าคุณได้รับอะไร หน้าจอ.
หวังว่าคุณจะเข้าใจโครงการและสนุกกับการสร้างโครงการหากคุณประสบปัญหาใด ๆ ในการทำให้เสร็จรายงานในส่วนความคิดเห็นหรือใช้ฟอรัมเพื่อขอความช่วยเหลือด้านเทคนิค ฉันจะพยายามอย่างเต็มที่เพื่อตอบกลับความคิดเห็นทั้งหมด
คุณยังสามารถตรวจสอบโครงการอื่น ๆ ของเราโดยใช้ DHT11 กับไมโครคอนโทรลเลอร์อื่น ๆ