こんにちは、 @n0bisukeです。 IoTLTというイベントをやってます。
今日はアドベントカレンダーということで、Rustな人にIoT周り布教の意味合いもこめて、Rustを使いつつTesselの紹介っぽい記事を書きます。
Tesselとは
Node.jsで制御可能なIoTプロトタイピングボードです。現行のTessel2になってからRustに対応しました。
-
- 公式サイト: https://tessel.io/
参考記事: Web制作者にもチャレンジできるIoT入門~Tesselの基礎~
Webの人が電子工作するならめちゃアツいです。
今回はRustでTessel2のLチカを試してみます。
環境
-
- macOS Sierra
-
- Node.js 7.2.0
- Rust 1.12.0
もろもろ準備
Node.jsのインストール
いまアツいJavaScript!ゼロから始めるNode.js入門〜5分で環境構築編〜などを元にインストールします。
npmコマンドが使えるようになればOKです。
$ npm -v
3.10.9
Rustのインストール
Rustをインストールします。
curl -sSf https://static.rust-lang.org/rustup.sh | sh
これでcargoコマンドやrustcコマンドが使えるようになります。
$ rustc -V
rustc 1.12.0 (3191fbae9 2016-09-23)
※ちなみに今(2016/12/17現在)だとRustは1.13が最新です
t2コマンドとSDKのインストール
t2はnpm経由でインストール出来ます。
$ npm install -g t2-cli
t2コマンドが使えるようになります。
次にcargo経由でtesselのRustSDKをインストールします。
$ cargo tessel sdk install
これで準備OKです。
Lチカする
プロジェクトの準備
t2コマンドでひな形を作成します。
$ t2 init --lang=rust
INFO Initialized Cargo project...
INFO Wrote "Hello World" to /Users/n0bisuke/dotstudio/1_blogsamplecode/dotstudio/tessel/rust/ledblink/src/main.rs
Cargo.tomlとsrcディレクトリが生成されます。
$ ls
Cargo.toml src
lsすると分かりますが、Cargo.tomlとsrcディレクトリが作成されます。
srcディレクトリ内にはmain.rsが生成されています。
この状態でt2 run blinkyを実行するとLチカができます。
$ t2 run blinky
INFO Looking for your Tessel...
INFO Connected to Tessel-xxxxxxxxxxxxx.
Updating registry `https://github.com/rust-lang/crates.io-index`
Compiling libc v0.2.18
Compiling cfg-if v0.1.0
Compiling unix_socket v0.5.0
Compiling tessel v0.2.0
Compiling blinky v0.0.1 (file:///Users/n0bisuke/dotstudio/1_blogsamplecode/dotstudio/tessel/rust/rust-sample)
Finished release [optimized] target(s) in 3.64 secs
INFO Writing project to RAM on Tessel-02A3809D2F8B (338.432 kB)...
INFO Deployed.
INFO Running blinky...
I'm blinking! (Press CTRL + C to stop)
これでLチカできました!
※画像はGoogle画像検索のキャプチャです
実際にはTessel2はまだ技適問題などもあるので、「Tessel2でLチカを試す」にもあるように電波暗室などで試しましょう。
おわりに
けっこう簡単に出来ました
Rust版のTesselコードはあまりまだ活発ではないみたいです。公式サイト側だとチュートリアルなどが整ってないのでtessel-rustのGitHubページを見にいくのがいいと思います。
Rustも書いてて楽しいのでTessel触りながらRust勉強とか面白いかもしれません。
2017/1/15にRust入門者向けハンズオンもあるので是非きてください 🙂
それでは。