トワイライト(TWELITE)のソフト開発と無線通信でできること

組み込みエンジニア

こんにちは、ENGかぴです。

ZigBeeモジュールであるトワイライト(TWELITE)はシリアル通信・タイマ(PWM)・I2C・SPI・AD変換など各種機能を備えておりセンサーと組み合わせながら無線通信ができるためIoTモジュールとして様々な用途に応用できます。

トワイライトに興味を持ったのはエナジーハーベスト(環境発電)のみで温度情報などのセンサー情報を無線通信で取得してみたいという好奇心からでした。開発環境であるMWSTAGEが提供されたことでソフト開発がしやすくなったこともありハマってしまいました。

開発環境であるMWSTAGEを使って動作確認したことについてまとめています。

ソフト開発と無線通信でできること

トワイライト(TWELITE)はモノワイヤレス社が開発している中距離通信であるZigBee通信ができる無線モジュールです。

モノワイヤレス株式会社ーMONO-WIRELESS

簡単に動作検証ができるようにアプリが準備されており無線通信を楽しむことができます。ソフト開発はMWSTAGE上のアクトで準備されたAPIを使うことで簡単に実現することができます。

MWSTAGEで開発環境をつくる

MWSTAGEはトワイライトの開発環境でありマイコンの初期設定などを簡素化しユーザーがアプリ開発をしやすいように工夫されているツールです。Arduinoライブラリを使用しているよう感じでソフト開発が行えるのが特徴です。

エディターの準備とコンパイル環境のリンクを含めた環境づくりの方法をまとめています。またアクトを流用してLEDを点灯消灯させる簡単なプログラム作って動作確認を行っています。

MWSTAGEはトワイライトに搭載しているCPUの機能についてすべてを網羅しているわけではありませんが、簡単にプログラムが作れるように工夫されている点は素晴らしいと思います。

スリープとウェイクアップを使用する

トワイライトの低消費電流のメリットを活かすためにはスリープ機能を使う必要があります。スリープ機能を使って間欠動作させることで低消費電流を実現できます。スリープの使い方と効果について動作確認しました。

MWSTAGE環境で使用できるDIDOを制御するAPIやボタンのチャタリングを防止するためのAPIについての使用方法についてまとめています。

スリープ時の消費電流はデータシートの通り1.2uA~1.3uAだったためハーベスト用電源を使用しながらの間欠動作に有効であることが分かりました。

AD変換と無線通信の方法

トワイライトのAD変換を使用して温度センサー(MCP9700A)の情報を取り込み無線通信させてみました。トワイライトのAnalogue関係のAPIの使い方とAD変換のデータの扱い方(フィルタリング:移動平均)についてまとめました。

消費電流を抑えるためにスリープを使用しながらウェイクアップしている間にAD変換を行い無線通信完了後にスリープさせるアプリを作って動作を確認しています。

ACTで無線タグアプリを模擬したソフトを作ることでエナジーハーベストによるIoTモジュールの動作を検討において幅が広がる感じで面白いと感じています。

DMM英会話-無料体験レッスンはこちら

I2CとSPI通信の方法

トワイライトのI2CとSPI機能を使用してBME280のデータを取得して無線通信する方法をまとめています。MWSTAGEではWireライブラリでI2C通信、SPIライブラリでSPI通信が実装できます。

BME280温湿度・気圧センサモジュールでありI2CとSPI通信の双方の通信方式を選択して通信を行うことができます。BOSCH社が提供しているBME280専用のAPIをアクトに組み込む方法をまとめています。

MWSTAGEではWireライブラリでI2C通信、SPIライブラリでSPI通信が実装できます。

MWSTAGEにおいてBMx280クラスを使用することで簡単に温湿度・気圧のデータを取得する方法をまとめています。MONOSTICKに無線通信して動作確認をしています。

無線通信を行った結果を換算してみると湿度以外は室内の温度計やスマホの気圧情報とほぼ一致しておりデータが取得できていることが分かりました。

センサから各種データが取得でき無線通信でデータが確認できるようになると応用範囲が広がったように感じがしました。

SHT3xクラスを使用して温湿度情報を取得する

トワイライトはWire(I2C通信)を使用することでSHT35から温湿度データを取得することができます。MWSTAGEではセンサーデバイスライブラリであるSHT3xクラスのメソッドをコールするだけでSHT35のデータを取得できます。

PWMの使用方法

トワイライト(TWELITE)はタイマ機能を備えておりPWM波形を生成することができます。PWMでLEDの明るさなどを調整したりできます。

PWMで振動波形を模擬することでブザーを鳴らして動作を確かめました。ブザーを鳴らすだけでは面白くないので照度センサーも組み込みました。照度センサから周囲の明るさを判定して明るければPWM出力でブザーを鳴らし暗ければPWM出力を停止するようにしています。

照度の変化は頻繁に起こるわけではないためスリープ時間を長くすることで電池を長持ちさせることができそうです。

ブザーの音程はPWMのキャリア周波数を変更すると実現できます。ブザーは周期的に鳴るのを聞いていると気になってくるので停止する仕組みは必要であると感じました。幻聴に注意が必要です!

Serial通信(SerialParserを使う)

SerialParserのAPIを使ってArduino UNOとバイナリ形式のデータをシリアル通信する方法をまとめました。シリアル通信の方法だけでなく電文の作り方や受信データの扱い方についてまとめています。またチャタリング防止やチェックサムの計算の仕方ついてもまとめています。

SerailParserは受信データに対してヘッダやチェックサムを計算するようにAPIが構成されているので定義に合わせた電文を送信することでトワイライトとシリアル通信ができます。

マイコンからトワイライトにデータを送信し、無線通信を行うような構成を考えてみても面白そうです。

親機を実装して子機から無線受信する

Parent-MONOSTICKとBRD_APPTWELITEのアクトを流用しながら親機を実装しました。アドレスを区別した子機2台を準備して温度センサー(MCP7800A)のデータを無線通信し親機で受信してモニターに表示しています。

親機は受信していない期間タイムスタンプを表示することで動作していることが確認できるようにしています。親機として無線通信の受信の仕方についてまとめています。

親機及び子機のどちらとも簡単に作ることができることは応用範囲が広がりそうで良い点だと感じています。

Arduinoとトワイライト(TWELITE)でセンサー情報を表示する

トワイライトを親機と子機に分けて子機側にはBME280と組み合わせてセンサー情報を取得し親機に無線通信を行います。親機はArduinoと組み合わせることで子機からのセンサー情報をLCD表示します。

子機はI2C通信と無線通信を使用し親機では無線通信を受信しシリアル通信して親機にデータを送信します。

子機を部屋を変えて設置してセンサー情報をLCDに表示しているとArduinoと組み合わせることで応用範囲が広がることや無線通信をうまく使えている感覚になりセンサーを変えていろいろと試したくなってきました。

応用編としてArduinoで超音波距離センサーUS-015から取得した距離をトワイライトで無線通信する距離測定モジュールを製作しました。

無線通信を搭載することで無線が届く範囲を起点に距離が測定できるため通常に測定するよりも測定範囲が広がりました。距離測定モジュールは段ボールにArduinoやUS-015やトワイライトを固定しただけのものですが、工作することも含めて楽しむことができました。

EEPROMを使用する

トワイライト(TWELITE)はEEPROMを搭載しているため電源が切れてもデータを保持できます。クラスオブジェクトであるEEPROMを使用することで簡単にEEPEOMの書き込みと読み込みができます。

EEPROMに関するAPIを使用してEEPROMへの書き込みを行いリセット後にEEPROMから読み出した値を確認してEEPROMの動作確認を行いました。

インタラクティブモードを実装する

TWELITEのインタラクティブモードはZigBee通信の特徴である複数グループで通信する場合などに必要な周波数チャンネル、アプリケーションID、再送回数などの重要なパラメータを簡単に設定できるのが特徴です。

アプリケーションIDなど重要なパラメータの設定の他にEEPROMのデータのリードによる確認ができるため使いやすいと感じています。

エナジーハーベストでの動作検証

エナジーハーベスト(環境発電)による電源生成はIoT社会に向けて必須になりえる技術です。トワイライトにおいてエナジーハーベスト電源として太陽光パネルを使用した電源管理モジュール(TWE-EH-S)があります。TWE-EH-Sを使ってトワイライトが電池レスで動作できるかを確かめてみました。

TWE-EH-Sによる電源生成

トワイライトの「無線タグアプリ」とTWE-EH-Sを組み合わせることでスリープ機能により低消費電力を実現するすることができます。

スリープ時の消費電流が低いことはエナジーハーベストの電力が微小であることからかなり有効であると言えます。TWE-EH-Sに付属されている太陽光パネルにおいても室内光で通信できていました。

TWE-EH-Sによる夜間の通信にチャレンジ

昼間の太陽光により電気二重層コンデンサに電荷をチャージしておき夜間の光が得られにくい環境において通信がどれだけ持続できるかを確認しました。電気二重層コンデンサの電圧と電荷からバックアップ時間の計算方法についてもまとめています。

夜間での通信も条件次第で可能であることが分かりました。晴天が続き余剰電力が蓄えられる余裕がある環境下においては理論上電池レスでの動作が可能であることは驚きでした。

自作アプリとソーラーモジュールで無線通信

MWSTAGE環境で自作アプリを作りソーラーモジュール( TWE-EH-S )を使用して電気二重層コンデンサを充電し夜間の光が得にくい環境で継続して無線通信ができるかを確認しました。

アクトサンプルを組み合わせながらBME280からデータを取得し無線通信を間欠動作によって行うことで消費電流を押さえることができ長時間の動作が可能となります。

TWE-EH-Sによるハーベスト電源は思いのほかエネルギーが大きかったため光が当たらない時間8時間程度以上の電源が確保できれば安定した動作ができることが分かりました。

使用したトワイライトモジュール

トワイライトの実験で使用したモジュールについては以下の通りになります。無線通信を楽しむこともできますし、MWSTAGE環境で簡単にソフト開発が行えるためソフト開発の仕方を学ぶ勉強用にもなり用途が様々です。

主に子機としてTWELITE-REDを使用しています。

モノワイヤレス USBスティック MONOSTICK-モノスティック
モノワイヤレス(Mono Wireless)
モノをUSBにつなぐ、MONOSTICK-モノスティックはUSB機器に簡単に接続できるUSBスティックです。

親機として子機からの通信データが送られているかを確認しました。パソコンに接続してターミナルで子機からの通信データが確認ができます。

モノワイヤレス USBアダプター TWELITE R2-トワイライター2
モノワイヤレス(Mono Wireless)
TWELITE R2 は TWELITE DIP や TWELITE PAL を USB 接続するためのアダプターです。

子機への無線アプリの書き換えはTWELITE Rで行いました。TWELITE-R2としてリニューアルされているのでそちらをお勧めしています。

ソーラー電源管理モジュールでエナジーハーベストしてTWELITEへの電源を供給します。室内光においても通信ができるほどのパワーがあるのは驚きでした。それだけTWELITEの消費電力が少ないということでもあります。

まとめ:無線を楽しみながらソフト開発ができる開発環境

トワイライトの開発環境として提供されているMWSTAGEを使うことで各種APIが使用できるようになり割と簡単にSPIやI2Cなどの通信ができるようになりArduino環境に近い状態でソフト開発ができることが良い点だと感じました。

トワイライトの特徴である無線通信が簡単に実装できるためセンサ情報をSPIやI2Cで取得して無線通信して親機に送信するような仕組みが簡単に作られることは応用範囲が広がりそうです。

またArduinoとコラボしたりと開発環境を使って組み込みエンジニアとしてのソフト開発と簡単な回路図を書いたりして勉強できる環境も作れるためソフト開発の練習教材としても最適であり楽しめる要素満点です。

プログラミングに対する教養を身に着けておくことでソフト開発と無線通信でできることで紹介したようなことが難しそうだという抵抗感なくできるようになります。

テックジム-将来のためにプログラミングを学ぶ

言語は何であれ一つの言語をある理解することができれば応用ができるため他の言語についても扱えるようになります。プログラミングの学習において大切なことは「やってみよう!」と思う好奇心とチャレンジ精神だと思います。

関連リンク

エナジーハーベストはIoT社会実現のために必要な技術であると考えています。電池レスでIoTモジュールが起動できるようになれば応用範囲が広がることが期待できます。

エナジーハーベスト技術がIoT社会実現に必須になりえる理由

今回はトワイライトを使用して動作確認を行いましたが、電子機器にIoTモジュールを組み込んだりして製品開発を行うエンジニアは組み込みエンジニアという分野になります。

組み込みエンジニアはIoT社会実現のために需要が高い職種

Arudinoを使った開発環境を作り方やライブラリを使って各種モジュールを動作させています。Arduinoを使って動作確認したことについてリンクをまとめています。

Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方

最後まで、読んでいただきありがとうございました。

タイトルとURLをコピーしました