ブログを検索

ラベル LRA1 の投稿を表示しています。 すべての投稿を表示
ラベル LRA1 の投稿を表示しています。 すべての投稿を表示

2024/06/21

LRA1 BASIC で気になったことや処理速度実験

 気になったのでメモ

「その1」はプログラムの書き方によっては受信データロストに繋がるという件

気付いた都度追記していく

その1 知らずにデータをロストしていた orz

下記プログラムで150行目で Stat=10のときがある。
タイミングでそうなるということは別の考え方をするとStatを確認したら速やかにStat=0をセットしないとデータをロストする確率が高まる。しかもロストしていることに気付かない。ここは行数をケチったりコードの見た目を綺麗にするのは考えないようにする

発生頻度

送信側は5分毎送信。受信側は RECV 0 で常に受信待ち受け、100msec毎受信データ有無を確認している状態
1時間で12回受信のうち4回がこのタイミングになった。結構な頻度でロストしていた 汗

受信プログラム
10 RxStop:Stat=0
20 Recv 0
100 Do
110   If Stat=10 Then
120     Stat=0
130     Print Rxd
140   Else
150     ' ここでstat=10のときがある
160     If Stat!=0 Then
170       Print "Error Stat=";Stat
180     EndIf
190     Stat=0
200   EndIf
210   Delay 100
999 Loop

なので下記のように 190行目削除。160行目~170行目修正と追加
10 RxStop:Stat=0
20 Recv 0
100 Do
110   If Stat=10 Then
120     Stat=0
130     Print Rxd
140   Else
150     ' ここでstat=10のときがある
160     If Stat!=0 && Stat!=10 Then
165       S=Stat:Stat=0
170       Print "Error Stat=";S
180     EndIf
190     Stat=0
200   EndIf
210   Delay 100
999 Loop

その2 ループ方法やコメント有無の処理速度への影響


BASICインタプリタ全盛の1980年代前半にやってたような簡易テストをしました。
ワタクシ当時は中学~高校生 遠い目
下記コードで簡易的に試した結果をまとめると

・ループ方法は For Next が一番速い Step有無は影響なし。ただし無限ループとしての Do Loop や Goto は不明。exit条件のIf文を入れるとFor Nextより遅い事だけ判った
・コメント行があると遅くなる
・コメント行はコメント文字列が長いと遅くなる
・I=I+1 より I++ のインクリメントが速い
・マルチステートメントは遅くなる
・ラベル名が長いと遅くなる
問題点を挙げてるわけじゃなくBASICプログラム書くときの目安としてテキトーに実験してみた
プログラムエリアの消費量との兼ね合いがあると思うのでマルチステートメントは使うところは使う
分かりやすさとの兼ね合いでラベル名も最低限の長さはとる
結論は実験結果を参考にしつつもそもそも処理速度は求めていないので書きやすいように書けばいいだけかな

■For Next これが基準 所要時間19秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000 Step 1
140   I=I+1
150   J=J+1
160   'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec

■Step省略 効果なし 所要時間19秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140   I=I+1
150   J=J+1
160   'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec

■インクリメント 効果あり 所要時間14秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140   I++
150   J++
160   'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec

■コメント行増 逆効果あり 所要時間45秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140   I++
150   J++
160   'NOP
161   'NOP
162   'NOP
163   'NOP
164   'NOP
165   'NOP
166   'NOP
167   'NOP
168   'NOP
169   'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec

■すべてのコメント削除 効果あり 所要時間11秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140   I++
150   J++
170 Next
180 Print "20"; Datetime (Clock);".";Milisec

■コメント1件 「■インクリメント 効果あり」の再掲 所要時間15秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140   I++
150   J++
160   'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec

■コメント長増 逆効果あり 所要時間19秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140   I++
150   J++
160   'NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec

■マルチステートメント 逆効果あり 所要時間18秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=0 To 100000
140   I++:J++
160   'NOP
170 Next
180 Print "20"; Datetime (Clock);".";Milisec

■For Next から While Loopへ変更 逆効果あり 所要時間38秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 While (I<=100000)
140   I++:J++
160   'NOP
170 Loop
180 Print "20"; Datetime (Clock);".";Milisec

■while LoopからDO~LOOP WHILE へ変更 逆効果あり 所要時間52秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 Do
140   I++:J++
160   'NOP
170 Loop While (I<=100000)
180 Print "20"; Datetime (Clock);".";Milisec

■ForからDo If exitへ変更  逆効果あり 所要時間45
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 Do
135   If I=100000 then exit endif
140   I++:J++
160   'NOP
170 Loop
180 Print "20"; Datetime (Clock);".";Milisec

■Do If exit から goto If End へ変更  逆効果あり 所要時間61秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 _looppoint
135   If I=100000 then Print "20"; Datetime (Clock);".";Milisec::End endif
140   I++:J++
160   'NOP
170 Goto _looppoint
180 Print "20"; Datetime (Clock);".";Milisec

■ラベル文字列長増  逆効果あり 所要時間147秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 _looppoint_looppoint_looppoint_looppoint_looppoint_looppoint_looppoint_looppoint_looppoint_looppoint
135   If I=100000 then Print "20"; Datetime (Clock);".";Milisec::End endif
140   I++:J++
160   'NOP
170 Goto _looppoint_looppoint_looppoint_looppoint_looppoint_looppoint_looppoint_looppoint_looppoint_looppoint
180 Print "20"; Datetime (Clock);".";Milisec

■ラベル文字列長短 効果あり 所要時間53秒
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 _l
135   If I=100000 then Print "20"; Datetime (Clock);".";Milisec::End endif
140   I++:J++
160   'NOP
170 Goto _l
180 Print "20"; Datetime (Clock);".";Milisec


おまけ実験 ループの中で For Next が一番速いなら・・・
■For Nextで無限ループ
100 Print "20"; Datetime (Clock);".";Milisec
110 RxStop
120 I=0:J=0
130 For I=1 To 2
140   I=1
170 Next
180 Print "20"; Datetime (Clock);".";Milisec




2024/06/18

[TIPS] LoRa 端末 LRA1 日の出までの秒数計算

注意:これは「超」簡易計算です。ここで算出した日の出までの秒数は数分のズレがあります

 ある地点の日の出、日の入りの時間を月毎に取得したので表っぽくしておく
カッコ内は0:00からの経過秒数 

日付  日の出       日の入
---- ----------- ------------
 1/1 6:54(24840) 16:29(59340)
 2/1 6:42(24120) 17:01(61260)
 3/1 6:07(22020) 17:34(63240)
 4/1 5:19(19140) 18:05(65100)
 5/1 4:36(16560) 18:35(66900)
 6/1 4:09(14940) 19:03(68580)
 7/1 4:11(15060) 19:13(69180)
 8/1 4:34(16440) 18:54(68040)
 9/1 5:03(18180) 18:12(65520)
10/1 5:31(19860) 17:24(62640)
11/1 6:02(21720) 16:40(60000)
12/1 6:35(23700) 16:19(58740)

LRA1のインタラクティブモードで
? datetime(clock)
24/06/18 09:14:35
OK
と返ってくる

「LRA1_ソフトウェアリファレンスマニュアル」によると
TOINT(文字列 [、[オフセット] [、[文字数]]])   文字列中の指定部分を数値に変換
とのこと

左記の ’24/06/18 09:14:35’ の中の '06' と '18' を「整数として」抜き出す
? toint(datetime(clock), 3,2)
6
? toint(datetime(clock), 6,2)
18
それぞれ整数で取れる

'09:14:35' の '09' '14' '35'を「整数として」抜き出して本日0時からの経過秒数算出
? toint(datetime(clock),9,2)*3600 + toint(datetime(clock),12,2)*60 + toint(datetime(clock),15,2)
33275
OK

ここまでを踏まえて BASICで書いてみる

10 Gosub _until_sunrise_time
20 If I>0 Then
21   '算出値取得した 
22   '日の出までSleepしたり日の出から晴れるのが分かっている場合は少し早く稼働したり
30   Print "until_sunrise_time ";I
40 Else
41   ' エラーだろう
50   Print "NOP ";I
60 EndIf
999 End


10000 ' 次の日の出までの秒数Iを返却する 0はエラー 変数IJN使用
10002 ' 毎月1日~9日  :1日の日の出時刻までの秒数算出
10003 ' 毎月10日~20日:(今月1日と次月1日の中間時刻までの秒数算出
10004 ' 毎月21以降    :翌月1日の日の出時刻までの秒数算出
10010 _until_sunrise_time
10020   N=ToInt( Datetime (Clock),3,2)
10040   '0時から現在までの経過秒数
10050   I=ToInt( Datetime (Clock),9,2)*3600+ToInt( Datetime (Clock),12,2)*60+ToInt( Datetime (Clock),15,2)
10060   ' 下記  ToInt( Datetime (Clock),6,2)<10 Then は上旬 Elseif ToInt( Datetime (Clock),6,2)>20 Then は下旬 Elseは中旬
10070   If N=1 Then If ToInt( Datetime (Clock),6,2)<10 Then J=24840 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=24120 Else J=24480 EndIf
10080   ElseIf N=2 Then If ToInt( Datetime (Clock),6,2)<10 Then J=24120 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=22020 Else J=23070 EndIf
10090   ElseIf N=3 Then If ToInt( Datetime (Clock),6,2)<10 Then J=22020 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=19140 Else J=20580 EndIf
10100   ElseIf N=4 Then If ToInt( Datetime (Clock),6,2)<10 Then J=19140 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=16560 Else J=17850 EndIf
10110   ElseIf N=5 Then If ToInt( Datetime (Clock),6,2)<10 Then J=16560 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=14940 Else J=15750 EndIf
10120   ElseIf N=6 Then If ToInt( Datetime (Clock),6,2)<10 Then J=14940 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=15060 Else J=15000 EndIf
10130   ElseIf N=7 Then If ToInt( Datetime (Clock),6,2)<10 Then J=15060 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=16440 Else J=15750 EndIf
10140   ElseIf N=8 Then If ToInt( Datetime (Clock),6,2)<10 Then J=16440 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=18180 Else J=17310 EndIf
10150   ElseIf N=9 Then If ToInt( Datetime (Clock),6,2)<10 Then J=18180 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=19860 Else J=19020 EndIf
10160   ElseIf N=10 Then If ToInt( Datetime (Clock),6,2)<10 Then J=19860 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=21720 Else J=20790 EndIf
10170   ElseIf N=11 Then If ToInt( Datetime (Clock),6,2)<10 Then J=21720 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=23700 Else J=22710 EndIf
10180   ElseIf N=12 Then If ToInt( Datetime (Clock),6,2)<10 Then J=23700 ElseIf ToInt( Datetime (Clock),6,2)>20 Then J=24840 Else J=24270 EndIf
10190   Else
10200     I=0:Return
10210   EndIf
10220   '下記 I>28800 Then I=J+(86400-I) は0時前の場合の補正
10230   If I>28800 Then I=J+(86400-I) Else I=J-I EndIf
19999 Return


テストが足りないかもしれません。流用する際は十分検証してください
そもそもClock値はズレ進んでしまうのでこんな大雑把な計算にしました

2024/06/17

[TIPS] LoRa 端末 LRA1 時刻設定(リモート側)

 リモート局LRA1はスタンドアロンで動くのでラズパイや外部マイコンからの時刻設定は出来ない
GPSも無い、RTCバックアップも無い
という状況で基地局LRA1から時刻をLora通信で受け取って自身にセットしてみた

最初に決めごととして通信先頭が"002" だったら時刻設定コマンド、その場合続いて Clock値が入ってくるとした場合


■基地局LRA1

10  Send "002";Clock
20 End

■リモート局LRA1

10 Recv 5000
20 If Stat=10 Then
30   If ToInt(Rxd(8))=48&&ToInt(Rxd(9))=48&&ToInt(Rxd(10))=50 Then
40     Gosub _calc_clock:Clock=B
50   Endif
60 Endif
70 Stat=0
80 Print "20";DATETIME(Clock)
999 End

30000 _calc_clock
30010 B=((Chr(ToInt(Rxd(11))))*100000000)
30020 B=B+((Chr(ToInt(Rxd(12))))*10000000)
30030 B=B+((Chr(ToInt(Rxd(13))))*1000000)
30040 B=B+((Chr(ToInt(Rxd(14))))*100000)
30050 B=B+((Chr(ToInt(Rxd(15))))*10000)
30060 B=B+((Chr(ToInt(Rxd(16))))*1000)
30070 B=B+((Chr(ToInt(Rxd(17))))*100)
30080 B=B+((Chr(ToInt(Rxd(18))))*10)
30090 B=B+(Chr(ToInt(Rxd(19))))
39999 Return

こんな感じで基地局LRA1から貰ったClock値をリモート局LRA1でセットする

これで Clock値がズレていく件は優先度が低くなって一旦保留にできそう

基地局LRA1でラズパイからClock値をセットするのはこちら

以上


2024/06/15

【諦めて別の方法に】LRA1でClock値から日の出日の入り時刻を導いてみようとした

はじめにお断りしておきます
「Clock値から日の出日の入り時刻を導いてみよう」というのは諦めて別の方法を採りましたっていう話です


ソーラーパネルとスーパーキャパシタを使った電源で、夜間できるだけ多くの時間LRA1を動かしたいときがある「かも」しれない
例えば田植え前の田んぼに水を入れ始めて数週間は夜間の水量の推移を知りたい、早朝、それを参考に行動計画を立てるのだ
とかあるかも。田んぼやってないですが

「バッテリー容量増やす」というのはできないです
LRA1含むソーラーバッテリーシステム一式で200g以内の重さが絶対条件なのです。現在の試作機の重量は160gくらい。これに防水ケースなどの重さが加わります
リモート局LRA1なので外部マイコンでやる、というのは考えないです

日の出まであと何分かがわかればどれだけ電力消費していいか参考にできると思う。現在のバッテリー電圧と日の入りまでの時間から間欠運転時間の調整もできる

そこでLRA1のBASICで日の出日の入り時刻をClock値から求めてみる

ちなみに日の出少し前や日の入り後しばらくは空が明るいけど、実験しててわかったのは空が明るいだけたとソーラーパネルの電圧として有効な数字(1.8V以上)は出ない
まあ、使っているソーラーパネルの特性なんですけどね
2枚セットで税込1299円のソーラーパネル 笑 

日の出日の入り時刻の計算方法を調べてみたら結構な量のコードになることが分かった 汗
知りたい都度計算していたら計算機資源の無駄なので表で持てばいいやに着地
その表を探してみたらちょっと情報が少ない。。。いや日の出日の入りを検索できるサイトはたくさん有るんですが、欲しいのはピンポイントで標高を考慮して日の出日の入りを見れるサイト

すばらしい機能です

知りたい日付を入力して地図で設置予定の山の中をピンポイントで指定すると

2024年06月15日の日の出・日の入り(標高333m)
日の出 04:07 南中時刻 11:39 日の入り 19:10

のように表示してくれます。これはすごい

ブラウザの「開発者ツール」でPOST値などチラ見してみるとどうやら
https://www.tsukuba.co.jp/sun-gis/json.php?latlng=39.321052031997944%2C140.5691993236542&ymd=2024-06-15
のように緯度経度と日付を指定してブラウザのURL入力欄に入れるとJSONでレスポンスを返してくれる親切設計
↑ 緯度経度は適当な場所を指しています。設置予定場所ではありません

毎日の日の出時間はいらないので今年12か月分、毎月1日と15日のデータを入手しました
大変助かりますありがとうございます

ブログタイトルの「Clock値から日の出日の入り時刻を導いてみよう」は、やりませんでしたが欲しいデータを入手できました
ちなみに年によって日の出日の入り時刻に大きな差は無いとのことで同じデータを毎年使っていけるようです



LRA1ソーラーパネル電源実験中

 ソーラーパネルとスーパーキャパシタを繋いだ電源を実験中なんですが
使っているキャパシタは5.4V 25Fで容量は大きいのか小さいのかわかりません
キャパシタとして考えるととてつもなく大容量なんですが、蓄電池的に考えると 5.4V 18.75mAh!?なので小さいです
ソーラーパネルとLRA1
ひどい結線ですが
ベースに見える黒い四角の板はソーラーパネル(2.5W5V/500mAh)の裏面
左側の銅色の部分は銅箔テープでベタグランド
銅箔テープに囲まれた中にあるのはDCDCモジュールとショットキーダイオード
中心に横たわっているのがスーパーキャパシタ(5.4V 25F)
スーパーキャパシタの上に張り付けているのは電圧センサ
で右下にLRA1です
ちなみにベタベタ貼っている黄色いセロハンテープ状のものは中国製カプトンテープもどきです
「もどき」ですが半田コテをあてても大丈夫な耐熱性があって何より安いので重宝しています
セロハンテープ感覚で消費できます
これで重量154g

これを南に向けて垂直に立てかけておくと今の季節(6月中旬)だと朝5時過ぎにLRA1が起動します。夕方20時過ぎにDCDCモジュールの動作下限2.0Vを切ってLRA1は停止します
晴れや薄曇りであればです。天気が悪く暗い日は10時くらいにLRA1が起動して夕方17時過ぎに停止します
充放電状況を観察する実験中なのでLRA1は起動できる間は起動したままで5分毎にキャパシタの電圧を送信しています

LRA1が停止する原因というかトリガはキャパシタ電圧が
DCDCモジュールの動作下限2.0Vを切って電源供給が止まることなので、余裕をもって自分からDeepに移行すれば夜間も間欠動作や数十分の連続動作が可能と思います
いまはこんな状況


2024/06/05

[TIPS] LoRa 端末 LRA1 時刻設定

 LoRa 端末 LRA1 は独自の BASIC言語でプログラムが書けて、電源さえ付ければ単体でプログラムの通り動作するんで助かっていますというかまだ運用していないので助かりたい、という段階

で、プログラムを書いていろいろ実験しつつ、ひとつ困ったことがありました
それは時刻というか日時設定です
電源が入ってからカウントアップするクロックはあるものの、電源が入るたびに0スタートになります。
そう、RTCの電源バックアップが無いのです。

じゃあ電源バックアップするかRTCを後付けするか考えると微小ながら電力を喰うのでNoです
GPSモジュール付けて時刻取得するか?もっと電力を喰うのでNoです

で、考えてみました


BASICで Print DATETIME(Clock)
のように DATETIMEコマンドを文字列中で使用したとき Clock変数は
「2020/1/1 00:00:00」からの経過秒数
で扱われるとのことなので

現在unixtimeから「2020/1/1 00:00:00」の unixtime 1577804400 を引けば Clock値がでます
Clock変数は LRA1のコマンドで Clock=1 のように設定できるので
ラズパイとLRA1をUART接続し、ラズパイから下記シェルコマンドを入力してLRA1のClockを設定

× uxtime1=$(date '+%s');uxtime2=$(($uxtime1-1577804400));echo -e "Clock=${uxtime2}\n" >/dev/ttyS0

〇 uxtime1=$(date '+%s');uxtime2=$(($uxtime1-1577804400));echo -e "Clock=${uxtime2}\r\n" >/dev/ttyS0

# 「/dev/ttyS0」部分は環境によっては「/dev/ttyAMA0」とか他のものになっているかも

この時 LRA1に UARTでコンソール接続していると device busy みたいな感じのエラーになるので注意が必要


Clockが設定できたらあとは LRA1のBASICプログラムで
Print "20";DATETIME(Clock)
とかすれば
2024/06/05 10:25:17
のように表示されてめでたし

あ、これはラズパイ接続している基地局LRA1のハナシで
リモートLRA1 はスタンドアロンなのでClock値をセットするとしたら別のやり方になります
それはこれから実験してみます

と思ったけど厳密な時刻を求めないのなら基地局が受信したときの日時をデータ発生日時として使えば良いのでリモートLRA1 の時刻合わせは要らないかな?

PS. 2024/06/11 に気がついたが、Clockを設定しても1日で10分以上ズレ進む。こんなものなのかな?個体差?ま、基地局側は毎日時刻合わせすればいいか

2024/06/13 また気付いた。時刻がズレていくのはリモート局LRA1だけみたい
10分で4、5秒くらい進む
1日あたり720秒(12分)か

Delay や Sleep に入る前や後で待機時間のようなものがあるんだろうか?
いやリモート局のClockは進んでいくんだから待機時間じゃない。何だろうか???
LRA1ファームウェアは基地局とリモート局で同じもの
>ver
i2-ele LRA1
Ver 1.26.f+
OK

いろいろ試して切り分けしたいけど
いま動かしてる2台のLRA1はソーラーバッテリーシステムの実験で使用中だから止めたくない
切り分けのため3台目のLRA1を開封する時が来たか・・・汗

■基地局側LRA1 BASICプログラム(Clockズレない)
  1 RxStop
 10 Recv 0
100 _LOOPSTART:
200   If Stat=10 Then
210     Print "20"; Datetime (Clock);" From:";Rxdw(2);" RSSI:";Rssi;" ";Rxd
220     Stat=0
230   Else
240     If Stat!=0 Then
250       Print "20"; Datetime (Clock);" Error! stat:";Stat
260       Stat=0
270     EndIf
280   EndIf
400   Delay 100
999 Goto _LOOPSTART

■リモート局LRA1 BASICプログラム(Clockズレる)
110 SpiBaud=0
120  ^=""
999 RxStop
1000 Do
1010   For I=1 To 5 Step 1
1020     C=Adc(10)
1030     If I=1 Then V=C EndIf
1040     If I=2 Then W=C EndIf
1050     If I=3 Then X=C EndIf
1060     If I=4 Then Y=C EndIf
1070     If I=5 Then Z=C EndIf
1080     Gosub _wait
1090   Next
1100   ^="Clock=";Clock;" ";V/250;".";Form("D02",((V-((V/250)*250))*100)/250);" ";W/250;".";Form("D02",((W-((W/250)*250))*100)/250);" ";
1110   ^=^;X/250;".";Form("D02",((X-((X/250)*250))*100)/250);" ";Y/250;".";Form("D02",((Y-((Y/250)*250))*100)/250);" ";Z/250;".";Form("D02",((Z-((Z/250)*250))*100)/250)
1120   Print "20"; Datetime (Clock);" Send Data=";^
1130   Send ^:^=""
9999 Loop
10000 _wait
10010   Sleep 20
10020   Delay 20000
10030   Sleep 20
19999 Return

■リモート局LRA1 10010行から10030行をこうしてみた
10010   'Sleep 20
10020   Delay 60000:' Delay 20000
10030   'Sleep 20
↑ 上記やったが変わらずClockズレる(ズレ進む量も同じ)
となると Sleep は原因ではなさそう
Delayも基地局側で使っているので問題ないだろう
Adc? あ、もしかして文字変数 ^(キャレット)の使い方だろうか?

■文字変数 ^ キャレットの使い方を間違っているかもしれず、キャレットを使わないよう 1100行目から1130行目をこうして ↓ みた
1100
1110
1120   Print "20"; Datetime (Clock);" Send Data=";Z/250;".";Form("D02",((Z-((Z/250)*250))*100)/250)
1130   Send Z/250;".";Form("D02",((Z-((Z/250)*250))*100)/250)
↑ 上記やったらClockズレなくなった
と思ったけどズレ進む量が小さくなっただけで4時間で39秒進んだ
1日あたり234秒(3分54秒)か
これくらいなら普通なんだろうか!?

Clockがズレ進むのは主に文字変数 ^ キャレットの使い方がマズイようなので何がマズイのか調べよう







2024/05/19

[成功] LoRa 端末 LRA1 現場と自宅間で疎通確認

 ソーラー発電の自立電源で動作するリモート局LRA1がなんとか動き出したので設置場所として目を付けていた現場へ疎通確認のテストに行きました。
地理院地図で現場と自宅の地形断面を調べると完全見通しです。
現場は自宅方面が下り急斜面になっていて920MHzという周波数のハイトパターン(っていうんですかね???)を考えるとリモート局の給電部地上高が多少低くてもフレネルゾーンは十分な環境になりそうです。
もっとも、冬は5メートル以上積雪がある場所だと思うので5メートルより上になるよう設置する必要がありますが・・・


このリモート局LRA1はテストのためバッテリーである 25F/5.4Vスーパーキャパシタの電圧を5分毎に送信します。

# もう少し詳しくいうと1分毎に計測した電圧を5分に1回、5件分を1データとして送信します。また、この数字を見てバッテリーが充電中なのか放電しているのかリモート局LRA1自身が判定したりしています

送受信に関するLoRaパラメータはすべてデフォルト値で以下の通りです
変調方式       : LoRa
送信出力       : 13 (dBm)
拡散率(SF)     : 10
帯域幅(BW)     : 125kHz
符号化率(CR)   : 4/5
チャンネル(CH) : 36= 送受信周波数(FRQ) : 923000kHz
ただ、送信出力に関しては電源電圧が3.6V時のようで!?ワタクシのリモート局LRA1は3.35V供給のため設定値より低い出力かもしれません(憶測)

基地局LRA1は自宅2階西側の窓際に設置しました。窓ガラスは開けていて網戸越しの受信です。シリアル接続でラズパイに繋がっていて携帯電話網経由のsshでラズパイにリモートログインすれば受信状況をリアルタイムに確認できます。


リモート局の現場は自宅から西方向直線距離 16.8Km地点の山の中、標高327m地点で冬期封鎖以外は車で行けます
(ちなみに基地局LRA1を置いている自宅の標高は57m)

現場に着いて付近を見渡すと背の低い松の木があったので地上高1.5メートルくらいの枝にリモート局LRA1を置いてみました

普通であればもっと障害物からアンテナを離すとか考えるんですが、本番設置も針葉樹の葉っぱがある枝を想定しているのでこれでOKです。


数分後、現場で自宅のラズパイにログインしていたiPad miniのssh画面に基地局LRA1が受信した旨表示されました!
その後も5分毎にRSSI -125 !!で安定して受信できました
# 途中欠測しているのはリモート局LRA1が風で煽られて枝から落下したためです 汗
1行1受信でRSSIに続いて起動からの経過秒数,4分前の電圧ADC値,3分前,2分前,1分前,現在の電圧ADC値という送信データにしています
使った安物の電圧センサはテスタで実測したところADC値を250で割ったものが電圧値になるようでした。0Vから6Vまで測ってみたところ電圧に対してADC値は直線的な値になりました。例えばADC値500は2.0VでADC値1000は4.0V。これは電圧センサに3.3Vを加えた場合で他の電圧では試していません


こんな設置環境で16.8Kmという距離を疎通確認できたので今後の作業は安心して取り組めそうです
なぜならば基板むき出しで屋外設置できないのでまだまだ製作が続くのでした


2022/11/30

LoRa 端末 LRA1 でレピータ計画 その2

 IOT用のソーラー電源の実験結果をつらつら追記していきます。あとで別のカタチでまとめようと思います。

ソーラーパネルとスーパーキャパシタの電源単体で太陽の光にあてて11月末の秋田県で12時から3時間充電しました。おそらく満充電まで行っていないと思われます

充電前の電圧を測り忘れましたが充電後5.23Vになったので無負荷で自己放電していく様子を観察してみます

■0.2F 5.5Vスーパーキャパシタ仕様
11/28 朝7時の積雪0cm 12時~15時くらいまで晴れていたので屋外の地面に平置きで充電。その後室温約5~10度の部屋にうつ伏せで保管
11/28 19時 5.23V
11/29  7時 4.90V
11/29 19時 4.73V
■24時間で 0.5V くらい降下してます
11/30  7時 4.45V
11/30 19時 4.29V
■24時間で0.44V降下ん?電圧が下がる速度が鈍ってきた!? 
12/1     7時 4.14V
12/1   19時 4.02V
■24時間で 0.27V 降下
12/2   積雪17cm   7時 3.93V
12/2    19時 3.84V
■24時間で 0.18V 降下
12/3   積雪17cm  7時 3.75V
12/3    19時 3.67V
■24時間で 0.17V 降下
12/4    積雪0cm 7時 3.53V
以上で0.2F 5.5Vスーパーキャパシタ仕様の実験終了

この電源で 昇降圧DC/DCコンバータを使って 3.3V に変換してLRA1を動かそうと思っています。
使用予定のDCDCコンバータは電圧が2.5Vに下がるまで使えることになっているので7日間は動作可能な電圧を維持できるかも
そう考えると踏ん張っていると思います。無負荷ですけどね

氷点下ではどうなんだろうかと思い、
秋月電子で購入したのは VINATech社 VEC5R4505QG-H のようでデータシートを探してみましたが温度特性を見つけることが出来ませんでした。
ただ一般的にはスーパーキャパシタの1F以上の容量のものは耐寒性能が良いとの記述をDigi-Keyサイトで読みました。

スーパーキャパシタの放電時間(運転可能時間)の計算式を同じくDigi-Keyサイトで見つけました。
t(sec) = C(F) * ( (Vmax - Vmin) / Imax)

t(sec) = スーパーキャパシタが回路に電力を十分供給できる時間(秒単位)
C(F)   = 静電容量(ファラド単位)
Vmax   = 放電初期時間のコンデンサの電圧
Vmin   = コンデンサが回路への給電に不十分になる前に放電できる最小電圧
Imax   = 回路の最大(最悪ケース)電流消費(アンペア単位)

とのことなのでこれを今回の LRA1 レピータシステムにあてはめると
1115sec ≒ 5F * ( (5.4V - 2.5V) / 0.013A)
↑ LRA1が全力で送信し続けたと仮定して0.013A。受信時は 0.010A

1115秒 ≒ 18.5分だからなんか勝手に想像していたのと桁が違う 汗

391sec ≒ 5F * ( (5.4V - 2.5V) / 0.037A)
↑ LRA1が全力で送信し続けたと仮定して0.037A。受信時は 0.013A

391秒 ≒ 6.5分

無知なので1~2時間くらい動かせると想像してました 笑

ということでたとえば3時間動かしたいのであれば49Fくらいの容量が必要そうです
こんなのを4個使えばいいのかも → 電気二重層コンデンサー50F2.7V
2160円 = 540円 * 4個
結構なお値段です

これなら6時間駆動 → 電気二重層コンデンサー100F2.7V
3520円 = 880円 * 4個
高いから無理
でもこの容量で重さが80g(20g * 4個)なのは魅力があります
ワタクシのペイロード数百グラムのヘナチョコドローンでも安心です

冬のボーナスが出るまで資金がないのでまずは 5Fの容量でスーパーキャパシタがどんなものかテストしていきます

2022/12/4 積雪0cm 10:00 5F 5.4Vのスーパーキャパシタに乗せ変えました
みぞれが降る中、2階屋内東向きの窓際に放置

■5F 5.4Vスーパーキャパシタ仕様
12/4 10時 35mV これが充電前電圧
12/4 16時 1.11V 
いくらか充電されてるびっくり!太陽がどこか分からないみぞれの日なのに
一時間あたり0.179V( (1.11-0.035) / 6時間 ) 電圧が上昇
屋外で早朝から日没までだともう少し充電されるかも
空充電からのスタートの場合、日が差さない日が数日続いても2~3日で最低ラインの2.5Vに到達できるかもしれない
満充電で運用を開始した場合2.5Vまで下がったら運用は終わってそこから継ぎ足し充電なので晴れの日が来るまで途切れ途切れで運用が続くのかも
なるほどこうなるとカットオフ電圧監視機能付きのモデルがいいのかもしれないな

ちなみに夕方外が真っ暗になった後
12/4 17時 0.91V と電圧が下がって来た
1時間で0.2V低下。24時間だと4.8V低下かも?
こうなると見通しは若干暗めになって自己放電による運用時間の再計算が必要そう
まずは満充電にして自己放電の様子を見たいけど、よごでのこの季節にまとまった日照は期待できない・・・
実験を進めるために手っ取り早く安定化電源で充電しようかな

12/5 11時 アマゾンで 2.7V500Fを2個使った 5.4V250F のスーパーキャパシタモジュール(バランス回路付) を2つ注文しました。お値段 4,958円(2,479円×2) でした。耐久性やら容量とか耐圧の数字の信憑性はかなり怪しいものの 250Fでこのお値段はちょっと実験用途だと魅力的。深セン市からの発送のようで年内に届くか微妙みたいです。まあ製品自体微妙というか怪しいですが・・・
縦73mm 横65mm 厚さ36mm 重さ157g これが2個なので大きいが重さは2個合計314g

2個並べて置くと置き方によって
1. 縦73mm 横65mm 厚さ72mm (約7センチ角のキューブ状)
2. 縦73mm 横130mm 厚さ36mm (横長)
3. 縦146mm 横65mm 厚さ36mm (縦長)
というバリエーションになるが、構造からするとアタマを上にしたほうが良さそうなので 1 が良いのかもしれないと思ったが雪が積もりやすいので上の面積が少なくなるよう 3にする
あとノイズ発生源になると思うのでシールドした上で LRA1 とは距離をおいて下に付ける。
下記、簡易図解(横から見た図)

 |
□ LRA1+アンテナ
 |
 |
 |
 |
 |
□ ソーラーパネル+スーパーキャパシタ

12/5 19時 4.15V 測った瞬間びっくりした!朝 0.91V の状態で東の窓際に無造作に置いた。今日は小雪混じりの曇だった。気温0度から2度のち0度
要は太陽が出ていなくてもとにかく日中だったらどっち向きの方角に置いてもそこそこ発電/充電するってことか!?なんだこりゃ面白いなあ

なんか自己放電量とか消費電流の削減はもちろん大事で実験しなければならないけどそんな細かいことはどうでもいいみたいなダイナミックな動作の予感がしてきた 笑
もしかするとキャパシタの種類というか型番によるところがあるのかもしれないと思いつつ本番用のアマゾンで買ったやつの到着を待ちながら5F 5.4Vで実験を継続しよう

どうやらスーパーキャパシタの使用開始時には「慣らし」が必要らしい
低電圧でゆっくり充電。放電したらちょっと電圧あげて充電・・・の繰り返しらしい。
そうすることで充放電の特性が安定するとのこと。安定するといっても良いほうに安定するかは別の話のようで悪いほうに安定するかも。本番用は中国製だし

12/6 アマゾンで買った 5.4V250F キャパシタが深セン市から発送されたと通知が来ていた。
12/6 7時 昨日と同様、東側の窓際に放置。7時時点では薄日が差していた。
「慣らし」のため数日かけて充放電を繰り返そうと思う
まあ何度も「観察」していればそれが「慣らし」になるんだろうとは思います
早く充放電を安定させるために週末に安定化電源で慣らし充電してみようかな

12/6 15時 昼まで使えていたケータイ(iPhone)がバッテリー0%表示になって充電出来なくなった。もちろん電源は入らない。昼はバッテリー100%だったのに・・・代替えのケータイを注文したが到着予定が分からずいつから使えるのか不明
ぜんぜん関係ないはずなんだけどまさかこのトラブルは今やってるバッテリーの充放電の実験が影響しているのか!?って疑うタイミングだ。
幸いdocomoメールだけは自宅PC限定だがSMS認証無しで使えて助かった

ただいま5F 5.4Vキャパシタで実験継続中・・・
12/6 19時  3.40V 経緯不明だけど自己放電?まだ安定していないのかも。でも十分使える電圧だ。薄日が差したのは朝30分くらいで本日くもりのち雪だった
12/7 7時 東側の窓際に放置。きょうは曇りのち雨の予報
12/7 10:30 SPI-2328V-020F 2つ注文した 2.8Vで出力ON 2.3Vで出力OFFのやつ
12/7 8時ちょうど気球DO3GU-9が青森県深浦沖でビーコンを出しながら東へ移動しているのに気づいた。TUS-10 もずっと受信していたが上位サーバに記録されたのは距離205Km地点の受信分だけだった
12/7 19時  3.86V きょうは曇りのち雨だった
12/8 16時  新しいケータイ(iPhone)が届いた
12/8 19時  4.72V きょうは曇りときどき雨だった
12/9 19時  4.82V きょうは曇りときどき晴れだったが昼からときどき晴れだったので東の窓際に置いてるソーラーパネルに恩恵は少なかったんだろうな
12/10 19時  4.79V きょうは曇りときどき雨だった
12/11 19時  5.13V きょうも曇りときどき雨だった

■ひとつ参考値が出たのでメモ
充電にかかる時間は t = C × V ÷ I だそうなので
250F 5.4V のスーパーキャパシタを 300mW 5.5V のソーラーパネルで充電した場合、
25000sec (416min ≒ 6.94hour) = 250F * 5.5V / 0.055A
となるっぽい
キャパシタは2組(2個一組を2組)使うから2倍の14時間近くかかるかも
これは晴天に充電0 から開始した場合
発電の 0.055A のうち LRA1 が 0.013A食うからもっとかかる

極小ソーラーパネルなのでそんなものかも
実際の運用は継ぎ足し運転だろうから天気が悪いと徐々に電圧が下がっていって2.5~2.3Vで停止するんだろう。その後天気次第で時々動いては止まるの繰り返しかな
これは深夜の省エネ運転機能が必須と確定。出来るだけ部品を増やしたくないけどリアルタイムクロックの RTCが必要だなということで秋月電子の RTC8564 を検討中

12/12 19時  5.11V きょうは曇りだった

そういえば超高高度のAPRSビーコンを出す気球は電源をどうしてるんだろう?
あれこそいろんな意味で軽い発電してるんじゃなかろか
日本ではやってないから海外情報だな
キーワード「High altitude balloon APRS solar」と入れて調べてみると複数のチームが同じソーラーパネルを採用している(いた!?)ようだ

説明によると
PowerFilm の 240mW 太陽電池 MPT4.8-75 2つ。これらの 2つのパネルは、地元の正午に最大の電力を得るためにまっすぐ上に傾けられます。バッテリがないため、6ボルトで 2.5ファラッドの容量を持つ 2つのウルトラキャパシタを使用して、送信機の動作中にエネルギーを蓄えます」
だそうです
ソーラーパネルのサイズは 94 x 73 (mm) で重量 1.98g すごく軽い!!
なんと日本のマルツで扱っていたが(お値段 1,842円くらい)ワタクシにはオーバースペックなので購入は見送った

12/13 19時  5.12V きょうは曇りときどき雨のち完全な雨
12/14 積雪0cm 19時  5.01V きょうは雨雪のち吹雪

すごいものを発見した!
補足説明のようなのが作者のブログにあった
当然技適は通してないけどほしい~
ダミーロードつけて自宅内で遊んでみたい

配送方法をチェックしたら南アフリカのショップだよ・・・勇気がいるな 笑

12/15 積雪11cm 19時  4.92V きょうは大雪

12/16 積雪48cm 10時 南アフリカのショップ Giga Technology さんに質問してみました
1.日本へ発送できる?
2.ラズパイ2m送信の商品は再入荷する?
ただいま返信待ち
12/16 15時 返事が来た。
日本に発送可能。何個欲しい?住所くれればDHLの送料見積もる

12/16 19時  4.83V きょうは大雪。おとといからもさもさ降ってる
12/17 積雪50cm 19時  5.44V 明るい曇のち曇り。満充電になった
12/18 積雪33cm 19時  5.17V 早朝から雪のち大雪

朝、出勤前に気がついた。東の窓際に置いてる 5F 5.4Vキャパシタのソーラーパネルだが網戸越しになってた。網戸を動かしたら少し明るくなった。いままで薄暗かったんだな。気付かなかった

12/19 積雪70cm 9時 南アフリカのショップ Giga Technology さんにこちらの住所と欲しいものを返信した。日本との時差が7時間らしいので現地はいま午前2時かな

12/19 12時 2.7V500Fを2個使った 5.4V250F のスーパーキャパシタモジュール(バランス回路付)が到着した。予定の到着日は21日~27日だったのでだいぶ早い到着だ
電圧はそれぞれ 8.4mV 9.2mV と完全放電の状態。新品だからあたり前だけど
2.7V500Fを2個使った 5.4V250F のスーパーキャパシタモジュール(バランス回路付)

5.4V250F のスーパーキャパシタモジュール

R6ナナメってる・・・表面実装の部品の場合リフローで正しい位置に自己整列するらしいからこれはSMDを手半田してるのか!?
キャパシタ電極のはんだ付けの状態も怪しいな
すごいなチャイナクオリティ 新品購入したら使う前に手直し必須 笑

12/19 19時  5.14V 雪
12/20 積雪76cm 19時  5.27V 曇り
12/21 積雪63cm 19時  5.19V 曇り
12/22 積雪54cm 19時  5.15V 曇り時々雨
12/23 積雪36cm 19時  5.18V もさもさ雪
12/24 積雪65cm 19時  5.15V 小雪のち曇り
12/25 積雪49cm 19時  5.19V 曇り時々湿雪
12/26 積雪49cm 19時  5.14V 曇り時々雨
12/27 積雪46cm 19時  5.19V 曇り時々雨
12/28 積雪42cm 19時  5.39V 曇りのち雨

2023/01/15 追記 12/28 夜、自宅2階階段から落下して緊急入院したためペンディング

2022/11/25

LoRa 端末 LRA1 でレピータ計画 その1

1年ほど前から構想妄想していた「LoRa端末 LRA1 の山中レピータ計画」、進んでいないようで実はちょこちょこやっていました。やっている割に目に見える進捗はありませんが・・・


まず設置場所ですが、「電波伝搬シミュレーション・ソフト Radio Mobile」を使って横手盆地周辺の山々に無線機を置いてみました。
その結果、三ツ森山の山頂付近(地理院地図によると標高339m地点)が良さそうだと決めました。
三ツ森山からの電波伝搬シミュレーション
地理院地図の機能を使って設置予定場所から自宅までの地形断面図を確認しました。920MHzの波長からすると完全見通しです。
三ツ森山と自宅間の地形断面図

標高339mの現場で地上高2mにレピータを仮設置して直線距離16.5Kmの自宅基地局との疎通を確認できました。これでレピータの設置場所として良いという確証を得ました。

と、設置場所は決めたもののその後、主に電源をどうしようか一年間ダラダラと試行錯誤していました。

要件:横手市の三ツ森山に24時間365日連続運転できるLRA1をベースにしたLoRaレピータを設置して運用したい。冬は積雪があり氷点下20度になることを想定

これは結論からいうと要件を満たすために必要なバッテリーやソーラーパネルといった電源が大掛かりになるということで諦めました。
LifePO4バッテリーや30Wソーラーパネル、チャージコントローラーなどを購入し自宅で実験しながら考えた末に諦めたので金銭的な損失が大きかったなーと後悔しました。これらは何かに流用しようと思います

その後数か月間、何度か設置予定の現場へ行ってレピータを設置する具体的な方法をイメージしようとしましたが当初考えていた「地面から数メートルの高さのポール上に設置」も無理と判断しました。
現場付近の地形を何度も見ているうちにやっと気がついたんですが、冬は雪が吹き溜まりになり、おそらく深さ5~10メートルの雪に埋もれるだろうと思いました。

なのでLRA1と電源一式を地面から10メートル以上に設置する必要があります。これはもうアンテナタワー並の高さです
10メートル以上のポールを用意するか現場の木に登るか、など考えましたが安定して設置できる10メートル以上のポールなど調べても行きあたることなく、高所恐怖症で木に登るのも不可能なので手持ちのドローンで木に乗せる案を選択です。

持っているドローンは鉱山跡の探索で使っているもので機体に付いているカメラで動画や静止画を撮影するだけの中型空撮機(クアッドロータードローン)です。
そのためカタログスペックにペイロードという項目はありませんが実験してみたところ無風なら800g程度のものをぶら下げて操作できることが分かりました。
800gは限界値なので風の影響や設置回収を何度も行うことを考えて半分の400g以内をLRA1と電源一式の重量目標としました。

要件を変更:横手市の三ツ森山に晴れまたは薄曇りの日中のみ運転できるLRA1をベースにしたLoRaレピータを設置して運用したい。冬は積雪があり氷点下20度になることを想定。総重量は400g以下

ニッケル水素充電池が比較的寒さに耐えられそうだったのでゴミ箱部品箱にあった小さなソーラーパネルで電源を試作しましたが重すぎて断念(実測820g)
これも作ってから諦めたので何かに流用しようと思います。どんどん無駄なもの予備部品が増えてきました。
ニッケル水素充電池そのものが重いので作る前に気がつくべきでした 笑

最近になってスーパーキャパシタというものの存在を知り調べてみると充電池に比べて容量は小さいものの充電速度が速く特に重量が軽いらしく目標の400gを余裕でクリアできそうです。
自宅で動かしてみたくなり手っ取り早く Cyack lab さんから IOT用のソーラー電源を購入してみました。もう当初の構想だった365日24時間運転などどこへやら、です 笑
今回購入したのは型番 SPI-0000V-020F で 300mWソーラーパネル 0.2F/5.5Vのスーパーキャパシタで キャパシタ電圧による電源出力制御なしのタイプです。氷点下20度まで運用できるようです。
お値段 1600円 送料200円ですのでなんとか気軽に試すことができます。
同時に秋月電子で 5.0F 5.4V のスーパーキャパシタを購入しました。
まずは 0.2F で動かしてデータを取ってから 5.0F に付け替えて試してみる予定です。

日が昇ったら動きはじめて、夜は指定電圧まで下がったら又は基地局からの指示で DEEP SLEEP。早朝 電圧を確認してあわよくば日の出前から動かす、みたいな運用を妄想しはじめました。「早朝 電圧を確認して」の部分は RTC が無いので無理ですけど 笑

到着した IOT用のソーラー電源 です。すがすがしいほどのピンボケです。老眼なので撮影時にまったく気がつきませんでした

IOT用のソーラー電源 の裏側です。縦に2個並んでいる丸い物体が 0.2F スーパーキャパシタ

秋月電子の 5.0F 5.4V のスーパーキャパシタも同じ日に到着しました。
これから実験していきます

ドローンについては、DID地区上空や構造物距離30m未満の飛行など国交省からの許可・承認をとっております(東空運航第12461号)

2022/04/01

LoRa端末 LRA1 のケース選び

放置していた LoRa端末 LRA1

ちゃんと結線して組立てようと思い、タカチのページを見ながらケースは何にしようかなどと考えていてふと思いました。
「これフリスクのケースに入るんじゃ?」

ネットを検索して調べたところサイズは以下のようです
(LoRa端末の型番は LRA1-ADB2A-SMA) 

LRA1-ADB2A-SMA   / FRISK(内寸)
縦 54mm                     
 66mm
横 22.8mm                    32mm
厚 12.6mm                      9mm

厚さに問題あるようですがこれは 2.54mmピンヘッダのピンの長さです
ピンを根元から L型に寝かせて配線すれば入りそう
ここで気付きました。この基板のサイズはフリスクケースを意識したサイズなんですね
ようやく気付きましたよ>株式会社アイツーさん

ということでケースインしてみました

LRA1+FRISK

なんというフィット感!気持ちいい 笑

2021/09/12

LoRa 端末 LRA1 で Hello World してみました

株式会社アイ・ツーの LoRa端末 LRA1 を 2台使って疎通を確認してみました。
LRA1-ADB2A-SMA 2.54mmDIP化ボード(SMAタイプ) です
1台は自宅基地局を想定してラズパイ(Pi2B)に接続してラズパイから給電、もう1台は山の上に放置することを想定してUSB5V給電で仮配線しました。
汚い手抜き配線と写真で申し訳ありません
LRA1 基地局を想定したラズパイ給電
基地局を想定したラズパイ給電のLRA1

LRA1山中設置を想定したUSB5V給電
山中設置レピータを想定したUSB5V給電のLRA1

teratermでシリアル接続、電波を出して双方向通信できることを確認できました!
仮組み立てに半日掛かりましたがあっさり通信できました。
これで Hello World 完了です

SDR受信機があったので
FSK変調 と LoRa変調で同じデータを送信してスペクトルを見てみたのが下の画像です
よーく見ると動画でして Sメーターやウォーターフォールが動いています
画面下の黒いコマンドラインから LRA1 を操作して modem=0(FSK変調)で送信、次に modem=1(LoRa変調)で送信しています。
LoRa変調はいろいろ撒き散らしていますね!
ウォーターフォールだけ見ると時間を極端に短くした FT-8 っぽくも見えます
FSK変調とLoRa変調でどう違うのか近郊や長距離で実験してみたいと思います。
FSK変調とLoRa変調の違い

2021/09/04

LoRa 端末 LRA1 無線機が届きました

スイッチサイエンスから株式会社アイ・ツーの LoRa端末 LRA1 が届きました。
スイッチサイエンス LoRa
届いた箱と中身

技適取得済み型番 LRA1-ADB2A-SMA 2.54mmDIP化ボード(SMAタイプ)です。

3台買いました。基地局の家用と車で移動する端末用、それに山中設置のレピータ用です。
いろいろ検討した結果、この製品にしたのには訳があります。

JL7TUS は老眼でピッチの細かいものは扱えません。なので2.54mmピッチです。これでも厳しいですがジャンパーピンで処理します。

他の多くの製品同様、マイコンなどからコントロールするものなんですが、これは BASICインタプリタが内蔵というおっさんフレンドリーな仕様です。

事前に BASICプログラムを書き込んでおけば単体で動作するので消費電力が少ないということが決め手でした。これで良さげな高さの山にレピータを長期間放置できると思います。

センサーや LCD が付いたのもありましたがとにかく消費電力を少なくしたいのとアンテナは他のものと交換してみたいけど微弱電波なのでアンテナケーブルの損失は極力避けたいと思いこれにしました。

パラリンピック開催中の影響とかでまだ届いてない部品類がありますので揃ったら実験したいと思っております。

中学生以来に BASICプログラム書くのも楽しみにしているおっさんです

株式会社アイ・ツー LRA1 SMA
製品LRA1 2.54mmDIP化ボード

MySQL で SELECT into outfile 出来なくてハマった件

 Windows上の MySQL で SELECT into outfile で CSVファイルをエクスポートしようとしてハマったので残しておく 環境 Windows10 Pro バージョン 1809 MySQL 8.4.0 という環境で SELECT * FROM table1...