Bブログ

LoRa、GPS、そして TrackPoint のような感触のトラックボール

SX1262 向けの新しい LoRa パッケージ、受信機の通信速度を自分で割り出す GPS パッケージ、そして小さなデバイスについているトラックボールとキーボードの入力。

投稿日
著者
DevKirbyrawr
読了
約 3 分
2 台の無線機と、その間を飛ぶ、周波数が上がっていくチャープ。

小さなデバイスは画面だけではありません。無線、GPS、トラックボール、小さなキーボードを積んだものもたくさんあり、ゲームやアプリはそれらをタッチと同じように使えるべきです。このリリースでは、パッケージを 1 つ追加し、さらに 2 つを大きく前進させました。

deki-lora

deki-lora は、Semtech SX1262 を通じて LoRa パケットを送受信します。現行の LoRa モジュールやボードの多くに載っている無線チップです。コードは無線を取得して Send() を呼び、届いたものを信号強度と SNR と一緒に Receive() から受け取ります。無線は、送信していないときは常に受信しています。

代わりに引き受けてくれることが 2 つあります。

  • バスの共有。 多くのボードでは、無線はディスプレイと同じ SPI バスにつながっています。割り込み線が配線されていれば、ドライバーは無線に報告することがあるときだけバスを使うので、画面に向かっているフレームが待たされることはありません。
  • デューティサイクル。 ヨーロッパでは、868 MHz で送信してよいのは時間の 1% までです。ドライバーは各パケットの送信時間(time on air)からこれを計算し、違反してしまう送信は拒否して、どれだけ待てばよいかを返します。ほかの地域では、それぞれの周波数と上限を設定します。

デモには LoRa の画面があります。1 台で Ping を押すと、デモを動かしているほかのすべてのデバイスに、そのメッセージが信号強度とともに表示されます。

deki-gps

衛星と、それによって地上で得られる測位

deki-gps は NMEA を話す受信機ならどれでも読み取れ、今回はより多くの情報を読むようになりました。位置と時刻、高度、そして見えている衛星と使っている衛星の数です。GPS、GLONASS、Galileo、BeiDou のどれでも同じように扱います。

通信速度を 0 に設定すると、正しい速度を自分で見つけます。よく使われるレートを順に試し、チェックサムが正しいセンテンスが届くまで続けます。これは、同じボードでも複数の種類のモジュールが載って出荷されている場合に重要です。モジュールによって通信速度が同じとは限らないからです。また、屋内ではいつまでも測位できないこともあるので、どこまで進んだかを報告します。受信したバイト数、有効なセンテンスの数、衛星の数です。「測位できない」の原因が謎ではなくなります。

トラックボールとキーボード

パッドと、その判定に使う重なり

deki-input は、トラックボールをきちんとしたポインターとして扱えるようになりました。ThinkPad の TrackPoint のような感触になるよう調整してあります。ゆっくり転がせば精密に動き、勢いよく回せば画面を横切り、カーソルはカクカク進むのではなく、滑るように止まります。クリックはマウスのクリックとして扱われるので、タッチ向けに作った画面もそのまま使えます。

I2C キーボードは普通のキー入力として届くので、ゲームは携帯機でも PC でも同じように矢印キーを読めます。キーボードにバックライトがあれば、ゲームから設定できます。

手持ちのハードウェアに合わせたボタン

デモはまったく違うハードウェアの上で動くので、メニューはデバイスにないものをグレーアウトします。PC では LoRa とトラックボールの画面が無効になり、両方を持つ携帯機ではすべてが使えます。プロジェクトでも、ボードが立ち上げたプロバイダーを問い合わせれば、同じことができます。

これらはすべて 0.18.2 のパッケージに入っていて、LilyGO のボードパッケージを使えば、T-Deck Plus ですぐに動きます。

← すべての記事