miyoo-mini rumble motor 제어 방법

기술 관련 전문 (motor 테스트 앱에 포함되어 있는 pdf 에 적혀 있는 내용을 내마음 대로 번역해 보았습니다.)

진동 모터 개선을 위한 설명

사실 Stu 는 나쁜 모터의 성능 문제를 개선하기 원했지만 진동 모터를 재설계한 후에 진동하지 않는 문제가 사라졌다. 그래서 Stu 는 진동 모터를 부스트하는 방법을 공유해야만 했다.

Describe the motor modification In fact, Stu originally wanted to fix the problem of poor motor performance, but after remodeling the vibration motor, the problem of non-vibration disappeared. So Stu had to share how to boost the vibration motor.

Stu가 처음 meter 위에서 모터를 진동시키기 위해 Darlington 회로를 사용해서 그 회로에는 익숙했다.

PNP 트랜지스터가 없었고 내 미유미니 장치에서 이 회로를 보게될 줄 몰랐다.

The circuit was so familiar that Stu first used the Darlington circuit to vibrate the motor on the meter because he had no hands. There was no PNP transistor on it. I didn’t expect to see this circuit on my Miyu Mini handheld.

Stu 는 저항 값을 35R 에서 1R로 변경했다. (더 작은 저항 값은 더 큰 진동을 갖게 한다.) Stu changed 35R to 1R (the smaller the resistance, the stronger the vibration).

Stu 는 얼마간 미유 미니 시스템을 살펴보았지만 진동 모터를 제어할 방법을 찾을 수 없었다.

나는 플레이스테이션 에뮬레이터에서 진동을 지원한다는 것을 알아냈고 리버스엔지니어링을 해보니 Miyu Mini 가 GPIO 48 진동 모터 제어 신호를 사용하고 있음을 알아냈다.

Stu spent some time looking at the Miyo Mini system, but couldn’t find a way to control the vibration motor. I found out that the PS simulator has vibration support, so I turned it upside down and found out that Miyu Mini was using GPIO.-48 Control. vibration control motor

제어하는 방법은 아래와 같다. Control methods are as follows:

 # echo 48 > /sys/class/gpio/export
 # echo out > /sys/class/gpio/gpio48/direction
 # echo 0 > /sys/class/gpio/gpio48/value

 # echo 1 > /sys/class/gpio/gpio48/value
 # echo 48 > /sys/class/gpio/unexport

mgba core 에서 진동 기능 적용

아래 소스 내에 src/platform/libretro/libretro.c: 진동 모터를 돌릴 때

system("echo 48 > /sys/class/gpio/export");
system("echo out > /sys/class/gpio/gpio48/direction");
system("echo 0 > /sys/class/gpio/gpio48/value");

진동 모터를 멈출 때

system("echo 1 > /sys/class/gpio/gpio48/value");
system("echo 48 > /sys/class/gpio/unexport");

향후 개선 필요한 부분

  • mgba 코어에서 on / off 명령어가 반복적으로 나가지 않도록 수정함
  • 미유 미니에서 mgba core 구동 성능이 떨어지기 때문에 gpsp 에서 rumble 기능 구현 필요하지만, 현재 적용된 소스를 구할 수 없음
  • 진동 대비 진동모터에서 들리는 소음이 더 크기 때문에 게임 플레이 하기에는 적당하지 않음. 물리적인 모터를 좀 조용한 것으로 교체 필요함

미유미니 배포이미지에서 확인된 부분

  • Emu 폴더 내에 있는 개조 버전 레트로아크 (ra32.ss)는 진동 기능을 지원하지 않기 때문에 여기서 진동 기능을 사용하려면 기능 적용된 코어를 선택해야 함
  • RApp 폴더 내에 있는 개조 버전 레트로아크 (retroarch)는 진동 기능을 자체 지원하기 때문에 진동 코드가 적용되지 않은 코어를 선택하면 됨 단 libretro 에서 배포되는 retroarch 소스를 바로 적용해서는 미유 미니에서 구동은 불가능 하며 현재 소스는 오픈되어 있지 않음

2023

rgb30 빌드 환경

1 분 소요

rgb30 기기를 위한 이미지는 크게 jelos와 arkos가 존재합니다. 각각 다른 빌드 환경에서 에뮬레이터/프론트엔드/코어를 빌드 합니다.

8bitdo m30 for linux

최대 1 분 소요

Press and hold for 5 sec. If LED blinks, the mode has changed. There are three modes that can be set, and they are as follows.

rgnano build sm64

최대 1 분 소요

빌드를 하기 위해서는 docker 환경 내에서 작업 합니다.

rgnano ffmpeg build

1 분 소요

ffmpeg, ffplay 를 구동하기 위한 빌드환경을 설명합니다.

rgnano build 환경

1 분 소요

rgnano 용 이미지는 2종 (anbernic 생산 버젼, funkey DrUm78 custom 버젼) 존재합니다. 빌드 환경이 서로 다르기 때문에 각각 빌드된 프로그램은 실행되지 않음

rgnano simplemenu 구동

1 분 소요

rgnano는 240x240 해상도를 갖고 있다. 하지만 simplemenu는 320x240, 640x480 테마만 가지고 있다. rgnano에서 simplemenu 프론트엔드를 적용하기 위해서 기존 테마를 가공한 필요가 있었다.

miyoo mini + advmenu ip 및 배터리 값 표시

최대 1 분 소요

휴대용 기기를 위한 ip 주소 값과 배터리 상태 값을 표시한다. advmenu.rc 상에서 값 읽는 스크립트를 자유롭게 바꿀 수 있게 설계 한다. 메뉴 일부분을 한글로 구현 한다. core와 에뮬레이터를 advmenu 메뉴를 통해 변경할 수 있다.

miyoo mini + docker

최대 1 분 소요

mm+ 용 에뮬레이터를 빌드하기 위해서는 아래 toolchain을 사용해야 합니다. build 확인된 commit 시점으로 이동합니다.

miyoo mini + key value

최대 1 분 소요

miyoo mini + generates keyboard value when press each button. button value is below.

ogu linapple 구동

1 분 소요

linapple은 sdl1.2 기반으로 구현되어 있습니다. ogu에서 구동하기 위해서는 sdl2.0으로 변경 필요합니다.

ogu bluealsa 설치

1 분 소요

bt a2dp sink 출력을 하기 위해서는 pulseaudio를 설치해야 합니다만, bt 오디오 출력이 없어도 일정 수준으로 cpu를 사용하고 있기 때문에 다른 대안 중에 하나가 bluealsa 입니다.

ogu xpadneo 구동

3 분 소요

BT gamepad에서 진동 기능을 사용하려면 xpadneo를 설치해야 합니다. 기기 내에 linuxheader 를 설치 하고

ogu dosbox pure 로 windows95/98 설치

1 분 소요

ogu 에서 windows 95/98 용 프로그램을 실행하기 위해서는 dosbox pure를 사용하여 windows 95/98을 설치해야 합니다. 설치하기 위한 hdd.img 를 만들고, window 95/98 cd를 설치한 후, 원하는 게임롬과 함께 windows 95/98 os...

ogu flycast

1 분 소요

libretro core github에 있는 flycast 동작이 이상합니다. 개선을 위해 보다 최신 github 소스를 사용해 봅니다

맨 위로 이동 ↑

2022

ogu devilutionX 구동

최대 1 분 소요

diablo 이미지를 구동하기 위한 엔진입니다. 아래 방법으로 빌드 할 수 있습니다. docker 환경에서 빌드 가능합니다.

ogu gl4es

최대 1 분 소요

64bit / 32bit 모두 빌드 가능합니다.

ogu box86,box64

최대 1 분 소요

pc linux 용 x86/x64 를 arm 기기에서 실행하기 위해서는 box86,box64 가 필요합니다.

ogu sdcard 인식문제 해결 방법

2 분 소요

v1.1 (2022/09/26) ubuntu 20.04 기본 이미지에서는 reboot 시 sdcard 인식되지 않는 문제를 해결하기 위해서는 uboot와 kernel을 수정해야 합니다.

ogu mame current

최대 1 분 소요

mame는 빌드시 memory를 많이 필요로 하기 때문에 빌드 중간에 멈추는 현상을 방지하려면 사전에 swap 메모리 확보가 필요합니다.

ogu backup image

최대 1 분 소요

recovery mode 진입 : l2 + r2 + power 키로 전원을 키면 recovery mode로 진입한다.

ogu log

최대 1 분 소요

불필요한 log 가 쌓이는 것을 막기 위해서는 사이즈 제한을 해야 합니다.

ogu openbor

최대 1 분 소요

sudo apt install libvpx-dev libvorbisidec-dev git clone https://github.com/DCurrent/openbor

ogu easyrpg

최대 1 분 소요

easyrpg standalone 사용방법

ogu toolchain

1 분 소요

pc 환경에서 ogu 소스를 빌드하기 위해서는 toolchain을 설치해야 합니다. pc에서 빌드해야 하는 소스는 linux kernel과 uboot 이 있습니다.

ogu core build

최대 1 분 소요

retroarch core build 관련해서 정리해 봅니다.

ogu attractmode

최대 1 분 소요

ogu 장치에 맞게 attracmode 구동을 위한 sfml 라이브러리를 변경합니다.

ogu libgo2 코드 libgou로 수정

최대 1 분 소요

libgo2 로 작성된 코드를 libgou로 대체하기. retrorun go2와 gou 코드를 비교하여 기존에 작성된 코드를 수정한다.

ogu 자동실행 구문 수정

1 분 소요

ubuntu 에서 부팅시 자동으로 emulationstation을 실행해 주고 있으나, killall 로 죽여도 살아나기 때문에 개발에는 적합하지 않아 수정해 줍니다.

miyoo-mini rumble motor 제어 방법

2 분 소요

기술 관련 전문 (motor 테스트 앱에 포함되어 있는 pdf 에 적혀 있는 내용을 내마음 대로 번역해 보았습니다.)

하루전날 테스트

최대 1 분 소요

Welcome 포스팅이 되지 않아 하루전날 파일 생성해서 테스트 해봅니다.

맨 위로 이동 ↑