Презентация от Plovdiv Game Jam 2024 за open source USB-C адаптер да Nunchuk съвместими контролери.
Nintento Wii е популярна домашна конзола за игра на игри произвеждана в различни модификации от 2006г до 2017г. Nunchuk е допълнителен контролер, който се включва към Wii Remote. Има специфичен конектор и работи през комуникационния протокол I2C.
В тази презентация ще преминем през всички стъпки от проектиране на печатна платка през разработване на код за Raspberry Pi RP2040 микроконтролер на CircuitPython до свързване на Nunchuk като USB устройство за персонален компютър. Ще демонстрираме употребата на Nunchuk като джойстик за HTML5 игри както и употребата му като забавна нетипична алтернатива на компютърна мишка.
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040 и CircuitPython?
1. Как да играем компютърни игри с Nintendo Wii
Nunchuk чрез Raspberry Pi RP2040 и CircuitPython
Леон Анави
leon.anavi@konsulko.com
leon@anavi.org
2. Plovdiv Game Jam 2024, Леон Анави
Nintendo
Мултинационална компания за видео игри
Основата през 1889г в Киото, Япония
Първоначално произвеждат карти за бордови игри
През 1979г създават клон в САЩ и екип за разработка на
аркадни игри
През 1980г създават Game & Watch
3. Plovdiv Game Jam 2024, Леон Анави
Nintendo
През 1983г създават Nintendo Entertainment System (NES),
което първоначално се продава в Япония под името Family
Computer (FC) или накратко Famicom
През 1985г създават играта Super Mario Bros.
През 1989г създават Game Boy
През 2004г създават Nintendo DS
4. Plovdiv Game Jam 2024, Леон Анави
Nintendo Wii
Домашна игрална конзола на пазара от 2006г
В производство с модификации до 2017г
Произведени са над 100 милиона броя
Процесор IBM PowerPC Broadway @ 729 MHz
24 MB 1T-SRAM6 + 64 MB GDDR3 SDRAM
512 MB NAND флашпамет
5. Plovdiv Game Jam 2024, Леон Анави
Wiimote
Най-голямата иновация е игровият контролер на Nintend Wii, наречен Wiimote
6. Plovdiv Game Jam 2024, Леон Анави
Nunchuk
Първата приставка за Wiimote от 2006г
Прилича на дръжка с кабел дълъг 1 – 1.2м
Предоставя аналогов стик, акселерометър и два
бутона C и Z
Свързва се към Wiimote по I2C
1 = 3.3V 2 = SCL
3 = N/A 4 = N/A
5 = SDA 6 = GND
7. Plovdiv Game Jam 2024, Леон Анави
I2C (Inter-Integrated Circuit)
Двупроводна серийна шина за комуникация на данни между устройства на
къси разстояния
Разработена през 1982г от Philips Semiconductors (днес е NXP)
SDA за данни
SCL за тактов сигнал за синхронизация
Всяко устройство има уникален I2C адрес
Поддържат се различни режими за максимална скорост
(100 kbit/s, 400 kbit/s, 1 Mbit/s, 1.7 Mbit/s, 3.4 Mbit/s, 5 Mbit/s)
8. Plovdiv Game Jam 2024, Леон Анави
Как да свържем Nunchuk към персонален компютър?
Проблем 1: нямаме достъп до I2C шината на повечето персонални компютри
Проблем 2: Nunchuk използва специалния Wii конектор с 6 пина
Решение: USB преходник за Nunchuk
9. Plovdiv Game Jam 2024, Леон Анави
Seeed Studio XIAO RP2040
XIAO е серия от модули на Seeed Studio
XIAO RP2040 е с микроконтролер Raspberry Pi RP2040
Dual-core Arm Cortex-M0+ до 133 MHz
264KB SRAM, 2MB флашпамет
14 GPIO пина
RGB LED
Boot и Reset бутони
Размери 20×17.5×3.5mm
11. Plovdiv Game Jam 2024, Леон Анави
KiCad
Безплатен open source софтуер за дизайн на многослойни печатни платки
Съвместим с MS Windows, Mac OS и GNU/Linux дистрибуции
Разработката започва през 1992г
Разработен на C++ под GPL-3.0
https://www.kicad.org/
12. Plovdiv Game Jam 2024, Леон Анави
Дизайн на схема за платка в KiCad
14. Plovdiv Game Jam 2024, Леон Анави
ANAVI Handle
USB-C преходник за свързване на Nunchuk съвместим контролер съм
персонален компютър с open source hardware лиценз CC BY-SA 4.0
https://github.com/AnaviTechnology/anavi-handle
15. Plovdiv Game Jam 2024, Леон Анави
CircuitPython
Програмен език с библиотеки създаден, за да опрости програмирането на
евтини развойни платки с микроконтролери
Базиран и съвместим с популярния програмен език Python 3
Създаден от Adafruit Industries през 2017г като разновидност на MicroPython
Работи с множество различни платки с микроконтролери: Microchip SAMD21,
Microchip SAMD51, Nordic nRF52840, STMicroelectronics STM32, Espressif ESP32,
Raspberry RP2040 и други
Има екосистема от множество библиотеки
(например за периферия като дисплей и сензори)
16. Plovdiv Game Jam 2024, Леон Анави
Качване на CircuitPython на XIAO RP2040
Посетете https://circuitpython.org/board/seeeduino_xiao_rp2040/
Свалете .uf2 файл за CircuitPython
Натиснете и задръжте бутона B на XIAO RP2040
Свържете XIAO RP2040 с USB-C кабел към персонален компютър
Копирайте .uf2 на XIAO RP2040
17. Plovdiv Game Jam 2024, Леон Анави
adafruit_nunchuk
CircuitPython библиотека за Nintendo Nunchuk и съвместими контролери
Open source (лицензи CC-BY-4.0, MIT и Unlicense)
Зависи от библиотеката Adafruit_CircuitPython_BusDevice за I2C комуникация
https://github.com/adafruit/Adafruit_CircuitPython_Nunchuk
https://docs.circuitpython.org/projects/nunchuk/en/latest/
18. Plovdiv Game Jam 2024, Леон Анави
Как работи adafruit_nunchuk библиотеката?
Nunchuk I2C 7-битов адрес: 0x52
I2C комуникацията на Nunchuk е шифрирана и за да се изключи
криптирането трябва да запишат последователно първо 0x55 на
0x(4)A400F0 и след това 0x00 на 0x(4)A400FB:
self.i2c_device = I2CDevice(i2c, address)
self._i2c_read_delay = i2c_read_delay
time.sleep(_I2C_INIT_DELAY)
with self.i2c_device as i2c_dev:
i2c_dev.write(b"xF0x55")
time.sleep(_I2C_INIT_DELAY)
i2c_dev.write(b"xFBx00")
19. Plovdiv Game Jam 2024, Леон Анави
CircuitPython код на USB адаптер за Nunchuk
Open source код под GPLv3 лиценз в GitHub:
https://github.com/AnaviTechnology/anavi-handle-sw
Поддържа режим на джойстик или мишка
Конфигурация на режима от config.json
Инсталация на зависимости чрез circup
pip3 install circup
circup install adafruit_bus_device adafruit_hid adafruit_nunchuk adafruit_seesaw
neopixel
20. Plovdiv Game Jam 2024, Леон Анави
Конфигурация като джойстик или мишка в config.json
Джойстик (по подразбиране):
{
"type": "joystick"
}
Мишка:
{
"type": "mouse"
}
21. Plovdiv Game Jam 2024, Леон Анави
Заключения
Nunchuk е контролер за Nintento Wii, който работи по I2C шина
С подходящ микроконтролер може да се направи USB адаптер за Nunchuk
Seeed Studio предлага XIAO модул с USB-C и Raspberry Pi RP2040 MCU
KiCad е безплатен open source софтуер за чертане на печатни платки
CircuitPython е версия на Python за микроконтролери и има библиотека
adafruit_nunchuk
Open source софтуер и хардуер предоставя възможност за разглеждане на
всички детайли, обучение, промени и подобрения във времето
22. Plovdiv Game Jam 2024, Леон Анави
Благодаря Ви!
Полезни връзки:
https://github.com/AnaviTechnology/anavi-handle
https://github.com/AnaviTechnology/anavi-handle-sw
https://bg.wikipedia.org/wiki/Wii
https://circuitpython.org/
https://wiki.seeedstudio.com/XIAO-RP2040/
https://wiibrew.org/wiki/Wiimote/Extension_Controllers