🍣

E220-900T22S-JPのArduinoライブラリを作成した

2024/03/20に公開

背景

ハイブリットロケットサークルの電装班で,LoRaモジュールを使ってデータのダウンリンクをしたかった.以前はES920LR3を使っていたが,少しお高い.そこで,秋月で最近取り扱い始めたE220をつかってみようと思った

githubのリンク

https://github.com/nihinihikun/E220-900T22S-JP_Arduino

作成方針

  • 簡潔さ
  • 汎用性の高さ
  • ドキュメントの充実

に重点をおいて作成した

使用方法

E220本体設定

E220はM0,M1ピンをHIGH(3.3V)にすることでconfigモードに入る.マイコンでHighにするでも,ジャンプワイヤとかHighとかにするでもお好きに.

  1. examplesにあるconfig.inoをマイコンに書き込む.ピンアサインは各々設定しなおしてほしい
    今回はM0,M1ピンをマイコンでH-L切り替えるつもりで説明する.
#define M0 0
#define M1 1

この部分でM0をマイコンの0番ピン,M1マイコンの1番ピンに設定している.

  1. マイコンをシリアルモニタで9600bpsで接続する
  2. 各々設定したいコマンドを打つ.それぞれコマンドうつごとにE220本体に設定が保存される.コマンドはconfig/config.pdfを参考にすること.

E220を実際に使う(Exampleについての説明)

E220の設定ができたら,実際につかってみる.ArduinoMegaのようにハードウェアシリアルをたくさんもっているマイコンもあれば,UNO rev3のようにハードウェアシリアルが乏しいマイコンがある.そこで,ハードウェアシリアルを使う場合のexampleとソフトウェアシリアルを使う場合のexampleを用意した.各々ピンアサインを調整の上,テスト用に使ってくれ.

使い方

注意:M0,M1ピンはLOWにすること.

  1. ライブラリのインポート(ヘッダファイルインカ―ト)
#include <E220.h>
  1. コンストラクタ呼び出し(インスタンス作成)

例:

E220 e220(Serial1, 0xFF, 0xFF, 0x0A); 
  • 第一引数:Serialをわたす.softwareserialで作成したものでも可
  • 第二,三引数:ターゲットアドレス.例えば,0xABCDだったら,第二引数が0xAB,第三引数が0xCD
  • 第四引数:チャンネル
  1. void setupで渡したシリアルのbeginをする.E220本体で設定したボーレートにすること

例:

void setup(){
    Serial1.begin(9600);
}
  1. ペイロード(実際に流すデータ部分)を作成する.byte型で199byte以内で作成すること
    ※テスト用のデータを生成する関数を用意しています.詳細はE220.cppでもみて.

  2. 送信をする
    送る内容のデータのbyte数を送る時

例:

byte tx_payload[199]={0x41};
e220.TransmissionDataVariebleLength(tx_payload,55);
  • 第一引数:受信用byte型の配列
  • 第二引数:送信する内容のbyte数

注意:日本では,電波法で送信時間,送信間隔などに法律的な制約ある.よく確認してね

  1. 受信をする
    受信する内容を受け取るためのbyte型配列を用意し,ReceiveDataVariebleLengthで受信

例:

Rxlength=e220.ReceiveDataVariebleLength(rx_payload,55,&rssi);
  • 第一引数:受信用byte型の配列
  • 第二引数:送信側で指定した配列数(int)
  • 第三引数:rssi値を入れる変数(int)
  • 戻り値:受信した配列数

※送信側の長さ関係なく199Byte読み取る関数もあります.詳細は.cppでも覗いてみてね

改善点

  • たまにrssiがバグる
  • configのpowerの設定があやしい

他問題点等見つけましたら,githubのissueで投稿していただけると幸いです

Discussion