Hướng dẫn sử dụng ESP8266 trong các ứng dụng Internet Of Things (Phần 8) – Htelectronics

Phần 8: Demo lập trình điều khiển thiết bị qua Internet

Wearable

Xin chào, tất cả chúng ta sẽ liên tục chủ đề sử dụng ESP8266 trong những ứng dụng Internet Of Things. Với những bài trước, tất cả chúng ta đã luận bàn khá khá đầy đủ những kỹ năng và kiến thức nền tảng khi lập trình với ESP8266 như kiến trúc phần cứng, những quy mô lập trình và quy trình nạp firmware cho ESP8266. Với những kỹ năng và kiến thức trên, những bạn hoàn toàn có thể ứng dụng để lập trình 1 ứng dụng hoàn hảo sử dụng ESP8266 cho riêng mình rồi. Để minh họa cho ứng dụng, bài viết này sẽ demo lập trình điều khiển thiết bị qua ESP8266 sử dụng mạng Wifi và Internet với mục tiêu để điều khiển thiết bị mọi lúc, mọi nơi .

Yêu cầu của demo

Lập trình 1 web server đơn thuần trên ESP8266 để hiện thị 2 nút nhấn ON và OFF trên nền web, khi user truy vấn vào website này thì hoàn toàn có thể ấn nút để triển khai việc bật / tắt LED. Ngoài ra, nhu yếu phải thiết lập để hoàn toàn có thể truy vấn website này từ bất kỳ nơi nào / thiết bị nàomiễn là có liên kết Internet .

Hardware cần chuẩn bị

Để thực hiện demo này, chúng ta sẽ sử dụng module ESP-01 và module FT232 USB-UART vì tính đơn giản và dễ dàng.

Kết nối phần cứng khi nạp như hình bên dưới :

load_fw

Ở đây tất cả chúng ta sẽ sử dụng BLUE LED ngay trên board ESP01 nên không cần gắn thêm LED bên ngoài. Lưu ý là BLUE LED mặc định dùng cho công dụng TX của UART0 để output những thông tin debug info ; do đó trong code sẽ đổi khác thành tính năng GPIO và sử dụng để blink LED khi user ấn nút trên web server .

Software cần chuẩn bị

Demo ứng dụng sẽ được code trên Arduino IDE vì tất cả chúng ta hoàn toàn có thể sử dụng những thư viện network 1 cách thuận tiện. Do đó, những bạn cần setup :

  • Phần mềm Arduino IDE
  • Bộ thư viện và tool cho ESP8266 trên Arduino (xem lại bài 7 để tìm hiểu cách cài bộ thư viện trên Arduino)

Sketch cho ESP8266 trên Arduino

Với demo này, tất cả chúng ta sẽ sử dụng thư viện ESPWiFi tương hỗ những tính năng Wifi và web server .

  • Tạo 1 web server và cấu hình port để listen
WiFiServer server(PORT);   //PORT = 301 (có thể dùng giá trị bất kỳ)
  • Hàm setup()
    Cơ bản thì hàm setup() sẽ có chức năng kết nối vào mạng Wifi và khởi động web server

Kết nối mạng Wifi

WiFi.begin(“”, “”);
while (WiFi.status() != WL_CONNECTED) {         //đợi kết nối Wifi thành công
delay(500);
Serial.print(“.”);
}

Khởi động Web server

server.begin();
Serial.println(WiFi.localIP());

Cấu hình lại GPIO1 để điều khiển BLUE LED trên board

pinMode(LED_PIN, OUTPUT);      //LED_PIN = 1
digitalWrite(LED_PIN, HIGH);

Các bạn sửa chữa thay thế thông tin mạng Wifi của mình vào hàm WiFi. begin ( ). Sau khi liên kết thành công xuất sắc, ESP sẽ output địa chỉ IP của nó qua UART0, tất cả chúng ta cần ghi nhớ địa chỉ IP này để thiết lập mở port trên modem Wifi ở bước tiếp theo .
Lưu ý trong hàm setup ( ) không có viết nội dung hiện thị của website, phần hiện thị nội dung sẽ được triển khai trong hàm loop ( ) vì tất cả chúng ta cần update nội dung website theo thao tác của user .

  • Hàm loop()
    Trong hàm loop(), chúng ta sẽ đợi user ấn nút trên trang web rồi đọc dữ liệu từ web client để biết được user đã ấn nút nào trên trang web và thực hiện action tương ứng

Đợi user mở website hoặc ấn nút trên trang web

while (!client.available()) {
delay(1);
}

Đọc tài liệu từ web client để biết user có ấn nút hay không

String req = client.readStringUntil(‘\r’);            //đọc thông tin từ web client
client.flush();
if (req.indexOf(“”) != -10) {
if (req.indexOf(“/OFF”) != -1) {      //khi user ấn nút OFF
digitalWrite(LED_PIN, HIGH);
led_status = false;
}
if (req.indexOf(“/ON”) != -1) {        //khi user ấn nút ON
digitalWrite(LED_PIN, LOW);
led_status = true;
}
}

Gửi nội dung để hiện thi trên trang web

// Prepare the response
String s = “HTTP/1.1 200 OK\r\n”;
s += “Content-Type: text/html\r\n\r\n”;
s += “

\r\n\r\n”;
s += “
”;
s += “

”;
s += “
”;
s += “”;
s += “
”;
if(led_status) {
s += “”;
}
else
{
s += “”;
}
s += “\n”;
client.flush();

Tùy vào trạng thái LED mà nội dung của website sẽ được biến hóa tương ứng để thông tin user là LED đã được ON / OFF theo nhu yếu

File sketch của demo có thể download ở đây

Để nạp firmware sau khi biên dịch trên Arduino, tất cả chúng ta thông số kỹ thuật như hình bên dưới :

arduion_download

Kết nối USB tới module FT232 và chọn Port tương ứng để thực thi quy trình nạp firmware xuống module ESP8266

Test demo

Chúng ta hoàn toàn có thể test demo trong mạng Wifi local trước như hình bên dưới :

LED_web_srv

demo

Trước khi chân GPIO1 bị đổi thành IO để điều khiển LED, ESP sẽ output những log ra hành lang cửa số COM trên Arduino với thông tin local IP của module ( trong ví dụ là 192.168.1.106 ). Chúng ta sẽ liên kết tới địa chỉ IP này trên 1 web browser trên máy tính liên kết cùng mạng Wifi với module ESP01 để load website server ( quan tâm là phải chọn port tương ứng đã lập trình trong code ) .
Từ website này, khi ấn nút ON / OFF tương ứng, tất cả chúng ta sẽ thấy BLUE LED trên board ESP01 sẽ tắt / mở tương ứng và trạng thái của LED cũng được update trên website. Thế là demo đã work OK !

Điều khiển qua mạng Internet

Hiện tại tất cả chúng ta chỉ hoàn toàn có thể điều khiển LED từ máy tính hoặc smartphone liên kết chung mạng Wifi với module ESP01. Để hoàn toàn có thể gửi lệnh tới ESP8266 từ mạng Internet bên ngoài, tất cả chúng ta cần thiết lập Open Port trên modem Wifi của mình .
Sau đây là ví dụ triển khai Open Port trên modem H640W của mạng Viettel

  • Kết nối dây cáp LAN vào modem
  • Mở browser trên máy tính và nhập vào địa chỉ IP của modem (mặc định modem H640W của Viettel có địa chỉ IP là 192.168.1.100) và điền thông tin username, password để login
  • Vào mục Advance Settings, thiết lập Open Port như sau:
    Rule Name = Tên rule bất kỳ
    Target IP = địa chỉ IP của module ESP01 khi chạy (đã được in ra khi ESP01 chạy code)
    Netmask chọn 32
    Tất cả port đều là giá trị PORT đã lập trình trong code (ví dụ ở đây là 301)

Untitled

Với những modem và mạng internet khác thì việc Open Port cũng tựa như
Bước tiếp theo là cần tìm địa chỉ internet IP của mạng Wifi mà ESP01 đang liên kết vào. Chúng ta hoàn toàn có thể vào website ping.eu để lấy thông tin này. Ví dụ như hình sau :

ip_adr1

Thế là xong, từ giờ chúng ta có thể vào 1 mạng internet bất kỳ, đánh địa chỉ “<địa chỉ internet IP>:” là có thể kết nối vào web server và gửi lệnh tới ESP8266 để điều khiển thiết bị từ xa được rồi.

<địa chỉ internet IP> là địa chỉ internet IP của mạng Wifi mà ESP8266 đang kết nối
 là port được lập trình trong code để web server đọc dữ liệu

Các bạn hoàn toàn có thể test thuận tiện bằng cách tắt Wifi trên smartphone, bật 3G và truy vấn vào địa chỉ trên để điều khiển LED ngay từ mạng 3G trên smartphone .

Enjoy!

Bài viết đến đây là hết rồi. Hy vọng những bạn đã khám phá được cách đơn thuần để điều khiển thiết bị trong nhà ( quạt, đèn, v.v … ) qua Internet sử dụng chip ESP8266. Lưu ý là với những mạng Wifi sử dụng địa chỉ IP động thì địa chỉ internet IP của mạng Wifi hoàn toàn có thể bị biến hóa, tất cả chúng ta hoàn toàn có thể ĐK 1 địa chỉ IP tĩnh hoặc nghiên cứu và điều tra thêm chính sách lấy được địa chỉ IP động mới khi có biến hóa để hoàn toàn có thể liên kết website server của ESP8266 thành công xuất sắc .

Alternate Text Gọi ngay