Thiết lập môi trường phát triển ESP8266 và trình diễn dự án

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:

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ạchTrì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ự ánNạp thư việnQuả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 libraryU8g2):

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

2 Lượt thích