บทความนี้นี้แสดงวิธีใช้เซ็นเซอร์อุณหภูมิและความชื้น DHT22 กับบอร์ดพัฒนา ESP32 ให้แสดงผลที่ Python shell และ แสดงผลที่จอแสดงผล OLED โดยใช้เฟิร์มแวร์ MicroPython
เซ็นเซอร์ DHT22 เมื่อเปรียบเทียบกับ DHT11 จะมีความละเอียดที่ดีกว่าและช่วงการวัดอุณหภูมิและความชื้นที่กว้างขึ้น อย่างไรก็ตามมันมีราคาแพงกว่า เล็กน้อยและคุณสามารถขออ่านได้ด้วยช่วงเวลา 2 วินาทีเท่านั้น
### อุปกรณ์ที่ใช้ ###
1. PICO KIT V4 ESP32 Development Board WiFi + Bluetooth
2. Micro USB Cable Wire 1m for NodeMCU
3. Breadboard 830 Point MB-102
4. Jumper (M2M) 20cm Male to Male
5. Blue OLED Display 0.96 inch 128X64 Module
6. DHT22/AM2302 เซ็นเซอร์วัดอุณหภูมิและความชื้น
7. รีซิสเตอร์ 10K Ohm 1/4W 5%
โดยขั้นตอนการทำงานมีดังนี้
1. เริ่มต้นใช้งาน MicroPython กับ ESP32 ด้วย uPyCraft IDE
2. การใช้งานจอแสดงผล OLED ด้วย ESP32
3. แสดงอุณหภูมิจาก DHT22 บน Python shell
DHT Pinout
เซ็นเซอร์ DHT มีสี่ขาดังแสดงในรูปต่อไปนี้
ตารางต่อไปนี้แสดง Pinout DHT22 เมื่อเซ็นเซอร์หันหน้าเข้าหาคุณการกำหนดหมายเลขเริ่มต้นที่ 1 จากซ้ายไปขวา
DHT pin | Connect to |
1 | 3.3V |
2 | GPIO 14 , 10k Ohm pull-up resistor |
3 | Don’t connect |
4 | GND |
ต่อเซ็นเซอร์ DHT22 เข้ากับบอร์ด ESP32 ดังที่แสดงในแผนผังไดอะแกรมต่อไปนี้
3.1 อัพโหลดโค้ด ไฟล์ main.py
แก้ไขไฟล์ main.py ที่เคยสร้างไว้แล้ว (อยู่ที่คอมพิวเตอร์เรา workSpace) ตามโค้ดด้านล่าง โดยโค้ดนี้จะรับอุณหภูมิจากเซ็นเซอร์อุณหภูมิ DHT22 และแสดงการอ่านที่ Python shell
from machine import Pin from time import sleep import dht sensor = dht.DHT22(Pin(14)) while True: try: sleep(2) sensor.measure() temp = sensor.temperature() hum = sensor.humidity() temp_f = temp * (9/5) + 32.0 print('Temperature: %3.1f C' %temp) print('Temperature: %3.1f F' %temp_f) print('Humidity: %3.1f %%' %hum) except OSError as e: print('Failed to read sensor.')
นำเข้าคลาส Pin จากโมดูล machine เพื่อกำหนดพิน นำเข้า sleep จากโมดูล time ใช่สำหรับการหน่วงเวลา และก็นำเข้าโมดูล dht เพื่อนำเข้าฟังก์ชั่นเพื่ออ่านจากเซ็นเซอร์ DHT
from machine import Pin
from time import sleep
import dht
กำหนดวัตถุ dht ที่เรียกว่าเซ็นเซอร์บนพินข้อมูลที่ระบุ ในกรณีนี้เรากำลังเชื่อมต่อ data pin กับ GPIO 14sensor = dht.DHT22(Pin(14))
เพิ่มการหน่วงเวลา 2 วินาที เนื่องจากอัตราการสุ่มตัวอย่างสูงสุดของ DHT22 คือ 2 วินาทีsleep(2)
ก่อนที่จะขออุณหภูมิและความชื้น คุณต้องใช้เมธอด measure() บนวัตถุเซ็นเซอร์sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
คำสั่งต่อไปนี้แปลงอุณหภูมิเป็นองศาฟาเรนไฮต์temp_f = temp * (9/5) + 32.0
แสดงการอ่านทั้งหมดที่ Python shell โดยใช้ฟังก์ชั่น print ():print('Temperature: %3.1f C' %temp)
print('Temperature: %3.1f F' %temp_f)
print('Humidity: %3.1f %%' %hum)
ในกรณีที่มีข้อผิดพลาดในการอ่านค่า ให้แสดงข้อผิดพลาด : Failed to read sensor.except OSError as e:
print('Failed to read sensor.')
4. แสดงอุณหภูมิจาก DHT22 ที่จอ OLED
แก้ไขไฟล์ main.py ที่เคยสร้างไว้แล้ว (อยู่ที่คอมพิวเตอร์เรา workSpace) ตามโค้ดด้านล่าง โดยโค้ดนี้จะรับอุณหภูมิจากเซ็นเซอร์อุณหภูมิ DHT22 และแสดงการอ่านที่จอ OLED
from machine import Pin, I2C import ssd1306 from time import sleep import dht i2c = I2C(-1, scl=Pin(22), sda=Pin(21)) sensor = dht.DHT22(Pin(14)) oled_width = 128 oled_height = 64 oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c) while True: try: sleep(2) sensor.measure() temp = sensor.temperature() hum = sensor.humidity() temp_f = temp * (9/5) + 32.0 oled.text('T: %3.1f C' %temp, 0, 0) oled.text('T: %3.1f F' %temp_f, 0, 10) oled.text('H: %3.1f %%' %hum, 0, 20) oled.show() except OSError as e: oled.text('Failed to read sensor.', 0, 0) oled.show()
credit : https://randomnerdtutorials.com/esp32-esp8266-dht11-dht22-micropython-temperature-humidity-sensor/
Merit Casino | Online casino | Dancer casino
ตอบลบAll you have to do is visit the website to enter the slot machine register to play. At Merit Casino, 메리트 카지노 고객 센터 you can win an enormous amount of prizes!