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ới trường hợp bạn không muốn webserver được đặt trên esp nữa mà muốn cho nó lên server local/external thì có thể tham khảo thêm cách làm với nodejs, restfulAPI tại bài viết Xây dựng hệ thống báo trộm với Nodejs, restfulAPI

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 😀

 

71
Leave a Reply

avatar
34 Comment threads
37 Thread replies
4 Followers
 
Most reacted comment
Hottest comment thread
33 Comment authors
scPhúc HưngHuyHiếuThang 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 ạ ?

dANGTRUONG
Guest
dANGTRUONG

Sao em in ra được địa chỉ ip rồi mà nhập cái địa chỉ ip đó vào thì k vào được? xin cảm ơn!

Trần Đức Cường
Guest
Trần Đức Cường

cho mình hỏi chút, vì mình cũng mới học arduino.
#define DHTPIN D1 là khai báo chân của esp8266 đọc dữ liệu từ DHT11 phải không? Cảm ơn bạn.

hoang
Guest
hoang

ad cho hỏi có câu code nào hiển thị tiếng việt trên Web k ạ,và lỗi thỉnh thoảng noa hiện từ ‘nan’ đó ạ

hoang
Guest
hoang

ad cho hỏi khi mình kết nối module với wifi nhà mình để in ra địa chỉ ip.và mình dùng điện thoại dùng 4g để truy cập vào địa chỉ ip đó lại dc ạ.kiểu chung một mạng wifi mới xem dc đấy ạ.có cách nào khắc phục không ạ.rất mong nhận được sự phản hồi sớm nhất.thanks

Quan
Guest
Quan

Anh ơi em hỏi chút, cách này nếu mà gateway wifi không kết nối internet thì có làm được không?
Nếu không, thì em muốn truyền nhận giữa esp và máy tính thông qua gateway wifi không kết nối internet thì nên làm như nào ?
Em cảm ơn !

Quách Tiến Đạt
Guest
Quách Tiến Đạt

ad cho e hỏi, bây giời e muốn lưu giá trị về thẻ nhớ thì làm sao ạ ??

Thang
Guest
Thang

anh ơi muốn mạng ngoài có thể truy cập thì làm ntn ạ

huy
Guest
huy

cái buoc tạo ra một trang web HTML sử dụng Bootstrap CSS để tự động reload trang sau mỗi một phút là s ạ ? code này có sẳn hay viết trên web a ?

Hiếu
Guest
Hiếu

Ad ơi em chạy thì ra như thế này mà vào địa chỉ host đó thì không được ạ?

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v951aeffa
~ld

Ket noi toi mang SUPER_WIFI
..
Da ket noi WiFi
Khoi dong Server
192.168.1.117

Huy
Guest
Huy

sư phụ ơi ! bây h em muốn cái web của em nó reload tín hiệu gửi lên liên tục chứ k phải là tín hiệu đầu tiên thì sửa sao ạ ???

Phúc Hưng
Guest
Phúc Hưng

làm sao để nhiệt độ , độ ẩm tự động update lại trong 1s và tự động hiển thị trên web sv