0

EdisonにArduinoをUSB接続する

EdisonのGPIOを使ってセンサーなどを接続するのもいいけど、USB接続でArduinoを追加するのもいいと思う。間に給電機能付きUSBハブを挟めば電気的に分離できるので難しい回路を作ってEdisonにいきなり接続してショートして全損という事態も避けられる。
もちろん超コンパクトに作るならEdisonのGPIOからI2Cとかで直接やった方がいい。


USBホスト

Edison Breakout Board KitのJ16 USBコネクタは、USBホストケーブルを接続してその先にUSBデバイスを接続できる。

Arduinoの他にもUSBハブ経由でkorgのUSB MIDIコントローラやMIDIキーボード、USBスピーカーも接続できた(lsusbにデバイス名は表示された)けど、alsaがデフォルトでは入っていないのでコントロールできなかった。

Edison+ArduinoMicro

J21から給電する

普通は給電用に使うJ16をUSBホストケーブル用に使うには、別の口から給電する必要がある。
J21に7〜15Vを入れればいい。J21の外側がGND、内側がVCCになっている。

Breakout Board Hardware Guideより

7〜15Vを用意するのが面倒くさいので、試しに5Vを入れてみたら問題なく動いた。
余っているUSBケーブルをむいて、赤白黒緑の4本の線を取り出すと赤が5V、黒が0Vになってるのでそれを使う。こういうケーブルを作っておくと持ち運びも便利だし、しょっちゅう役立つ。

念の為にテスターで調べるか、持っていなければいらないLEDに一瞬チョンとつけて光るか確かめた方がいい。

あと、裏面のJ22に面実装のDCジャックを追加して、ACアダプタから動かす事もできるらしい。


Arduino

手元にあったArduino Micro(Leonardoと同じATMega32U4内蔵のUSB機能を使用)とArduino UNO(FTDIのチップのUSB機能を使用)の両方とも、ドライバなしでEdisonの「/dev/ttyACM0」として認識された。


EdisonからArduinoを動かす

Arduinoにプログラム書いてEdisonと通信させるのは面倒なのでFirmataを使う。

去年作ったarduino-firmata npmとcoffeeで書く

ArduinoFirmata = require 'arduino-firmata'
arduino = new ArduinoFirmata().connect process.env.ARDUINO

arduino.on 'connect', ->
console.log "connect!"

led_stat = false
setInterval ->
arduino.digitalWrite 13, led_stat
led_stat = !led_stat
, 1000 # 1秒ごとに点滅

setInterval ->
console.log arduino.analogRead 0
, 500 # 0.5秒ごとにADC0読み取り

% ARDUINO=/dev/ttyACM0 coffee led_blink.coffee

0

Edisonをsshfsでマウントする

組み込みLinux上でエディタを起動するとCPUもメモリもつらい事になる。
EdisonのディスクをMacでマウントして、Macで起動したemacsでプログラムを書く。実行はEdisonにログインしておこなう。

sshfsのインストール

% brew install osxfuse sshfs

osxfuseのインストールログに表示される通り設定する
% sudo /bin/cp -RfX /usr/local/opt/osxfuse/Library/Filesystems/osxfusefs.fs /Library/Filesystems/
% sudo chmod +s /Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs


マウント

Edisonへのsshログイン設定の設定をしたうえで

% mkdir /Volumes/edison
% sshfs edison: /Volumes/edison
あるいは
% sshfs edison.local: /Volumes/edison

これでホームディレクトリがマウントできる

マウントした状態でMacから作成・操作したファイルは、Edison上ではrootが作ったことになる。
gitの操作ぐらいならMacからやっても大丈夫だと思う。
npmのインストールはC拡張モジュールとかはMac用のがビルドされてしまうのでやめたほうがいい。そういうのはsshでEdisonにログインしてからやる。


アンマウント

% umount /Volumes/edison

0

Edisonへのsshログイン設定

configure_edisonコマンドでWiFiやホスト名の設定ができる。
同じLANの中からなら

% ssh root@edison.local
でログインできる。


ユーザー名を設定

ホストごとにユーザー名設定する

~/.ssh/config に
Host edishon.local
User root
と書くと、

% ssh edison.local
でよくなる


家の外からログイン

家の外からログインできる別のマシンがすでにあるとする。
うちではMacminiがサーバーとして外から見えるようになっていて、EdisonはMacminiと同じLAN内だけど外からは見えない。

~/.ssh/config に
Host edison
HostName edison.local
User root
ProxyCommand nohup ssh -l `whoami` (自宅サーバーのアドレス) nc %h %p
と書いておくと

% ssh edison
でMacminiを踏み台にしてEdisonにログインできる。


ssh鍵の設定

鍵を作ってedisonに公開鍵を渡しておくと毎回パスワード入力しないですむ
% ssh-keygen
% ssh-copy-id root@edison.local

0

Edisonのファームウェア(Yocto Linux)をアップデート

Edison Getting Started Guide – learn.sparkfun.comを参考にした。

最新にしたらconfigure_edisonコマンドで設定したWiFi AP情報が再起動しても消えなくなった。
システムだけアップデートされて、ホームディレクトリの中は消えない。でもgitなどの別途opkgでインストールしてたものは全部消えてしまった。


最新ファームウェアをダウンロードする

Yocto 2.1 complete imageをzipでダウンロードした
IoT – Intel® Edison Board Download | Intel® Developer Zone


Macと接続

J16とMacをマイクロUSBケーブルで接続、外付けストレージとしてマウントされる

Breakout Board Hardware Guideより


アップデート

隠しファイルも含めて全て削除する
% cd /Volumes/Edison
% rm -rf *
% rm -rf \.

zipを解凍して、すべてそのまま /Volumes/Edison/ にコピー
.ext4とか.imgとかも全てコピーする

/Volumes/Edisonをアンマウントする


再起動する

J3にマイクロUSBケーブルを接続し、MacからEdisonのコンソールにログイン
% screen /dev/tty.usbserial-A502F1ZL 115200 -L

ストレージの中身を使ってシステムにアップデートかける
% reboot ota
しばし待つ

ログイン

パスワードがリセットされてるので、user:root pass:なし でログインできる。

WiFiやパスワードを設定する
% configure_edison --setup


確認

アップデートされてる
% uname -a
Linux edison 3.10.17-poky-edison+ #1 SMP PREEMPT Wed Apr 29 03:54:01 CEST 2015 i686 GNU/Linux

node.jsは0.10.28だったのが0.10.35に上がってた


ストレージの中のアップデート用イメージを削除する

残ってるとreboot otaしたらまたシステムを上書きしそうなので、Macでマウントして全て削除した。
削除してからreboot otaしてみたけど、再起動されるだけでWiFi設定とか消えなかった。