EV3をラズパイのゲームパッドからインターネット経由で操縦してみた。(その1)

image

今日は何だか長いタイトルになりました。

ずっと前にLEGO MINDSTORM EV3にev3devというOSをインストールした記事を載せましたが、その一つの応用編になるでしょうか。

今回の目標は、EV3のロボットを遠隔でゲームパッドから操縦することです。遠隔からということは地球の裏側からでも操作できることを意味しますので、必然的にインターネットを経由することになります。そのためには、EV3はev3devで動かす必要があります。(Bluetoothなら標準搭載のファームウェアでもいけるかもしれませんが。)

ゲームパッドといえばRaspberry Pi(以降ラズパイ)のpygameを利用しない手はありません。ラズパイのUSBポートにゲームパッドをつなげ、Pythonのコードからpygameを呼び出して利用するわけです。これについてはこの文献がモロに参考になります。

一番の難関は、ラズパイとEV3とのインターネット経由の通信をどうするか?です。これにはこのページが参考になります。MQTTというTCP/IPのプロトコルを利用するものです。MQTTについてはこのページが参考になります。IoTの分野で主に活用されるプロトコルのようです。

MQTTをラズパイとEV3で利用するためには、それぞれにmosquittoというMQTTのブローカー・パッケージと、paho-mqttというPythonライブラリを使用しますのでこれらをインストールします。(なお、前回記事にあるとおり、EV3にはsshでログインできます。)

mosquittoはバックグラウンドで動作するサービスとしてインストールされます。

paho-mqttはpipでインストールできるのですが、ev3devにはpipがインストールされていません。pipをインストールするにはcurlを使いたいのですがこれも無いので、curlからインストールします。(ラズパイにはcurlがあるので飛ばしてください。)

次にcurlでpipをインストールします。(ここもラズパイ側は飛ばす。)

pipのインストールが終わったら、pipでpaho-mqttをインストールします。

以上で必要なソフトウェアのインストールは完了です。

まずはMQTTによる通信が可能かどうか、参考ページにあるサンプルコードをそのまま利用して確認してみます。

まず、EV3側はSubscriberになるので以下のコードを作成・保存して起動(python コード名)しておきます。

次に、ラズパイ側はPublisherになるので以下のコードを作成・保存して起動します。

EV3側で”Yes!”と表示されれば成功です。仕組みとしては、topic/testという名前のメッセージを受信して、その中身(msg.payload)が”Hello world!”と一致していれば”Yes!”と出力するというものです。Publisher側では送信先を指定しないので、複数のEV3があれば一つのラズパイから同時に同じ動きをさせることも可能です。

少し先が長くなりそうなので、今日のところはこの辺で。☕️

関連記事:「EV3をラズパイのゲームパッドからインターネット経由で操縦してみた。(その2)

スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

</