Đỗ Hữu Toàn gửi vào
- 155170 lượt xem
Giới thiệu
Hôm nay, mình sẽ chia sẻ cách lập trình để điều khiển thiết bị bằng ESP8266, thông qua nền Web. Nó giống như module Ethernet á, nhưng ESP8266 tuyệt vời hơn bởi vì nó không cần kết nối qua cáp mạng so với Elthernet Shield và cũng không phụ thuộc vào Arduino. Chúng ta cùng đi tìm hiểu nào!!!
Chuẩn bị
- 1 x ESP8266
- 1 x dây USB UART PL2303 (loại nào giao tiếp 3.3v như cp2101x cũng được nha)
- Arduino IDE
- 1 con led (khỏi điện trở)
- Dây breadboard
- Breadboard
Kết nối
Nguồn cấp cho ESP8266 là 3.3V nhé! Đây là sơ đồ lúc hoạt động ý!!! ( Cái sơ đồ này thiếu nha, mình lấy trên google !! các bạn phải nối cả chân CH-PD với 3.3V nữa thì ESP8266 mới hoạt động...chân này là chân enable của module ESP8266 nhé )
Nạp Code
Đầu tiên, các bạn kết nối ESP8266 với USB UART như sau:
ESP8266 | USB UART |
TX | RX |
RX | TX |
Vcc | 3.3V |
GND | GND |
CH_PD | 3.3V |
Sau đó, các bạn phải down thư viện tại đây
Để nạp được code cho ESP8266 bằng Arduino IDE, các bạn xem lại bài viết trước của mình tại đây
#include <ESP8266WiFi.h> const char* ssid = "your-ssid";// tên wifi mà bạn muốn connect const char* password = "your-password";//pass wifi int ledPin = 2; // GPIO2 WiFiServer server(80);// Port 80 void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // Kết nỗi với wifi Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Bắt đầu sever server.begin(); Serial.println("Server started"); // In địa chỉ IP Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } void loop() { // Kiểm tra xem đã connect chưa WiFiClient client = server.available(); if (!client) { return; } // Đọc data Serial.println("new client"); while(!client.available()){ delay(1); } String request = client.readStringUntil(‘\r’); Serial.println(request); client.flush(); int value = LOW; if (request.indexOf("/LED=ON") != -1) { digitalWrite(ledPin, HIGH); value = HIGH; } if (request.indexOf("/LED=OFF") != -1) { digitalWrite(ledPin, LOW); value = LOW; } //digitalWrite(ledPin, value); // Tạo giao diện cho html!!! giống con elthernet shield á!!! bạn có thể thiết kế 1 giao diện html khác, cho đẹp client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.print("Led pin is now: "); if(value == HIGH) { client.print("On"); } else { client.print("Off"); } client.println("<br><br>"); client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON<br>"); client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 2 OFF<br>"); client.println("</html>"); delay(1); Serial.println("Client disonnected"); Serial.println(""); }
Sau khi ESP8266 connect với Wifi...các bạn bật Serial Monitor để xem IP của ESP8266. Vào trình duyệt và gõ địa chỉ IP...các bạn có thể điều khiển led trong mạng LAN!!! để ứng dụng vào các dự án điều khiển thiết bị từ xa, các bạn cần NAT PORT IP!!!
Lời kết
Trên đây là cách điều khiển thiết bị từ xa bằng ESP8266. Chúc các bạn thành công nhé!!!