Điều khiển thiết bị qua Web Sever với ESP8266 không cần Arduino

16/06/2019
dieu-khien-thiet-bi-qua-web-sever-voi-esp8266-khong-can-arduino

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

 

 
  1. #include <ESP8266WiFi.h>
  2.  
  3. const char* ssid = "your-ssid";// tên wifi mà bạn muốn connect
  4. const char* password = "your-password";//pass wifi
  5.  
  6. int ledPin = 2; // GPIO2
  7. WiFiServer server(80);// Port 80
  8.  
  9. void setup() {
  10. Serial.begin(115200);
  11. delay(10);
  12.  
  13. pinMode(ledPin, OUTPUT);
  14. digitalWrite(ledPin, LOW);
  15.  
  16. // Kết nỗi với wifi
  17. Serial.println();
  18. Serial.println();
  19. Serial.print("Connecting to ");
  20. Serial.println(ssid);
  21.  
  22. WiFi.begin(ssid, password);
  23.  
  24. while (WiFi.status() != WL_CONNECTED) {
  25. delay(500);
  26. Serial.print(".");
  27. }
  28. Serial.println("");
  29. Serial.println("WiFi connected");
  30.  
  31. // Bắt đầu sever
  32. server.begin();
  33. Serial.println("Server started");
  34.  
  35. // In địa chỉ IP
  36. Serial.print("Use this URL to connect: ");
  37. Serial.print("http://");
  38. Serial.print(WiFi.localIP());
  39. Serial.println("/");
  40.  
  41. }
  42.  
  43. void loop() {
  44. // Kiểm tra xem đã connect chưa
  45. WiFiClient client = server.available();
  46. if (!client) {
  47. return;
  48. }
  49.  
  50. // Đọc data
  51. Serial.println("new client");
  52. while(!client.available()){
  53. delay(1);
  54. }
  55.  
  56. String request = client.readStringUntil(‘\r’);
  57. Serial.println(request);
  58. client.flush();
  59.  
  60. int value = LOW;
  61. if (request.indexOf("/LED=ON") != -1) {
  62. digitalWrite(ledPin, HIGH);
  63. value = HIGH;
  64. }
  65. if (request.indexOf("/LED=OFF") != -1) {
  66. digitalWrite(ledPin, LOW);
  67. value = LOW;
  68. }
  69. //digitalWrite(ledPin, value);
  70.  
  71.  
  72. // 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
  73. client.println("HTTP/1.1 200 OK");
  74. client.println("Content-Type: text/html");
  75. client.println(""); // do not forget this one
  76. client.println("<!DOCTYPE HTML>");
  77. client.println("<html>");
  78.  
  79. client.print("Led pin is now: ");
  80.  
  81. if(value == HIGH) {
  82. client.print("On");
  83. } else {
  84. client.print("Off");
  85. }
  86. client.println("<br><br>");
  87. client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON<br>");
  88. client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 2 OFF<br>");
  89. client.println("</html>");
  90.  
  91. delay(1);
  92. Serial.println("Client disonnected");
  93. Serial.println("");
  94.  
  95. }

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é!!!

Bình luận
Nội dung này chưa có bình luận, hãy gửi bình luận đầu tiên của bạn.
VIẾT BÌNH LUẬN CỦA BẠN