- 2018/9/4更新
- ArduinoのReferenceページ のAPI全部インプリできたっぽいので、リリース版を作成しました。「多分動くと思うからリリースしようぜ」ってやつです。
- 2017/9/21更新
- Pinout図追加, 未実装機能からpulseIn(), tone(), noTone()を削除
- 2017/9/13更新:
- TWELITE NET SDKを使用するよう記載を変更。(NXPからJN516xのSDK持ってくる必要なくなりました。)
- 最新の環境で動作するようサンプルの図を修正
- 2016/2/29追記:
TWE-Lite DIP を Arduino化するパッケージを作成したのでステマに来ました。
これはなに?
TWE-LiteのプログラムをArduino IDEを使って書けるようにするためのArduinoのパッケージです。
TWE-LiteはC言語向けの開発環境が提供されていますが、
組み込み開発のスキルをベースとしたもので慣れてないとかなり難解な構成になっています。
提供元のモノワイヤレスさんからは、無改造でUARTのワイヤレス化を行うようなデフォルトのファームウェアが提供されていますが、Arduinoと組み合わせて使うと、そもそもTWE-Liteが比較的リッチな機能を搭載したマイコンであるため、冗長な感じが否めません。
この「難しい、金かかる、複雑」を解消すべく、TWE-Lite自体を「無線機能付きArduino」として使えるようにすることを目的としています。
必要なモノ
- TWE-Lite DIP
- TWE-Lite R
- LED, 抵抗, 半固定抵抗, ジャンプワイヤ(サンプルプログラム動作確認用)
- MicroUSBケーブル
インストール
チップ依存のSDKについてはライセンスの関係から自由に配布できないので、TWE-LiteのSDKをインストールします。
TWE-Liteの中身のチップであるNXP JN5164向けのSDKをチップの開発元のNXPのサイトからダウンロードできます。
- JN-SW-4065-JN516x-JenNet-IP-SDK-v979
インストーラのデフォルトでインストールしてください。
- 2017/9/12追記
モノワイヤレスさんのSDKが新しくなったので、こちらを利用するようにしました。 - 2018/6/15追記
Linux/MacOSXで動作するようにしました。
モノワイヤレスさんのSDKの2018/5版で動作するようにしました。
TWELITE NET SDKのページから、
TWELITE NET SDKをCドライブ直下(C:/MWSDK
)に展開してください。
Linux/MacOSXの場合、それぞれのSDKを/opt/MWSDK
に展開します。
~~
ArduinoのパッケージのインストールはArduinoのBoardsManager経由で行います。
[環境設定]
→ [Additional Boards Manager URLs:]
に
http://soburi.github.io/JN516x-arduino-package/package_soburi_intiki_index.json
を設定します。
その後、[ツール]
→ [ボード]
→[BoardsManager...]
を開いてJN516x Boards をインストールします。
インストールが完了したら、[ツール]
→ [ボード]
からMono Wireless TWE-Lite
を選択します
TWE-Lite Rの接続
TWE-Lite DIP単体ではプログラムのアップロードができないので、TWE-Lite Rに接続して
アップロードを行います。TWE-Lite Rを接続し、[ツール]の[ポート]からTWE-Lite Rに対応する
ポートを選択します。
TWE-Lite R はTWE-Lite DIPに向けて電源を供給していますが、
足の方から電源を出していないので、単体で動作させる場合には下図のように基板上のピンから電源を取り出します。
当然、外部から電源供給する場合は必要ありません。
TWE-Lite Rに載っているFT232の供給できる電流は50mA程度の微々たるものなので、あまり無理はできません。
試してみる
Arduinoの移植なので、当然Arduinoのスケッチがそのまま使えます。
ただ、ピンの名称や配置が異なる場合があるので、その場合は修正が必要です。
Blink
いわゆるLチカ。 Arduinoでは[スケッチの例]の[01.Basics]に入っています。
ソースコードはそのままで、配線は下図のように。
LED_BUILTIN
は2番ピンに割り当たっています。
Button
入力の一番シンプルなサンプル。[02.Digital]に入っています。
ボタン押している時だけLEDが点灯します。
attachInterrupt
Buttonのサンプルと同じ回路図を使って、attachInterrupt()
の
割り込み試します。
TWE-Liteでサポートする割り込みの種別は、割り込みはRISING
(L→H)かFALLING
(H→L)の2種類
のみです。LOW
, HIGH
, CHANGING
はRISING
として扱っています。
以下のサンプルでボタンを押すたびに点灯・消灯が切り替わります。
const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT);
attachInterrupt(interruptPin, blink, FALLING);
}
void loop() {
digitalWrite(ledPin, state);
}
void blink() {
state = !state;
}
AnalogInput
アナログ入力(ADC)のサンプル。[03.Analog]に入っています。
半固定抵抗を動かすと入力の電圧が変わって、点滅の周期が変わります。
Fade
アナログ出力(PWM)のサンプル。[01.Basics]にあります。
Lチカではなくて、ゆっくり明滅するサンプルです。
これについては、PWMに割り当てられるピンが異なるので、
int ledPin = 9; // LED connected to digital pin 9
を
int ledPin = 12;
と修正して、配線は以下の図のように。
よくありそうな質問
Q1. ちゃんと動きますか?
A1. 以前よりかなりマシになりましたが、まだまだ人柱募集中です。まだ品質的にアレなんで生暖かく見守っていただけると有難いです。
Q2. ちゃんと動作確認してる?
A2. Windows10ではとりあえず動いてます…
Q2. 無線機能は使えますか?
A2. ContikiOS由来の6LoWPAN(IPv6)が使えます。続きの記事を参照ください。
Q3. 未実装機能はありますか?
A3. ArduinoのReferenceページ のAPIは一通り実装されています。
PinOut
リソース
https://github.com/soburi/JN516x-arduino-package 本記事で紹介したTWE-LiteをArduino化するパッケージのソース
https://mono-wireless.com/download/SDK/MWSDK_201708-RED/MWSDK_2017-08.zip モノワイヤレス提供のTWELITE NET SDK
http://www.nxp.com/documents/other/JN-SW-4065.zip NXPから出ているJN5164(TWE-Liteの中身)のSDK
https://github.com/soburi/jn5164-twelite-guided-tour-resources 本記事の図に使用したfritzingのデータ