概要
水温センサを追加し、動作テストを行った。
背景と目的
以前、センサ部の製作を行った際、スペースの余裕があることに気づき水温センサをつけられるのでは?と思い、案を温めてきた。そこで、今回水温センサを追加してみたい。
詳細
1. 構想
センサ部の製作を行った時の画像だが、最低水位のセンサの横か裏あたりに、水位センサをつけたい。また、水位が低い時にもセンサが水に浸かるようにできるだけ低い位置に配置したい。
2. 使用センサ
以下の防水型の温度センサである。
2年半くらい前に、いつか防水のセンサを使うことがあるかもと思って買っておき、過去、リモート水位センサ筐体内温度上昇を抑えるための検討で使用したのだが、ついにレギュラー稼働の時が来た。
3. センサ実装
センサ部の最も低い位置にできるだけ近くなるように装着した。この水温センサとの干渉を避けるため、最低水位の水位センサを背面から少し離して前面寄りに配置しなおした。
4. メイン基板修正
関連部分だけ抜粋すると、以下。
ESP32
水温センサ部
5. ソフトウェア修正
センサの中身の素子はDS18B20なので、1-wireインターフェースで取得すればよく、arduinoの場合
- DS18B20_RT
- OneWire
の2つのライブラリを使用することで、簡単に扱うことができる。関連のある部分だけ抜粋すると、以下のような感じ。
#include <OneWire.h> #include <DS18B20.h> : static const int PIN_DS18B20 = 21; // 信号線接続 : // OneWireの設定 OneWire oneWire1(PIN_DS18B20); // 水温センサ DS18B20 water_temp_sensor(&oneWire1); : // 水温センサの初期化 water_temp_sensor.begin(); water_temp_sensor.setResolution(12); water_temp_sensor.requestTemperatures(); : // 計測して℃の値をもらう sensor.requestTemperatures(); while (!sensor.isConversionComplete()) { delay(10); } float temp = sensor.getTempC();
5. 動作確認
温度測定&送信し、無事SORACOMのサーバへデータが到達したことを確認。これで、2022年版の作成作業は完了。
まとめと今後の課題
水温センサを追加できた。田植えまで動作テストを2-3週間くらいやって、実稼働に臨む。