เปลี่ยน Raspberry Pi Pico ของคุณให้เป็นศูนย์กลางระบบสัมผัสที่ทันสมัยด้วยจอแสดงผล ILI9488 และกราฟิก LVGL-9.x อันทรงพลัง
โครงการนี้แสดงให้เห็นถึงการรวมจอ LCD TFT ขนาด 4 นิ้ว ความละเอียด 480×320 พิกเซล รุ่น ILI9488 เข้ากับฟังก์ชันสัมผัสแบบ capacitive โดยใช้ไมโครคอนโทรลเลอร์ Raspberry Pi Pico (RP2040) โค้ดถูกพัฒนาโดยใช้ Arduino IDE โดยใช้ไลบรารี TFT_eSPI ที่ใช้งานกันอย่างแพร่หลายเพื่อการสื่อสาร SPI ที่มีประสิทธิภาพกับตัวควบคุมจอแสดงผล ILI9488 สำหรับอินเทอร์เฟซสัมผัส แผงสัมผัสแบบ capacitive รุ่น GT911 เชื่อมต่อผ่าน I²C และจัดการผ่านโค้ดที่เขียนขึ้นเองเพื่อตีความเหตุการณ์การสัมผัส
โครงการนี้ใช้ LVGL (Light and Versatile Graphics Library) เพื่อสร้างส่วนติดต่อผู้ใช้แบบกราฟิกเชิงโต้ตอบ LVGL เป็นไลบรารี GUI แบบฝังตัวโอเพนซอร์สที่มีประสิทธิภาพสูงและได้รับการปรับให้เหมาะสมสำหรับไมโครคอนโทรลเลอร์ โปรเซสเซอร์ RP2040 แบบดูอัลคอร์ของ Raspberry Pi Pico มีประสิทธิภาพเพียงพอสำหรับการจัดการการแสดงผลและการโต้ตอบแบบสัมผัสแบบเรียลไทม์
Z400IT005-DCT-TN เป็นโมดูลจอ LCD TFT ขนาด 4.0 นิ้ว ที่รวมแผงสัมผัสแบบ capacitive ไว้ด้วย โดยใช้ตัวควบคุมสัมผัส GT911 มีความละเอียด 480×320 พิกเซล ใช้รูปแบบสี RGB565 รองรับสีได้มากถึง 65,000 สี เพื่อการแสดงภาพที่สดใสและละเอียด จอแสดงผลใช้ไอซีไดรเวอร์ ILI9488 ซึ่งเข้ากันได้กับอินเทอร์เฟซต่างๆ รวมถึง SPI แบบ 3 สาย, SPI แบบ 4 สาย และอินเทอร์เฟซ MCU แบบขนาน 8/16 บิต ในโครงการนี้ การกำหนดค่าจอแสดงผลคือ SPI แบบ 4 สาย 8 บิต (โดยการดึงขึ้นที่ขา IM0, IM1 และ IM2) สำหรับใช้กับบอร์ด Raspberry Pi Pico (RP2040)
แผง TFT ใช้โหมดการแสดงผลแบบส่งผ่านแสงอย่างสมบูรณ์ ซึ่งหมายความว่าต้องเปิดไฟแบ็คไลท์เพื่อให้มองเห็นภาพได้ ประกอบด้วยแผงไฟแบ็คไลท์ LED สีขาว 8 ดวง ต่อแบบขนาน โดยมีกระแสไฟใช้งานทั่วไป 120 mA ที่แรงดันประมาณ 3.1 V แนะนำให้ใช้ตัวต้านทานจำกัดกระแสเพื่อป้องกันความร้อนสูงเกินไปและความเสียหายต่อไฟแบ็คไลท์ในระยะยาว
ภาพที่ 1 แสดงรูปร่างทางกายภาพของจอ LCD และภาพที่ 2 แสดงการจัดเรียงขาเชื่อมต่อของจอ LCD


RP2040 เป็นไมโคร คอนโทรลเลอร์ที่พัฒนาโดย Raspberry Pi และวางจำหน่ายในเดือนมกราคม 2021 ออกแบบมาเพื่อมอบประสิทธิภาพสูงในราคาประหยัด ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับระบบฝังตัว โครงการสำหรับผู้ที่ชื่นชอบงานอดิเรก และแอปพลิเคชันระดับมืออาชีพ บริษัทต่างๆ ได้พัฒนาบอร์ด Pico หลายรุ่น (ที่ใช้MCU RP2040 ) แต่บอร์ด Pico รุ่นแรกอย่างเป็นทางการแสดงในรูปที่ 3 คุณสามารถใช้บอร์ด Pico รุ่นใดก็ได้เพื่อทำตามบทความนี้ ศึกษาเอกสารของผู้ผลิตเพื่อค้นหาแผนภาพ I/O และแก้ไขไฟล์การกำหนดค่า

รูปที่ 4 แสดงฟังก์ชัน flush ของ LVGL ซึ่งเป็นหนึ่งในฟังก์ชันที่สำคัญที่สุดของ LVGL ที่ผู้เริ่มต้นหลายคนมักประสบปัญหา อ็อบเจ็กต์ “tft” ถูกสร้างขึ้นจากคลาส “TFT_eSPI” เพื่อเขียนฟังก์ชัน “my_disp_flush”:
TFT_eSPI tft = TFT_eSPI(TFT_HOR_RES, TFT_VER_RES);

รูปที่ 5 แสดงฟังก์ชันสำคัญอีกฟังก์ชันหนึ่งคือ “my_touchpad_read” ซึ่งเป็นฟังก์ชันที่ท้าทายที่สุดในการอ่านเหตุการณ์สัมผัสของ GT911 และรายงานพิกัด (x และ y) ไปยัง LVGL ฟังก์ชัน “Serial.println()” ทั้งสองฟังก์ชันมีไว้เพื่อการดีบัก คุณสามารถคอมเมนต์หรือลบออกได้

รูปที่ 6 แสดงฟังก์ชันการตั้งค่า การเริ่มต้นใช้งาน I²C และ LVGL นั้นชัดเจน รูปที่ 7 แสดงการลงทะเบียนอุปกรณ์อินพุต LVGL และฟังก์ชันที่แนบมาด้วย (LV_INDEV_TYPE_POINTER และ “my_touchpad_read”)


รูปที่ 8 แสดงการประกาศโค้ด การเริ่มต้นใช้งาน และการกำหนดค่าต่างๆ ได้แก่ ส่วนหัว ที่อยู่ I²C แผนผังขา I²C TFT_eSPI และ LVGL

รูปที่ 9 แสดงฟังก์ชันการอ่านและการเขียน I²C ซึ่งใช้ในการอ่านเหตุการณ์การสัมผัส

ฉันได้ทดสอบโค้ดและฮาร์ดแวร์โดยใช้แผงวงจรทดลองและสายไฟ (รูปที่ 10) จอ LCD และหน้าจอสัมผัสทำงานได้อย่างไม่มีปัญหาและราบรื่น

โค้ดสามารถปรับใช้กับ RP2350 ได้อย่างง่ายดายโดยไม่ต้องแก้ไขหรือแก้ไขเพียงเล็กน้อย (รูปที่ 11) RP2350 เป็นไมโครคอนโทรลเลอร์รุ่นใหม่จาก Raspberry Pi Ltd. ออกแบบมาเพื่อทดแทน RP2040 ที่ใช้งานกันอย่างแพร่หลาย มันเป็นตัวขับเคลื่อน Raspberry Pi Pico 2 โดยยังคงความเข้ากันได้กับฟอร์มแฟคเตอร์ Pico เดิม ในขณะเดียวกันก็มีการปรับปรุงที่สำคัญหลายอย่าง RP2350 มีโปรเซสเซอร์ ARM Cortex-M0+ แบบ dual-core เช่นเดียวกับ RP2040 แต่เพิ่มความสามารถใหม่ๆ เช่น การเชื่อมต่อไร้สายในตัว หน่วยความจำ SRAM ที่มากขึ้น และศักยภาพในการปรับปรุงประสิทธิภาพการใช้พลังงานและการรวมอุปกรณ์ต่อพ่วง
มาพร้อมกับ SRAM ภายในขนาด 520KB ซึ่งเกือบสองเท่าของ RP2040 และรองรับหน่วยความจำแฟลชหรือ PSRAM ภายนอกได้สูงสุด 16MB ผ่านอินเทอร์เฟซ QSPI เฉพาะ บอร์ด Pico 2 มาตรฐานมีหน่วยความจำแฟลชขนาด 4MB
