#author("2019-07-09T10:47:05+09:00","default:kuran","kuran")
*240x240, 1.3inch IPS LCD display HAT for Raspberry Pi [#w14baf97]
WaveShareの1.3インチ 240×240 IPS LCDディスプレイHATについてのメモです。~
秋葉原の千石電商で買いました。https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-5BKD ~
Waveshareの商品説明 https://www.waveshare.com/1.3inch-lcd-hat.htm ~
手持ちのRaspberry Pi Zero WHに接続してみました。~
公式のドキュメントが間違っていて動作しなかったので使ってみて分かった事をまとめてみました。~
#author("2020-07-19T22:55:28+09:00","default:kuran","kuran")
*PetroPieのメモ [#td15b7fc]
**動作環境 [#nca06079]
-Raspberry Pi 4 Model B
-RetroPie 4.6

|#ref(window.jpg,,,50%)|
https://retropie.org.uk/ ~

***SPIを有効にする [#ie274847]
-RETROPieの場合
 ゲームパッドでRETROPie「CONFIGURATION」→「RASPI-CONFIG」を選択する。
**イメージ書き込み [#qf19a8d3]
SDカードへの書き込みはDD for Windowsを使用した。~
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows ~
起動する時はDDWin.exeを右ボタンでクリックして「管理者として実行」を選ぶ。
そうするとSDカードが見えるようになる。

-Rasbianの場合
 $ sudo raspi-config
-カーソルキーの上下で「5 Interfacing Options」を選びEnterで決定する。
-カーソルキーの上下で「P4 SPI」を選びEnterで決定する。
-カーソルキーの左右て「Yes」を選びEnterで決定する。
-Enterを押して設定を終了する。
**設定 [#z609ba35]
-オーバースキャン (画面をディスプレイいっぱいに表示する)
--ゲームパッドでRETROPie「CONFIGURATION」→「RASPI-CONFIG」を選択する。
--キーボードの上下のカーソルキーで「7 Advanced Options」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「A2 Overscan」を選びEnterで決定する。
--「No」を選びEnterで決定する。「OK」を選びEnterで決定する。
--キーボードの左右のカーソルキーで「Finish」を選びEnterで決定する。
--「Yes」を選びEnterで決定する。すると再起動してOverscanがDisableになり画面がディスプレイいっぱいに表示されるようになる。~

**RaspbianまたはRetroPie共通設定 [#l8a3f581]
 以下は設定済みのRaspbianまたはRetroPieに追加設定します。
-画面の解像度を1920x1080 60pに変更する(HDMIの後差し用)
--ゲームパッドでRETROPie「CONFIGURATION」→「RASPI-CONFIG」を選択する。
--キーボードの上下のカーソルキーで「7 Advanced Options」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「A5 Resolution」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「CEA Mode 16 1920x1080 60Hz 16:9」を選びEnterで決定する。
「OK」を選びEnterで決定する。
--キーボードの左右のカーソルキーで「Finish」を選びEnterで決定する。

***ドライバをダウンロードしてビルド、インストールする [#qd54e975]
piユーザーでログイン後に以下の操作を実行する~
 $ sudo apt-get install cmake
-SSH設定
--ゲームパッドでRETROPie「CONFIGURATION」→「RASPI-CONFIG」を選択する。
--キーボードの上下のカーソルキーで「5 Interfacing Options」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「P2 SSH」を選びEnterで決定する。
--キーボードの左右のカーソルキーで左側の「Yes」を選びEnterで決定する。
--「Ok」を選びEnterで決定する。

 $ cd ~
-日本語キーボード設定
--ゲームパッドでRETROPie「CONFIGURATION」→「RASPI-CONFIG」を選択する。
--キーボードの上下のカーソルキーで「4 Localisation Options」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「I3 Change Keyboard Layout」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「Generic 105-key (Intl) PC」」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「Other」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「Japanese」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「Japanese - Japanese (OADG 109A)」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「The default for the keyboard layout」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「No compose key」を選びEnterで決定する。
--キーボードの左右のカーソルキーで「Finish」選びEnterで決定する。

 $ git clone https://github.com/juj/fbcp-ili9341.git
-Wifiの国設定
--ゲームパッドでRETROPie「CONFIGURATION」→「RASPI-CONFIG」を選択する。
--キーボードの上下のカーソルキーで「4 Localisation Options」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「I4 Change Wi-fi Countory」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「JP Japan」を選びEnterで決定する。
--「Ok」を選びEnterで決定する。
--キーボードの左右のカーソルキーで「Finish」選びEnterで決定する。

 $ cd fbcp-ili9341
-Wifi設定
--ゲームパッドでRETROPie「CONFIGURATION」→「WIFI」を選択する。
--キーボードの上下のカーソルキーで「1 Connect to WiFi network」選びEnterで決定する。
--アクセスポイントの一覧が表示されるのでキーボードの上下のカーソルキーで選びEnterで決定する。
--パスワードを入力してEnterで決定する。
--接続が完了するとIPアドレスとESSIDが表示されるので確認する。
--「Ok」を選びEnterで決定する。
--キーボードの左右のカーソルキーで「Exit」選びEnterで決定する。

 $ mkdir build
***上記の一部はboot/config.txtを編集して設定をする事ができます [#p24ae7d5]
-WindowsでSDカードを認識させ「boot」にあるboot/config.txtをテキストエディタで開く。
--オーバースキャン
 disable_overscan=0
--HDMIの後差し
 hdmi_force_hotplug=1
--解像度1920x1080 60p
 hdmi_group=1
 hdmi_mode=16
--解像度1280x1024 60p
 hdmi_group=2
 hdmi_mode=35
--HDMIから音を出す
 hdmi_drive=2
--雷マークを出さないようにする
 avoid_warnings=1
--雷マークを出さないようにしてクロックも下がらないようにする
 avoid_warnings=2

 $ cd build
**コマンドラインからの日本語フォントのインストール [#s393922c]
 $ sudo apt-get install fonts-droid-fallback

 $ cmake -DSPI_BUS_CLOCK_DIVISOR=6 -DWAVESHARE_ST7789VW_HAT=ON -DSTATISTICS=0 ..
**PC-EngineCDを追加する(romはpcenginecdフォルダになる) [#a8030d03]

 $ make -j
 $ mkdir /opt/retropie/configs/pcenginecd

 $ sudo install fbcp-ili9341 /usr/local/bin/fbcp-ili9341
 $ nano /opt/retropie/configs/pcenginecd/emulators.cfg
 ------------------------------
 lr-beetle-pce-fast = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-beetle-pce-fast/mednafen_pce_fast_libretro.so --config /opt/retropie/configs/pcenginecd/retroarch.cfg %ROM%"
 default = "lr-beetle-pce-fast"
 lr-beetle-supergrafx = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-beetle-supergrafx/mednafen_supergrafx_libretro.so --config /opt/retropie/configs/pcenginecd/retroarch.cfg %ROM%"
 lr-fbneo-pce = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fbneo/fbneo_libretro.so --subsystem pce --config /opt/retropie/configs/pcenginecd/retroarch.cfg %ROM%"
 lr-fbneo-sgx = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fbneo/fbneo_libretro.so --subsystem sgx --config /opt/retropie/configs/pcenginecd/retroarch.cfg %ROM%"
 lr-fbneo-tg = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fbneo/fbneo_libretro.so --subsystem tg --config /opt/retropie/configs/pcenginecd/retroarch.cfg %ROM%"
 ------------------------------
 Ctrlキーを押しながらoを押してEnterで保存する。
 Ctrlキーを押しながらxを押して終了する。

 $ sudo nano /etc/rc.local
 exit 0の前に「fbcp-ili9341 &」を追加する。
 $ nano /opt/retropie/configs/pcenginecd/retroarch.cfg
 ------------------------------
 fbcp-ili9341 &
 exit 0
 # Settings made here will only override settings in the global retroarch.cfg if placed above the #include line
 
 input_remapping_directory = "/opt/retropie/configs/pcenginecd/"
 
 #include "/opt/retropie/configs/all/retroarch.cfg"
 ------------------------------
 Ctrlキーを押しながらoを押してEnterで保存する。
 Ctrlキーを押しながらxを押して終了する。

 $ sudo nano /boot/config.txt
 下の設定を追加する。
 $ sudo nano /etc/emulationstation/es_systems.cfg
 以下を追加する
 ------------------------------
 hdmi_group=2
 hdmi_mode=87
 hdmi_cvt=240 240 60 1 0 0 0
 hdmi_force_hotplug=1
  <system>
    <name>pcenginecd</name>
    <fullname>PC Engine CD</fullname>
    <path>/home/pi/RetroPie/roms/pcenginecd</path>
    <extension>.ccd .chd .cue .CCD .CHD .CUE</extension>
    <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ pcenginecd %ROM%</command>
    <platform>pcenginecd</platform>
    <theme>pce-cd</theme>
  </system>
 ------------------------------
 Ctrlキーを押しながらoを押してEnterで保存する。
 Ctrlキーを押しながらxを押して終了する。

 $ sudo reboot
**ラズパイでシャットダウンボタンを付ける [#ycf0a07e]
こちらのwebページを参考にしました。~
https://qiita.com/clses/items/e701c1cb6490751a6040 ~
起動時はボタンを押したら再起動、長押しでシャットダウンします。シャットダウン時はボタンを押したら起動します。~

 以上の操作でOSが再起動してHAT上のディスプレイに表示されます。
配線は以下の様になっている。GNDはPin9以外でも可能です。~
 GND(Pin9 etc)---+
                 |
                 / ボタン
                 |
 BCM3(Pin5)------+
                 |
 BCM23(Pin16)----+

 この設定ではHAT上のディスプレイには表示されますがHDMI端子にケーブルを接続しても映らなくなってしまいます。
 (他の方は映ってる人もいるのかな??私の環境では240x240の設定だとHDMI側(Dell P2715Q)は真っ暗でダメでした。)
 hdmi_cvt=256 240 60 1 0 0 0
 に設定するとHDMI端子に接続したディスプレイでも表示されるようになりましたが、
 横256ドットが240ドットに縮小されるためドットが潰れて表示されます。
 cmakeのオプションに-DDISPLAY_CROPPED_INSTEAD_OF_SCALING=ONを追加するとドットが潰れることは無くなります。
 しかし240x240からはみ出た右側16ドットの部分は表示されません。
 私はドットが潰れないようにこのオプションを付けています。
 ドットが潰れて少しのぼやけを容認して画面全体を表示するのか、16ドットはみ出てでもドットが潰れないようにするかの違いです。
nanoで/home/pi/ディレクトリにshutdownd.pyを作成する。~
 $ nano /home/pi/shutdownd.py
以下をnanoで入力する~
 #!/usr/bin/python
 # coding:utf-8
 import time
 import RPi.GPIO as GPIO
 import os
 
 pinnumber = 23
 GPIO.setmode(GPIO.BCM)
 
 #GPIO23pin is setup input mode & pull up
 GPIO.setup(pinnumber, GPIO.IN, pull_up_down=GPIO.PUD_UP)
 
 while True:
     GPIO.wait_for_edge(pinnumber, GPIO.FALLING)
     sw_counter = 0
     while True:
         sw_status = GPIO.input(pinnumber)
         if sw_status == 0:
             sw_counter = sw_counter + 1
             if sw_counter >= 50:
                 os.system("sudo shutdown -h now")
                 break
         else:
             os.system("sudo reboot")
             break
         time.sleep(0.01)

**RetroPieの設定 [#m45312bc]
|#ref(hydlidespecial.jpg,,,50%)|
動作確認~
shutdownd.pyを実行してボタンを押して再起動、長押しでシャットダウンできればOK~
 $ python /home/pi/shutdownd.py

 HATにはボタンが3つ+方向キー押し込みの4つしかないためファミコンでさえボタンが足りません。
 ゲームは動作するけど遊ぶことは難しいです。
 私はSELECTキーを設定しなかったのでハイドライドスペシャルのウインドウが開けません…
 しかも音が出ません。残念。
 あとHATの下に見えるのはハイドライドスペシャルのファミコンカセットです。念のため。
nanoで/etc/systemd/system/ディレクトリにshutdownbuttond.serviceを作成する。~
 $ sudo nano /etc/systemd/system/shutdownbuttond.service
以下をnanoで入力する。~
 [Unit]
 Description=Shutdown Daemon
 
 [Service]
 ExecStart =/usr/bin/python /home/pi/shutdownd.py
 Restart=always
 Type=simple
 
 [Install]
 WantedBy=multi-user.target

***コントローラーの設定 [#r927612b]
RetroPieを終了してコマンドプロンプトで以下の操作を実行する。~
 $ cd ~
サービスを有効化する。~
 $ sudo systemctl enable shutdownbuttond.service

 $ wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/retrogame.sh
デーモン再起動する。~
 $ sudo systemctl daemon-reload

 $ sudo bash retrogame.sh
 Raspberry Pi Pi3は1、Raspberry Pi Zeroは3を選ぶ
 REBOOT NOW? [y/N]と表示されたら「y」を選んでEnterを押して再起動する。
サービスを確認する。~
 $ systemctl status shutdownbuttond.service
 runningになっていれば正常に動作している。

 $ sudo nano /boot/retrogame.cfg
 キーの設定を以下のように書き換える。
 ------------------------------
 LEFT       5  # Joypad left
 RIGHT     26  # Joypad right
 DOWN      19  # Joypad down
 UP         6  # Joypad up
 Z         16  # KEY3 button
 X         20  # KEY2 button
 SPACE     13  # Joystick Press button
 ENTER     21  # KEY1 button
 ------------------------------
 Ctrlキーを押しながらoを押してEnterで保存する。
 Ctrlキーを押しながらxを押して終了する。
**以下未確定 [#y01303ef]
-エミュレータ本体のパス
 /opt/retropie/libretrocores
-エミュレータの登録
 /opt/retropie/configs/arcade/emulators.cfg
-MAMEの縦画面設定
 RetroPie 4.3のlr-mame2010.soをRetroPie 4.5.1にコピーするとディスプレイを縦に回転して縦画面でゲームができるようになる
 いつの間にかできなくなりました…

-アップデート (なぜか実行するとRetroPieが起動しなくなりました)
 これらを実行するとなんだか変になります
 $ sudo apt-get update
 $ sudo apt-get upgrade
 $ sudo apt-get install rpi-update
 $ sudo rpi-update
 $ sudo reboot

[[前に戻る>開発室]]
-言語の設定
--ゲームパッドでRETROPie「CONFIGURATION」→「RASPI-CONFIG」を選択する。
--「4 Localisation Options」を選びEnterで決定する。
--「I1 Change Locale」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「ja_JP.UTF-8 UTF-8」を選択してSpaceを押し*マークを付ける。
--Tabキーを押して「Ok」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「ja_JP.UTF-8 UTF-8」を選択する。
--Tabキーを押して「Ok」を選びEnterで決定する。

-タイムゾーンの設定
--ゲームパッドでRETROPie「CONFIGURATION」→「RASPI-CONFIG」を選択する。
--「4 Localisation Options」を選びEnterで決定する。
--「I2 Change Timezone」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「Asia」を選びEnterで決定する。
--キーボードの上下のカーソルキーで「Tokyo」を選びEnterで決定する。

[[戻る>開発室]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS