Lập trình ESP8266V1 bằng Arduino IDE
Giới thiệu module Wifi ESP8266
Để bắt đầu với những dự án Wifi với Arduino các bạn cần ESP8266 với giá thành rẻ, và dễ dàng sử dụng. Đặc biệt, ESP8266 có thể được lập trình bằng Arduino IDE.
- URXD(RX) — dùng để nhận tín hiệu trong giao tiếp UART với vi điều khiển
- VCC — đầu vào 3.3V
- GPIO 0 — kéo xuống thấp cho chế độ upload bootloader
- RST — chân reset cứng của module, kéo xuống mass để reset
- GPIO 2 — thường được dùng như một cổng TX trong giao tiếp UART để debug lỗi
- CH_PD — kích hoạt chip, sử dụng cho Flash Boot và updating lại module, nối với mức cao
- GND — nối với mass
- UTXD (TX) — dùng để truyền tín hiệu trong giao tiếp UART với vi điều khiển
Chuẩn bị linh kiện
- 1 x ESP8266 v1.
- 1 x USB TTL (ví dụ PL2303 hoăc CP210x).
- 1 x Arduino IDE bản mới nhất nhé ( các bạn có thể down ở đây).
Tiến hành cài đặt
Sau khi down bản mới nhất của Arduino IDE, các bạn tiến hành cài đặt như bình thường và mở chương trình
Để tiến hành cài đặt thư viện và chức năng nạp code cho IDE các bạn làm như sau:
Vào File→ Preferences, vào textbox Additional Board Manager URLs thêm đường link sau vào:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Click OK để chấp nhận.
Tiếp theo vào Tool→Board→Boards Manager
đợi một lát để chương trình tìm kiếm. Ta kéo xuống và click vào ESP8266 by ESP8266 Community, click vào Install. Chờ phần mềm tự động download và cài đặt.
Chọn Board để lập trình cho ESP8266:
Kết nối mudule USB-to-UART vào máy tính. Vào Tool→Board→Generic ESP8266 Module, chọn cổng COM tương ứng với module USB-to-UART tương ứng.
Chọn chế độ nạp Arduino as ISP. Vậy là ta đã có môi trường lập trình cho esp8266 rất thân thiện.
Sau khi kết nối UART vs ESP8266. các bạn có thể test code ESP8266 ở đây:
Sau khi nạp xong chương trình các bạn rút dây GPIO2 ra khỏi chân GND để kiểm tra kết nối.
#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!!!
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("");
}