Edited at

TWE-LiteをArduinoIDEで使う

More than 1 year has passed since last update.


  • 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追記:



soburi/JN516x-arduino-package

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-LiteR-VCC_ブレッドボード.png

当然、外部から電源供給する場合は必要ありません。

TWE-Lite Rに載っているFT232の供給できる電流は50mA程度の微々たるものなので、あまり無理はできません。


試してみる

Arduinoの移植なので、当然Arduinoのスケッチがそのまま使えます。

ただ、ピンの名称や配置が異なる場合があるので、その場合は修正が必要です。


Blink

いわゆるLチカ。 Arduinoでは[スケッチの例]の[01.Basics]に入っています。

ソースコードはそのままで、配線は下図のように。

LED_BUILTINは2番ピンに割り当たっています。

twe-blink2_bb.png


Button

入力の一番シンプルなサンプル。[02.Digital]に入っています。

ボタン押している時だけLEDが点灯します。

twe-button2_bb.png


attachInterrupt

Buttonのサンプルと同じ回路図を使って、attachInterrupt()

割り込み試します。

TWE-Liteでサポートする割り込みの種別は、割り込みはRISING(L→H)かFALLING(H→L)の2種類

のみです。LOW, HIGH, CHANGINGRISINGとして扱っています。

以下のサンプルでボタンを押すたびに点灯・消灯が切り替わります。

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]に入っています。

半固定抵抗を動かすと入力の電圧が変わって、点滅の周期が変わります。

twe-analoginput2_bb.png


Fade

アナログ出力(PWM)のサンプル。[01.Basics]にあります。

Lチカではなくて、ゆっくり明滅するサンプルです。

これについては、PWMに割り当てられるピンが異なるので、

int ledPin = 9;    // LED connected to digital pin 9

int ledPin = 12;

と修正して、配線は以下の図のように。

twe-fade2_bb.png


よくありそうな質問

Q1. ちゃんと動きますか?

A1. 以前よりかなりマシになりましたが、まだまだ人柱募集中です。まだ品質的にアレなんで生暖かく見守っていただけると有難いです。

Q2. ちゃんと動作確認してる?

A2. Windows10ではとりあえず動いてます…

Q2. 無線機能は使えますか?

A2. ContikiOS由来の6LoWPAN(IPv6)が使えます。続きの記事を参照ください。

Q3. 未実装機能はありますか?

A3. ArduinoのReferenceページ のAPIは一通り実装されています。


PinOut

TWE-Lite DIP_pinout.svg


リソース

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のデータ