memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

Arduino YÚN でサンプル(Temperature Web Panel)を動かすまでの作業ログ

数年前に購入したArduino YÚN。イーサネットがシールドなしで標準で使えるので研究で使えるな。。。と思い、その出番がなく放置していました。

学生プロジェクトのサポートで出番があったので、予習を兼ねて使ってみました。意外と苦戦したので。。。作業ログをあげます。古い機体なのでもう枯れているとは思いますが。。。

ちなみに購入ページは以下です。いつもお世話になっているスイッチサイエンスさんです。

www.switch-science.com

まず、基本設定をします。以下が日本語でわかりやすいと思います。

Arduino Yúnを使ってみよう (1) Yúnを設定する | スイッチサイエンス マガジン

Arduino Yúnを使ってみよう (2) YúnをPCから操作する | スイッチサイエンス マガジン

で、問題のTemperature Web Panelというサンプルです。これは「スケッチ例」ー「Bridge」ー「TemperatureWebPanel」になります。今回はYÚNをWebサーバーにしたかったので、このサンプルがちょうどよいと思い、まずは動かしてみたかったというのが動機です。でも。。。よくわからない。あれこれ試行錯誤が必要でした。長くなるのでわかったことだけ書きます。

ステップ1

Arduino IDEで「スケッチ例」ー「Bridge」ー「TemperatureWebPanel」と操作して読み込みます。もし、自分のスケッチフォルダーにコピーして利用しようとした場合、このスケッチにはwwwフォルダがあり、名前をつけて保存してもこのwwwフォルダはコピーされません。手動でコピーしましょう。私はここではまりました。

ステップ2

マイクロSDカードを用意します。これは必須です。私は手元に4GBのFAT32でフォーマットしたやつがありましたのでそれを使いました。YÚNに差し込みます。たぶん、ここで自動マウントされると思いますが、念のためYÚNを再起動してもいいかもしれません。Arduinossh接続します。コマンドは「ssh root@arduino.local」になります。パスワードは上記の基本設定で設定したパスワードか、初期パスワードであれば「arduino」になります。接続に成功すると以下の画面になります。

f:id:ke_takahashi:20170605200353p:plain

ここで以下のコマンドを入力します。やりたいことはSDカードのルートに「arduino」というディレクトリを、さらにその下に「www」というディレクトリを作成することです。

cd /mnt/sd
mkdir arduino
mkdir arduino/www

ステップ3

あとは、Arduino IDEからスケッチをYÚNに流し混むだけです。ただし、要注意なのが、転送前にArduino IDEのシリアルポートをUSBのシリアルポートからネットワークポートに切り替えておく必要があるということです。ここでもはまりました。これをしないとさきほど作成した/mnt/sd/arduino/www以下にこのスケッチのwwwフォルダ以下のファイルが転送されません。この仕組みがわかるまで時間がかかりました。

もし、上記のwwwフォルダを作成していないとスケッチ転送時に以下のメッセージが表示されます。ネットの情報ではフォルダの権限がどうたらと書かれたものもありましたが、それは関係ありません。このスケッチ転送プログラムが/mnt/sd/arduino/wwwがあることを期待していて、それがなければ書き込めないというメッセージが表示されるのです(IDEのコードを読んだわけではありませんが、事象を観察する限りそう考えます)。

f:id:ke_takahashi:20170605201023p:plain

もし、ネットワークポートを選択せずにシリアルポートで接続すると、エラーメッセージは表示されません。前述の通りで、スケッチフォルダにあるwwwフォルダ以下のファイルが転送されないので、いつまでも更新されない。。。という事象で気づくでしょう。

以上で作業は終了で、あとは以下のアドレスにアクセスすると結果がみれます。Arduinoには何もつけていませんが、適当にアナログを読み取ってJSでその値を表示してくれます。

http://arduino.local/sd/TemperatureWebPanel

f:id:ke_takahashi:20170605201541p:plain

そのほか、YÚNはLinuxコマンドを実行して、その結果を表示する機能もあり、RaspberryPiとはまた一味違った使い方ができそう(本質的には同じと思いますが)と思いました。