こんにちは、 @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入門者向けハンズオンもあるので是非きてください :)
それでは。