LoRa(Long Range) わな作動センサー無線機 – E220-900T22S(JP) ATTINY202-SSNR 接続編 #0

WORKS-hunting

以前、知り合いよりLoRa(Long Range)無線通信というものがあることを伺いました。
あることに利用したくて、ものすごい興味があったものの、モジュールが高いので試せずにいました。
LoRaを簡単に説明すると、低消費電力でありながら、通信条件によっては数kmの通信も可能であり、免許も不要という、応用範囲の広い、夢のようなモジュールです。欠点としては、通信レートが低くLANのように大量データを流すことはできないことくらいです。
まずは、実用性検証と運用技術を得たくて、株式会社クレアリンクテクノロジーさんが販売している「E220-900T22S(JP) 評価ボード 」を入手しました。
接続試験は、親機、子機の役割を持つものを作って試してみるつもりです。
今回の実験は、親機側は、PCにシリアルコンバーターをくっつけるなどして試そうと思っています。
子機側は、Micro Chip社製「ATTINY202-SSNR」と「E220-900T22S(JP) 評価ボード 」を接続してみることにしました。「ATTINY202-SSNR」は、秋月電子さんで70円で販売されており、うまく利用できれば、お安いプラットフォームができそうだからです。

■ ATTINY202の書き込み環境準備

ATTINY202の書き込み環境は、Arduino Unoを使用してUDPI書き込み環境を準備しました。
Arduinoの書き込みジグ化、方法については、Youtuber「よみや」さんの動画「AVRマイコン ATTINY202をつかってみる」を参考にさせていただきました。
順序よく、わかりやすく説明されており、無事に環境構築できました。
動画では、Arduino Nanoを使用したジグを制作されていましたが、私は、大昔のArduino Unoをベースにユニバーサル基板上に配線を行いました。
手持ちの部品を使いましたので、抵抗値、セラミックコンデンサ容量とも動画で説明されているものとは違う部品を使用しました。

抵抗:4.7KΩ→5.1kΩ セラミックコンデンサ:10uF→0.1uF(10nFの記述ミスかも?)

基本的配線は、下記のような感じで配線しています。

私は、プログラムを書き込むついでに確認したいことがありましたので、3.3v/5.0vの切替、Arduino Unoの書き込みイネーブル、ATTINY202のピンの取り出しをできるようにしておきました。

■ ATTINY202-SSNR 3.3v 動作チェック

ATTINY202-SSNRは、データシートによると3.3vでも動作するように設計されているはずです。
電源に3.3vを入力すると、各ピンの電圧もその電圧で制御されるはずです。
今回は、E220-900T22S(JP) を接続して使用するのですが、このデバイスは3.3vで制御する必要があります。
念のため、3.3vで制御可能なことを以下のような環境で確認しました。

■ 動作確認環境
確認用コード
UART出力確認結果

結果としては、3.3v動作させれば信号ピンも連動して3.3v動作することが確認できました。

■ E220-900T22S(JP)の準備

〇 機体特定ルールの検討

LoRa通信は、下記のように相手先を「Target address」+「Target channel」で特定します。
実運用する際には、「Target address」「Target channel」をユニークに設定して使用した方がよさそうです。実験とはいえ、この辺りの運用は決めておいた方が後で困らないような気がしましたので、あらかじめ決めておきます。

「Target address」と「Target channel」は、あらかじめLoRaモジュールの不揮発性領域を書き換えて運用することにしました。

親機/子機Target address(2bit表現)Target channel
親機1— —- —0 0000

上位11bitは、親/子機で共通。
下5bitは、常に0。
14
子機1— —- —c cccc

上位11bitは、親/子機で共通。
下5bitは、1~30の子機ID。

※ 31は、アドレスの都合上、使用しない
14
機体特定ルール

〇 通信条件の検討

今回は、できるだけ遠距離で通信することが目的ですので、アドレス以外にもデフォルト値を変更することにしました。変更するレジスタ、フィールドを列挙します。
詳細については、データシートを参照していただけるとよいかと思います。

レジスタ Address名称変更内容
00HADDHアドレスHIGHバイト。機体特定ルールに従う。
01HADDLアドレスLOWバイト。機体特定ルールに従う。
02HREG0Air Data Rate。default:62,500(bps)から、1,758(bps)に変更。
04HREG2周波数チャンネル。機体特定ルールにしたがい、デフォルト:37に設定する。
05HREG3① RSSIバイトの有効化
デバッグ用にRSSI強度を出力するかもしれないので、現時点では有効にしておきます。
② 送信方法をトランスペアレント送信モードから固定送信モードに変更する。
トランスペアレント送信モードは実験には手軽ですが、実運用時には色々と困りそうなので、固定送信モードにしておく。
デフォルト値からの変更部分

書き込むレジスタ値は、今回は、下記のようになります。
● 親機(Target address=0x8020 Target channel=14)
C0 00 08 80 20 70 C0 0E C3 00 00
● 子機(Target address=0x8021 Target channel=14)
C0 00 08 80 21 70 00 0E C3 00 00

〇 E220-900T22S(JP) 設定ツール

ルールに従ってE220-900T22S(JP)を初期化する必要がありますので、簡単ですがLibre Calcで設定ツールを作成しておきました。シリアルコンバーターの先にE220-900T22S(JP)をコンフィグモードで接続して、シリアル経由で書き込むだけの単純なものです。
このツールを使って、親機/子機1の役割を持つE220-900T22S(JP)を準備しました。

設定ツール
E2200-900TS2S(JP) コンフィグモード配線

■ E220-900T22S(JP) 動作確認

E2200-900TS2S(JP)の通信テストを2点ほど、行いました。
少々問題はありましたが、思い通りに動作させることができました。

  1. PC上で親機、子機に見立てたシリアルポートで送受信できることの確認
    PCに親機、子機に見立てたボードを用意して、親機から子機に送信したデータが子機から正常によみだせるか確認を行う。
  2. ATTINY202とE2200-900TS2S(JP)の接続確認
    ATTINY202に親機からの送信データをエコーバックするようなプログラムを作成し、PC(親機)から送信したデータとATTINY202かららの受信データが合致していることを確認します。

1は、下記のような親機、子機となるブレッドボードを制作し、親機から送信したデータが、子機側のシリアルコンバーターと合致していることを確認しました。

確認用ブレッドボード、親機、子機とも回路自体は同じでE2200-900TS2S(JP)のアドレスが違うだけ
親機送信データ:12345 を 子機01黄セルのように受信できた

2は、1と同じような配線にしようとしたのですが、しばらく悩みました。
E2200-900TS2S(JP)は、TXのドライブ能力(プルアップ)が低いとRX側も動作しないというものらしいので、抵抗を入れて、RX/TXとも3.3vでプルアップする必要がありました。
それ以外は大きな問題もなく、ATTNY202-SSNRで親機から送信されたデータをエコバックすることができました。

親機から送信したデータ:12345をMCUでエコーし、親機で受信できた

使用予定の通信モードは、実験で使用したものではないのですが、見切りでスタートします。
使用したプログラムは、下記のようなものです。

■ 次回

今回は、ざっと基本パーツの動きなどをチェックしました。
次回も引き続き実験を続けようと思います。
今後の試験では基板を屋外にもって出る必要がありそうなので、次回以降は、試験用基板設計をしていこうと思います。
またよかったら、のぞいていただけるとありがたいです。

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