Mục lục:
- Bước 1: Chuẩn bị phần cứng
- Bước 2: Chuẩn bị phần mềm
- Bước 3: In 3D
- Bước 4: Hỗ trợ LCD
- Bước 5: Chuẩn bị tấm PETG
- Bước 6: Sửa ESP32 Dev Board
- Bước 7: Sửa Pin Lipo
- Bước 8: Kết nối Battery & Dev Board
- Bước 9: Chuẩn bị các Ghim hiển thị
- Bước 10: Kết nối các Ghim GND
- Bước 11: Kết nối Vcc Pins
- Bước 12: Kết nối LCD & Hỗ trợ Ban phát triển
- Bước 13: Kết nối các Pins SPI
- Bước 14: Chương trình Flash
- Bước 15: Đầu nối I2C
- Bước 16: Lắp ráp Phần 1
- Bước 17: Gamepad I2C nguyên mẫu
- Bước 18: Xây dựng I2C Gamepad
- Bước 19: Lắp ráp Phần 2
- Bước 20: Tùy chọn: Ghim đột phá âm thanh
- Bước 21: Tiếp theo là gì?
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Tài liệu hướng dẫn này chỉ ra cách sử dụng ESP32 và ATtiny861 để xây dựng bảng điều khiển trò chơi giả lập NES.
Bước 1: Chuẩn bị phần cứng
Bảng nhà phát triển ESP32
Lần này tôi đang sử dụng bảng phát triển TTGO T8 ESP32. Bo mạch này được tích hợp mạch sạc và điều chỉnh Lipo, nó có thể giúp giảm bớt các thành phần phụ.
Trưng bày
Lần này tôi đang sử dụng màn hình LCD IPS 2,4 . Bộ điều khiển trình điều khiển là ST7789V và độ phân giải là 320 x 240. Độ phân giải này phù hợp nhất với độ phân giải 252 x 224 của trình giả lập NES.
Ắc quy
Lần này tôi đang sử dụng pin Lipo 454261. 4,5 mm là độ dày của bảng nhà phát triển ESP32 và 61 mm là chiều rộng của bảng.
Đầu ghim
Một đầu cắm pin tròn nam 4 chân và đầu cắm pin tròn nữ 4 chân để kết nối gamepad I2C.
Tấm PETG
Một tấm PET / PETG nhỏ để hỗ trợ bảng nhà phát triển và pin Lipo, bạn có thể dễ dàng tìm thấy nó trong bao bì sản phẩm.
PCB đa mục đích
Yêu cầu 2 PCB, 1 PCB dày 0,4 mm để hỗ trợ Màn hình, 1 dày 1,2 mm cho một gamepad I2C.
nút
Một nút 5 hướng, 2 nút nhỏ cho Chọn và Bắt đầu và 2 cho nút A và B.
Bộ điều khiển trò chơi I2C
Lần này tôi sử dụng vi điều khiển ATtiny861 làm bộ điều khiển gamepad I2C.
Khác
1 điện trở SMD 12 Ohm, một bộ lập trình ISP (ví dụ: TinyISP)
Bước 2: Chuẩn bị phần mềm
Arduino IDE
Tải xuống và cài đặt Arduino IDE nếu chưa:
Hỗ trợ ATTinyCore
Làm theo các bước cài đặt để thêm hỗ trợ ATTinyCore nếu chưa:
ESP-IDF
Làm theo hướng dẫn bắt đầu ESP-IDF để thiết lập môi trường phát triển nếu chưa:
Bước 3: In 3D
Tải xuống và in vỏ:
Bước 4: Hỗ trợ LCD
Cắt PCB 24 x 27 lỗ 0,4 mm để hỗ trợ màn hình LCD. Hãy nhớ dành một số không gian cho màn hình LCD FPC gấp. Sau đó, sử dụng một số băng dính hai mặt để cố định màn hình LCD trên PCB.
Bước 5: Chuẩn bị tấm PETG
Cắt tấm PETG 62 mm x 69 mm cho bảng nhà phát triển và hỗ trợ pin Lipo.
Bước 6: Sửa ESP32 Dev Board
Sử dụng băng dính hai mặt để cố định bảng nhà phát triển trên tấm PETG.
Bước 7: Sửa Pin Lipo
Sử dụng băng dính hai mặt để cố định pin Lipo bên cạnh bảng nhà phát triển.
Bước 8: Kết nối Battery & Dev Board
Bước 9: Chuẩn bị các Ghim hiển thị
Màn hình LCD có nhiều dạng biến thể do các nhà cung cấp khác nhau. Vui lòng lấy biểu dữ liệu chính xác và đọc nó trước khi có bất kỳ bản vá và kết nối nào.
Một số chân được dành riêng cho bảng điều khiển cảm ứng. Vì màn hình LCD này không có bảng điều khiển cảm ứng, chỉ cần cắt bỏ những chân cắm đó có thể làm giảm sự nhiễu loạn.
Bước 10: Kết nối các Ghim GND
Trong hầu hết các trường hợp, có một số chân yêu cầu kết nối với GND. Để giảm nỗ lực hàn, tôi cắt một hình dạng băng đồng để tiếp cận tất cả các chân GND và sau đó hàn toàn bộ.
Bước 11: Kết nối Vcc Pins
Cần có 2 chân kết nối với nguồn Vcc, nguồn LCD và nguồn LED. Theo bảng dữ liệu, nguồn LCD có thể kết nối trực tiếp với chân 3,3 V của bảng nhà phát triển nhưng nguồn LED hoạt động thấp hơn một chút so với 3,3 V. Vì vậy, tốt hơn là thêm một điện trở SMD ở giữa, ví dụ: Điện trở 12 Ohm.
Bước 12: Kết nối LCD & Hỗ trợ Ban phát triển
sử dụng băng kết nối hỗ trợ LCD và hỗ trợ bảng nhà phát triển với nhau. Cả hai hỗ trợ nên dành khoảng cách khoảng 5 mm để gấp.
Bước 13: Kết nối các Pins SPI
Dưới đây là tóm tắt kết nối:
LCD ESP32
GND -> GND RST -> GPIO 33 SCL -> GPIO 18 DC -> GPIO 27 CS -> GPIO 5 SDI -> GPIO 23 SDO -> không kết nối Vcc -> 3.3 V LED + -> Điện trở 12 Ohm -> 3.3 V LED - -> GND
Bước 14: Chương trình Flash
- Tải mã nguồn tại GitHub:
- Trong thư mục mã nguồn, chạy "make menuconfig"
- Chọn "Cấu hình cụ thể của Nofrendo ESP32"
- Chọn "Phần cứng để chạy" -> "Phần cứng Tùy chỉnh"
- Chọn "Loại LCD" -> "ST7789V LCD"
- Điền vào cài đặt chân: MISO -> -1, MOSI -> 23, CLK -> 18, CS -> 5, DC -> 27, RST -> 33, Backlight -> -1, IPS -> Y
- Thoát và Lưu
- Chạy "make -j5 flash"
- Chạy "sh flashrom.sh PATH_TO_YOUR_ROM_FILE"
Bước 15: Đầu nối I2C
Phá vỡ các chân I2C, các chân I2C mặc định của ESP32 là:
Chân 1 (SCL) -> GPIO 22
Pin 2 (SDA) -> GPIO 21 Pin 3 (Vcc) -> 3,3 V (không có nguồn 5 V khi được cấp nguồn bằng pin Lipo) Pin 4 (GND) -> GND
Bước 16: Lắp ráp Phần 1
Làm theo các bước trong video để gấp và ép tất cả các bộ phận vào hộp đựng.
Bước 17: Gamepad I2C nguyên mẫu
Chương trình cho I2C Gamepad rất đơn giản, chỉ có 15 dòng mã. Nhưng hơi khó để lập trình lại ATtiny861 sau khi hàn, vì vậy tốt hơn hết bạn nên kiểm tra nó trên breadboard trước.
Tải xuống, biên dịch và flash chương trình từ GitHub:
Bước 18: Xây dựng I2C Gamepad
Đây là tóm tắt kết nối:
Nút ATtiny861
GND -> Tất cả các nút một chân Pin 20 (PA0) -> Nút lên Pin 19 (PA1) -> Nút xuống Pin 18 (PA2) -> Nút trái Pin 17 (PA3) -> Nút phải Pin 14 (PA4) -> Chọn nút Pin 13 (PA5) -> Nút khởi động Pin 12 (PA6) -> Nút A Pin 11 (PA7) -> Nút B Pin 6 (GND) -> I2C Pin đầu nam 4 Pin 5 (Vcc) -> I2C chân tiêu đề pin đực 3 Chân 3 (SCL) -> Chân tiêu đề pin đực I2C 1 Chân 1 (SDA) -> Chân tiêu đề pin đực I2C 2
Bước 19: Lắp ráp Phần 2
Làm theo các bước trong video để cài đặt vỏ và tay cầm trò chơi I2C vào thân máy chính.
Bước 20: Tùy chọn: Ghim đột phá âm thanh
Bo mạch nhà phát triển ESP32 Chân 25 và 26 đang xuất tín hiệu âm thanh analog, rất dễ bị đứt 2 chân này và cả chân nguồn (3.3 V và GND) trên đỉnh. Sau đó, bạn có thể vá một tai nghe để cắm vào nó. Hoặc thậm chí bạn có thể thêm một mô-đun khuếch đại âm thanh với loa để phát âm thanh lớn.
Bước 21: Tiếp theo là gì?
Trình giả lập NES không phải là điều thú vị duy nhất bạn có thể thực hiện với ESP32. Ví dụ. bạn có thể tạo một bảng điều khiển python vi mô bằng nó. Thành phần duy nhất bạn cần thay đổi là từ I2C gamepad sang I2C keyboard. Tôi nghĩ rằng nó không quá khó để thực hiện nó với một bộ điều khiển ATtiny88. Bạn có thể theo dõi twitter của tôi để xem trạng thái.