ルンバを Raspberry Pi でコントロールする
こんにちは、たるこすです。
ルンバを Raspberry Pi からコントロールできるようにしました。
以下の動画のように、Raspberry Pi に Web サーバを立ててスマホから操作もできます。(この部分は次回ブログで紹介します)
ブラウザからコントロールできるようになった! pic.twitter.com/wIK613ofsl
— たるこす (@tarukosu) 2017年9月10日
ルンバと Raspberry Pi の接続については、こちらの記事を参考にさせていただきました。
また、上記記事でも書かれている通り場合によってはルンバを壊してしまう可能性があるため、試される方は自己責任でお願いします。
用意したもの
ルンバ622
Amazon で調べて安そうなものを購入しました。900番台のルンバは有線での通信ができないそうなのでご注意ください。
【国内正規品】 iRobot ロボット掃除機 ルンバ 622 ホワイト
- 出版社/メーカー: iRobot (アイロボット)
- 発売日: 2014/09/12
- メディア: ホーム&キッチン
- この商品を含むブログ (2件) を見る
Raspberry Pi 3 Model B
棚の中で眠っていた Raspberry Pi 3 を使いました。
Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (4件) を見る
micro SD カード
Raspberry Pi 3 用です。
- 出版社/メーカー: トランセンド・ジャパン
- 発売日: 2015/10/02
- メディア: Personal Computers
- この商品を含むブログ (1件) を見る
FTDI USBシリアル変換アダプター Rev.2
この変換アダプターを使うことで、Raspberry Pi 側は USB で接続することができます。
micro USB ケーブル 2本
USB シリアル変換アダプターと Raspberry Pi との接続に1本、Raspberry Pi への給電に1本必要です。
- 出版社/メーカー: Tronsmart
- メディア: エレクトロニクス
- この商品を含むブログを見る
ジャンパワイヤ 3本
ルンバと変換アダプターとの接続にオス-オスの普通のジャンパワイヤを3本使います。
モバイルバッテリー
Raspberry Pi への給電用として使います。
Anker PowerCore 10000 (10000mAh 最小最軽量 大容量 モバイルバッテリー) iPhone&Android対応 *2017年9月時点
- 出版社/メーカー: Anker
- メディア: エレクトロニクス
- この商品を含むブログ (3件) を見る
Raspberry Pi への OS インストール
詳細は省略しますが、新しく Raspberry Pi を購入した場合は OS のインストールが必要です。今回は、以前インストールしていた Raspbian という標準の OS を利用しています。
ルンバと Raspberry Pi の接続
カバーの取り外し
まず、ルンバ上面のカバーを取り外します。ダストボックスを取り外し、取り外したあたりからカバーを上に持ち上げたらガコッと外れました。
接続
まず、USB シリアル変換アダプターが 5V の設定になっていることを確認してください。
USB シリアル変換アダプターの RX, TX, GND にそれぞれジャンパワイヤをさします。
ルンバ側は、中段左に変換アダプターの TX からのワイヤ、中段右に RX からのワイヤ、下段中央に GND からのワイヤをさします。
最後に、USB シリアル変換アダプターと Raspberry Pi を USB ケーブルで接続します。
Raspberry Pi からの操作
デバイスの設定
Raspberry Pi で以下のコマンドを実行し、デバイス名を確認します。 私の場合は /dev/ttyUSB0 で認識されていました。
$ ls /dev/tty*
しかし、以下のように権限を確認すると、一般ユーザに Read Write 権限がありません。
$ ls -l /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 0 9月 9 20:54 /dev/ttyUSB0
そこで、 /etc/udev/rules.d/50-udev-default.rules
を作成(すでにある場合は編集)し、以下の行を記入します。
KERNEL=="ttyUSB[0-9]*", GROUP="dialout", MODE="0666"
USBケーブルを抜き差しすると、以下のように権限が変更されました。
$ ls -l /dev/ttyUSB0 crw-rw-rw- 1 root dialout 188, 0 9月 9 21:05 /dev/ttyUSB0
この部分は、以下のページを参考にしました。
ルンバの操作
上記PDFの仕様を読んでコマンドを送信することも可能ですが、以下のライブラリでコマンドをラップしてくれているのでこれを使います。
リポジトリのクローンと pyserial のインストールを行います。
$ git clone https://github.com/martinschaef/roomba.git $ pip install pyserial
roomba フォルダ内で以下のスクリプトを作成し、実行します。
うまくいけば、センサの値が表示されルンバが少し回転します。
また、roomba に含まれる starwars.py を実行すると、ダースベイダーのテーマが演奏されます。
このライブラリに入ってたサンプルプログラム(音楽の演奏)を動かしてみたhttps://t.co/j6rkcmiTH8 pic.twitter.com/EKMWasv3mi
— たるこす (@tarukosu) 2017年9月9日
今回のブログは一旦ここまでとして、次回はこのライブラリを使って遠隔から操縦できるようにしていきます。