SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Как да играем компютърни игри с Nintendo Wii
Nunchuk чрез Raspberry Pi RP2040 и CircuitPython
Леон Анави
leon.anavi@konsulko.com
leon@anavi.org
Plovdiv Game Jam 2024, Леон Анави
Nintendo
 Мултинационална компания за видео игри
 Основата през 1889г в Киото, Япония
 Първоначално произвеждат карти за бордови игри
 През 1979г създават клон в САЩ и екип за разработка на
аркадни игри
 През 1980г създават Game & Watch
Plovdiv Game Jam 2024, Леон Анави
Nintendo
 През 1983г създават Nintendo Entertainment System (NES),
което първоначално се продава в Япония под името Family
Computer (FC) или накратко Famicom
 През 1985г създават играта Super Mario Bros.
 През 1989г създават Game Boy
 През 2004г създават Nintendo DS
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 флашпамет
Plovdiv Game Jam 2024, Леон Анави
Wiimote
 Най-голямата иновация е игровият контролер на Nintend Wii, наречен Wiimote
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
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)
Plovdiv Game Jam 2024, Леон Анави
Как да свържем Nunchuk към персонален компютър?
 Проблем 1: нямаме достъп до I2C шината на повечето персонални компютри
 Проблем 2: Nunchuk използва специалния Wii конектор с 6 пина
 Решение: USB преходник за Nunchuk
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
Plovdiv Game Jam 2024, Леон Анави
Seeed Studio XIAO RP2040
Plovdiv Game Jam 2024, Леон Анави
KiCad
 Безплатен open source софтуер за дизайн на многослойни печатни платки
 Съвместим с MS Windows, Mac OS и GNU/Linux дистрибуции
 Разработката започва през 1992г
 Разработен на C++ под GPL-3.0
 https://www.kicad.org/
Plovdiv Game Jam 2024, Леон Анави
Дизайн на схема за платка в KiCad
Plovdiv Game Jam 2024, Леон Анави
Дизайн на платка в KiCad
Plovdiv Game Jam 2024, Леон Анави
ANAVI Handle
 USB-C преходник за свързване на Nunchuk съвместим контролер съм
персонален компютър с open source hardware лиценз CC BY-SA 4.0
https://github.com/AnaviTechnology/anavi-handle
Plovdiv Game Jam 2024, Леон Анави
CircuitPython
 Програмен език с библиотеки създаден, за да опрости програмирането на
евтини развойни платки с микроконтролери
 Базиран и съвместим с популярния програмен език Python 3
 Създаден от Adafruit Industries през 2017г като разновидност на MicroPython
 Работи с множество различни платки с микроконтролери: Microchip SAMD21,
Microchip SAMD51, Nordic nRF52840, STMicroelectronics STM32, Espressif ESP32,
Raspberry RP2040 и други
 Има екосистема от множество библиотеки
(например за периферия като дисплей и сензори)
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
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/
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")
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
Plovdiv Game Jam 2024, Леон Анави
Конфигурация като джойстик или мишка в config.json
 Джойстик (по подразбиране):
{
"type": "joystick"
}
 Мишка:
{
"type": "mouse"
}
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 софтуер и хардуер предоставя възможност за разглеждане на
всички детайли, обучение, промени и подобрения във времето
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

Contenu connexe

Similaire à Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040 и CircuitPython?

brochure_iSB-4.00_BG
brochure_iSB-4.00_BGbrochure_iSB-4.00_BG
brochure_iSB-4.00_BG
Ilko Radulov
 

Similaire à Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040 и CircuitPython? (9)

Nvidia
NvidiaNvidia
Nvidia
 
Nvidia presentation
Nvidia presentationNvidia presentation
Nvidia presentation
 
Programming Small Devices - Web Summit Bulgaria 2014
Programming Small Devices - Web Summit Bulgaria 2014Programming Small Devices - Web Summit Bulgaria 2014
Programming Small Devices - Web Summit Bulgaria 2014
 
Raspberry Pi
Raspberry PiRaspberry Pi
Raspberry Pi
 
Програмиране на малки микропроцесорни системи
Програмиране на малки микропроцесорни системиПрограмиране на малки микропроцесорни системи
Програмиране на малки микропроцесорни системи
 
brochure_iSB-4.00_BG
brochure_iSB-4.00_BGbrochure_iSB-4.00_BG
brochure_iSB-4.00_BG
 
Адаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваАдаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройства
 
Въведение в Микроконтролерите Пловдив/2015-02-21
Въведение в Микроконтролерите Пловдив/2015-02-21Въведение в Микроконтролерите Пловдив/2015-02-21
Въведение в Микроконтролерите Пловдив/2015-02-21
 
br13
br13br13
br13
 

Plus de Leon Anavi

Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Leon Anavi
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
Leon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
Leon Anavi
 

Plus de Leon Anavi (20)

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source Hardware
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
 
Open Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHParkOpen Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHPark
 

Как да играем компютърни игри с 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
  • 10. Plovdiv Game Jam 2024, Леон Анави Seeed Studio XIAO RP2040
  • 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
  • 13. 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