ぽけこん on ラズベリーパイ導入手順
はじめにPoke-Controller on Raspberry Piを導入にあたって
Poke-Controllerをラズベリーパイで動作させることのメリットとデメリットについて
メリット
動作電力の削減
機器接続環境の簡略化
SDカードの交換による使用用途によってのOSの切り替えが簡単
デメリット
実際に動かす自動化pythonプログラムはWindows環境で作成されている場合が多いため、
動作にあたって入手した自動化ファイルの修正が必要になる可能性がある。
導入にあたってlinuxの操作、OSの知識などが必要になる。
本手順ではlinuxについての知識があるものとして説明は省くものとする。
本環境で使用する機器について
RasberryPiOS導入するためのWindowsコンピュータ(teratermのscpにて各種ファイルの転送などを実施)
HDMI付きのテレビ
Nintendo Switch
Raspberry Pi 4B 4GBメモリー版 ¥15,000位 ※現在半導体不足で価格高騰中の為、RaspberryPi400を推奨
ラズベリーパイにつなぐUSBマウス、USBキーボード ¥2,000位 ※RaspberryPi400ならばキーボード不要
MicroSDHCカード 16GB ¥500位
ジャンパーワイヤ ♀♂2本 ¥400位(束で購入可♂♂があるとマイコンのショートに便利、♀♀もあると便利)
ブレッドボード ¥400位
中華キャプチャーボード ¥1,000位
マイコン(pro micro Atmega32U4)¥800位
raspiOSのダウンロード
OPENCVが64bit対応なため、64bit版のraspiOSをダウンロードします。
raspiOSのインストールツールのダウンロード
Raspberry Pi Imagerを使用し、WindowsOSでraspiOSをインストールします。
https://www.raspberrypi.com/software/
WindowsのスタートメニューからRaspberry Pi Imagerを起動します。
CHOOSE OSボタンを押し、Use customからダウンロードした64bit版のraspiOSを選択します。
(ダウンロードしたzipファイルのまま選択可能)
CHOOSE STORAGE ボタンを押し、インストール対象のmicroSDHCカードを選択します。
※sdカードは初期化されますので、書き込む場合は必ずsdカードが正しいことを確認してください。
※間違えて大事なファイル等が削除された場合、一切責任を取りませんのでご了承ください。
WRITEボタンを押し、microSDHCカードにRaspiOSをインストールします。
容量にもよりますが、インストールには30分程度かかります。
※完了後、フォーマットしますかとのポップアップが表示されますが、いいえを選択してください。
WindowsからSDカードを取り外し、raspberry piにSDカードを差し込みます。
RasberryPiのHDMIをテレビに接続
RasberryPiのUSBにキーボード、マウス、キャプチャーボードの接続
RasberryPiOSの起動とネットワークの設定の実施
※自分の家の環境に設定してください。
raspiコンフィグにて初期設定
sudo raspi-config
1.3 パスワードの設定 piユーザーのパスワードの設定
1.4 ホスト名の変更 ご希望のホスト名
3.2 sshの有効化 yes
3.6 over serial no
serial port hardware enable yes
Finishにて再起動の実施
config.txtの編集
sudo nano /boot/config.txt
末尾に下記内容を追加してシリアルポートの有効化とBuleToothの停止
[all]
enable_uart=1
dtoverlay=pi3-disable-bt
パッケージリストの更新
sudo apt-get update
ポケコン用Python環境の導入
RasberryPiOSにはインストール後にPythonが導入されていますのでpipコマンドにてパッケージを追加していきます。
コマンド
pip install numpy
pip install opencv-python
pip install pynputl
pip install pipenv
exit
コンソールの再起動
pipenv install pyserial
pip install Pillow
sudo apt install python3-pil.imagetk
下記パッケージは用途によって導入します。
ポケコンModified verの場合
pip install pygubu
pip install pandas
pip install scipy
OCRを使用する場合
tesseract-OCR
sudo apt install tesseract-ocr
pip install tesseract
pip install pyocr
pip install pyocr.builder
LINE Notifyを使用する場合
pip install requests
Poke-Controllerのダウンロード ホームディレクトリに解凍
unzip Poke-Controller.zip
本家
https://github.com/KawaSwitch/Poke-Controller
Modified版
https://github.com/Moi-poke/Poke-Controller-Modified
lufaのダウンロード
https://github.com/abcminiuser/lufa
解凍するとlufa-masterフォルダができるので
lufaに名前変更してPoke-Controllerフォルダ配下のlufaフォルダに上書き保存。
ArduinoIDEのダウンロード ホームディレクトリに解凍
https://www.arduino.cc/en/software
tar xvf arduino-1.8.19-linuxaarch64.tar.xz
マイコンハードウェア情報の編集
nano ~/arduino-1.8.19/hardware/arduino/avr/boards.txt
285 leonardo.vid.1=0x2341
286 leonardo.pid.1=0x8036
↓
285行目:leonardo.vid.1=0x0f0d
286行目:leonardo.pid.1=0x0092
311 leonardo.build.vid=0x2341
312 leonardo.build.pid=0x8036
↓
311行目:leonardo.build.vid=0x0f0d
312行目:leonardo.build.pid=0x0092
LeonardoのMCUに変更
nano ~/Poke-Controller/makefile
14 MCU = atmega16u2
↓
14 MCU = atmega32u4
Leonardo用hexファイルの作成とマイコンへの書き込み
export PATH=$PATH:/home/pi/arduino-1.8.19/hardware/tools/avr/bin
cd ~/Poke-Controller
make clean
make
makeしたhexファイルをArduino Leonardoに書き込み
ArduinoLeonardoをリセット(RSTとGNDをショートさせる)
以下ここから、以上までをコピー&ペーストして実行------
ARDUINO_UPLOAD_PORT="$(find /dev/ttyACM* | head -n 1)"
stty -f "${ARDUINO_UPLOAD_PORT}" 1200
while :; do
sleep 0.5
[ -c "${ARDUINO_UPLOAD_PORT}" ] && break
done
avrdude -C /home/pi/arduino-1.8.19/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -P"${ARDUINO_UPLOAD_PORT}" -b57600 -D -V -Uflash:w:/home/pi/Poke-Controller/Joystick.hex:i
以上---------------------------------------
ラズベリーパイGPIOとマイコンの接続
ジャンパーワイヤーにて接続します。
GND⇔GND
TXD⇒RXD
※今環境はGPIOと直接マイコンを接続するためシリアルアダプタは使用しません
※GPIOの接続は間違えた場合最悪基盤が壊れる可能性がありますので正しい場所を結線してください。
※必ず電源を停止した状態で、自己責任の下で行ってください。
ラズベリーパイとマイコンとスイッチの接続図
ラズベリーパイに中華キャプチャーボードを接続したときは特にドライバは必要ありませんでした。(USB2.0のポートに接続しないと認識しませんでした。)
Poke-Controllerのシリアル接続情報の書き換え
USB→AMAに変更
nano ~/Poke-Controller/SerialController/Commands/Sender.py
print('connecting to ' + "/dev/ttyUSB" + str(portNum))
↓
print('connecting to ' + os.name + "/dev/ttyAMA" + str(portNum))
self.ser = serial.Serial("/dev/ttyUSB" + str(portNum), 9600)
↓
self.ser = serial.Serial("/dev/ttyAMA" + str(portNum), 9600)
Poke-Controllerの起動
cd ~/Poke-Controller/SerialController/
python Window.py
OPENCVのバージョンの問題か、画像認識時に読み込み失敗エラーが発生するため下記のとおり変更する。
PythonCommandBase.pyの編集
nano ~/Poke-Controller/SerialController/Commands/PythonCommandBase.py
# Read a current image
src = self.camera.readFrame()
src = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY) if use_gray else src
src = src[area[2]:area[3], area[0]:area[1]] if not area else src # trim
# Read a template image
template = cv2.imread(TEMPLATE_PATH+template_path, cv2.IMREAD_GRAYSCALE if use_gray else cv2.IMREAD_COLOR)
template = template[tmp_area[2]:tmp_area[3], tmp_area[0]:tmp_area[1]] # trim
w, h = template.shape[1], template.shape[0]
↓
# Read a current image
while True:
src = self.camera.readFrame()
if src is not None:
break
else:
continue
src = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY) if use_gray else src
src = src[area[2]:area[3], area[0]:area[1]] if area else src # trim
# Read a template image
template = cv2.imread(TEMPLATE_PATH + template_path, cv2.IMREAD_GRAYSCALE if use_gray else cv2.IMREAD_COLOR)
template = template[tmp_area[2]:tmp_area[3], tmp_area[0]:tmp_area[1]] # trim
w, h = template.shape[1], template.shape[0]
変更後、Poke-Controllerの再起動を実行してください。
以上でラズベリーパイにPoke-Controllerを導入する手順は終了です。
Poke-Controller上で動作させるpythonプログラムについては各自修正してください。
必要に応じてラズベリーパイ版Visual Studio Codeと画像編集のためにGIMPをインストールしておくと便利です。
sudo apt install code
sudo apt install gimp
pokecon poke-controller ぽけこん ポケコン ポケコントローラー NX NX2 NX Macro Controller 2 ラズパイ ラズベリーパイ raspberry pi
この記事が気に入ったらサポートをしてみませんか?