2022年12月30日金曜日

E220-900T22S(JP)でLoRaを試してみた。

 前にTWELITE REDをテレメトリモジュールに使ったりしてみたけど、やはり2.4Ghz帯だと距離的に200~300mを超えると通信速度が落ちてしまって通信できなくなってしまう。ということでLoRaなら920Mhzでより遠くまで届くんではないかということで試してみることに。

E220-900T22SはAliexpressとかで500円とかで超安く売っていたので前から気になっていたんだけど、技適対応のがCLEALINKから出たっぽいのでE220-900T22S(JP)を試してみた。

CLEALINK E220-900T22S(JP)

さすが920Mhz、アンテナが長い。

まずは設定しないといけないんだけど、M0もM1もどうやら内部プルアップされているようで、TXとRXと電源を繋げば自動的にコンフィグモードに入ってる感じ。

ツールなんだけど、Windowsで設定したかったのでEBYTE純正ツールで設定してみることに。このツール、EBYTEの新しいサイトだと1.1なんだけど、1.0じゃないと設定できなかったので古いサイトから持ってくる必要がある。

E220_V1.0
E220_V1.0を起動するとこんな感じ。とりあえずE220-900T22S(JP)とUSBシリアル変換アダプタを接続すればこのツールで設定できる。ちなみに電源電圧は5V入れてもいいけど、信号は3.3Vまでなので注意かも。今回はESP32用の書き換えアダプタを使ってみた。
EBYTE E220_V1.0
とりあえず2台とも同じ設定にしてSet Paramしてみた。そんでもってM0とM1をGNDに落として電源に接続すればUARTの透過モードとして動くはず。とりあえず上記設定はMAVLink用。ためしにTWELITEが置き換えできるかどうか…

結果的にはArduPilotのMAVLinkでは帯域が足りなそうな感じ…
なんとなく通信できてそうだけど通信エラー出まくってしまうのでやっぱりMAVLinkみたいに結構たくさん通信している場合はTWELITEのほうが良いかも。Air Rateも5倍ぐらいあるし…
もしかしたら外部でマイコンとかでバッファしてフローコントロールしたら行けたりするかな?

もともとLoRaってセンサ類から定期的にデータを取るような通信用だしMAVLinkのようなテレメトリだと連続してデータを送るからあんまり向いてないのかな?
しかしそれにしても見通し良ければ普通に1kmぐらい届くみたいだし、9600bpsぐらいの低速で必要なデータだけ送れるようにすればすごく使えるかも。


2022年12月27日火曜日

ESP32-C3-WROOM-02を使ってみた

 秋月でESP32-C3-WROOM-02モジュールが売っていたので買ってみた。ついでにESP-WROOM-02用のブレーク基板もポチってみた。フットプリント同じだろうし…

ESP32-C3-WROOM-02

ESP32-C3-WROOM-02はESP32からBluetooth ClassicがなくなったかわりにUSBがネイティブ対応している感じで、ESP-WROOM-02と同じサイズ。MPUコアもRISC-Vになったりして色々違うけど。ESP-WROOM-02よりお安い。

AE-ESP-WROOM-02

一緒に購入したESP-WROOM-02用のブレークアウト基板、ピン配置だいたい同じだろうと思ってとりあえず購入しておいた。ESP-WROOM-02のピン配置のままブレッドボードにさせるようになっているので少し改造すれば使えそう。ちなみにESP32-C3-WROOM-02とESP-WROOM-02のGPIOのピン配置がぜんぜん違うので、シルクは電源とTX、RX以外当てにならない。ESP-WROOM-02ではGNDだった部分が、ESP32-C3-WROOM-02ではIO0とIO18になっていたのでGNDのパターンをカットしてジャンパすることにした。

AE-ESP-WROOM-02
ちなみに裏側はこんな感じ。裏側からみて左側の2箇所のGNDのパターンをカットして、表面のESP32-C8-WROOM-02をハンダするところの右上の18番と13番のVIAでGNDに繋がってるところ(IO0とIO18)をパターンカットしてからESP32を実装。
ESP32-C3-WROOM-02
そんでもってESP32-C3-WROOM-02を実装したあとにそれぞれIO0とIO18の場所をジャンパー。このブレークアウト基板は通常のブレッドボードでもじゃまにならないので便利。IOピンのシルクがぜんぜん違うので上からシールを作成して貼ったりすると便利かも。
ESP32-C3

ESP32-C3はUSBにネイティブ対応していてブートローダもUSB対応になってるので今までのようなUART用書込機も不要である。USBのピンはIO18がD-でIO19がD+になっている。しかしUSBは5Vなので3.3Vの電源も作る必要がある。
ESP32-C3を起動するためにはENを3.3Vに接続する必要がある。この状態でUSBにつなぐと何も書かれていないのでリセットを繰り返していた。書き込みモードに変更するためにIO8を3.3Vに、IO9をGNDに接続して起動するとUSBで認識されてUSB JTAG/serial debug unitとUSBシリアルデバイスとして自動的にドライバがインストールされた。

あとはArduinoからESP32C3 Dev Moduleで書き込みができるようになった。
USB接続を使ってシリアルモニタしたい場合はUSB CDC on BootをEnableにするのを忘れずに。
一旦Arduinoから書き込みしたらあとはそのまま書き込めるし、うまく書き込めないときはIO9をGNDに落とすだけで書き込めるようになった。

USB CDCだとリセットするたびにシリアルコンソール開き直すのが少し面倒。そしてWifiが切断されるたびにUSB CDCが切断される気が…
とりあえずTXとRXにUSBシリアル変換アダプタを付けてUSB CDC on BootをDisableにしてデバッグしたほうが楽かも。