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

2022/12/06

ワイヤレス温度計 #1

 夏に、無線な水温計を作ろうと思っていたら、もう年末だ。ようやく取り掛かったが、キーボードや、リモコンでの実績のある2.4GHzの通信ではなく、今までチョロチョロと実験してきた BLE(Bluetooth Low Energy)でやってみることにした。

 温度センサ は、DS18B20 にケーブルがついたのを調達。ステンレスパイプの中にセンサが入れられて、熱収縮のチューブで防水処理されている。本物は、センサだけで、数百円するそうだから、パチもんだろうけど。0度(氷)、100度(沸騰水)を試したぶんには、正確だった。

 送信側は、nRF51822 の BLE ビーコンもどき。ひたすら、測定温度をアドバタイズパケットに乗せて垂れ流すだけ、接続もさせない。

 受信側は、なんでも出来るESP32。とりあえず、7セグメントの LED に温度表示できるようにした。最初、Windows PC + Delphi でのソフトウェアで処理させようとしたが、まともに動かなかった。

 温度とバッテリ量を表示するだけなら、スマホやタブレットなんかの nordic の Androidアプリ用に、パケットを送信すれば、それで目的は達成される。Android アプリは、自前では作れないから(早々に挫折した)、測定データを何か利用するなら、ESP32 から、WiFi で飛ばせばいいかと。

 で、やりたいことは、実現できそうではあるが、実用化出来るかは、別の話。BLE は、色々と難しい。というか、電波飛ばなすぎだよな。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/12/12

Android + nRF51822 BLE Keyboard

 PC のキーボードは、レシーバ付きの、2.4GHz のでいいけど、Android タブレットで、読書のページ送りとか、Kodi の操作をする用に、Bluetooth キーボードをでっちあげる。
参考リンク
 ・Arduino BLEPeripheral nRF51822 用の BLE ライブラリ
 このライブラリで作っても、Windows では認識しないので、今まで使ってこなかった。Android なら、問題なく動きそう。


 キーボードといいつつ、リモコンだな。何とか動いてる気もするが、実用に足るのかは、要実験。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/05/06

Bluetooth LE の消費電流

 EBYTE の nRF51822 モジュールは、電波発信せずにループさせると、4mA程度で動いている。スリープらしきコードを埋め込むと、なるほど下がったが、それでも、1mA台で、これでは、ボタン電池で何ヶ月も持つなんてことはない。なんか細かいことをしないと、きちんと止まらないのかな。いかんせん、Arduino で使うのはそもそもイレギュラーなのか資料が少ない。

 接続した後は、ビビビ、と剣山みたいな通信が始まる。データを送っても極端に消費は増えないが、ビビビは切断まで続く。待ち時間は、徹底的に消費を抑えるのが、BLEデバイスなんだな。

EBYTE E73-2G4M04s1D nRF51822 SoC

 ちなみに、前に紹介したBLEモジュールで試してみると、なるほど、スリープ時には、かなり消費が少ない。
JDY-19 BLE 4.2 モジュール

 きちんとスリープが出来るコードが書けないと、話にならない。うーん、何とかなりそうにないな。


追記 2021-05-10

 プログラムを書き込んだ後、一度リセットしないと、デバッグモード?とかのままで、余計に電気が流れるらしい。電源にスイッチを挟んで、リセットの代わりにした。立ち上げ直すと、0mA付近になった。ま、テストだけなので、実際に動かすとどうかは分からないが。

 BLE が低消費電力と言われているのは、主に、未接続のアドバタイズ状態のことを言っているのであって、接続し余計な通信し続けるならば、必ずしも低消費とは言えないだろう。ボタン電池で、何ヶ月も動く!っていったところで、要は発信時間、つまり電気消費を、ひたすら少なくするって話。

 リアルタイム性が必要なデバイスは、接続した後、リンクが切れないよう最低限の通信を定期的に行うスリープを使い、割り込みで処理するのだろう。

 非リアルタイムデバイスの場合は、アドバタイズデータ自体に、データも埋め込めばいい。アドバタイズデータを受信するだけなら、接続しなくても済む。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/04/22

EBYTE E73-2G4M04s1D nRF51822 SoC


 Nordic の nRF51822 が乗った裸モジュール。1.27ミリピッチなので、2.54ミリのヘッダピンを互い違いに付けて、実験してみた。あー、これは異次元の難しさだわ。Lチカするのに、一日掛かりだ。Bluetooth以前の問題。
 ESP32 は、なんでも出来てすごいんだけど、根本的に燃費悪すぎて、バッテリー駆動には不向きだと思うんだ。なんで、Nordic チップの無線モジュールを使いたいわけ。でも、こちらは素人の手には負えない感じ。


追記 2021-04-23
 訳分からない Rust じゃなくて、Arduino IDE でも動いた!

 led_switch というサンプルプログラム。接続先の USBドングルから、LEDのオン・オフ切り替え、ボタン操作で、NOTIFY も飛んでる。電池2本で普通に動くのがいいね。



追記 2021-04-26
 Serial と、i2c の OLED(ssd1306)が動いた。大きいほうの OLED は駄目だった(謎)。肝心の BLE HIDが、コンパイルも書き込みも出来るが、Windows上で接続すると、ドライバエラーとか出て機能せず、ぐぬぬぬぬ。たぶん、Windows側の問題であって、Android とかでは普通に動くと思われる。枯れたデバイスだと思っていたが、開発者達は、Windows なんぞ使っていないんだろうなぁ。

※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。