Chưa được phân loại, ESP8266, IOT

ESP8266 tự quét wifi trên trình duyệt

Chào mừng các bạn đã quay trở lại với Ngôi Nhà IoT, trong bài này mình sẽ hướng dẫn các bạn các viết một chương trình để quét các điểm phát wifi gần ESP8266 rồi mình chọn điểm đó, nhập mật khâu vào để kết nối giống như trên điện thoại. Thao tác này sẽ giúp chúng ta thuận tiện hơn trong việc kết nối đếm các điểm wifi lạ.

 

 

Trước khi bắt đầu lập trình, mình sẽ nói sơ qua về cách hoạt động nha, tức là chúng ta phải biết được mình sẽ làm gì, sau khi làm xong thì ta sẽ được gì.
– Chúng ta sẽ dùng một thiết bị có kết nối wifi (điện thoại, laptop…) truy cập vào ESP8266 (tên và mật khẩu do mình đặt trong code), nhập địa chỉ IP mặc định của nó (192.168.4.1) vào trình duyệt web để vào trang config.
– Ở trang config, nó sẽ hiện ra danh sách các điểm wifi gần ESP8266, chúng ta chọn vào một điểm rồi nhập mật khẩu để kết nối. Tên và mật khẩu sẽ được lưu trong bộ nhớ để phục vụ cho lần kết nối sau.
– Hệ thống sẽ tự reset lại và kết nối đến với điểm wifi được lưu trong bộ nhớ.

Ok, và đây là toàn bộ chương trình của chúng ta.

Bây giờ mình sẽ giải thích từng đoạn cho các bạn hiểu nha.

Trong đoạn tiền xử lý này có macro QUOTE(…), cái này mình dùng để viết mã html cho đơn giản hơn, tránh những dấu ngoặc kép không cần thiết.
Ngoài ra, mình còn dùng thêm thư viện #include “FS.h” để quản lý bộ nhớ lúc lưu thông tin wifi.

Đoạn này mình cho server lắng nghe ở đường dẫn gốc (tức là 192.168.4.1), khi nó nhận được tham số server.arg(“ssid”) và server.arg(“sspass”) thì nó sẽ lưu giá trị của tham số này vào bộ nhớ với ký tự ‘\n’ để phân biệt 2 giá trị: String tmp = server.arg(“ssid”) + “\n” + server.arg(“sspass”);. Sau khi lưu xong, nó sẽ trả lại chuỗi “Đã thiết lập xong” với mã 200 cho biết mọi việc đang diễn ra suôn sẻ. Đồng thời cũng sẽ reset lại ESP8266 để kết nối lại với điểm wifi vừa nhập. Trường hợp không có tham số thích hợp thì nó sẽ đưa ra trang HTML để chúng ta nhập thông tin kết nối wifi (đoạn mã HTML này mình sẽ không giải thích trong bài này).

Đoạn này thì mình cho server lắng nghe ở đường dẫn “/listWifi” (tức là 192.168.4.1/listWifi), mình sử dụng kỹ thuật AJAX để tự động lấy danh sách wifi, đường dẫn này sẽ được trình duyệt tự động truy cập (được quy định trong đoạn mã HTML). Mỗi điểm Wifi sẽ được chia cách nhau bởi “|”.

Tiếp theo, ta phải cho server chạy chứ nhỉ, server.begin(); Dòng này sẽ cho server chạy.

Hai câu lệnh này có chức năng khởi tạo ESP8266 ở chế độ vừa phát wifi vừa kết nối đến điểm wifi, và tạo điểm phát wifi với tên “Ngoi Nha Iot”, mật khẩu “12345678”.

Còn trong đoạn này thì mình sẽ cho đọc dữ liệu wifi được lưu trong bộ nhớ ra để sử dụng, mình tách id và pass ra bằng ký tự ‘\n’.

Tiếp theo, mình sẽ xét xem id và pass đã được thiết lập chưa (tức là đã có giá trị), nếu có thì sẽ kết nối, còn không thì không kết nối. Trong lúc chờ kết nối, mình vẫn chạy lệnh server.handleClient(); để duy trì hoạt động của server.

Cuối cùng, trong loop mình chạy dòng server.handleClient(); để server được duy trì mãi mãi.

Ok, như vậy là mình đã hướng dẫn cho các bạn xong rồi đó, hy vọng các bạn sẽ làm được. Nếu có vấn đề gì khúc mắc hoặc góp ý, các bạn có thể để lại bình luận phía dưới nhé. Chúc các bạn thành công.

Được gắn thẻ , ,

1 bình luận trong “ESP8266 tự quét wifi trên trình duyệt

  1. a cho em hỏi nếu mình bị mất kết nối wifi do đi ra khỏi vùng phủ sóng wifi hay router bị lỗi. Mình muốn tự động chuyển mạng wifi khác trong list đã lưu thì mình phải làm thế nào hả anh.

Trả lời

Email của bạn sẽ không được hiển thị công khai.