LoginSignup
63
63

More than 5 years have passed since last update.

Edisonを開封してからnode.jsでIOポート制御するまで

Posted at

妻と子供が実家に帰っていることをいいことに、半日Edisonをいじってみた。
node.jsでIOポート制御する所まで行けたのでまとめておく。
前提として、
- MacBook Air (11-inch, Mid 2011)
- OSX Yosemite(10.10)
- Edison
- Breakout board
です。
Intel公式ドキュメントを見ると、初めての人はArduino Breakout boardを使うといいぜ!と書いてあるのでArduinoボード買ったほうが難易度下がると思います。
多分node.jsなんか使わなくてもArduino IDEからLチカできます。

開封から組み立て、ログイン

IMG_3765.JPG
Edisonとbreakout boardをコネクタで接続して2箇所ネジ止めする。
USBケーブルを2本つなぐ。
写真の上がUSBシリアル、下が電源。
接続したらいきなりlinuxが立ち上がっているはずなのでシリアルコンソールからログインできる。

$ sudo cu -s 115200 -l /dev/cu.usbserialxxxxxxxxxxxxxx

xxxxxxxの部分は環境によって異なると思うので適宜。
ユーザー名rootでパスワード無しでログインできる。
スクリーンショット 2014-11-09 16.43.17.png

ファームウェアアップデート

ログインして色々いじっていると、何故か文字入力一文字目を取りこぼす。
バグらしく、ファームウェアアップデートで治るらしいのでやってみる。
(正確にはファームウェアではないような気がするが、ここではファームウェアとする。)
ちなみにバグの出るバージョンは以下。

$ cat /etc/version
edison-weekly_build_56_2014-08-20_15-54-05

ここを参考にmacから更新してみる。

電源側のUSBケーブルをmacに接続すると、ストレージデバイスとして認識する。
ターミナルでEdisonディレクトリに移動。

$ cd /Volumes/Edison

Edison以下のファイルを全て削除する。

$ sudo rm -rf *
$ sudo rm –rf \.*

次にFinderのEdisonを右クリック > 情報を見る > フォーマットがFAT16の場合、FAT32にするのでディスクユーティリティを開く。
スクリーンショット 2014-11-09 17.15.16.png

「Linux File-CD Gadget Media」を選択、パーティションタブを選択。
パーティションのレイアウトを1にして名前をEDISONに変更。
写真のような設定で適用する。
スクリーンショット 2014-11-09 17.18.05.png
もし「ディスクのマウントを解除できませんでした。」というエラーが出る場合、ターミナルで/Volume/Edisonから別の場所に移動してから適用ボタンを押すと上手くいく。
これでFAT32でフォーマットされる。

ここから最新のEdison Yocto complete imageをダウンロードする。
zipファイルを解凍して、中身をすべてEDISONにコピーする。
スクリーンショット 2014-11-09 17.26.33.png

コピーが完了したらシリアルコンソールで接続する。
ログイン後、

$ reboot ota

で更新が始まる。
注意:これをするとconfiguration settings含めてすべて削除される。

しばらく待つとコマンドプロンプトが帰ってくる。
これで更新完了。

$ cat /etc/version
edison-rel1-maint-weekly_build_16_2014-10-14_14-56-19

ConfigureでWi-Fi設定

configure_edisonコマンドを使うと、Wi-Fiの設定、ログインパスワードの設定ができる。

$ configure_edison --setup

Configure Edison: Device Name

Give this Edison a unique name.
This will be used for the access point SSID and mDNS address.
Make it at least five characters long (leave empty to skip): #名前をつける

Enter a new password (leave empty to abort)
This will be used to connect to the access point and login to the device.
Password: #パスワードを設定する

Configure Edison: WiFi Connection

Scanning: 1 seconds leftt

0 : Rescan for networks
1 : Manually input a hidden SSID
2 : xxxxx
3 : xxxxx
....

Enter 0 to rescan for networks.
Enter 1 to input a hidden network SSID.
Enter a number between 2 to 16 to choose one of the listed network SSIDs: #Wi-Fi接続設定

Is xxxxxxxxxx correct? [Y or N]: Y
Password must be between 8 and 63 characters.
What is the network password?: ******************
Initiating connection to xxxxxxxxx. Please wait...
Attempting to enable network access, please check 'wpa_cli status' after a minute to confirm.
Done. Please connect your laptop or PC to the same network as this device and go to http://10.0.1.10 or http://xxxxxxxxxxx.local in your browser.

最後に表示されるURLにブラウザからアクセスするとDevice Informationページが表示される。
これでEdisonのWi-Fiが有効になった。
SSHもできるよ。

$ ssh root@10.0.1.10 #先ほど表示されたIPアドレス
root@10.0.1.10's password:
root@kinu-edison01:~#

ただし、キー入力の反応がめちゃめちゃ遅い。
シリアル接続のほうがストレスがない。

パッケージのアップデート

ここを参考にした。
主にlibmraaの更新をしたい。
これが古いと次にやるXDKビルドの時にコケる。
Edisonにログインして、

$ echo "src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/intel-iotdk.conf
$ opkg update
$ opkg upgrade

これでおkだった。

XDK IoT Editionを使ってnode.jsでポート制御

XDKをここからダウンロードする。
解凍してインストール。
XDKを起動するとSign upを求められるのでする。

スクリーンショット 2014-11-09 18.02.51.png

左側のメニューからStart with a Sample or Templateを選択、Onboard LED Blinkを選択。
適当に名前をつけてCreate。

画面左下のIoT DeviceからEdisonに接続する。
多分それらしきものが表示されていないので、Edisonにログインして

$ xdk-whitelist --add 10.0.1.16 #macのIPアドレス
$ systemctl enable xdk-daemon
$ systemctl restart xdk-daemon

する。
XDKに戻ると、自分のEdisonが表示されているはずなのでそれを選択する。
スクリーンショット 2014-11-09 19.09.06.png

サンプルコードを実行してみる。
...
何も起こらない。
それもそのはずで、breakoutboardには制御できるLED等がついていない。
どうしようかなと思ったが、今日ははんだづけするテンションではなかったのでオシロスコープで波形を見ることにした。
mraaで指定するポート番号はgithubのドキュメントに書いてある。
例えばこのサンプルでは

var myOnboardLed = new mraa.Gpio(13);

としているので、13に対応するJ17-14が物理的に制御される。
breakout boardのピンアサインはEdison Breakout Board Hardware Guideに書いてある。
IMG_3766.JPG
IMG_3767.JPG
上の波形は

setTimeout(periodicActivity,10); 

を指定した時の波形です。
横軸1マスが10msなので、大体合ってます。
あとはここに回路を接続すればハードウェアの制御をすることができます。
ポートの電圧が1.8vなので少し扱いづらいですね。
USBシリアルポートを使ってArduinoにつないでしまうとか、Arduino breakout boardを使ったほうがお手軽かもしれません。

63
63
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
63