ESP8266 là một chip Wi-Fi do công ty Espressif sản xuất, có chi phí thấp, tích hợp đầy đủ giao thức TCP/IP và chức năng vi điều khiển. Nó được thiết kế đặc biệt cho các thiết bị di động, thiết bị đeo thông minh và ứng dụng IoT, với mức tiêu thụ điện năng rất thấp và giá thành cực kỳ rẻ.
ESP8266 có nhiều môi trường phát triển khác nhau, bài viết này sẽ hướng dẫn thiết lập môi trường phát triển Arduino IDE.
Các bo mạch phát triển và mô-đun khác được sử dụng trong bài viết này, cùng với dây nối, có thể mua tại liên kết ở cuối bài.
Bo mạch tôi đang sử dụng là NodeMcu, tích hợp chip ESP8266 này.
Hãy tải và cài đặt trình điều khiển tương ứng với chip USB-to-TTL trên bo mạch của bạn. Bo mạch của tôi sử dụng CH340.
Cài đặt Arduino IDE
Arduino IDE là môi trường phát triển tích hợp do Arduino chính thức cung cấp, hỗ trợ lập trình bằng ngôn ngữ C, chủ yếu dành cho các bo mạch Arduino.
Bằng cách cấu hình đơn giản, bạn có thể thêm hỗ trợ cho bo mạch ESP8266 vào môi trường lập trình hiện tại. Đối với người dùng quen thuộc với thư viện và quy trình phát triển Arduino, việc sử dụng sẽ không có sự khác biệt đáng kể.
Địa chỉ tải Arduino IDE:
- Trang web chính thức Arduino: https://www.arduino.cc/en/Main/Software
- Tencent Weiyun: http://go.zeruns.com/E
- Baidu Netdisk: http://go.zeruns.com/F Mã rút gọn: h6cy
Thêm hỗ trợ ESP8266
Mở Arduino IDE, nhấp vào Tệp ở góc trái trên, chọn Tùy chọn (Preferences), tìm mục Địa chỉ trình quản lý bo mạch bổ sung (Additional Board Manager URLs), sau đó nhập liên kết sau: http://arduino.esp8266.com/stable/package_esp8266com_index.json
Sau đó nhấp vào Công cụ → Bo mạch → Trình quản lý bo mạch, mở giao diện trình quản lý bo mạch:
Tìm kiếm esp8266 và cài đặt:
Sau khi cài đặt xong, khởi động lại phần mềm Arduino IDE. Trong mục Công cụ → Bo mạch, bạn sẽ thấy các tùy chọn bo mạch ESP8266:
Chọn cổng: trước tiên kiểm tra cổng trong Trình quản lý thiết bị, sau đó chọn cổng tương ứng trong Arduino IDE.
Minh họa dự án
Gửi “Hello World” qua cổng nối tiếp
Tạo một dự án mới trong Arduino IDE và nhập đoạn mã sau:
void setup() { // Hàm khởi tạo, mã trong hàm này chỉ chạy một lần khi khởi động
Serial.begin(115200); // Thiết lập tốc độ baud của cổng nối tiếp
}
/*
https://blog.zeruns.com
*/
void loop() { // Hàm lặp, mã trong hàm này sẽ chạy liên tục
Serial.println("Hello World"); // In "Hello World" ra cổng nối tiếp
}
Sau khi nhập, nhấp vào nút Tải lên để biên dịch và tải lên bo mạch, sau đó mở Bộ giám sát cổng nối tiếp, chọn tốc độ baud 115200 để xem kết quả “Hello World” được hiển thị.
Nhấp nháy LED
Bo mạch ESP8266 có sẵn một LED, LED này được kết nối với chân D4.
Lưu ý: ESP8266 có nhiều loại bo mạch, các chân GPIO trên từng bo mạch có thể khác nhau.
void setup() { // Hàm khởi tạo, mã trong hàm này chỉ chạy một lần khi khởi động
pinMode(D4,OUTPUT); // Thiết lập chân GPIO D4 ở chế độ đầu ra
}
void loop() { // Hàm lặp, mã trong hàm này sẽ chạy liên tục
digitalWrite(D4,HIGH); // Đặt chân GPIO D4 ở mức cao, HIGH có thể thay bằng 1
delay(1000); // Trễ 1000 mili giây
digitalWrite(D4,LOW); // Đặt chân GPIO D4 ở mức thấp, LOW có thể thay bằng 0
delay(1000); // https://blog.zeruns.com
}

Đọc dữ liệu DHT11 và hiển thị
Trong ví dụ này, chúng ta sử dụng cảm biến nhiệt độ và độ ẩm DHT11 để đo nhiệt độ và độ ẩm, sau đó hiển thị kết quả lên màn hình OLED 0.96 inch.
Mã nguồn dự án:
#include <Arduino.h>
#include <NTPClient.h>
#include <U8g2lib.h>
#include <DHT.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
DHT dht(D3,DHT11, 15);
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ D1, /* data=*/ D2, /* reset=*/ U8X8_PIN_NONE);
void setup(){
u8g2.begin();
u8g2.enableUTF8Print();
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_unifont_t_chinese2);
u8g2.setFontDirection(0);
u8g2.setCursor(0, 15);
u8g2.print("Độ ẩm:");
u8g2.setCursor(80, 15);
u8g2.print(h); //https://blog.zeruns.com
u8g2.setCursor(120, 15);
u8g2.print("%");
u8g2.setCursor(0, 40);
u8g2.print("Nhiệt độ:");
u8g2.setCursor(0, 55);
u8g2.print(t);
u8g2.setCursor(40, 55);
u8g2.print("C");
u8g2.sendBuffer();
delay(1000);
}
Vì trong mã nguồn, thư viện DHT và U8g2 ở dòng đầu tiên không phải là thư viện tích hợp sẵn trong Arduino IDE, bạn cần nhấp vào Dự án → Nạp thư viện → Quản lý thư viện để vào trình quản lý thư viện, tìm và cài đặt ba thư viện phụ thuộc sau (Adafruit Unified Sensor, DHT sensor library và U8g2):
Kết nối mạch
| NodeMcu | DHT11 |
|---|---|
| 3V3 | VCC |
| GND | GND |
| D3 | DATA |
| NodeMcu | Màn hình OLED 0.96 inch |
|---|---|
| 3V3 | VCC |
| GND | GND |
| D1 | SCL |
| D2 | SDA |
Kết nối WiFi
Đặc điểm nổi bật nhất của ESP8266 là khả năng kết nối Wi-Fi với chi phí cực kỳ thấp.
Dưới đây là mã ví dụ đơn giản để kết nối WiFi:
#include<ESP8266WiFi.h>
const char* ssid = "blog.zeruns.com"; // Tên WiFi
const char* passwd = "blog.zeruns.com"; // Mật khẩu WiFi
void setup() {
Serial.begin(115200); // Thiết lập tốc độ baud của cổng nối tiếp
WiFi.begin(ssid,passwd); // Kết nối WiFi
while (WiFi.status() != WL_CONNECTED) // Kiểm tra trạng thái kết nối WiFi
{
delay(500);
Serial.print("."); // In dấu chấm ra cổng nối tiếp
}
Serial.println(""); // Xuống dòng
Serial.println("WiFi đã kết nối");
Serial.println(WiFi.localIP()); // In địa chỉ IP nhận được
Serial.println("https://blog.zeruns.com");
}
void loop() {
}
Địa chỉ mua hàng
Bo mạch NodeMcu (ESP8266): https://s.click.taobao.com/mWfgiTu
Mô-đun cảm biến DHT11: https://s.click.taobao.com/gAduxTu
Dây DuPont: https://s.click.taobao.com/yxUfiTu
Màn hình OLED 0.96 inch: https://s.click.taobao.com/6IFfiTu
Bài viết đề xuất
- Gợi ý VPS/Server đám mây giá rẻ và hiệu quả cao: https://blog.zeruns.com/archives/383.html
- Thiết lập máy chủ xuyên mạng nội bộ với giao diện web: 搭建内网穿透服务器,带Web面板 - Zeruns's Blog
- Đọc dữ liệu nhiệt độ và độ ẩm từ DHT11, DHT22, SHTC3 bằng Arduino: Arduino读取DHT11,DHT22,SHTC3温湿度数据 - Zeruns's Blog
- Cách xây dựng blog cá nhân: https://blog.zeruns.com/archives/218.html
- Toàn bộ quyền lợi ưu đãi dành cho sinh viên: 学生优惠权益大全 - Zeruns's Blog











