この記事はWHILL Advent Calendarの3日目の記事です.
3日目は中の人でソフトウェアエンジニアの私、杉浦がお送りします。
WHILL Model CRとは
[WHILL Model CR](https://whill.jp/model-cr)とは、WHILL社が販売しているパーソナルモビリティ[WHILL Model C](https://whill.jp/model-c)にRS232C経由で操作できるコマンドを追加した研究開発モデルです。ハックしよう
WHILLのgithubで公式ライブラリが配布されています。
今のところ、
が公開されています。
今回はArduinoライブラリを使ってModel CRをArduinoから制御してみたいと思います。
用意するもの
Arduino SDKは予めこちらからインストールしておいてください。
- Arduino Uno
- RS232Cシールド http://amzn.asia/d/h3Y525W
- RS232C NULLモデム http://amzn.asia/d/8zhkRWj
- Model CR to RS232Cケーブル
Arduinoは、RS232Cシールドが対応している互換機やMegaでも大丈夫だと思います。
内部的にSoftSerialを使っているので、SoftSerialが実装されていない機種(ESP32 Arduono Core)などはおそらくそのままでは動きません。
RS232Cシールドの代わりにUART-RS232C変換基板も使えますが、TXとRXを間違えないように注意が必要です。
サンプルではRS232Cシールドの設定は、TXを7番ピン、RXを6番ピン になっています。
Model CR to RS232Cケーブル → Model CRから生えているケーブルとRS232を変換するケーブルです。自作が必要です。
Arduinoライブラリをインストール
ここを参考に、WHILLの公式リポジトリwhill-arduino-sdkかライブラリをZipファイルをダウンロードし、インストールします。
正常にインストールされた場合、一旦終了して再起動すると、File
→Examples
の中に"WHILL Model CR"という項目が増えていると思います。
サンプルを動かしてみよう
Arduino IDEの File
→ Examples
→ WHILL Model CR
とたどると、以下の4つのサンプルスケッチを見つけることができます。
blink_power
callback
mirror_joystick
shake
blink_power
は5秒毎にWHILLの電源をON/OFFします
calllback
はWHILLから状態を受け取るたびにジョイスティックの値をPCにprintで表示します
mirror_joystick
は、WHILLから受け取ったジョイスティックの信号を上下左右反転して、WHILLに入力します。
shake
は1秒ごとに左右にゆらゆらと揺れます
それぞれスケッチを開いた状態でArduinoに書き込むとサンプルスケッチが動作します。
whill-arduino-sdkで出来ること
- 電源のON/OFF
- WHILLからの電源供給(WHILLのバッテリー電圧)のON/OFF
- ジョイスティックを仮想的に操作
- 加速度センサ・ジャイロセンサの値の取得
- バッテリー情報の取得
- モーターの角度とスピードの取得
- 現在の速度設定の取得
自由にスケッチを書いてみよう
さあ、ここまで来たらあとは自由にスケッチを変更したり、センサを追加して思い通りにWHILLを動かしてみましょう。
例えば....
- 後進するときだけ音がなる
- 距離センサを追加して人についてくる
などなど、様々なアプリケーションが考えられますね!
WHILL::register_callback()
を使う場合の注意
WHILL::register_callback()
でコールバックを登録した場合、ループの中で定期的にWHILL::refresh()
を呼んであげてください。
この関数でソフトウェアシリアルのQueueからシリアルコマンドをパースして該当するデータがあったら場合はコールバック関数を実行するようになっています。
refresh()
されない場合、永遠にコールバック関数が呼ばれません。
Arduinoをつなげるのに便利なUSBポート
PCからArduinoを切り離してスタンドアローンで動作させたいときは、WHILLのシート後ろにあるUSBポートからArduinoの電源を供給すると別途モバイルバッテリーなどをのせる手間が省けて便利です。
Pull Request募集中
whill-arduino-sdk
はまだまだベータ版です。改善点がございましたらドシドシPull Request送ってください。
採用、してます!
現在WHILLでは電気エンジニア、ファームウェアエンジニアなど様々な職種を募集しています!
興味のある方はぜひWantedlyでエントリー・話を聞きに来てみてください!
電気エンジニア募集!一緒にモビリティの回路設計しませんか!
https://www.wantedly.com/projects/198522
ファームウェアエンジニアを募集!自社開発のモーター制御も担当できます
https://www.wantedly.com/projects/164079
他にも、アプリエンジニアやQAなども募集してます!