DHT11 DHT22 với Raspberry Pi Pico sử dụng MicroPytho

DHT11 DHT22 với Raspberry Pi Pico sử dụng MicroPytho

Giới thiệu DHT11 / DHT22

DHT11 / DHT22 là một cảm biến đo độ ẩm và cảm biến nhiệt độ tương đối. Nó cung cấp đầu ra kỹ thuật số được hiệu chỉnh với giao thức 1 dây. Cả hai cảm biến đều không tốn kém. Chúng khá giống nhau với một số khác biệt về thông số kỹ thuật.

DHT22 gần giống với DHT11 nhưng trước đây đo nhiệt độ và độ ẩm với độ chính xác cao hơn và hỗ trợ phạm vi rộng hơn.

DHT11 so với DHT22

Bảng sau liệt kê sự so sánh của cả hai cảm biến DHT.

 

DHT22 ·

DHT11 ·

Nhiệt độ

-40 đến 80 ºC +/- 0,5ºC

0 đến 50 ºC +/-2 ºC

Độ ẩm

0 đến 100% +/-2%

20 đến 90% +/-5%

Độ phân giải

Độ ẩm: 0.1%Nhiệt độ: 0.1ºC

Độ ẩm: 1% Nhiệt độ: 1ºC

Điện áp hoạt động

3- 6 V DC (nguồn điện trực tiếp có thể từ Raspberry Pi Pico)

3-5.5 V DC (nguồn điện trực tiếp có thể từ Raspberry Pi Pico)

Thời gian lấy mẫu

2 giây

1 giây

Đánh giá hiện tại

$4 đến $10

$1 đến $5

Kiểu dữ liệu đầu ra

nổi

Int

Sơ đồ chân

4 chân (giống như DHT11)

4 chân (giống như DHT22)

Giá

5

2

Như bạn có thể thấy từ bảng so sánh ở trên rằng DHT22 cung cấp phạm vi nhiệt độ và độ phân giải rộng hơn cho nhiệt độ và độ ẩm. Nhưng nó đắt hơn DHT11. Tuy nhiên, DHT11 có thời gian lấy mẫu tốt hơn. Hơn nữa, dải điện áp hoạt động cho cả hai cảm biến gần như và chúng ta có thể cấp nguồn trực tiếp cho các cảm biến này từ các chân nguồn của Raspberry Pi Pico.

Bất kể sự khác biệt ở trên, cả hai cảm biến DHT đều có cùng nguyên lý làm việc và sơ đồ chân giống nhau. Chúng ta có thể sử dụng cùng một tập lệnh MicroPython để đọc các bài đọc về nhiệt độ và độ ẩm bằng cách chọn loại DHT bên trong mã.

Cảm biến DHT được hiệu chuẩn trước. Chúng ta có thể kết nối trực tiếp chúng với Raspberry Pi Pico để có được chỉ số đầu ra của cảm biến. Chúng bao gồm bên trong một cảm biến cảm biến độ ẩm và nhiệt điện trở. Hai thành phần này đo độ ẩm và nhiệt độ.

Sơ đồ chân DHT11 / DHT22

Hình dưới đây cho thấy sơ đồ sơ đồ chân của cảm biến DHT. Cảm biến DHT bao gồm bốn chân. Nhưng trên các mô-đun DHT chỉ có ba chân tiếp xúc với sơ đồ chân của mô-đun và điện trở kéo lên 10k ohm được kết nối bên trong với chân 2.

sơ đồ chân DHT11 và DHT22

Mô tả pin

Sau đây liệt kê sơ đồ chân của cảm biến DHT và mô tả ngắn gọn của chúng. Số pin bắt đầu từ trái sang phải khi bạn giữ cảm biến từ đầu cuối.

Chân DHT11 / DHT22

Kết nối với Raspberry Pi Pico

1 ( VCC)

3.3V

2 (Dữ liệu ra)

Bất kỳ chân GPIO nào của Raspberry Pi Pico cùng với điện trở kéo lên 10k ohm

3 (NC)

Không sử dụng

4 (GND)

Mặt đất

  • Vcc là chân cung cấp điện. Áp dụng điện áp trong phạm vi từ 3,3 V đến 5,0 V cho chân này

  • Data Out là chân đầu ra kỹ thuật số. Nó gửi giá trị của nhiệt độ và độ ẩm đo được dưới dạng dữ liệu nối tiếp

  • N/C không được kết nối

  • GND: Kết nối chân GND

Các bộ phận cần thiết

Bạn sẽ cần các thành phần sau

  • Quả mâm xôi Pi Pico

  • DHT11 và DHT22

  • Bảng bánh mì

  • Điện trở 10K ohm (không bắt buộc nếu sử dụng phiên bản mô-đun của cảm biến)

  • Dây nhảy

DHT22 Giao diện với Raspberry Pi Pico

Kết nối DHT22 với Raspberry Pi Pico cùng với điện trở kéo lên 10K ohm. Sơ đồ kết nối được thể hiện trong hình dưới đây.

Raspberry Pi Pico với sơ đồ kết nối DHT22

  • Chân đầu tiên cho cả hai cảm biến là chân nguồn điện (Vcc). Kết nối nó với chân 3.3 volt của Raspberry Pi Pico.

  • Dữ liệu ra là chân mà qua đó chúng tôi lấy mẫu nhiệt độ và độ ẩm từ cảm biến DHT. Kết nối chân này với GPIO2 của Raspberry Pi Pico và cũng kết nối chân dữ liệu với điện trở kéo lên 10k. Nhưng bạn cũng có thể sử dụng bất kỳ chân kỹ thuật số nào của Raspberry Pi Pico.

Một điện trở kéo lên được sử dụng để giữ cho chân dữ liệu cao để giao tiếp thích hợp giữa vi điều khiển và cảm biến. Bạn có thể kiểm tra bảng dữ liệu của DHT11 và DHT22 để biết thêm thông tin về nó. DHT22 còn được biết đến với cái tên AM2302.

  • Chân thứ ba không được sử dụng

  • Kết nối chân thứ tư (GND) với chân nối đất của bảng

 

Raspberry Pi Pico với DHT22

MicroPython DHT11 / DHT22 Raspberry Pi Pico Mã

Bây giờ chúng ta hãy xem xét tập lệnh MicroPython cho DHT11 / DHT22 để có được kết quả đọc cảm biến. Sao chép đoạn mã sau vào tệp main.py và tải tệp main.py lên Raspberry Pi Pico.

Tập lệnh MicroPython này đọc các bài đọc nhiệt độ và độ ẩm từ cảm biến DHT22 và in nó trên bảng điều khiển vỏ MicroPython.

from machine import Pin

from time import sleep

import dht

 

sensor = dht.DHT22(Pin(2)) 

 

while True:

    sensor.measure()

    temp = sensor.temperature()

    hum = sensor.humidity()

    print("Temperature: {}°C   Humidity: {:.0f}% ".format(temp, hum))

    sleep(2)

 

Mã hoạt động như thế nào?

Đầu tiên, chúng tôi nhập mô-đun Pin, dht và sleep để chúng tôi có thể truy cập các phương thức của nó thông qua các lớp đã xác định của nó.

from machine import Pin

from time import sleep

import dht

Tiếp theo, chúng ta sẽ định nghĩa một đối tượng dht có tên là 'sensor' và gán chân dữ liệu cho nó. Ở đây chúng tôi đang sử dụng cảm biến DHT22 với chân dữ liệu được kết nối tại GPIO2. Nếu sử dụng DHT11, hãy thay thế 'DHT22' bằng 'DHT11' và thay đổi số pin một cách thích hợp.

sensor = dht.DHT22(Pin(2))

Bên trong vòng lặp vô hạn, chúng ta sẽ thu được số đọc nhiệt độ và độ ẩm và lưu nó ở 'nhiệt độ' và 'hum' tương ứng. Chúng sẽ được in trong bảng điều khiển shell sau thời gian trễ 2 giây.

while True:

    sensor.measure()

    temp = sensor.temperature()

    hum = sensor.humidity()

    print("Temperature: {}°C   Humidity: {:.0f}% ".format(temp, hum))

    sleep(2)

Demo

Để kiểm tra tập lệnh MicroPython cho DHT22 với Raspberry Pi Pico, hãy tải tệp main.py lên bảng của bạn.

Bạn sẽ thấy các kết quả đọc cảm biến được in trên bảng điều khiển shell sau mỗi hai giây như sau:

Raspberry Pi Pico với bản demo DHT22 Shell Console

MicroPython Hiển thị giá trị cảm biến DHT11 / DHT22 trên Màn hình OLED với Raspberry Pi Pico

Trong phần này, chúng ta sẽ xem cách hiển thị số đọc DHT trên màn hình OLED 0.96 SSD1306 bằng MicroPython và Raspberry Pi Pico.

Màn hình OLED SSD1306 Thư viện MicroPython

Đối với màn hình OLED, chúng tôi cũng sẽ cần tải thư viện lên Raspberry Pi Pico.

  • Để làm điều đó thành công, hãy mở Thonny IDE của bạn với Raspberry Pi Pico được cắm vào hệ thống của bạn. Đi tới Công cụ > Quản lý gói. Điều này sẽ mở ra Trình quản lý gói Thonny.

Raspberry Pi Pico Cài đặt ssd1306 Thư viện OLED MicoPython 1

  • Tìm kiếm "ssd1306" trong thanh tìm kiếm bằng cách nhập tên của nó và nhấp vào nút 'Tìm kiếm trên PyPI.'

Raspberry Pi Pico Cài đặt ssd1306 Thư viện OLED MicoPython 2

  • Từ các kết quả tìm kiếm sau, hãy nhấp vào kết quả được đánh dấu bên dưới: Micropython-SSD1306

Raspberry Pi Pico Cài đặt ssd1306 Thư viện OLED MicoPython 3

Cài đặt thư viện này.

Raspberry Pi Pico Cài đặt ssd1306 Thư viện OLED MicoPython 4

Sau một lúc, thư viện này sẽ được cài đặt thành công. Bây giờ chúng tôi đã sẵn sàng để lập trình Raspberry Pi Pico của mình với màn hình OLED.

Kết nối màn hình OLED SSD1306 với Raspberry Pi Pico và DHT11 / DHT22

Chúng tôi sẽ cần các thành phần sau để kết nối Raspberry Pi Pico của chúng tôi với Màn hình OLED và HC-SR04.

  1. Raspberry Pi Pico

  2. DHT11 / DHT22

  3. Màn hình OLED SSD1306

  4. Dây kết nối

Màn hình OLED có 4 thiết bị đầu cuối mà chúng tôi sẽ kết nối với Raspberry Pi Pico. Vì màn hình OLED yêu cầu điện áp hoạt động trong phạm vi 3.3-5V, do đó chúng tôi sẽ kết nối thiết bị đầu cuối VCC với 3.3V, điểm chung với bo mạch và cảm biến. SCL của màn hình sẽ được kết nối với chân SCL của mô-đun và SDA của màn hình sẽ được kết nối với SDA của mô-đun. Mặt bằng của cả ba thiết bị sẽ được tổ chức chung.

Các kết nối giữa ba thiết bị mà chúng tôi đang sử dụng có thể được nhìn thấy bên dưới.

Màn hình OLED SSD1306

Raspberry Pi Pico

VCC

3.3V

SDA

GP0 (I2C0 SDA)

SCL

GP1 (I2C0 SCL)

GND ·

GND ·

 

 

DHT11 / DHT22

Raspberry Pi Pico

Chân 1 (VCC)

3.3V

Ghim 2 (Ngõ ra dữ liệu)

GP2 ·

Chân 3 (NC)

Không sử dụng

Chân 4 (GND)

GND ·

 

Sơ đồ Raspberry Pi Pico với OLED và DHT22

Thực hiện theo sơ đồ dưới đây kết nối chúng cho phù hợp.

Raspberry Pi Pico với DHT22 và sơ đồ kết nối OLED

 

Raspberry Pi Pico với DHT22 và sơ đồ kết nối OLED

Raspberry Pi Pico với DHT22 và OLED

Mã MicroPython: Hiển thị các bài đọc DHT22 trên màn hình OLED

from machine import Pin, I2C

from time import sleep

import dht

from ssd1306 import SSD1306_I2C

 

sensor = dht.DHT22(Pin(2)) 

i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000)    #initializing the I2C method 

oled = SSD1306_I2C(128, 64, i2c)

 

while True:

    oled.fill(0)

    sensor.measure()

    temp = str(sensor.temperature())

    hum = str(sensor.humidity())

    oled.text("Temperature",0,0)

    oled.text(temp +" C",0,10)

    oled.text("Humidity",0,35)

    oled.text(hum + " %",0,45)

    oled.show()

    sleep(2)

Mã hoạt động như thế nào?

Trong phần này, chúng tôi chỉ giải thích phần mã MicroPython được sử dụng để hiển thị các giá trị cảm biến DHT22 trên OLED. Bởi vì phần còn lại của mã giống như chúng ta đã sử dụng trong phần trước để hiển thị các chỉ số cảm biến trên bảng điều khiển shell.

Chúng tôi sẽ nhập ssd1306 là thư viện màn hình OLED mà chúng tôi đã cài đặt trước đó. Điều này sẽ giúp chúng ta truy cập tất cả các chức năng được xác định bên trong nó. Ngoài ra, chúng tôi sẽ nhập lớp Pin và lớp I2C từ mô-đun máy. Điều này là do chúng tôi phải chỉ định chân cho giao tiếp I2C.

from machine import Pin, I2C

from ssd1306 import SSD1306_I2C

Tiếp theo, chúng tôi sẽ khởi tạo các chân I2C GPIO cho SCL và SDA tương ứng. Chúng tôi đã sử dụng chân I2C0 SCL và I2C0 SDA.

Chúng ta đã tạo ra một phương thức I2C() lấy bốn tham số. Tham số đầu tiên là kênh I2C mà chúng ta đang sử dụng. Tham số thứ hai chỉ định chân I2C GPIO của bo mạch được kết nối với đường SDA. Tham số thứ ba chỉ định chân I2C GPIO của bo mạch được kết nối với dòng SCL. Tham số cuối cùng là kết nối tần số.

Chúng tôi đang đặt SCL trên chân 1 và SDA trên chân 0.

i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000)    #initializing the I2C method 

Bây giờ, chúng ta sẽ tạo một đối tượng 'oled' của SSD1306_I2C sử dụng width, height và đối tượng i2c làm tham số.

oled = SSD1306_I2C(128, 64, i2c)

Xóa màn hình OLED với led.fill() thường xuyên.

 oled.fill(0)

Cuối cùng, hiển thị văn bản cùng với số đọc nhiệt độ và độ ẩm trên OLED sau mỗi 2 giây.

    sensor.measure()

    temp = str(sensor.temperature())

    hum = str(sensor.humidity())

    oled.text("Temperature",0,0)

    oled.text(temp +" C",0,10)

    oled.text("Humidity",0,35)

    oled.text(hum + " %",0,45)

    oled.show()

    sleep(2)

Cuối cùng, hãy gọi phương thức show() trên phương thức oled để các thay đổi hiển thị trên OLED.

oled.show()

Bài viết cùng chuyên mục

NHANH

NHANH

Vì Đổi mới liên tục nên Nhanh hơn

ĐÚNG

ĐÚNG

Coi trọng và ưu tiên việc làm Đúng

ĐỦ

ĐỦ

Tìm và mua Đủ Đơn hàng hơn

KỊP THỜI

KỊP THỜI

Hiệu suất tối ưu bởi Kịp Thời hơn