アイ・ツー LoRa 無線モジュール LRA1 開発補助ツール LRA1_Aid 試作版 Ver.1.22
■Ver.1.22
強調表示を LRA1-Basic 専用にしました。

■Ver.1.18a
 LRA1 との通信専用版です。


■LRA1 とは
 アイ・ツー社の LoRa 無線(920MHz帯)モジュールです。
 非常に良く飛びます。(競合他社製品との比較ですが、あくまで個人の感想です・・・)
 製品紹介ページはこちらです→ https://i2-ele.co.jp/LoRa.html
 特徴は↓
 ・LoRaWAN対応(クラスA/クラスC)
 ・超小型(13mm × 18mm × 2.4mm)
 ・超低消費電流(sleep時 0.7uA以下)電池運用でも今までにない長時間運用が可能です。
 ・BASICインタプリタ内蔵なので外付けCPU無しでも動作可能。
 ・特別なツールなしで簡単にお客様でプログラミングできます。
 ・UART(2ch)/I2C/ADC(12bit)/PWM(8ch)
 ・高い信頼性。弊社内で設計、製造管理しています。
 ・SEMTECH LoRa chip使用
 ・LCD、温湿度・気圧センサー付き評価ボード(2台/1セット)

■概要
 LRA1 単体で BASIC プログラム(コードは4096バイトまで)を作成でき、
 マイコンを追加することなく、I/O、UART、GPS ... 等を使える無線モジュールです。
 BASIC プログラムは、TeraTerm を使って、1行ずつコードを送信する必要があり、
 結構なストレスになります。

 本ツールは、LRA1 との通信機能とプログラムを編集・送信する機能を提供します。
 他のエディターで編集し、本ツールにペースト。行番号を追加。LRA1 へ送信。
 ・・・という使い方も可能です。

■機能
 ・LRA1 との通信(TeraTerm と同じ感じ)
 ・使いそうなコマンドの送信
 ・Break 信号、Reset コマンドの送信
 ・ファイル読み込み、編集、保存
 ・行番号の追加、削除
 ・編集したコードの送信
 ・LIST 表示したコードを編集エリアに取り込み
 ・シリアル番号の取得
 ・配列変数@へのデータ変換、送信(Ver.1.17より)
 ・受信データの 16進表示 (Ver.1.20)

■使い方、メモ
 ・インストーラーは作成していません。適当なフォルダに解凍してください。
  LRA1_Aid.exe をダブルクリックすると起動します。
  2 台を同時に編集する場合は、LRA1_Aid.exe を 2 個起動してください。
 ・リストから接続先を選択してください。
  起動後に LRA1 を接続し場合は、[再検索]ボタンをクリックしてください。
  必要であれば、[デバイスマネージャ] ボタンで COM ポートを確認できます。
 ・[OPEN] ボタンをクリックすると、LRA1 に接続します。
  ボタンが緑色、文字が CLOSE に変わります。
 ・[CLOSE]ボタンをクリックすると、接続を終了します。
 ・ComPort リストの下に Command リストがあります。
  リストを選択すると、LRA1 へ送信されます。
  LRA1_Aid.exe と同じフォルダの LRA1_Aid_CommandList.txt を読み込んでいます。
  変更可能です。"(" 以降は無視されます。"," は CrLf に変換されます。
  ※ RUN 中はコマンドを送信しても拒否されます。
    [Break] ボタンで終了させて下さい。
 ・[SN] ボタンでシリアル番号を取得します。
  2 台あるうちのどれが対象なのか分からなくなったので、付けています。
 ・[Load LIST] ボタンで LIST 表示したコードを編集エリアに取り込みできます。
 ・編集エリアは2つ有ります。
  上側が LRA1 へのコマンド送信と LRA1 からの返信が表示されます。
  TeraTerm と同じ感じです。
 ・[RESET]コマンド、[Break]信号の送信が行えます。
 ・メモ
  コードに TAB が有っても LRA1 は読み込んでくれます。
  行番号だけでもエラーになりません。
  コメントもバイト数に入ります。
  日本語 (UTF8) コメントも使えます。

 ※アイコンは作成していません。Delphi のアイコンを使用しています。

■エディター機能
 下段の編集エリアは、TSynEdit を使ったエディターです。
 ・ファイルのドラッグ&ドロップに対応
 ・強調表示は LRA1-Basic 専用(Ver.1.22)
 ・フリーカーソル(有効/無効)
 ・オートインデント
 ・タブは 4 固定
 ・[Shift] + [TAB] または [BackSpace] でタブを削除
 ・ブロックインデントに対応
 ・不完全ながらブロックコメント(Ctrl+/)にほぼ対応(Ver.1.17)
  先頭のコメント "'"(シングルクォート)が対象です。
 ・UNDO([Ctrl]+[Z])は 1024 まで
 ・オートコンプリートは未実装
 ・検索・置換(Ver.1.18)

■配列変数@[ ] 用データ作成
 タブ区切りファイル、CSVファイル、または1行ごとに数値を記入したファイルを読み込みます。
 または、エクセルの必要な範囲のみをコピーし、編集エリアにペーストすると タブ区切りで取り込めます。
 メニュー-エディター-「@[ ] 配列データに変換」を選択し、整数化倍率を指定し、[OK] すると、
 @[0] = 1234
 @[1] = 2345
 ....
 のような形に変換されます。
 この状態で LRA1 へ送信できます。
 送信後、ASAVE でLRA1 に記憶します。(電源を切っても消えません)
 使う時は、ALOAD で値を参照できます。

■同梱サンプルコード
 ・HC2_DP_TX*.bas
  温湿度センサーと UART2 で通信するサンプルです。
  コマンド "{ 99RDD}" を送ると、
  "{F00rdd 001; 63.68;%rh;000;=; 26.42;?C;000;=;nc;---.- ;?C;000; ;001;V2 ...."
  のような文字列が返信されるセンサーです。
  この文字列から湿度 "63.6" と温度 "26.4" を取り出し LCD に表示。
  露点温度を計算(換算)したデータを追加して受信側に送信しています。

  あらかじめ、温度-湿度を露点温度に換算するテーブル HC2_DP_LIST.txt を LRA1 に送信し
  ASAVE で LRA1 のメモリに記憶させておく必要があります。
 
 ・HC2_DP_RX.bas
  上記の受信側です。
  受信側では受信した文字列を LCD にそのまま表示。
  有機 EL ディスプレイ(OLED) に受信レベルと共に温度、湿度、露点温度を表示します。
  受信レベルのシンボルは外字で作成しています。
  受信後、"OK" を返信することで、お互いの RSSI 値の表示と生存確認を行っています。  
  

■テストモード (Ver.1.20)
 TEST チェックボックスを ON にするとテストモードになります。
 ・送信文字列中の <13>,<10>,<$0D>,<$0A>... 、<STX.>, <ETX> ... 等を制御コードに置換して送信します。
  <> 内の文字列が数値に変換できない場合は、送信データ全体を置換せずにそのまま送信します。
 ・TEST OFF の時は、LRA1 からのエコーが繰り返されるため、送信行を削除しています。
  (これは TeraTerm のコマンドプロンプトっぽく見せるためです。)
  TEST ON の時は、送信行はそのまま残ります。
 
■使用コンポーネント
 ・Delphi 標準コンポーネントの他に下記コンポーネントを使用しています。
  エディター:TSynEdit 他
  シリアル通信:TApdComport

■著作権、免責事項等
 ・本ツールの著作権は作者 f.izawa が所有し、これを主張します。
 ・本ツールを使用したことによる事故、損害等の一切について
  作者はその責を負いません。

■作者連絡先
 ・e-mail: f.izawa@dream.com
 ・URL: http://www.izawa-web.com/

■開発環境
 ・Delphi 10.4 Professiona + TSynEdit + TApdComportl / Windows 10

■ダウンロード
 LRA1_Aid118a.zip 2022/09/30 (EXE本体 + ReadMe + サンプルコード他 一式)
 LRA1_Aid122.zip  2022/10/06 (EXE本体 + ReadMe + サンプルコード他 一式)

■履歴
 2022/09/10 Ver.1.00
  初版作成
 2022/09/11 Ver.1.05
  メニューにファイル履歴 10 個までを追加
  [Load LIST] ボタンを追加
 2022/09/11 Ver.1.06
  上書き保存(Ctrl+S)ができなかったのを手直し
 2022/09/13 Ver.1.10
  特殊文字の表示、キャレット形状の変更を追加
 2022/09/14 Ver.1.11
  受信バッファをクリアしていなかったのを手直し
  メニューに送信タイマーの設定を追加
  コード送信時、エラー受信で送信を中止するを追加
 2022/09/14 Ver.1.12
  確認用ログファイル作成が ON のままだったのを OFF にした
  その他、細かい修正
 2022/09/15 Ver.1.13
  しばらく使うと受信できなくなるのを修正
  送信、受信ランプを追加
 2022/09/16 Ver.1.14
  日本語コメントに対応
 2022/09/17 Ver.1.15
  送信中止ボタンを追加
  メニューにフリーカーソル(有効/無効)を追加
  ブロックコメント(Ctrl+/)を追加 (Ver.1.16 でとりやめ)
 2022/09/19 Ver.1.16
   ブロックコメント(Ctrl+/)をとりやめ
   コメントを送信しないチェックボックスが機能していなかったのを修正
   コード送信時、"Program area overflow error" で接続を終了(切断)するを追加
 2022/09/21 Ver.1.17
   不完全ながらブロックコメント(Ctrl+/)に対応(行頭のコメントのみ)
   LRA1 関係の強調表示を追加(スクロールが遅くなります)
   配列変数@[ ] 用データ作成、送信を追加
 2022/09/24 Ver.1.17a
   LRA1 からエラーが返信されたときのメッセージが表示されなくなっていたのを手直し
 2022/09/28 Ver.1.18
   LRA1 関連の強調表示をとりやめ(検索結果の表示を優先するため)
   文字列検索・置換を追加
 2022/09/30 Ver.1.18a
   検索終了方法を手直し
   検索ダイアログで [F3], [Shift]+[F3] で即検索開始を追加

 2022/10/03 Ver.1.20
   受信データの16進表示を追加
   簡易的なテストモードを追加
   マウス右クリックのポップアップメニューに「現在行、選択行をそのまま送信」を追加
 2022/10/05 Ver.1.21
   送信データの16進表示を追加
   マウス右クリックのポップアップメニューに「現在行、選択行をそのまま送信」で受信バッファがクリアされていなかったのを手直し

 2022/10/06 Ver.1.22
   強調表示を LRA1-Basic 専用にした