TWELITEのタグアプリでADCを4ポート全て使うための設定
TWELITE+無線タグアプリでアナログセンサーのデータを送信する
TWELITEのADC(アナログ-デジタル変換回路)が4ポート(TWELITE REDの場合は6ポート)搭載されているため、アナログセンサーの値を最大4(または6)個取得して送信することが仕様上可能です。センサーデータを親機に定期送信するには、無線タグアプリを使うと簡単で、やり方はモノワイヤレス株式会社の以下のページに回路例、設定、出力例が詳しく出ています。
要約すると、センサーのアナログ出力をAI1,AI3(ピン番号22,23)に接続し、インタラクティブモードでSensor Mode(センサー種別)を0x10(アナログセンサ)に設定すると、センサーの出力電圧が送られてくるわけです。
ただ、デフォルトだと2ポート分しかデータが送れないので3つ以上センサーを接続してデータを送信することができません。せっかく、4ポートもADCインターフェースがついているのに何で2つだけなんだよ!ってなりますが、意外と簡単な方法で4ポート全部のデータが送信できるようにできます。
実は無線タグアプリはADC4ポート分のデータ送信をサポートしている
無線タグアプリは2020年3月現在、Ver.2.1.5が最新版ですが、ソースコードをダウンロードして、Version.mkを見てみると、Ver.2.1.1で密かにADC 4ポート対応していることがわかります。
# 2.1.5 親機の出力形式にカンマ区切りを追加 # 2.1.4 SHT3x/SHTC3の対応 # 2.1.3 新ネットワーク方式に対応 # 2.1.2 DIモードにて複数入力、定期送信に対応 # 2.1.1 ADC 4ポート対応 # 2.1.0 ADXL34x FIFOモードの機能を修正。設定を16パターン保存できるように修正
4ポート分のデータ送信に対応している事実だけで、どうやってADC4ポート使うかは何処にも書いてないです。。そこで、ソースコードを確認すると以下のファイルに何箇所か、ADC4ポート使うための処理をしている部分が見つかります(こういうとき、オープンソースだと自分で調べられて良いですね。)。
//ProcessEv_Standard.cより引用 if( sAppData.sFlash.sData.u8mode == PKT_ID_STANDARD && (sAppData.sFlash.sData.i16param&0x0001) ){ sAppData.sSns.u16Adc1 |= 0x8000; // ADCを4ポート使用してますよビット S_BE_WORD(sAppData.sSns.u16Adc1); S_BE_WORD(sAppData.sSns.u16Adc3); S_BE_WORD(sAppData.sSns.u16Adc2); S_BE_WORD(sAppData.sSns.u16Adc4); }else{ S_BE_WORD(sAppData.sSns.u16Adc1); S_BE_WORD(sAppData.sSns.u16Adc2); S_BE_WORD(sAppData.sSns.u16PC1); S_BE_WORD(sAppData.sSns.u16PC2); }
//EndDevice_input.cより引用 if( sAppData.sFlash.sData.u8mode == PKT_ID_STANDARD && (sAppData.sFlash.sData.i16param&0x0001) ){ vPortDisablePullup(0); vPortDisablePullup(1); sAppData.sObjADC.u8SourceMask = TEH_ADC_SRC_VOLT | TEH_ADC_SRC_ADC_1 | TEH_ADC_SRC_ADC_2 | TEH_ADC_SRC_ADC_3 | TEH_ADC_SRC_ADC_4; u8ADCPort[0] = TEH_ADC_IDX_ADC_1; u8ADCPort[1] = TEH_ADC_IDX_ADC_2; u8ADCPort[2] = TEH_ADC_IDX_ADC_3; u8ADCPort[3] = TEH_ADC_IDX_ADC_4; }else{ sAppData.sObjADC.u8SourceMask = TEH_ADC_SRC_VOLT | TEH_ADC_SRC_ADC_1 | TEH_ADC_SRC_ADC_2; u8ADCPort[0] = TEH_ADC_IDX_ADC_1; u8ADCPort[1] = TEH_ADC_IDX_ADC_2; }
u8modeをPKT_ID_STANDARDに、i16paramを0x0001にセットするとADC4ポートモードになるようです。
それぞれの定義は以下にあります。
//appsave.hより引用 uint8 u8mode; //!< センサの種類 int16 i16param; //!< 選択したセンサ特有のパラメータ
//common.hより引用 #define PKT_ID_STANDARD 0x10
結論
長くなりましたがまとめると、タグアプリで センサー固有パラメータを1にセット するとアナログ入力の値が4ポート分送られてくるみたいです。
m: set Sensor Mode (0x10) p: set Sensor Parameter (1)
無線タグアプリのインタラクティブモードの説明では、アナログセンサーは固有パラメータなしと言うことになってますが…(マニュアルが更新されてないみたいですね)
実際、上記の設定を行うことで無線タグアプリVer.2.1.5をインストールしたTWELITE REDでADC4ポート分のデータが送られてくるのを確認しました。 以下は実際にデータを定期的に取得し可視化した例です。
可視化とデータの収集に使ったPythonスクリプトのソースは以下においてあります。ADC2/4ポートいずれにも対応済みです。