Làm việc với Heltec WiFi 32 – ESP32 tích hợp OLED hiển thị thông tin

Trong bài viết này, IoTZone giới thiệu đến bạn cách thiết lập bộ kit Heltec WiFi 32 có tích hợp màn hình OLED. Sau khi xem bài viết, bạn có thể hiển thị các điểm truy cập cục bộ (Local Access Point) trên màn hình OLED tích hợp.

Cách thiết lập bộ Heltec WiFi 32 - ESP32 tích hợp OLED

Giới thiệu thêm: Mạch Heltec ESP32 được phát triển dựa trên chip ESP32, có tích hợp WiFi, Bluetooth, màn hình OLED 0.96″, đầu nối sạc pin lithium và CP2102 USB to Serial Interface. Chúng vẫn hỗ trợ lập trình trên Arduino IDE. Bạn có thể tìm mua chúng trên trang sản phẩm Heltec LoRa ESP32 của IoTZone.

Cài đặt ESP32 trên Arduino IDE

Không giống như trước đây, hiện tại trên thư viện của Arduino đã có sẵn phần thiết lập hỗ trợ ESP32. Bạn mở Arduino IDE, chọn vào mục File > Preferences.

Cài đặt Heltec WiFi 32 để dùng với Arduino IDE

Trong thư mục, bạn hãy mở thư mục hardware, tìm và xóa thư mục ESP32 hoặc thư mục Espressif.

Cài đặt Heltec WiFi 32 để dùng với Arduino IDE
Cài đặt Heltec WiFi 32 để dùng với Arduino IDE

Bây giờ, bạn có thể thiết lập thư viện ESP32 để sử dụng với Heltec WiFi 32 dễ dàng hơn.

Tại File > Preferences của Arduino IDE, bạn dán đường link sau vào Additional Boards Manager URL:

https://dl.espressif.com/dl/package_esp32_index.json

Nếu bạn đã có các mục trong trường này thì bạn có thể thêm dòng mới và phân tách chúng bằng dấu phẩy:

Cài đặt Heltec WiFi 32 để dùng với Arduino IDE

Sau đó, bạn mở Tools > Board > Board Manager:

Cài đặt Heltec WiFi 32 để dùng với Arduino IDE

Bạn gõ dòng chữ ESP32 và cài đặt thư viện mới:

Cài đặt thư viện để sử dụng Heltec WiFi 32 với Arduino IDE

Sau khi cài đặt thư viện trên vào Arduino IDE, bạn có thể tìm thấy tất cả các mạch ESP32 được hỗ trợ, trong đó có cả Heltec WiFi 32:

Cài đặt thư viện để sử dụng Heltec WiFi 32 với Arduino IDE

Chương trình đầu tiên của Heltec WiFi 32 trên Arduino IDE

Bây giờ, bạn có thể kết nối Heltec WiFi 32 với máy tính, mọi thứ đã sẵn sàng để lập trình.

Bạn hãy khởi động lại Arduino IDE, chọn đúng mạch ESP32 trong menu Tools > Board và chọn cổng COM đang kết nối với mạch.

Để kiểm tra mạch ESP32 tích hợp OLED có hoạt động ổn định không, bạn có thể mở đoạn code WifiScan và nạp vào chạy thử (bằng cách click vào File> Examples > Wifi > WifiScan). Nếu bạn mở Serial Monitor (Tool >> Serial Monitor) và chọn tốc độ baud giống trong code (thông thường là 115200), bạn sẽ thấy trên màn hình hiển thị tất cả các mạng WiFi ở gần đó.

Thử nghiệm Heltec ESP32 tích hợp OLED

Sau khi cài xong thư viện và kiểm tra thấy mạch hoạt động ổn định (thông qua đoạn code WifiScan trên), bạn có thể làm các dự án nâng cao hơn như hiển thị thông tin trên màn hình OLED tích hợp.

Để làm được điều đó, bạn cần cài thư viện hỗ trợ của OLED. Một thư viện gợi ý nên dùng cho bạn là U8g2. Thư viện này khá dễ cài đặt và chúng đã được tích hợp sẵn trong Arduino IDE, bạn chỉ cần click theo thứ tự Sketch > Include Library > Manage Libraries > Tìm tên thư viện và cài đặt là xong.

Thư viện U8g2 hỗ trợ 3 phương pháp khác nhau để hiển thị thông tin trên OLED. Dưới đây là 3 đoạn code mẫu cho từng phương pháp:

Full Buffer

Bạn click mở  File> Examples > U8g2 > full_buffer > GraphicsTest và dán dòng chữ sau vào phía trên dòng // Please UNCOMMENT one of the contructor lines below:

U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);

Sau đó, bạn upload sketch vào mạch.

Page Buffer

Bạn click mở File> Examples > U8g2 > page_buffer > GraphicsTest và dán dòng chữ sau vào phía trên dòng // Please UNCOMMENT one of the contructor lines below:

U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);

Sau đó, bạn upload sketch vào mạch.

U8x8

Bạn click mở File> Examples > U8g2 > u8x8 > GraphicsTest và dán dòng chữ sau vào phía trên dòng // Please UNCOMMENT one of the contructor lines below:

8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);

Vậy, các con số clock=*/ 15, /* data=*/ 4, /* reset=*/ 16) ở các ví dụ trên có nghĩa là gì? Đó chính là số chân I2C dùng để điều khiển đèn LED tích hợp trên ESP32.

Nói ngắn gọn, các con số trên nói với thư viện display rằng nên dùng chân nào để giao tiếp với màn hình. Với từng loại mạch Heltec WiFi 32 khác nhau, bạn cần xem sơ đồ GPIO để chỉnh sửa lại số chân cho đúng nhé!

Cách dùng Heltec WiFi 32 hiển thị thông tin trên màn hình OLED

Chương trình đầy đủ

Dưới đây là đoạn code mẫu giúp hiển thị kết quả quét mạng WiFi xung quanh lên OLED, sử dụng phương pháp U8x8 đã trình bày:

#include "WiFi.h"
#include <U8x8lib.h>

// the OLED used
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);


void setup()
{
  // Cấu hình WiFi ở chế độ Station và ngắt kết nối khỏi AP nếu nó đã được kết nối trước đó
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  u8x8.begin();
  u8x8.setFont(u8x8_font_chroma48medium8_r);
}


static void doSomeWork()
{
  int n = WiFi.scanNetworks();

  if (n == 0) {
    u8x8.drawString(0, 0, "Searching networks.");
  } else {
    u8x8.drawString(0, 0, "Networks found: ");
    for (int i = 0; i < n; ++i) {
      // In tên WiFi SSID cho mỗi mạng được tìm thấy
      char currentSSID[64];
      WiFi.SSID(i).toCharArray(currentSSID, 64);
      u8x8.drawString(0, i + 1, currentSSID);
    }
  }

  // Chờ 5 giây trước khi thực hiện quét tìm mạng WiFi lại lần nữa
}


void loop()
{
  doSomeWork();
}

Bạn hãy thử nạp code trên vào mạch ESP32 tích hợp OLED của bạn và thử xem sao nhé!

Lời kết

Trên đây là hướng dẫn chi tiết cơ bản ban đầu khi bạn cần làm việc với Heltec WiFi 32. IoTZone đã minh họa một ví dụ nhỏ về việc hiển thị các mạng WiFi gần đó lên màn hình OLED. Chúc các bạn thành công!

Ngoài ra, Website IoTZone cũng có khá nhiều bài viết hướng dẫn khác thú vị về chủ đề ESP32, bạn có thể tham khảo và làm theo nếu thích:

IoTZone – Chuyên cung cấp thiết bị điện tử & tài liệu cho Makers

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *