JavaScript
Node.js
IoT
TinkerBoard

Tinker Board買ったので初期設定方法(Lチカまで)をメモ。

作業環境はMac (OS10.12)です。

OSイメージをダウンロード

まずASUSの公式サイトからTinker-OS-Debian をダウンロードします。

https://www.asus.com/jp/Single-Board-Computer/Tinker-Board/

SDカードにOS書き込み

SDカードはFAT32でフォーマット後、アンマウントしておきます。
diskutil list でSDカードの名前を把握しておきます。 私の環境では /dev/disk2 となっていました。

ダウンロードしたzipファイルを解凍し「tinker-os-v1.8.img」にリネームして「~/」に配置後、
下記コマンドでコピーします。(リネームしないとファイル名が長い...)

sudo dd bs=1m if=~/tinker-os-v1.8.img of=/dev/disk2

結構時間がかかるが頑張って待ちます。(私の環境では30分くらいかかった)

起動

SDカードをTinker Boardに挿入後、キーボード、マウス、モニターを接続し電源を入れます。電源はmicro USBケーブルの結構電流たくさん流れそうなやつ+強そうなUSB充電器を使いましょう。

Desktop画面起動完了後、WIFIの設定を行います。(右下の↓↑なアイコンをクリックする)

WIFIの調子が悪い時は、BluetoothをOFFにします。
BluetoothのOFFは Preferences > Services から bluetoothのチェックを外します。
パスワード聞かれるので linaro と入力します。

WIFI接続後、さっそく、

sudo apt-get update
sudo apt-get upgrade

を実施してアップデートしときましょう。

Tinker-Config を入れてローカライズ設定

これをやっとかないと、キーボードで打てないキー(「|」とかの場所が違う)が出てくるので、先にやっときます。

下記に情報があります。

https://www.tinkerboarding.co.uk/forum/thread-400-post-1257.html

wget https://raw.githubusercontent.com/mikerr/tinker-config/master/tinker-config

で入れて。

sudo sh tinker-config

で起動。

  • ロケール
  • タイムゾーン
  • キーボード

を設定しておきましょう。Raspberry Piの「Raspi-Config」とだいたい同じなので適宜ググればたいたい問題なし。

終わったら、

sudo reboot

で再起動しときます。

node.js を入れる

Lチカ何でやってもいいんだけど、node.jsでやりたいですね!
しかし、Tiker Boardのパッケージにはnode.jsがいないみたいなので、下記のようにして入れます。

sudo curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
sudo apt install nodejs

これで、node.js v6.11.2、npm v3.10.10 が入ります。

vsftpd 入れる

PCからファイルも入れたいので、とりあえずFTP入れときます。
設定方法はRaspiと同じ。

http://yamaryu0508.hatenablog.com/entry/2014/12/02/102648

などを参考にして基本は同じです。違いは、

/etc/vsftpd.chroot_list

に設定するユーザーは、piではなくlinaroに。これだけ。

最後に、

sudo service vsftpd restart

でサービス再起動すればPCからファイルをアップロードできるようになります。

ここでPCのFTPクライアントからFTP接続できることを確認するためにIPアドレスを調べる。
Tinker OSでは ifconfig にパスが通ってないので、そのまま入力しても実行できない。
なので、下記のように入力してIPアドレスを調べます。

/sbin/ifconfig

ようするにフルパスで書いただけ。。。

Node.jsからLチカしてみる

test.js

最初にLチカプログラムを作りましょう。

test.js
var gpio = require("tinker-gpio");

var port = 31;
gpio.export(port,'out',()=>{
  var v = 0;
  setInterval(()=>{
    v ^= 1;
    gpio.write(port,v);
  },500);
});

これを、~/Desktop/test/test.js など任意のパスに保存します。
(CUI慣れてない人はDesktop配下に保存しとくといろいろ楽なので!!)

cd ~/Desktop/test
npm install tinker-gpio

実はこれだけだと動きません。
tinker-gpio は、Cライブラリに依存しているようです。
なのでCライブラリを入れます。

GPIO Cライブラリ

なんか、8/21現在公式サイトからのリンクが切れてるので、探すと下記が正しいみたい。

http://dlcdnet.asus.com/pub/ASUS/mb/Linux/Tinker_Board_2GB/GPIO_API_for_C.ZIP

これをダウンロードして、適当なパスに入れてビルド・インストールします。
今回は、~/gpioでビルドする手順を。

cp ~/Downloads/GPIO_API_for_C.ZIP ~/gpio/
cd ~/gpio
unzip GPIO_API_for_C.ZIP
sudo chmod +x build
sudo ./build

これでインストールまで完了しているようです。

Lチカ!

Tinker BoardのGPIOとLEDを下記のように繋ぎます。

  • LEDの+側を 抵抗(470Ω使ったけど色により適宜変更)経由で31ピンへ
  • LEDの-側を GNDに

GPIOのピンの位置は

https://github.com/FrankWu100/tinker-gpio

を参考に。

下記でLチカ完了のはずです。

cd ~/Desktop/test
node test.js

以上!