色んなコントローラーでラジコン動かしたい_02

#ラズパイでUnityから制御可能なプロポ受信器(的な物）を作る

![SnapCrab_NoName_2020-6-10_16-16-7_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227439/4f23597b-f85f-10e4-21f5-77d51e8589e6.png)

前回から、なるべくシンプルで汎用性のありそうな方法を検討した。
PCからwi-fiで受信しラジコンを制御するプロポ受信機の替わりを作りたい。

##ラズパイにServoHAT付けてwebiopiをセットアップする


参考にしたサイト
WebIOPiを使ってブラウザからRaspberry PiのGPIOを操作してみる
https://dev.classmethod.jp/articles/webiopi-raspberry-pi-gpio-operation/

###webiopiのインストール手順

WebIOPi をダウンロード（最新ver0.7.1）

```
$ wget https://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
```
ファイルを解凍、ディレクトリ移動

```
$ tar xvzf WebIOPi-0.7.1.tar.gz
$ cd WebIOPi-0.7.1
```
ブラウザ表示の修正パッチを適用

```
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
$ patch -p1 -i webiopi-pi2bplus.patch
```
セットアップスクリプトを実行
「Do you want to access WebIOPi over Internet ? [y/n]」で止まったら、「n」を入力し、エンターキーを押す。
（「y」押すと余計なものダウンロードされる）

```
$ sudo ./setup.sh
```
WebIOPiサービスをsystemctlで操作できるようにするため設定ファイルをダウンロード。

```
$ cd /etc/systemd/system/
$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service
```

###webiopiサービスの開始方法
```
$ sudo systemctl start webiopi
```

###自動起動/etc/rc.local

/etc/rc.localを任意のエディタで開く、

```
$ sudo vim /etc/rc.local
```

末尾「exit 0」の前の行に、プログラムを実行するコマンドをフルパスで記述、上書き保存。

```
略
fi
sudo systemctl start webiopi
exit 0
```
ここまでがwebiopiのセットアップ
とりあえず再起動

```
$ sudo reboot
```

#ブラウザで動作確認
再起動後ブラウザからhttp:<ラズパイのIP>:8000にアクセス。
認証ダイアログが表示されるので、
ユーザー名：webiopi
パスワード：raspberry
でログイン

#ラズパイにServoHAT取り付け
自分はこれをAmazonで買った。
PCA9685が乗った基板ならどれでもいい。

![71i5KpKVGqL._AC_SL1200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227439/1bf39957-df94-ff5b-79ea-4fdb4c086a72.jpeg)

接続されてるI2cアドレス表示しラズパイに認識されているか確認

```
sudo i2cdetect -y 1
```
アドレス40と70が認識されている。（使用するのは40）

![SnapCrab_NoName_2020-6-10_14-38-52_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227439/1bec495f-07df-8950-8180-ded77f194974.png)


#webiopiのpwmを有効化

参考にしたサイト
Raspberry PiにつないだPCA9685＋SG90サーボをブラウザで制御してみた
https://arkouji.cocolog-nifty.com/blog/2014/06/raspberry-pipca.html

PCA9685がつながった状態で、/etc/webiopi/configを開く。

```
$ sudo vim /etc/webiopi/config
```

![SnapCrab_NoName_2020-6-10_14-45-28_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227439/d0511b5d-5fb8-a616-25ec-55bd31b81aa8.png)
下の方に「#pwm0 = PCA9685」とあるので＃を消して有効化。
上書き保存する。

#webiopiのログイン認証を無効化
同様にconfigファイルの上の方「passwd-file = /etc/webiopi/passwd]
行の先頭に「#」を挿入してコメントアウト。
![SnapCrab_NoName_2020-6-10_14-50-15_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227439/7ec7114f-4274-e25f-84dd-37f08a850c0f.png)

#ブラウザで動作確認
再起動後ブラウザから
http:<ラズパイのIP>:8000/app/devices-monitorにアクセス。
![SnapCrab_NoName_2020-6-10_14-58-47_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227439/41ca068e-2d12-0546-76ef-a34bcd06f4a2.png)
このような画面が表示されれば成功

#追記
###ライブカメラ配信しながら遠隔でラジコン動かしたい場合
→mjpeg-streamerをインストール
参考
5GHz WiFi対応させたPi Zero rev1.3とPi Cameraでミニマムなネットワークカメラを作ってみた（mjpg-streamer版
https://kitto-yakudatsu.com/archives/2338

###シャットダウンに時間が掛かる場合
webiopiインストール後にラズパイシャットダウンすると下記の表示で90秒くらい待たされる。

```
A stop job is running for ...
```
/etc/systemd/system.confの設定を書き換えることで短縮可

```
$ sudo vim /etc/systemd/system.conf
```
コメントアウトされている#DefaultTimeoutStopSec=90s を書き換えて、任意の秒数に指定できる。
![SnapCrab_NoName_2020-6-10_14-57-41_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227439/0cc4f646-41e9-3487-3c16-414be066efd3.png)