Mục lục:
- Bước 1: Cách hoạt động của I2c
- Bước 2: Thư viện
- Bước 3: Behaivor
- Bước 4: Sử dụng I2c
- Bước 5: Sử dụng một dây
- Bước 6: Đọc ngầm
- Bước 7: Đọc đơn giản
- Bước 8: Đọc toàn bộ
- Bước 9: Sơ đồ kết nối
- Bước 10: Arduino: OneWire
- Bước 11: Arduino: I2c
- Bước 12: Esp8266 (D1Mini) OneWire
- Bước 13: Esp8266 (D1Mini) I2c
- Bước 14: Cảm ơn
Video: DHT12 (Cảm biến nhiệt độ và độ ẩm giá rẻ i2c), Cách sử dụng dễ dàng nhanh chóng: 14 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Bạn có thể tìm thấy bản cập nhật và các bản cập nhật khác trên trang web của tôi
Tôi thích cảm biến có thể được sử dụng với 2 dây (giao thức i2c), nhưng tôi thích loại rẻ tiền.
Đây là thư viện Arduino và esp8266 dành cho dòng cảm biến nhiệt độ / độ ẩm DHT12 có chi phí rất thấp (dưới 1 đô la) hoạt động với kết nối i2c hoặc một dây.
Rất hữu ích nếu bạn muốn sử dụng esp01 (nếu bạn sử dụng nối tiếp, bạn chỉ có 2 pin) để đọc độ ẩm và nhiệt độ và hiển thị trên i2c LCD.
AI đọc rằng đôi khi có vẻ cần hiệu chuẩn, nhưng tôi có cây này và nhận được giá trị rất giống với DHT22. Nếu bạn đã hiệu chỉnh vấn đề này, hãy mở vấn đề trên github và tôi thêm phần triển khai.
Bước 1: Cách hoạt động của I2c
I2C hoạt động với hai dây, SDA (đường dữ liệu) và SCL (dây đồng hồ).
Cả hai dòng này đều là cống hở, nhưng được kéo lên bằng điện trở.
Thông thường có một chủ và một hoặc nhiều nô lệ trên đường dây, mặc dù có thể có nhiều chủ, nhưng chúng ta sẽ nói về điều đó sau.
Cả master và slave đều có thể truyền hoặc nhận dữ liệu, do đó, một thiết bị có thể ở một trong bốn trạng thái sau: master truyền, master nhận, slave truyền, slave nhận.
Bước 2: Thư viện
Bạn có thể tìm thấy thư viện của tôi ở đây.
Tải về
Nhấn vào nút DOWNLOADS ở góc trên cùng bên phải, đổi tên thư mục không nén thành DHT12.
Kiểm tra xem thư mục DHT có chứa DHT12.cpp và DHT12.h không.
Đặt thư mục thư viện DHT thư mục / thư viện / thư mục của bạn.
Bạn có thể cần tạo thư mục con thư viện nếu thư mục đầu tiên của bạn.
Khởi động lại IDE.
Bước 3: Behaivor
Libray này cố gắng mô phỏng hoạt động của các cảm biến thư viện DHT tiêu chuẩn (và sao chép rất nhiều mã) và tôi thêm mã để quản lý i2c olso theo cách tương tự.
Phương pháp này giống với cảm biến thư viện DHT, với một số bổ sung như chức năng điểm sương.
Bước 4: Sử dụng I2c
Để sử dụng với i2c (địa chỉ mặc định và chân SDA SCL mặc định), hàm tạo là:
DHT12 dht12;
và lấy giá trị mặc định cho chân SDA SCL.
(Có thể xác định lại bằng contructor được chỉ định cho esp8266, cần cho ESP-01). hoặc
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> địa chỉ
để thay đổi địa chỉ.
Bước 5: Sử dụng một dây
Để sử dụng một dây:
DHT12 dht12 (uint8_t addressOrPin, true)
addressOrPin -> ghim
giá trị boolean là lựa chọn chế độ oneWire hoặc i2c.
Bước 6: Đọc ngầm
Bạn có thể sử dụng Nó với "ẩn", "đọc đơn giản" hoặc "đọc đầy đủ": Ngầm định, chỉ lần đọc đầu tiên thực hiện việc đọc thực sự của cảm biến, lần đọc còn lại sẽ trở thành trong 2 giây. khoảng thời gian là giá trị được lưu trữ của lần đọc đầu tiên.
// Việc đọc cảm biến có 2 giây thời gian trôi qua, trừ khi bạn truyền tham số lực
// Đọc nhiệt độ dưới dạng độ C (mặc định) float t12 = dht12.readTempe Heat (); // Đọc nhiệt độ dưới dạng Fahrenheit (isFahrenheit = true) float f12 = dht12.readTempe Heat (true); // Kết quả đọc của cảm biến cũng có thể 'cũ' lên đến 2 giây (cảm biến rất chậm) float h12 = dht12.readHumidity (); // Tính toán chỉ số nhiệt trong Fahrenheit (mặc định) float hif12 = dht12.computeHeatIndex (f12, h12); // Tính toán chỉ số nhiệt theo độ C (isFahmbleit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Tính điểm sương theo độ F (mặc định) float dpf12 = dht12.dewPoint (f12, h12); // Tính điểm sương theo độ C (isFahbroken = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Bước 7: Đọc đơn giản
Đọc đơn giản để có được trạng thái đã đọc.
// Việc đọc cảm biến có 2 giây thời gian trôi qua, trừ khi bạn truyền tham số lực
bool chk = dht12.read (); // đọc đúng là ok, vấn đề đọc sai
// Đọc nhiệt độ dưới dạng độ C (mặc định)
float t12 = dht12.readTempentic (); // Đọc nhiệt độ dưới dạng Fahrenheit (isFahrenheit = true) float f12 = dht12.readTempe Heat (true); // Kết quả đọc của cảm biến cũng có thể 'cũ' lên đến 2 giây (cảm biến rất chậm) float h12 = dht12.readHumidity (); // Tính toán chỉ số nhiệt trong Fahrenheit (mặc định) float hif12 = dht12.computeHeatIndex (f12, h12); // Tính toán chỉ số nhiệt theo độ C (isFahmbleit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Tính điểm sương theo độ F (mặc định) float dpf12 = dht12.dewPoint (f12, h12); // Tính điểm sương theo độ C (isFahmbleit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Bước 8: Đọc toàn bộ
Đọc đầy đủ để có được một trạng thái được chỉ định.
// Việc đọc cảm biến có 2 giây thời gian trôi qua, trừ khi bạn truyền tham số lực
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nRead sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); nghỉ; case DHT12:: ERROR_CHECKSUM: Serial.println (F ("Lỗi kiểm tra")); nghỉ; case DHT12:: ERROR_TIMEOUT: Serial.println (F ("Lỗi hết thời gian chờ")); nghỉ; case DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Lỗi hết thời gian trên tín hiệu thấp, hãy thử đặt kháng pullup cao")); nghỉ; case DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Lỗi hết thời gian trên tín hiệu thấp, hãy thử đặt kháng pullup thấp")); nghỉ; case DHT12:: ERROR_CONNECT: Serial.println (F ("Lỗi kết nối")); nghỉ; case DHT12:: ERROR_ACK_L: Serial.println (F ("Lỗi AckL")); nghỉ; case DHT12:: ERROR_ACK_H: Serial.println (F ("AckH error")); nghỉ; case DHT12:: ERROR_UNKNOWN: Serial.println (F ("Lỗi không xác định DETECTED")); nghỉ; case DHT12:: NONE: Serial.println (F ("Không có kết quả")); nghỉ; default: Serial.println (F ("Lỗi không xác định")); nghỉ; }
// Đọc nhiệt độ dưới dạng độ C (mặc định)
float t12 = dht12.readTempe Heat (); // Đọc nhiệt độ dưới dạng Fahrenheit (isFahrenheit = true) float f12 = dht12.readTempe Heat (true); // Kết quả đọc của cảm biến cũng có thể 'cũ' lên đến 2 giây (cảm biến rất chậm) float h12 = dht12.readHumidity (); // Tính toán chỉ số nhiệt trong Fahrenheit (mặc định) float hif12 = dht12.computeHeatIndex (f12, h12); // Tính toán chỉ số nhiệt theo độ C (isFahmbleit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Tính điểm sương theo độ F (mặc định) float dpf12 = dht12.dewPoint (f12, h12); // Tính điểm sương theo độ C (isFahbroken = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Bước 9: Sơ đồ kết nối
Với các ví dụ, có sơ đồ kết nối, điều quan trọng là sử dụng điện trở pullup đúng.
Cảm ơn Bobadas, dplasa và adafruit, đã chia sẻ mã trong github (nơi tôi lấy một số mã và ý tưởng).
Bước 10: Arduino: OneWire
Bước 11: Arduino: I2c
Bước 12: Esp8266 (D1Mini) OneWire
Bước 13: Esp8266 (D1Mini) I2c
Bước 14: Cảm ơn
Sân chơi Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
loạt dự án i2c (Bộ sưu tập):
- Cảm biến nhiệt độ độ ẩm
- Bộ mở rộng tương tự
- Bộ mở rộng kỹ thuật số
- Màn hình LCD
Đề xuất:
Cách sử dụng cảm biến nhiệt độ và độ ẩm DHT12 I2C với Arduino: 7 bước
Cách sử dụng cảm biến nhiệt độ và độ ẩm DHT12 I2C với Arduino: Trong hướng dẫn này, chúng ta sẽ học cách sử dụng cảm biến nhiệt độ và độ ẩm DHT12 I2C với Arduino và hiển thị các giá trị trên Màn hình OLED. Hãy xem video
Cảm biến giao diện, SPS-30, Cảm biến vật chất dạng hạt với Arduino Duemilanove sử dụng chế độ I2C: 5 bước
Cảm biến giao diện, SPS-30, Cảm biến vật chất hạt với Arduino Duemilanove Sử dụng chế độ I2C: Khi tôi đang xem xét các cảm biến giao tiếp SPS30, tôi nhận ra rằng hầu hết các nguồn đều dành cho Raspberry Pi nhưng không nhiều cho Arduino. Tôi dành một ít thời gian để làm cho cảm biến hoạt động với Arduino và tôi quyết định đăng trải nghiệm của mình ở đây để nó có thể
Cách sử dụng cảm biến nhiệt độ DHT11 với Arduino và nhiệt độ in Nhiệt độ và độ ẩm: 5 bước
Cách sử dụng cảm biến nhiệt độ DHT11 với Arduino và nhiệt độ in Nhiệt độ và độ ẩm: Cảm biến DHT11 được sử dụng để đo nhiệt độ và độ ẩm. Họ là những người rất ưa thích đồ điện tử. Cảm biến nhiệt độ và độ ẩm DHT11 giúp bạn thực sự dễ dàng thêm dữ liệu độ ẩm và nhiệt độ vào các dự án điện tử tự làm của mình. Đó là mỗi
Tạo giá đỡ máy tính xách tay từ bìa cứng - Cách nhanh chóng và dễ dàng: 6 bước
Làm giá đỡ máy tính xách tay từ bìa cứng - Cách nhanh chóng và dễ dàng: Máy tính làm việc của tôi là máy tính xách tay 17 inch và tôi đã cảm thấy mệt mỏi khi phải cúi xuống bàn cả ngày để sử dụng nó. Tôi muốn có một giá đỡ có thể chống đỡ màn hình LCD của máy tính xách tay chiều cao công thái học hơn, nhưng tôi không muốn tốn bất kỳ khoản tiền nào. Giá đỡ máy tính xách tay bằng bìa cứng này
Xây dựng Hộp Dự án - Nhanh chóng, Giá rẻ, & Dễ dàng: 5 bước
Xây dựng Hộp Dự án - Nhanh chóng, Giá rẻ, & Dễ dàng: Chúng tôi cần một hộp dự án bảo vệ trong cửa hàng của chúng tôi với mặt trước có cửa sổ để có thể theo dõi tình trạng của các thành phần của mình. -Những cái được định giá phù hợp quá nhỏ để phù hợp với các thành phần của chúng tôi.