Hướng dẫn test module wifi esp 8266 với máy tsnh
Hôm nay mình sẽ giới thiệu với các bạn về cách lập trình giao tiếp với Module wifi ESP8266-01 kết nối với 1 mạng wifi Show I, SƠ ĐỒ NGUYÊN LÝ KẾT NỐI VỚI MODULE ESP 8266-01 II, SƠ LƯỢC VỀ MODULE ESP 8266-01 1, Mô tả - Các WiFi module ESP8266 là tích hợp trong dạng khép kín SOC với việc tích hợp giao thức TCP / IP có thể cung cấp cho bất kỳ truy cập vi điều khiển vào mạng WiFi của bạn. Các ESP8266 có khả năng hoặc lưu trữ một ứng dụng hoặc xử lý tất cả các chức năng mạng Wi-Fi từ một bộ xử lý ứng dụng. Mỗi module ESP8266 đi kèm được lập trình sẵn với một lệnh AT firmware bộ, ý nghĩa, bạn chỉ có thể móc này lên đến thiết bị Arduino của bạn và nhận về nhiều WiFi-khả năng như một WiFi khiên Mời (và đó chỉ là ra khỏi hộp)! Các mô-đun ESP8266 là một cực kỳ chi phí ban hiệu quả với một cộng đồng rất lớn, và ngày càng phát triển,. - Module này có đủ xử lý và lưu trữ năng trên mạch mạnh mẽ mà cho phép nó được tích hợp với các cảm biến và các thiết bị ứng dụng cụ thể khác thông qua GPIOs của nó với phát triển tối thiểu lên phía trước và nạp tối thiểu trong thời gian chạy. mức độ cao của hội nhập trên chip cho phép mạch điện bên ngoài tối thiểu, bao gồm cả các mô-đun front-end, được thiết kế để chiếm diện tích PCB tối thiểu. Các ESP8266 hỗ trợ APSD cho các ứng dụng VoIP và giao diện đồng tồn tại Bluetooth, nó có chứa một RF tự hiệu chuẩn cho phép nó hoạt động trong mọi điều kiện hoạt động, và không yêu cầu phần RF bên ngoài. Xin chào các bạn, mình đã quay trở lại rồi đây. Như đã nói ở bài trước bài hôm nay mình xin viết về việc cài đặt chương trình thiết lập kết nối vào mạng wifi cho ESP8266. Trong bài viết này mình vẫn sử dụng em wemos d1 mini như những bài trước. Ý tưởngÝ tưởng để gửi SSID và PASS của wifi cho ESP8266 là ESP8266 sẽ làm một server web cung cấp 1 API để máy tính gửi dữ liệu vào. Nhưng muốn máy tính truy cập được API đó thì nó phải được kết nối cùng mạng với ESP8266. ESP8266 thì không thể kết nối được bất kì mạng wifi nào rồi bởi vì mình đang thiết kế chương trình để kết nối wifi mà . Vậy làm sao để ESP8266 có thể kết nối đến máy tính mà chính nó lại không thể kết nối wifi?Bạn có thể nghĩ đến một phương án là cho ESP8266 kết nối đến wifi mặc định. Mỗi khi muốn cài đặt cho ESP8266 kết nối đến wifi khác thì máy tính phải phát một wifi mặc định cho ESP8266 kết nối đến rồi quá trình cài đặt diễn ra. Đây là một ý tưởng có thể thực hiện được nhưng nó lại khá là phức tạp để thực hiện nếu người dùng không biết cách cài đặt cho việc phát wifi từ máy tính. Một ý tưởng khác được đặt ra là cho ESP8266 phát wifi để máy tính kết nối đến. Việc sử dụng máy tính để kết nối wifi thì ai ai cũng có thể làm được. Việc quan trọng là mình phải viết chương trình làm sao cho ESP8266 phát được wifi thôi. Để làm được việc này thì ESP8266 phải có chức năng phát wifi không thì sao có thể phát wifi được. Thật tuyệt vời ESP8266 có thể làm được điều đó. Nó có thể phát được wifi và đồng thời làm server web luôn. Như vậy ý tưởng cho chương trình sẽ như sau:
Thiết kế chương trìnhSơ đồ hoạt động của hệ thống sẽ như sau: Khi hệ thống hoạt động bình thường ấn và giữ nút cài đặt 3s để vào trạng thái cài đặt. Khi ở trạng thái cài đặt ESP8266 sẽ phát ra 1 wifi với mật khẩu là "12345678". Đồng thời ESP8266 sẽ làm web server cung cấp API để truy cập vào. Máy tính sẽ kết nối với wifi ESP8266 do phát ra và sử dụng một giao diện web để truy cập API đến ESP8266. Và tiếp theo quá trình cài đặt sẽ diễn ra như sơ đồ bên trên. Viết chương trình cho ESP8266Chương trình viết cho ESP8266 lần này sẽ phức tạp hơn 1 chút nên mình sẽ chia thành các Service nhỏ. Chúng ta cần xây dựng các service sau:
Bây giờ chúng ta sẽ từng bước, từng bước tạo các Service đã được liệt kê ở bên trên. Trong bài viết này mình sẽ sử dụng các thư viện:
Đầu tiên sẽ là EEPROM Service. EEPROM ServiceĐể thao tác với EEPROM ta sẽ sử dụng thư viện EEPROM của ESP8266. Tuy nhiên thư viện này chỉ thao tác với từng ô nhớ. Nhưng những giá trị cần lưu vào là các String do vậy cần phải viết các hàm thực hiện được điều đó. Service này sẽ có 4 hàm cơ bản sau:
WIFI ServiceWifi service sẽ có 2 hàm 3 hàm để thực hiện việc: kết nối wifi, lưu trữ wifi, phát wifi. Cụ thể như sau: Kết nối wifi: có 2 hàm kết nối wifi. Một là lấy dữ liệu từ bộ nhớ EEPROM rồi kết nối, một hàm sẽ cho phép truyền ssid và pass từ bên ngoài vào để kết nối. Khi truyền từ bên ngoài vào nếu wifi kết nối thành công thì ssid và pass sẽ được lưu lại để sử dụng cho lần sau. Code của hàm kết nối sẽ như sau:
Lưu wifi: Hàm này sẽ viết vào bộ nhớ và lưu lại. Địa chỉ cấp cho mỗi chuỗi ssid và pass là 20 byte tương đương với 20 ký tự.
Phát wifi: Trước khi phát wifi cần phải ngắt hết mọi kết nối. Sau đó chuyển chế độ sang WIFI_AP để phát wifi.
Cuối cùng tạo object của class cho việc sử dụng: HttpServerHService này sẽ tạo Web Server và cung cấp API phục vụ cho việc kết nối. Tất nhiên là dữ liệu trao đổi sẽ là chuỗi json để dễ xử lý. ESP8266 có thư viện ArduinoJson để thực hiện parse các chuỗi json. Chúng ta sẽ sử dụng thư viện này để parse dữ liệu nhận được từ máy tính. Sẽ có 3 hàm thực hiện API chính:
Hàm tạo
Lưu ý: Khi trình duyệt gửi request từ một địa chỉ khác (địa chỉ web giao diện tới địa chỉ ESP API là 2 địa chỉ khác nhau) thì trình duyệt sẽ gửi 1 OPTIONS REQUEST do vậy phải có các câu lệnh với methos là
0 cho tất cả các route được khai báo. Chương trình chínhHàm
1 sẽ chạy đầu tiên khi bật nguồn. Do vậy hàm này sẽ phải cài đặt chế độ của các chân (PIN) cần thiết, init Serial và thực hiện là đọc SSID và PASS wifi được lưu trong bộ nhớ và kết nối đến wifi đó.
Hàm
2 sẽ kiểm tra chế độ làm việc của thiết bị để thực hiện các hàm tương ứng. Ở chế độ hoạt động bình thường (
4 thì tất nhiên sẽ chờ client kết nối đến rồi (handleClient). Cuối cùng phải luôn luôn kiểm tra xem nút Setting có được bấm và giữ trong 3s hay không.
Mã chương trình đầy đủ tại đây Kết luậnTrên đây mình đã hướng dẫn các bạn tạo một chương trình để thực hiện việc cài đặt wifi cho ESP8266. Nếu có bất kì thắc mắc nào hoặc bị vướng mắc ở phần nào thì hãy để lại comment bên dưới nhé. Cảm ơn các bạn đã đọc bài viết của mình! Hy vọng bài viết sẽ giúp ích được cho các bạn. Chúc các bạn thành công! |