2017年 01月 02日
ラズパイZEROのたとえ(例) 続き
もう半年経って忘れ始めてますが、覚書めもを書いておこうと思います。
ラズパイZEROをエミュ機ににするめもだからね。ひとつの例だからね。
利用するツールやスクリプト・プログラムは、頻繁に仕様など変更になります。
このブログ記事の手順では組み込めなくなってる可能性大なのでそのつもりで読んでね。
非常に重要な事、私はLinux知りませんからね。
Linux知らないやつのブログ記事なので迂闊に信用しないように!
===GPIOピンから音声出力===
Adafruit MAX98357 I2S Class-D Mono Ampを購入。
adafruit.com https://www.adafruit.com/
switch-science.com https://www.switch-science.com/
このI2Sアンプは、 19.4mm*17.8mmと非常に小さく組込やすいです。
使い方は、ここに書いてあります。
https://learn.adafruit.com/
また小型スピーカーも用意します。
その1)
I2SアンプとラズパイZEROのGPIOをつなぐ
I2Sアンプ:Vin <==> ラズパイ:4番ピン(5V)
I2Sアンプ:GND <==> ラズパイ:39番ピン(GND)
I2Sアンプ:DIN <==> ラズパイ:40番ピン(GPIO 21)
I2Sアンプ:BCLK <==> ラズパイ:12番ピン(GPIO 18)
I2Sアンプ:LRCLK <==> ラズパイ:35番ピン(GPIO 19)
※ラズパイ側のピン番号1~40ピンとGPIO 2~27は別だから間違えないように、下の接続画像の黄色帯ね。
スピーカーをI2Sアンプのプラス端子とマイナス端子とつなぐ
その2)
とりあえずここは無視して構いません
ゲインを調整して音増幅をします。標準が9bdです。
・15db:GAIN端子とGNDの間に100k抵抗入れてつなぐ
・12db:GAIN端子とGNDをつなぐ
・9db:何もしない
・6db:GAIN端子とVINをつなぐ
・3db:GAIN端子とVinの間に100k抵抗入れてつなぐ
その3)
RetroPie導入済みである。
パソコンのTeraTerm起動、ラズパイZEROを接続、リモート操作
コマンド:raspi-blacklist.confの新規ファイル作成(実働には必要ないでしょう)
sudo nano /etc/modprobe.d/raspi-blacklist.conf
以下の文章新規追記
#blacklist i2c-bcm2708
#blacklist snd-soc-pcm512x
#blacklist snd-soc-wm8804
sudo nano /etc/modules
以下の文章新規追記
#snd_bcm2835
nanoツール終了キー
キーボードで Ctrl+x
上書き保存を聞いてくるので
キーボードで y その後 Enter
sudo nano /etc/asound.conf
以下の文章新規に書く
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}
nanoツール終了キー
キーボードで Ctrl+x
sudo nano /boot/config.txt
下記の文章の最初にコメント#書込み
#dtparam=audio=on
下記の文章を新規追加
dtoverlay=hifiberry-dac
nanoツール終了キー
キーボードで Ctrl+x
上書き保存を聞いてくるので
キーボードで y その後 Enter
sudo reboot
必要に応じて、その2)の音増幅を実施。
===GPIOピンからボタン入力===
GPIOピンからジョイスティック入力やボタン入力を行う。
それぞれのボタンでオン-オフを認識します。
私の導入したひとつの例、上下左右とセレクト・スタートと6ボタン設定です。
その1)
各ボタンととラズパイZEROのGPIOをつなぐ。
左 <==> ラズパイ:3番ピン(GPIO 2)
右 <==> ラズパイ:5番ピン(GPIO 3)
上 <==> ラズパイ:11番ピン(GPIO 17)
下 <==> ラズパイ:7番ピン(GPIO 4)
Aボタン<==> ラズパイ:13番ピン(GPIO 27)
Bボタン<==> ラズパイ:15番ピン(GPIO 22)
Xボタン<==> ラズパイ:29番ピン(GPIO 5)
Yボタン<==> ラズパイ:31番ピン(GPIO 6)
セレクト<==> ラズパイ:16番ピン(GPIO 23)
スタート<==> ラズパイ:18番ピン(GPIO 24)
Lボタン<==> ラズパイ:32番ピン(GPIO 12)
Rボタン<==> ラズパイ:33番ピン(GPIO 13)
GND <==> ラズパイ:9、14、20、25、30、34番ピン(GND)
※ラズパイ側のピン番号1~40ピンとGPIO 2~27は別だから間違えないように、下の接続画像の青色帯ね。
GNDは必要に応じて接続。
その2)
retrogameというシステムを導入してボタン入力を構築します。
ただこれがよく変更されます。
私が知ってるだけで、昨年半年で3回は導入方法が変更しています。
下のURLページが解説ページです。
https://learn.adafruit.com/retro-gaming
解説ページと以下の私の説明文が同じならOKですが、違っていればまた導入方法が変更されているという事です。って言うか、上の解説ページと実際の導入システムがもう違ってる。
現在の導入方法です。
RetroPie導入済みである。
パソコンのTeraTerm起動、ラズパイZEROを接続、リモート操作
コマンド:ダウンロード
curl -O https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/retrogame.sh
sudo bash retrogame.sh
4.よく知りません
5:方向キーとABの2ボタン構成(セガマスターシステムほか)
6:方向キーとABCD,coin,1Pの6ボタン構成(NEOGEOやGBAほか)
7:アーケードレトロ用(8ボタンかな?不明)
8:インストールしない
1~3が、PiGRRL用でボタン数が多いのでここから選択
とりあえず「1」選択、必要ないボタンは記述しなければよいです
ラズパイZERO用に3選択がよかったかも
コマンド:retrogame.cfg書き換え
sudo nano /boot/retrogame.cfg
LEFT 2 # Joypad left
RIGHT 3 # Joypad right
UP 17 # Joypad up
DOWN 4 # Joypad down
X 27 # 'A' button
Z 22 # 'B' button
S 5 # 'X' button
A 6 # 'Y' button
Q 23 # 'Select' button
R 24 # 'Start' button
W 12 # Left shoulder button
E 13 # Right shoulder button
※左がキーボード位置、中の数字がラズパイGPIOピン番号、右が実際のボタン位置
キーボードで Ctrl+x
上書き保存を聞いてくるので
キーボードで y その後 Enter
コマンド:再起動
sudo reboot
以上で完了、ボタン操作でRetroPieが操作できるはずだ。
もしかしたら再起動後、AボタンがXキーとかのキーボードのボタン割り当て初期設定が必要かも。
-------------------------------------------------------
以下は少し前の導入方法
-------------------------------------------------------
少し前の導入方法
コマンド:インストール
git clone git://github.com/adafruit/Adafruit-Retrogame
コマンド:nanoツール起動
sudo nano /etc/rc.local
記述文章の'exit 0' 前に追記する
/home/pi/Adafruit-Retrogame/retrogame &
nanoツール終了キー
キーボードで Ctrl+x
上書き保存を聞いてくるので
キーボードで y その後 Enter
コマンド:nanoツール起動、新規ファイル作成
sudo nano /etc/udev/rules.d/10-retrogame.rules
文章記述
SUBSYSTEM=="input", ATTRS{name}=="retrogame", ENV{ID_INPUT_KEYBOARD}="1"
nanoツール終了キー
キーボードで Ctrl+x
コマンド:nanoツール起動、新規ファイル作成
sudo nano /boot/retrogame.cfg
文章記述
# Sample configuration file for retrogame.
# Really minimal syntax, typically two elements per line w/space delimiter:
# 1) a key name (from keyTable.h; shortened from /usr/include/linux/input.h).
# 2) a GPIO pin number; when grounded, will simulate corresponding keypress.
# Uses Broadcom pin numbers for GPIO.
# If first element is GND, the corresponding pin (or pins, multiple can be
# given) is a LOW-level output; an extra ground pin for connecting buttons.
# A '#' character indicates a comment to end-of-line.
# File can be edited "live," no need to restart retrogame!
# Here's a pin configuration for the PiGRRL 2 project:
LEFT 2 # Joypad left
RIGHT 3 # Joypad right
UP 17 # Joypad up
DOWN 4 # Joypad down
X 27 # 'A' button
Z 22 # 'B' button
S 5 # 'X' button
A 6 # 'Y' button
Q 23 # 'Select' button
R 24 # 'Start' button
W 12 # Left shoulder button
E 13 # Right shoulder button
# For configurations with few buttons (e.g. Cupcade), a key can be followed
# by multiple pin numbers. When those pins are all held for a few seconds,
# this will generate the corresponding keypress (e.g. ESC to exit ROM).
# Only ONE such combo is supported within the file though; later entries
# will override earlier.
nanoツール終了キー
キーボードで Ctrl+x
コマンド:再起動
sudo reboot
-------------------------------------------------------
更に前の導入方法
コマンド:インストール
git clone git://github.com/adafruit/Adafruit-Retrogame
コマンド:ディレクトリ移動
cd Adafruit-Retrogame
コマンド:nanoツール起動
sudo nano retrogame.c
記述文章の 「// For PiGRRL 2」の項目を修正する
下記の文章に置き換える
ioStandard[] = {
// This pin/key table is used when the PiTFT isn't found
// (using HDMI or composite instead), as with our original
// retro gaming guide.
// Input Output (from /usr/include/linux/input.h)
{ 2, KEY_LEFT }, // Left
{ 3, KEY_RIGHT }, // Right
{ 17, KEY_UP }, // Up
{ 4, KEY_DOWN }, // Down
{ 27, KEY_X }, // A
{ 22, KEY_Z }, // B
{ 5, KEY_S }, // X
{ 6, KEY_A }, // Y
{ 23, KEY_Q }, // SELECT
{ 24, KEY_R }, // START
{ 12, KEY_W }, // L
{ 13, KEY_E }, // R
// For credit/start/etc., use USB keyboard or add more buttons.
{ -1, -1 } }; // END OF LIST, DO NOT CHANGE
nanoツール終了キー
キーボードで Ctrl+x
上書き保存を聞いてくるので
キーボードで y その後 Enter
コマンド:make
make retrogame
コマンド:移動
sudo mv retrogame /usr/local/bin
コマンド:nanoツール起動
sudo nano /etc/rc.local
記述文章の'exit 0' 前に追記する
/usr/local/bin/retrogame &
nanoツール終了キー
キーボードで Ctrl+x
上書き保存を聞いてくるので
キーボードで y その後 Enter
コマンド:nanoツール起動、新規ファイル作成
sudo nano /etc/udev/rules.d/10-retrogame.rules
文章記述
SUBSYSTEM=="input", ATTRS{name}=="retrogame", ENV{ID_INPUT_KEYBOARD}="1"
nanoツール終了キー
キーボードで Ctrl+x
コマンド:再起動
sudo reboot
===電源===
バッテリー
・海外から購入しない、空輸できないので船便にするんですが、船便指定できるお店を探すの大変。
・日本国内で購入しましょう。私の購入先例
strawberry-linux.co https://strawberry-linux.com/
switch-science.com https://www.switch-science.com/
aitendo http://www.aitendo.com/
・かなり小さいものが売られてます。
・ラズパイZERO動作させながら充電できません。
・給電と充電を簡単に出来る構成にしないといけません。
strawberry-linux.co https://strawberry-linux.com/
switch-science.com https://www.switch-science.com/
・ラズパイZEROは+5Vです。上記のバッテリーは+3.7Vです。よって、電圧を上げる回路が必要です。
・組込可能な小さい回路があると便利。私の購入先例
strawberry-linux.co https://strawberry-linux.com/
私はスライドスイッチで、給電と充電を切り替えてます
・充電しながら、昇圧した電気を給電する。まぁ、モバイルバッテリーです。
・小さな回路単品で売ってるの探せないです。唯一知ってるのコレ。
adafruit.com
https://www.adafruit.com/products/2465 https://www.adafruit.com/products/1944
switch-science.com あれ、以前売ってたと思ったが探せない