2022/12/27

ワイヤレス温度計 #4


 デスクトップガジェットに、ワイヤレス温度計の受信機能を取り込んだ。2つのBLEデバイスからのデータを受信する度に、MYSQL データベースを更新し、温度とバッテリ残を表示する。

 データベースに記録しているので、適当なグラフ表示のソフトで、温度変化も読み取れる。BLEのデータ取得は、仕組み的にキッチリとした時間では取れない。数秒毎のランダムなタイミングとなる。勝手に発信し、勝手に受信しているのでそうなる。



 ESP32 の受信デバイスも、2個分の温度表示出来るようにした。こちらは、PCは関係無く、電源があれば動く。スマホとかの充電ケーブルでよい。

 本格的に温度の記録をとりたいなら、ESP32 からデータベースに接続するのが普通かもしれない(そういうIoT向けのサービスが既にある)。でも、やる気はしないな。既にファイルサーバを動かしてるとか、省電力PCをローカルに用意できるなら、PC上で完結したほうがトラブルは少ないよね、たぶん。

2022/12/21

Lazarus 2.2.0 + MySQL Community Server 8.0.31 でエラー

 たまには、まともなデータベースでも使ってみるかと、MySQL をインストールして、Lazarus からアクセスしようとしたら、実行時に、libmysql.dll が無いといわれて動かない。ちゃんとコピーしてるのに…。

 TMySQL80Connection コンポーネントがダメなのかと、MySQL Ver 5.7 に入れ替えて、TMySQL57Connection を使ったら、あっさり動いた。もぅ。


参考リンク
 MySQL Community Server  データベース
 HeidiSQL データベース管理ソフト

ワイヤレス温度計 #3

 Delphi の BLEが不安定すぎだし、RSSI 取得できないし。何気に検索したら、SimpleBLE Library というのを、パスカル向けに変換してくれてる人がいた。まぁ、これはこれで、生のアドバタイズ データにアクセス出来ない?のがイマイチだが、一応動作はする。

 アドバタイズ に、ADタイプ 0xFF の Manufacturer Specific Data に自分で使うデータを入れとけば、SimpleBlePeripheralManufacturerDataGet() で読み込める。


参考リンク
 Pascal Bindings For SimpleBLE Library Lazarus でも使える

2022/12/12

ワイヤレス温度計 #2

 温度センサDS18B20の話。

 温度測定の際の分解能を、9~12ビットで設定できる。数字が大きいほど、細かな単位で取得できるが(9bit で、0.5℃刻み、10bit で、0.25、11bitで、0.125、12bitで、0.0625)、そもそもの精度が、±0.5℃なので、12bit とか指定しても意味がないように思う。それに、12bit を指定すると、1回の測定に、750 ms もかかる。ま、意味はなくても、小数点以下1ケタを完全に表示したいなら、12bit が必要。

 手持ちのケーブル付きのセンサは、下記リンクのプログラムを動かしてみたら、本物?らしい。複数接続も、2線式も試していないが、少なくとも単体で使う分には問題なさそう。まぁ、クローンとか同じ動きをするのなら、たとえ中身が違っていても実質的に問題はないが、同じように動かないのでは問題外だよね。
参考リンク
 DS18B20 Datasheet 温度センサ資料
 How to tell original from fake DS18B20 temperature sensors.  偽物があるらしい

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 は、色々と難しい。というか、電波飛ばなすぎだよな。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。