Arduino ではオンライン上でのオールインワンの開発プラットフォームとして Arduino Create というものを提供しています。
以前の記事で使った Arduino Web Editor も Arduino Create で提供されているサービスです。そのほかのサービスとして Arduino Cloud という、 Arduino を簡単にインターネットに接続したり、ほかの Arduino と相互に接続したり、デバイスを管理したりできるサービスを提供しています。現在 Arduino Cloud の対応デバイスはまだ少なく、 YUN SHIELD、 MKR1000、 WIFI SHIELD 101 の3つのようで、いずれも技適を通っていないため日本ではまだ Arduino Cloud に対応している Arduino 端末はないようです。前回の記事で使用した WROOM-32 も Arduino 互換なので、なんとか接続できないかと色々試してみたのですが、今のところまだ接続できていません。
とりあえず対応している Arduino 端末が日本でも使えるようになるのを待ちたいと思いますが、 Arduino Cloud では Arduino 以外にも、 Raspberry Pi や BeagleBone などの Linux 端末も接続することができるので、今回は Raspberry Pi を接続してみたいと思います。
Arduino Cloud に Raspberry Pi を登録
まずは Arduino Cloud に Raspberry Pi をデバイスとして登録します。Raspberry Pi の通常の初期セットアップは事前に終わらせておき、ネットワークに接続されている状態にしておきます。 Arduino Cloud にアクセスすると下記のようなメニュー画面になります。 Arduino Cloud 対応の Arduinoボードを登録する場合には右下の Arduino Cloud
を選択すれば良いのですが、 Raspberry Pi などの Linux 端末を登録する場合には、左下の My Devices
を選択します。
デバイスを登録するとできるようになることなどの説明が表示されるので、 ADD NEW DEVICE
をクリックします。
登録するデバイスを選択する画面になりますので、今回は Set up a Raspberry Pi
を選択します。
セットアップの手順内で行われる内容の説明が表示されます。セットアップでは PC 側にまだ Arduino Plugin がインストールされていなければインストールし、 Raspberry Pi 側に Arduino Connector がインストールされます。 NEXT
をクリックして先に進みます。
Raspberry Pi がオンラインになっていることを確認するように促す画面が表示されますので、オンラインになっていれば MY DEVICE IS READY
をクリックします。
セットアップの実行の仕方の選択肢として、 Raspberry Pi の IP アドレスがわかるか、 Raspberry Pi にモニタとキーボードが使えるようになっているかを選択します。今回はモニタとキーボードは繋いでいないですが、 IP アドレスはわかっているので、 I KNOW THE IP ADDRESS OF MY DEVICE
を選択します。
すると IP アドレスの入力欄が表示されるので、 IP アドレスを入力して NEXT
をクリックします。
Raspberry Pi にアクセスするためのアカウント情報が求められるので、フォームに入力して DONE
をクリックします。
セットアップが開始され、処理中は下記のような画面が表示されます。ここで Arduino Connector のインストールなどが行われます。処理が終わると画面は自動的に切り替わりますので、このまま待ちます。
セットアップが無事終了すると下記のように Arduino Cloud に登録するデバイス名の入力フォームが表示されますので、わかりやすい名前をつけて SAVE
をクリックします。
これでひとまず登録は完了ですので、 GO TO MY DEVICES
をクリックしてデバイス一覧画面に移動します。
デバイス一覧には登録した Raspberry Pi が表示され、ネットワークに接続されていれば ONLINE
という表示になっています。
ここでデバイスを選択すると下記のようにデバイスの状態についてのダッシュボードが表示されます。
ちなみに登録した Raspberry Pi でホームディレクトリを見てみると、Arduino Connector 関連の下記のようなファイルが追加されています。
$ ls -ltr ~ 合計 28368 〜〜〜抜粋〜〜〜 -rwxr-xr-x 1 pi pi 11346716 3月 5 15:31 arduino-connector -rw------- 1 root root 227 3月 21 08:32 certificate.key -rw------- 1 root root 1099 3月 21 08:32 certificate.pem -rw-r----- 1 pi root 203 3月 21 08:32 arduino-connector.cfg -rw-r--r-- 1 pi pi 445 3月 21 08:32 arduino-connector.log
ログにはインストール時のものと思われるログが記録されています。 MQTT のサーバとしては AWS IoT を使っているっぽいです。
$ cat arduino-connector.log Version: 1.0.94 Generate private key Generate csr Request certificate Request mqtt url Write conf to arduino-connector.cfg Check successful mqtt connection setupMQTT certificate.pem certificate.key akanuma:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx xxxxxxxxxxxxxx.iot.us-east-1.amazonaws.com WARN: memstore.go:137: [store] memorystore wiped WARN: net.go:328: [net] errorWatch stopped WARN: net.go:318: [net] logic stopped Setup completed
設定ファイルは下記のような内容で作成されていました。
$ cat arduino-connector.cfg id=akanuma:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx url=xxxxxxxxxxxxxx.iot.us-east-1.amazonaws.com http_proxy= https_proxy= all_proxy= authurl=https://hydra.arduino.cc/ apiurl=https://api2.arduino.cc
スケッチの実行
Arduino Cloud にデバイスを登録すると、 Arduino Uno 等の Arduino ボードと同様に、 Web Editor からスケッチをフラッシュして実行させることができます。そのデバイスがオンラインであれば Web Editor の接続先ボードとして選択できるようになりますので選択します。
今回はとりあえず下記のような Lチカのスケッチで試してみます。
const int ledPin = 12; // GPIOピン番号ではなく物理ピン番号 void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); // Wait for 1000 millisecond(s) digitalWrite(ledPin, LOW); delay(1000); // Wait for 1000 millisecond(s) }
上記コードを用意したら Arduinoボードの時と同様に、 Verify
ボタンでコンパイル可能か確認して問題なければ Upload
ボタンで Raspberry Pi にスケッチをアップロードして実行します。成功すると下記のように Web Editor のコンソールに Raspberry Pi で実行されているプロセスの ID が出力されます。
Raspberry Pi 上で確認してみると、確かにその PID でスケッチが実行されています。
$ ps aux | grep 1474 | grep -v grep root 1474 0.1 0.2 4340 2520 pts/2 Ss+ 22:35 0:00 /home/pi/sketches/CoolDensor1
アップロードからLチカ実行の様子は下記動画のようになります。
さらにプロセスの実行/停止もWeb上から操作できます。 Web Editor の RUN/STOP
ボタンをクリックします。
すると登録済みのスケッチのリストと、各スケッチの実行状況がトグルボタンで表示されますので、このトグルを切り替えることでプロセスの実行/停止を行うことができます。
操作してみた様子は下記動画の通りです。トグルの切り替えでLチカの実行/停止を操作することができています。
まとめ
Raspberry Pi 側では初期セットアップさえ終わっていれば、簡単に Arduino Cloud に登録できますし、登録してしまえば Raspberry Pi 側で直接操作することなく、他の Arduino ボードと同様に Web Editor から触ることができて便利ですね。 Arduino 以外にも mbed をはじめ、各社がクラウド環境でのプラットフォームを提供するようになってきていますが、それぞれできることが違っているので、デバイスを選定する場合はボード自体の機能だけでなく、プラットフォームの内容も含めて検討するのが良さそうです。