Webserver thu thập dữ liệu DHT11 với ESP8266

Ở bài trước chúng ta đã làm quen với việc lấy nội dung trang web thì hôm nay chúng ta sẽ quay trở lại với việc sử dụng ESP8266 đọc dữ liệu nhiệt độ độ ẩm môi trường từ cảm biến DHT11, sau đó sẽ thực hiện lập trình để có thể quan sát được thông tin về nhiệt độ độ ẩm thông qua wifi.

Đọc nhiệt độ độ ẩm với DHT11

Đầu tiên để có thể giao tiếp được với DHT11 thì cần tải thư viện bằng cách chọn Sketch > Include Library > Manage Libraries hoặc bạn có thể tải và cài thủ công thư viện tại đây

dht11_lib

Tiếp theo là kết nối theo sơ đồ tương tự như hình với ESP8266 v1 (dùng GPIO2) và ESP8266 v7/v12 (dùng GPIO5).

Lưu ý: Nguồn cấp cho DHT11 có thể dùng 3.3 – 5V.

esp8266-esp-01-gpio-dht11

Chương trình kiểm tra nhiệt độ và độ ẩm

Sau khi nạp xuống ta quan sát qua terminal sẽ thấy được thông tin như sau

esp8266_dht11_result

Theo dõi nhiệt độ độ ẩm qua mạng Wifi

Ta đã đọc được nhiệt độ và độ ẩm rồi thì làm thế nào để gửi nó lên mạng wifi trong nhà ? Có cần phải tạo web gì không ? Thật may mắn là ESP8266 có thể tạo ra một server và web ở trên địa chỉ sẵn có của nó, ta chỉ cần đăng nhập vào địa chỉ (ví dụ 192.168.1.xx) là có thông tin về nhiệt độ, độ ẩm rồi. Vậy cách làm thế nào, mình sẽ giải thích một số ý chính trong code dưới đây

Trước hết là cần thay đổi chỗ mang_wifipass_wifi thành tên và pass wifi nhà bạn là được.
Tiếp tục là tạo một web server với port là 80 bằng lệnh

Tạo xong rồi ta thực hiện kết nối ESP8266 vào mạng

Sau đó là khởi động server và in địa chỉ IP ra

Trong vòng lặp vô tận chúng ta sẽ thực hiện kiểm tra có client nào kết nối tới không bằng lệnh
WiFiClient client = server.available();  đồng thời đọc nhiệt độ và độ ẩm

Tiếp tục chờ yêu cầu (request) từ client (máy tính hoặc điện thoại khác cùng mạng wifi)

Coi như đã xong bước nhận yêu cầu, giờ là chuẩn bị câu trả lời cho yêu cầu từ client, ở đây ta sẽ tạo ra một trang web HTML sử dụng Bootstrap CSS để tự động reload trang sau mỗi một phút

Cuối cùng là hiển thị nhiệt độ và độ ẩm đọc được từ DHT11 lên và đợi cho tới khi client ngắt kết nối với ESP8266

Kết quả hoạt động tốt khi theo dõi qua laptop và điện thoại

web_dht11

1477802380142_4785

Bạn có thể tham khảo chương trình tại esp8266_dth11 và esp8266_dht11_web

Và các project liên quan tại  ESP8266 Arduino

Kết

Thế kà chúng ta đã thực hiện được giao tiếp với DHT11 để đọc nhiệt độ và độ ẩm, sau đó tạo webserver để gửi dữ liệu đã đọc được khi có yêu cầu từ laptop hoặc điện thoại, đây là cách đơn giản nhất để bạn có thể giám sát được thông tin, chẳng hạn như độ ẩm, nhiệt độ của đất cây trồng chẳng hạn. Cách này vẫn còn bị giới hạn chỉ những client trong cùng một mạng wifi mới có thể quan sát được thông tin. Nhưng không sao, mình sẽ giới thiệu với các bạn cách để bạn ở bất cứ nơi nào cũng có thể xem được thông tin ở những bài sau 😀

 

43
Leave a Reply

avatar
23 Comment threads
20 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
22 Comment authors
BảoscDuyenHiếuMỹ dry Recent comment authors

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

  Subscribe  
newest oldest most voted
Notify of
Tiep
Guest
Tiep

sao của em nó cứ báo :”nan” nhiều lần sau mới hiện nhiệt độ . Em dùng modue DHT11

TIep
Guest
TIep

giu len wedserver theo kieu JSON kieu gi a

nguyen
Guest
nguyen

chào anh, em điều khiển động cơ bằng tiva c, sau đó em lại muốn dùng 8266 để điều khiển động cơ từ xa thì giưa 8266 và tiva cần giao tiếp gì ạ

Andre
Guest
Andre

Hello anh, nếu em dùng STM32 Discovery sau đó dùng NodeMCU để gửi data lên web vẫn được mà phải không anh ạ?

Khoe
Guest
Khoe

Hello anh. Sau khi hiển thị kết quả như trên. Em muốn lưu nhiệt độ,độ ẩm vào database thì làm thế nào ạ? Thanks anh trước ạ!

Quý
Guest
Quý

Chào anh ! Cho e hỏi
+ Vì PC hay Smartphone phải cùng 1 mạng wifi với esp nên cách này chỉ hoạt động trong phạm vi wifi đó thôi phải không ạ?
+”cách để bạn ở bất cứ nơi nào cũng có thể xem được thông tin ở những bài sau ????” là bài nào vậy ạ?
+Sau khi hiển thị được em muốn lưu vào database thì làm thế nào ạ?
Cám ơn anh

Hoan Nguyen
Guest

chào ad, mình làm theo như trên nhưng sửa lại cái refresh = 5s, thif trang cứ bị giật, ad có cách nào k cần load lại cả trang mà chỉ load 2 giá trị nhiệt độ cà độ ẩm k ạ

Rocker
Guest
Rocker

Với esp8266 sd mã nguồn mở Firebase thì nên lm s Ad

Vinh
Guest
Vinh

Minh sử dụng cảm biến đo nhịp tim và huyết áp Max30100, no cũng tương tự như DHT11, nhưng s mình lam theo hướng dẫn trên thì nó không lấy được dữ liệu từ cảm biến.

Phạm Văn Diện
Guest
Phạm Văn Diện

ad cho em hỏi để tạo được thư viện lcd 595 cho stm32f4xx mà dùng keilC 5 thì làm thế nào ạ

Thanh
Guest
Thanh

ad cho e hỏi xíu, em dùng blynk với web server để điều khiển cùng lúc thiết bị nhưng mà code của riêng 2 cái thì hoạt động bình thường, khi trộn code blynk với code webserver chung lại để điều khiển cùng lúc thì nó lại ko connect được, ad có biết vì sao k ạ

Hatop
Guest
Hatop

Chào anh!
em là là người bắt đầu., bây giờ mà em muốn thay ESP8266 thì phải làm thế nào? Anh có bài hướng dẫn làm với stm32 không ạ?

Đào Hà
Guest
Đào Hà

Chào anh, với đề tài như vậy say khi mà em đã đọc được các thông số và cảm biến và hiển thị trên webserver rồi. Tiếp theo em muốn vẽ đồ thị các thông số đó thì có cách nào hay code ra sao để làm được không ạ?

thinh
Guest
thinh

cái thư viện #include ở đâu vậy

Chí Cương
Guest
Chí Cương

Chào mọi người, em muốn đưa dữ liệu từ PLC lên website bằng esp thì kết nối qua cổng RS485 được không ạ.
Mọi người có tài liệu gì cho mình xin với.

Duy
Guest
Duy

Em muốn thu thập dữ liệu nhiệt độ, độ ẩm nhưng thông qua arduino( vẫn sử dụng esp8266) thì có được không ad?

Nam
Guest
Nam

Anh ơi cho em hỏi: E cắm mạch y hệt, dùng esp8266 v1, mạch nạp usb to com PL2303, lúc nạp chọn Generic Module ESP8266, Port chọn COM8, đã reset là esp, nhưng khi nạp lại báo lỗi bo Error compiling for board Generic ESP8266 Module. Như vậy là sao hả anh?

Phong
Guest
Phong

ah cho em hỏi em làm như trên nhưng nó chỉ dọc 255 độ quài lun

Mỹ dry
Guest
Mỹ dry

tại sao mình lỗi như vậy
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
giúp mình với

Mỹ dry
Guest
Mỹ dry

lỗi này là sao a
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
giúp e với ,

Hiếu
Guest

nếu esp8266 v1 dùng GPIO2 đọc cảm biến thì khai báo là #define DHTPIN D2 hả bạn

Duyen
Guest
Duyen

Em là người mới bắt đầu và cũng chưa đượ chọc qua về lập trình. Nay em có 1 sensor cảm biến âm thanh cn07, 1 esp8266, 1 relay, e sử dụng đoạn code có sẵn trong arduino IDE nhưng vẫn không thể hoạt động được ý muốn là esp8266 nhận âm thanh và mở relay.
Anh có thể giúp em được không ạ.
Em cảm ơn.

Bảo
Guest
Bảo

Ad có bài đưa dữ liệu lên web không cần chung wifi cũng xem được không ạ ?