見出し画像

ぽけこん 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


 

 




この記事が気に入ったらサポートをしてみませんか?