สารบัญ:
- ขั้นตอนที่ 1: การเตรียมฮาร์ดแวร์
- ขั้นตอนที่ 2: การเตรียมซอฟต์แวร์
- ขั้นตอนที่ 3: การพิมพ์ 3 มิติ
- ขั้นตอนที่ 4: รองรับ LCD
- ขั้นตอนที่ 5: เตรียมแผ่น PETG
- ขั้นตอนที่ 6: แก้ไข ESP32 Dev Board
- ขั้นตอนที่ 7: แก้ไข Lipo Battery
- ขั้นตอนที่ 8: เชื่อมต่อแบตเตอรี่และบอร์ด Dev
- ขั้นตอนที่ 9: เตรียม Display Pins
- ขั้นตอนที่ 10: เชื่อมต่อ GND Pins
- ขั้นตอนที่ 11: เชื่อมต่อ Vcc Pins
- ขั้นตอนที่ 12: เชื่อมต่อ LCD & Dev Board Support
- ขั้นตอนที่ 13: เชื่อมต่อ SPI Pins
- ขั้นตอนที่ 14: โปรแกรมแฟลช
- ขั้นตอนที่ 15: ตัวเชื่อมต่อ I2C
- ขั้นตอนที่ 16: การประกอบ ตอนที่ 1
- ขั้นตอนที่ 17: ต้นแบบเกมแพด I2C
- ขั้นตอนที่ 18: สร้าง I2C Gamepad
- ขั้นตอนที่ 19: การประกอบ ตอนที่ 2
- ขั้นตอนที่ 20: ตัวเลือก: Audio Breakout Pins
- ขั้นตอนที่ 21: อะไรต่อไป
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
คำแนะนำนี้แสดงวิธีใช้ ESP32 และ ATtiny861 เพื่อสร้างคอนโซลเกมจำลอง NES
ขั้นตอนที่ 1: การเตรียมฮาร์ดแวร์
บอร์ดพัฒนา ESP32
คราวนี้ฉันใช้บอร์ด dev TTGO T8 ESP32 บอร์ดนี้มีวงจรชาร์จและควบคุม Lipo ในตัวซึ่งสามารถช่วยลดส่วนประกอบพิเศษได้
แสดง
ครั้งนี้ฉันใช้จอ IPS LCD ขนาด 2.4 นิ้ว ตัวควบคุมไดรเวอร์คือ ST7789V และความละเอียด 320 x 240 ความละเอียดนี้เหมาะสมที่สุดสำหรับโปรแกรมจำลอง NES ที่มีความละเอียด 252 x 224
แบตเตอรี่
คราวนี้ผมใช้แบตลิโพ 454261 4.5 มม. คือความหนาของบอร์ด ESP32 dev และ 61 มม. คือความกว้างของบอร์ด
ส่วนหัวของพิน
ส่วนหัวพินพินตัวผู้ 4 พินและส่วนหัวพินพินตัวเมีย 4 พินสำหรับเชื่อมต่อเกมแพด I2C
แผ่น PETG
แผ่น PET/PETG ขนาดเล็กสำหรับรองรับบอร์ด dev และแบตเตอรี่ Lipo สามารถพบได้ง่ายในบรรจุภัณฑ์ของผลิตภัณฑ์
PCB อเนกประสงค์
ต้องใช้ 2 PCB, หนา 1 0.4 มม. เพื่อรองรับจอแสดงผล, หนา 1 1.2 มม. สำหรับเกมแพด I2C
ปุ่ม
ปุ่ม A 5 ทิศทาง ปุ่มเล็ก 2 ปุ่มสำหรับเลือกและเริ่มต้น และ 2 ปุ่มสำหรับปุ่ม A และ B
I2C Gamepad Controller
ครั้งนี้ฉันใช้ไมโครคอนโทรลเลอร์ ATtiny861 เป็นตัวควบคุมเกมแพด I2C
คนอื่น
ตัวต้านทาน SMD 12 โอห์ม 1 ตัว โปรแกรมเมอร์ ISP (เช่น TinyISP)
ขั้นตอนที่ 2: การเตรียมซอฟต์แวร์
Arduino IDE
ดาวน์โหลดและติดตั้ง Arduino IDE หากยังไม่มี:
การสนับสนุน ATTinyCore
ทำตามขั้นตอนการติดตั้งเพื่อเพิ่มการสนับสนุน ATTinyCore หากยังไม่ได้:
ESP-IDF
ทำตามคู่มือเริ่มต้นใช้งาน ESP-IDF เพื่อตั้งค่าสภาพแวดล้อมการพัฒนาหากยังไม่ได้ทำ:
ขั้นตอนที่ 3: การพิมพ์ 3 มิติ
ดาวน์โหลดและพิมพ์เคส:
ขั้นตอนที่ 4: รองรับ LCD
ตัด PCB ขนาด 24 x 27 รู 0.4 มม. เพื่อรองรับ LCD อย่าลืมสำรองพื้นที่สำหรับพับ LCD FPC จากนั้นใช้เทปกาวสองหน้าติด LCD บน PCB
ขั้นตอนที่ 5: เตรียมแผ่น PETG
ตัดแผ่น PETG ขนาด 62 มม. x 69 มม. สำหรับบอร์ด dev และรองรับแบตเตอรี่ Lipo
ขั้นตอนที่ 6: แก้ไข ESP32 Dev Board
ใช้เทปกาวสองหน้าเพื่อยึดบอร์ด dev บนเพลต PETG
ขั้นตอนที่ 7: แก้ไข Lipo Battery
ใช้เทปกาวสองหน้าเพื่อยึดแบตเตอรี่ Lipo นอกเหนือจากบอร์ด dev
ขั้นตอนที่ 8: เชื่อมต่อแบตเตอรี่และบอร์ด Dev
ขั้นตอนที่ 9: เตรียม Display Pins
จอ LCD มีหลายรูปแบบจากผู้ขายที่แตกต่างกัน โปรดรับเอกสารข้อมูลที่ถูกต้องและอ่านก่อนแพทช์และการเชื่อมต่อใดๆ
หมุดบางตัวสงวนไว้สำหรับแผงสัมผัส เนื่องจาก LCD นี้ไม่มีแผงสัมผัส เพียงแค่ตัดหมุดเหล่านั้นออกก็สามารถลดการรบกวนได้
ขั้นตอนที่ 10: เชื่อมต่อ GND Pins
ในกรณีส่วนใหญ่ มีพินไม่กี่ตัวที่ต้องเชื่อมต่อกับ GND เพื่อลดความพยายามในการบัดกรี ฉันตัดรูปร่างเทปทองแดงเพื่อให้ไปถึงหมุด GND ทั้งหมดแล้วจึงบัดกรีทั้งหมด
ขั้นตอนที่ 11: เชื่อมต่อ Vcc Pins
ต้องใช้ 2 พินเพื่อเชื่อมต่อกับ Vcc, LCD และ LED ตามเอกสารข้อมูล พลังงาน LCD สามารถเชื่อมต่อกับบอร์ด dev พิน 3.3 V ได้โดยตรง แต่พลังงาน LED ทำงานต่ำกว่า 3.3 V เล็กน้อย ดังนั้นจึงควรเพิ่มตัวต้านทาน SMD ตรงกลาง เช่น ตัวต้านทาน 12 โอห์ม
ขั้นตอนที่ 12: เชื่อมต่อ LCD & Dev Board Support
ใช้เทปเชื่อมต่อรองรับ LCD และรองรับบอร์ด dev ร่วมกัน ส่วนรองรับทั้งสองควรสำรองช่องว่างประมาณ 5 มม. สำหรับการพับ
ขั้นตอนที่ 13: เชื่อมต่อ SPI Pins
นี่คือบทสรุปการเชื่อมต่อ:
จอแอลซีดี ESP32
GND -> GND RST -> GPIO 33 SCL -> GPIO 18 DC -> GPIO 27 CS -> GPIO 5 SDI -> GPIO 23 SDO -> ไม่ได้เชื่อมต่อ Vcc -> 3.3 V LED+ -> ตัวต้านทาน 12 โอห์ม -> 3.3 V LED - -> GND
ขั้นตอนที่ 14: โปรแกรมแฟลช
- ดาวน์โหลดซอร์สโค้ดได้ที่ GitHub:
- ภายใต้โฟลเดอร์ซอร์สโค้ดให้เรียกใช้ "make menuconfig"
- เลือก "การกำหนดค่าเฉพาะ Nofrendo ESP32"
- เลือก "ฮาร์ดแวร์ที่จะทำงาน" -> "ฮาร์ดแวร์ที่กำหนดเอง"
- เลือก "ประเภท LCD" -> "ST7789V LCD"
- การตั้งค่าพินเติม: MISO -> -1, MOSI -> 23, CLK -> 18, CS -> 5, DC -> 27, RST -> 33, แสงพื้นหลัง -> -1, IPS -> Y
- ออกและบันทึก
- เรียกใช้ "make -j5 แฟลช"
- เรียกใช้ "sh flashrom.sh PATH_TO_YOUR_ROM_FILE"
ขั้นตอนที่ 15: ตัวเชื่อมต่อ I2C
ฝ่าวงล้อมพิน I2C พิน I2C เริ่มต้นของ ESP32 คือ:
พิน 1 (SCL) -> GPIO 22
ขา 2 (SDA) -> GPIO 21 ขา 3 (Vcc) -> 3.3 V (ไม่มีไฟ 5 V ขณะขับเคลื่อนด้วยแบตเตอรี่ Lipo) ขา 4 (GND) -> GND
ขั้นตอนที่ 16: การประกอบ ตอนที่ 1
ทำตามขั้นตอนวิดีโอเพื่อพับและบีบทุกส่วนลงในเคส
ขั้นตอนที่ 17: ต้นแบบเกมแพด I2C
โปรแกรมสำหรับ I2C Gamepad นั้นง่ายมาก เพียง 15 บรรทัดของรหัส แต่มันค่อนข้างยากเล็กน้อยที่จะตั้งโปรแกรม ATtiny861 ใหม่หลังจากการบัดกรี ดังนั้นจึงควรทดสอบบนเขียงหั่นขนมก่อน
ดาวน์โหลด คอมไพล์ และแฟลชโปรแกรมจาก GitHub:
ขั้นตอนที่ 18: สร้าง I2C Gamepad
นี่คือบทสรุปการเชื่อมต่อ:
ปุ่ม ATtiny861
GND -> ปุ่มทั้งหมดหนึ่งพิน Pin 20 (PA0) -> ปุ่มขึ้น Pin 19 (PA1) -> ปุ่มลง Pin 18 (PA2) -> ปุ่มซ้าย Pin 17 (PA3) -> ปุ่มขวา Pin 14 (PA4) -> เลือกปุ่ม Pin 13 (PA5) -> ปุ่ม Start Pin 12 (PA6) -> ปุ่ม A Pin 11 (PA7) -> ปุ่ม B Pin 6 (GND) -> I2C พินส่วนหัวของพิน 4 ขา 5 (Vcc) -> I2C ส่วนหัวของหมุดตัวผู้ ขา 3 ขา 3 (SCL) -> I2C ส่วนหัวของหมุดตัวผู้ ขา 1 ขา 1 (SDA) -> I2C ส่วนหัวของหมุดตัวผู้ ขาที่ 2
ขั้นตอนที่ 19: การประกอบ ตอนที่ 2
ทำตามขั้นตอนวิดีโอเพื่อติดตั้งฝาครอบและเกมแพด I2C เข้ากับตัวเครื่อง
ขั้นตอนที่ 20: ตัวเลือก: Audio Breakout Pins
บอร์ด dev ของ ESP32 ขา 25 และ 26 กำลังส่งสัญญาณเสียงอะนาล็อก มันง่ายมากที่จะแยกพิน 2 พินนี้และพินจ่ายไฟ (3.3 V และ GND) ที่ด้านบน จากนั้นคุณสามารถต่อหูฟังเพื่อเสียบได้ หรือแม้แต่คุณสามารถเพิ่มโมดูลเครื่องขยายเสียงพร้อมลำโพงเพื่อเล่นเสียงดังได้
ขั้นตอนที่ 21: อะไรต่อไป
โปรแกรมจำลอง NES ไม่ใช่สิ่งที่น่าสนใจเพียงอย่างเดียวที่คุณสามารถสร้างด้วย ESP32 เช่น. คุณสามารถสร้างคอนโซล micro python ได้ องค์ประกอบเดียวที่คุณต้องเปลี่ยนคือจากแป้นเกม I2C เป็นแป้นพิมพ์ I2C ฉันคิดว่ามันไม่ยากเลยที่จะสร้างมันด้วยคอนโทรลเลอร์ ATtiny88 คุณสามารถติดตาม Twitter ของฉันเพื่อดูสถานะ