
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-23 15:14



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.
Đề xuất:
Điều khiển bằng cử chỉ đơn giản - Điều khiển đồ chơi RC của bạn bằng chuyển động của cánh tay: 4 bước (có hình ảnh)

Điều khiển bằng cử chỉ đơn giản - Điều khiển đồ chơi RC của bạn bằng chuyển động của cánh tay: Chào mừng bạn đến với 'ible' # 45 của tôi. Cách đây một thời gian, tôi đã tạo một phiên bản RC hoàn chỉnh của BB8 bằng cách sử dụng các phần Lego Star Wars … https://www.instructables.com/id/Whats-Inside-My-R…Khi tôi thấy nó thú vị như thế nào Force Band do Sphero tạo ra, tôi nghĩ: " Ok, tôi c
Bộ điều khiển trò chơi tự làm dựa trên Arduino - Bộ điều khiển trò chơi Arduino PS2 - Chơi Tekken với tự làm trò chơi Arduino: 7 bước

Bộ điều khiển trò chơi tự làm dựa trên Arduino | Bộ điều khiển trò chơi Arduino PS2 | Chơi Tekken với Bàn điều khiển Arduino tự làm: Xin chào các bạn, chơi game luôn thú vị nhưng chơi với Bộ điều khiển trò chơi tùy chỉnh tự làm của riêng bạn sẽ thú vị hơn
Bảng điều khiển trò chơi bỏ túi Arduino + A-Maze - Trò chơi mê cung: 6 bước (có hình ảnh)

Arduino Pocket Game Console + A-Maze - Maze Game: Chào mừng bạn đến với người hướng dẫn đầu tiên của tôi! Dự án mà tôi muốn chia sẻ với bạn hôm nay là trò chơi Arduino mê cung, đã trở thành một bảng điều khiển bỏ túi có khả năng tương tự như Arduboy và các bảng điều khiển dựa trên Arduino tương tự. Nó có thể được hiển thị với các trò chơi trong tương lai của tôi (hoặc của bạn) nhờ hội chợ
Trình mô phỏng trò chơi điện thoại thông minh- Chơi trò chơi Windows bằng IMU điều khiển bằng cử chỉ, Gia tốc kế, Con quay hồi chuyển, Từ kế: 5 bước

SmartPhone Game Simulator- Chơi Windows Games Sử dụng IMU Điều khiển bằng cử chỉ, Gia tốc kế, Con quay hồi chuyển, Từ kế: Hỗ trợ dự án này: https://www.paypal.me/vslcreations bằng cách quyên góp cho mã nguồn mở & hỗ trợ để phát triển hơn nữa
Bảng điều khiển cầm tay với bộ điều khiển và cảm biến không dây (Arduino MEGA & UNO): 10 bước (có hình ảnh)

Bảng điều khiển cầm tay với bộ điều khiển và cảm biến không dây (Arduino MEGA & UNO): Những gì tôi đã sử dụng: - Arduino MEGA- 2x Arduino UNO- Adafruit 3.5 " Màn hình cảm ứng TFT 320x480 HXD8357D- Buzzer- Loa 4Ohm 3W- Đèn LED 5mm- Máy in Ultimaker 2+ w / Black PLA Filament- Lasercutter w / MDF wood- Phun sơn đen (cho gỗ) - 3x nRF24