Lập trình ESP8266V1 bằng Arduino IDE

Bởi nguyenthanhphi (11/09/2017) 0 Bình luận

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.

lập trình esp8266 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

lập trình esp8266 bằng arduino IDE

Để 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.

lập trình esp8266 bằng arduino IDE

Tiếp theo vào ToolBoardBoards Manager

lập trình esp8266 bằng arduino IDE

đợ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.

lập trình esp8266 bằng arduino IDE

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 ToolBoardGeneric ESP8266 Module, chọn cổng COM tương ứng với module USB-to-UART tương ứng.

lập trình esp8266 bằng arduino IDE

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:

lập trình esp8266 bằng ardunio IDE

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("");

}

Đóng góp ý kiến