こんにちは、ENGかぴです。
ZigBeeモジュールであるトワイライト(TWELITE)はシリアル通信・タイマ(PWM)・I2C・SPI・AD変換など各種機能を備えておりセンサーと組み合わせながら無線通信ができるためIoTモジュールとして様々な用途に応用できます。
トワイライトに興味を持ったのはエナジーハーベスト(環境発電)のみで温度情報などのセンサー情報を無線通信で取得してみたいという好奇心からでした。開発環境であるMWSTAGEが提供されたことでソフト開発がしやすくなったこともありハマってしまいました。
開発環境であるMWSTAGEを使って動作確認したことについてまとめています。
ソフト開発と無線通信でできること
トワイライト(TWELITE)はモノワイヤレス社が開発している中距離通信であるZigBee通信ができる無線モジュールです。
簡単に動作検証ができるようにアプリが準備されており無線通信を楽しむことができます。ソフト開発はMWSTAGE上のアクトで準備されたAPIを使うことで簡単に実現することができます。
MWSTAGEで開発環境をつくる
MWSTAGEはトワイライトの開発環境でありマイコンの初期設定などを簡素化しユーザーがアプリ開発をしやすいように工夫されているツールです。Arduinoライブラリを使用しているよう感じでソフト開発が行えるのが特徴です。
エディターの準備とコンパイル環境のリンクを含めた環境づくりの方法をまとめています。またアクトを流用してLEDを点灯消灯させる簡単なプログラム作って動作確認を行っています。
広告
PR:わからないを放置せず、あなたにあったスキルを身に着けるコツを教える テックジム 「書けるが先で、理解が後」を体験しよう!
スリープとウェイクアップを使用する
トワイライトの低消費電流のメリットを活かすためにはスリープ機能を使う必要があります。スリープ機能を使って間欠動作させることで低消費電流を実現できます。スリープの使い方と効果について動作確認しました。
MWSTAGE環境で使用できるDIDOを制御するAPIやボタンのチャタリングを防止するためのAPIについての使用方法についてまとめています。
パルスカウンタの使い方
パルスカウンタはスリーブ時でもDIのエッジの変化を検出することができます。ボタンを押したときスリープからウェイクアップさせてBME280の計測を開始して無線通信するアクトを作って動作確認を行いました。
AD変換と無線通信の方法
トワイライトのAD変換を使用して温度センサー(MCP9700A)の情報を取り込み無線通信させてみました。トワイライトのAnalogue関係のAPIの使い方とAD変換のデータの扱い方(フィルタリング:移動平均)についてまとめました。
消費電流を抑えるためにスリープを使用しながらウェイクアップしている間にAD変換を行い無線通信完了後にスリープさせるアプリを作って動作を確認しています。
スリープとAD変換を使用して土壌センサーであるSEN0114から土壌の状態を取得して無線通信する方法をまとめました。植物の水やりのタイミングをセンサーで確認する仕組みの簡単な例ですが水分量を厳密に管理したい場合に使えそうです。
Seeeduino XIAOとトワイライトを組み合わせたものを親機とし、トワイライトとSEN0114を組み合わせたものを子機として構成しました。子機のSEN0114から土壌の状態を無線通信し親機のOLEDに表示しSDカードに動作履歴を保存しながら夜間を含めて動作確認を行いました。
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出力を停止するようにしています。
照度の変化は頻繁に起こるわけではないためスリープ時間を長くすることで電池を長持ちさせることができそうです。
広告
Serial通信(SerialParserを使う)
SerialParserのAPIを使ってArduino UNOとバイナリ形式のデータをシリアル通信する方法をまとめました。シリアル通信の方法だけでなく電文の作り方や受信データの扱い方についてまとめています。またチャタリング防止やチェックサムの計算の仕方ついてもまとめています。
SerailParserは受信データに対してヘッダやチェックサムを計算するようにAPIが構成されているので定義に合わせた電文を送信することでトワイライトとシリアル通信ができます。
親機を実装して子機から無線受信する
Parent-MONOSTICKとBRD_APPTWELITEのアクトを流用しながら親機を実装しました。アドレスを区別した子機2台を準備して温度センサー(MCP7800A)のデータを無線通信し親機で受信してモニターに表示しています。
親機は受信していない期間タイムスタンプを表示することで動作していることが確認できるようにしています。親機として無線通信の受信の仕方についてまとめています。
親機及び子機のどちらとも簡単に作ることができることは応用範囲が広がりそうで良い点だと感じています。
送信先を指定して無線通信を行う
親機から子機に対して送信先を指定して通信を行って動作確認したことをまとめています。1:1で無線通信を行う場合は気になりませんが、1:Nの通信でブロードキャスト通信と個別の通信を使い分けたいときに有効です。
ZigBee通信の特徴の一つである通信の中継機能の動作を確認しています。中継機能によって通信距離を延ばすことができるのはZigBee通信の長所です。
PR:無料トライアル実施中【PC専用】AIスライド資料作成ツールの利用:イルシル
Arduinoとトワイライト(TWELITE)でセンサー情報を表示する
トワイライトを親機と子機に分けて子機側にはBME280と組み合わせてセンサー情報を取得し親機に無線通信を行います。親機はArduinoと組み合わせることで子機からのセンサー情報をLCD表示します。
子機はI2C通信と無線通信を使用し親機では無線通信を受信しシリアル通信して親機にデータを送信します。
子機を部屋を変えて設置してセンサー情報をLCDに表示しているとArduinoと組み合わせることで応用範囲が広がることや無線通信をうまく使えている感覚になりセンサーを変えていろいろと試したくなってきました。
応用編としてArduinoで超音波距離センサーUS-015から取得した距離をトワイライトで無線通信する距離測定モジュールを製作しました。
TWELITE SPOTで無線LANを実現する
TWELITE SPOTはESP32-WROOM-32EとTWELITEの組み合わせをモジュール化した製品です。プリインストールされているアプリの動作確認と下記関連記事の「ESP32-WROOM-32EとTWELITEの特徴を活かした無線通信」で確認したソースコードをTWELITE SPOTに書き込んで動作確認を行いました。
ESP32-WROOM-32EとTWELITE(トワイライト)の特徴を活かしてWiFiでは届かない範囲のセンサーの情報を取得する方法をまとめました。
TWELITEの中距離通信で温湿度センサーから取得したデータを無線通信します。ESP32-WROOM-32EはTWELITEから取得したデータを履歴保存してクライアントからの接続要求でHTTPデータで応答し、温湿度の履歴を表示します。
EEPROMを使用する
トワイライト(TWELITE)はEEPROMを搭載しているため電源が切れてもデータを保持できます。クラスオブジェクトであるEEPROMを使用することで簡単にEEPEOMの書き込みと読み込みができます。
EEPROMに関するAPIを使用してEEPROMへの書き込みを行いリセット後にEEPROMから読み出した値を確認してEEPROMの動作確認を行いました。
インタラクティブモードを実装する
TWELITEのインタラクティブモードはZigBee通信の特徴である複数グループで通信する場合などに必要な周波数チャンネル、アプリケーションID、再送回数などの重要なパラメータを簡単に設定できるのが特徴です。
無線で文字列を送信して音声を再生する
トワイライトと音声合成ICであるATP3011とのコラボによって遠隔操作で音声再生しました。Tera Termを使ってMONOSTICKから文字列を無線通信しもう一方のトワイライトが受信した文字列を音声合成ICにSPI通信を使ってコマンドを送信しています。
エナジーハーベストでの動作検証
エナジーハーベスト(環境発電)による電源生成はIoT社会に向けて必須になりえる技術です。トワイライトにおいてエナジーハーベスト電源として太陽光パネルを使用した電源管理モジュール(TWE-EH-S)があります。TWE-EH-Sを使ってトワイライトが電池レスで動作できるかを確かめてみました。
TWE-EH-Sによる電源生成
トワイライトの「無線タグアプリ」とTWE-EH-Sを組み合わせることでスリープ機能により低消費電力を実現するすることができます。
スリープ時の消費電流が低いことはエナジーハーベストの電力が微小であることからかなり有効であると言えます。TWE-EH-Sに付属されている太陽光パネルにおいても室内光で通信できていました。
TWE-EH-Sによる夜間の通信にチャレンジ
昼間の太陽光により電気二重層コンデンサに電荷をチャージしておき夜間の光が得られにくい環境において通信がどれだけ持続できるかを確認しました。電気二重層コンデンサの電圧と電荷からバックアップ時間の計算方法についてもまとめています。
自作アプリとソーラーモジュールで無線通信
MWSTAGE環境で自作アプリを作りソーラーモジュール( TWE-EH-S )を使用して電気二重層コンデンサを充電し夜間の光が得にくい環境で継続して無線通信ができるかを確認しました。
アクトサンプルを組み合わせながらBME280からデータを取得し無線通信を間欠動作によって行うことで消費電流を押さえることができ長時間の動作が可能となります。
使用したトワイライトモジュール
トワイライトの実験で使用したモジュールについては以下の通りになります。無線通信を楽しむこともできますし、MWSTAGE環境で簡単にソフト開発が行えるためソフト開発の仕方を学ぶ勉強用にもなり用途が様々です。
主に子機としてTWELITE-REDを使用しています。
親機として子機からの通信データが送られているかを確認しました。パソコンに接続してターミナルで子機からの通信データが確認ができます。
子機への無線アプリの書き換えはTWELITE Rで行いました。TWELITE-R2としてリニューアルされているのでそちらをお勧めしています。
ソーラー電源管理モジュールでエナジーハーベストしてTWELITEへの電源を供給します。室内光においても通信ができるほどのパワーがあるのは驚きでした。それだけTWELITEの消費電力が少ないということでもあります。
TWELITE SPOTでTWELITEで取得したデータをWiFiに変換するIoT機器を構成することができます。
まとめ:無線を楽しみながらソフト開発ができる開発環境
トワイライトの開発環境として提供されているMWSTAGEを使うことで各種APIが使用できるようになり割と簡単にSPIやI2Cなどの通信ができるようになりArduino環境に近い状態でソフト開発ができることが良い点だと感じました。
トワイライトの特徴である無線通信が簡単に実装できるためセンサ情報をSPIやI2Cで取得して無線通信して親機に送信するような仕組みが簡単に作られることは応用範囲が広がりそうです。
またArduinoとコラボしたりと開発環境を使って組み込みエンジニアとしてのソフト開発と簡単な回路図を書いたりして勉強できる環境も作れるためソフト開発の練習教材としても最適であり楽しめる要素満点です。
プログラミングに対する教養を身に着けておくことでソフト開発と無線通信でできることで紹介したようなことが難しそうだという抵抗感なくできるようになります。
PR:わからないを放置せず、あなたにあった最低限のスキルを身に着けるコツを教える テックジム 「書けるが先で、理解が後」を体験しよう!
言語は何であれ一つの言語をある理解することができれば応用ができるため他の言語についても扱えるようになります。プログラミングの学習において大切なことは「やってみよう!」と思う好奇心とチャレンジ精神だと思います。
関連リンク
エナジーハーベストはIoT社会実現のために必要な技術であると考えています。電池レスでIoTモジュールが起動できるようになれば応用範囲が広がることが期待できます。
今回はトワイライトを使用して動作確認を行いましたが、電子機器にIoTモジュールを組み込んだりして製品開発を行うエンジニアは組み込みエンジニアという分野になります。
Arudinoを使った開発環境を作り方やライブラリを使って各種モジュールを動作させています。Arduinoを使って動作確認したことについてリンクをまとめています。
Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方
最後まで、読んでいただきありがとうございました。
MWSTAGEはトワイライトに搭載しているCPUの機能についてすべてを網羅しているわけではありませんが、簡単にプログラムが作れるように工夫されている点は素晴らしいと思います。