Phát triển giao diện người dùng đồ họa (GUI) cho màn hình cảm ứng trên Raspberry Pi Pico sử dụng màn hình ILI9488, cảm ứng điện dung GT911 và thư viện LVGL-9.x.

Phát triển giao diện người dùng đồ họa (GUI) cho màn hình cảm ứng trên Raspberry Pi Pico sử dụng màn hình ILI9488, cảm ứng điện dung GT911 và thư viện LVGL-9.x.

Biến chiếc Raspberry Pi Pico của bạn thành một trung tâm điều khiển cảm ứng hiện đại với màn hình ILI9488 và đồ họa LVGL-9.x mạnh mẽ.

Dự án này trình bày việc tích hợp màn hình LCD TFT 4 inch 480×320 ILI9488 với chức năng cảm ứng điện dung sử dụng vi điều khiển Raspberry Pi Pico (RP2040). Mã được phát triển bằng Arduino IDE, tận dụng thư viện TFT_eSPI phổ biến để giao tiếp SPI hiệu quả với bộ điều khiển màn hình ILI9488. Đối với giao diện cảm ứng, một bảng cảm ứng điện dung GT911 được kết nối qua I²C và được xử lý thông qua mã tùy chỉnh được viết thủ công để diễn giải các sự kiện chạm.

Dự án sử dụng LVGL (Light and Versatile Graphics Library) để tạo giao diện người dùng đồ họa tương tác. Đây là một thư viện GUI nhúng mã nguồn mở mạnh mẽ được tối ưu hóa cho vi điều khiển. Bộ xử lý lõi kép RP2040 của Raspberry Pi Pico cung cấp hiệu năng đủ để quản lý việc hiển thị và tương tác cảm ứng thời gian thực.

Màn hình LCD 4 inch ILI9488

Module LCD TFT 4.0 inch Z400IT005-DCT-TN tích hợp bảng cảm ứng điện dung được điều khiển bởi chip cảm ứng GT911. Màn hình có độ phân giải 480×320 pixel sử dụng định dạng màu RGB565, hỗ trợ tới 65.000 màu cho khả năng hiển thị hình ảnh sống động và chi tiết. Màn hình sử dụng IC điều khiển ILI9488, tương thích với nhiều giao diện khác nhau, bao gồm SPI 3 dây, SPI 4 dây và giao diện MCU song song 8/16 bit. Trong dự án này, cấu hình màn hình là SPI 4 dây 8 bit (bằng cách kéo lên các chân IM0, IM1 và IM2) để sử dụng với bo mạch Raspberry Pi Pico (RP2040).

Màn hình TFT sử dụng chế độ hiển thị truyền dẫn hoàn toàn, nghĩa là đèn nền phải hoạt động thì hình ảnh mới hiển thị được. Nó bao gồm một dãy đèn nền trắng 8 LED được bố trí song song, với dòng điện hoạt động điển hình là 120mA ở điện áp khoảng 3.1V. Nên sử dụng điện trở giới hạn dòng điện để ngăn ngừa hiện tượng quá nhiệt và hư hỏng đèn nền trong thời gian dài.

Hình 1 thể hiện hình dạng vật lý của màn hình LCD, và Hình 2 thể hiện sơ đồ chân cắm của nó.

Hình 1: Màn hình LCD 4 inch ILI9488 với cảm ứng điện dung GT911 (Vật lý)
Hình 2: Màn hình LCD 4 inch ILI9488 với cảm ứng điện dung GT911 (Sơ đồ chân cắm)

Bộ vi xử lý RP2040 (RP Pico)

RP2040 là một vi điều khiển được phát triển bởi Raspberry Pi và ra mắt vào tháng 1 năm 2021. Nó được thiết kế để cung cấp hiệu năng cao với chi phí thấp, trở thành lựa chọn tuyệt vời cho các hệ thống nhúng, các dự án của người đam mê và các ứng dụng chuyên nghiệp. Một số biến thể của bo mạch Pico (dựa trên MCU RP2040 ) đã được phát triển bởi nhiều công ty khác nhau, nhưng bo mạch Pico chính thức đầu tiên được thể hiện trong Hình 3. Bạn có thể sử dụng bất kỳ biến thể nào của bo mạch Pico để làm theo bài viết này. Hãy nghiên cứu tài liệu của nhà sản xuất để tìm hiểu sơ đồ I/O của nó và chỉnh sửa tệp cấu hình.

Hình 3: Bo mạch Raspberry Pi Pico chính thức, được phát triển bởi Raspberry Pi Foundation (2MB Flash)

Thông số kỹ thuật vi điều khiển RP2040

  • CPU: Lõi kép Arm Cortex-M0+ (tốc độ lên đến 133 MHz)
  • SRAM: 264 KB (chia thành các bank)
  • Bộ nhớ: Không có bộ nhớ flash tích hợp, cần có bộ nhớ flash QSPI bên ngoài (hỗ trợ tối đa 16 MB)
  • GPIO: 30 chân (4 chân có thể dùng làm ADC)

Giao diện I/O

  • 2 cổng SPI, 2 cổng I²C, 2 cổng UART
  • 16 kênh PWM
  • 8 cổng PIO (Input/Output lập trình được) dành cho các thiết bị ngoại vi tùy chỉnh
  • USB: USB 1.1 hỗ trợ chế độ Host và Device
  • Nguồn điện: Hoạt động từ 1.8V đến 3.3V
  • Các tính năng khác: Bộ nhân/chia phần cứng, bộ xử lý dấu phẩy động, bộ định thời giám sát và đồng hồ thời gian thực (RTC)

Mã số

Hình 4 thể hiện hàm flush của LVGL. Đây là một trong những hàm quan trọng nhất của LVGL, mà nhiều người mới bắt đầu gặp khó khăn. Đối tượng “tft” được suy ra từ lớp “TFT_eSPI” để viết hàm “my_disp_flush”:

TFT_eSPI tft = TFT_eSPI(TFT_HOR_RES, TFT_VER_RES);

Hình 4: Chức năng xả của LVGL-9

Hình 5 thể hiện một chức năng quan trọng khác, “my_touchpad_read”. Đây là chức năng khó nhất trong việc đọc các sự kiện cảm ứng GT911 và báo cáo tọa độ (x và y) cho LVGL. Hai hàm “Serial.println()” dùng cho mục đích gỡ lỗi; bạn có thể bình luận hoặc xóa chúng.

Hình 5: Hàm “my_touchpad_read”

Hình 6 thể hiện chức năng thiết lập. Quá trình khởi tạo I²C và LVGL được trình bày rõ ràng. Hình 7 thể hiện việc đăng ký thiết bị đầu vào LVGL và chức năng được gắn kèm (LV_INDEV_TYPE_POINTER và “my_touchpad_read”).

Hình 6: Chức năng “setup” của Arduino
Hình 7: Thiết bị đầu vào LVGL

Hình 8 thể hiện phần khai báo, khởi tạo và định nghĩa mã: các tiêu đề, địa chỉ I²C, sơ đồ chân I²C, TFT_eSPI và LVGL.

Hình 8: Khởi tạo mã

Hình 9 thể hiện các chức năng đọc và ghi I²C, được sử dụng để đọc các sự kiện chạm.

Hình 9: Chức năng đọc/ghi I²C

Kiểm tra

Tôi đã kiểm tra mã và phần cứng bằng bảng mạch thử nghiệm và dây dẫn (Hình 10). Màn hình LCD và màn hình cảm ứng hoạt động hoàn hảo và mượt mà.

Hình 10: Kiểm tra phần cứng và mã trên bảng mạch thử nghiệm.

Công việc trong tương lai

Mã nguồn có thể dễ dàng điều chỉnh cho RP2350 mà không cần hoặc chỉ cần sửa đổi nhỏ (Hình 11). RP2350 là bộ vi điều khiển thế hệ tiếp theo của Raspberry Pi Ltd., được thiết kế để kế nhiệm RP2040 được sử dụng rộng rãi. Nó cung cấp sức mạnh cho Raspberry Pi Pico 2, duy trì khả năng tương thích với kiểu dáng Pico ban đầu đồng thời giới thiệu những cải tiến quan trọng. RP2350 có bộ xử lý ARM Cortex-M0+ lõi kép, giống như RP2040, nhưng bổ sung thêm các khả năng mới như kết nối không dây tích hợp, nhiều SRAM hơn và những cải tiến tiềm năng về hiệu suất năng lượng và tích hợp thiết bị ngoại vi.

Nó đi kèm với 520KB SRAM nội bộ, gần gấp đôi so với RP2040, và hỗ trợ tối đa 16MB bộ nhớ flash hoặc PSRAM bên ngoài thông qua giao diện QSPI chuyên dụng. Bo mạch Pico 2 tiêu chuẩn được trang bị 4MB bộ nhớ flash.

Hình 11: Lựa chọn Raspberry Pi Pico 2 trong Trình quản lý bo mạch Arduino

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Win a Raspberry Pi!

Answer 5 questions for your chance to win!
Question 1

What color is the sky?

Tìm kiếm bằng danh mục

Chọn danh mục