アクアリウム用の水温ロガー。計測とグラフ表示を行う。
- Raspberry Pi
- DS18B20
- Electron + React + Sqlite
- ローカルデータベース
![](https://private-user-images.githubusercontent.com/46148606/273616598-0f1b0c71-c7e8-4f46-ba2d-cf81d9d0abd0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0OTc5MTQsIm5iZiI6MTczOTQ5NzYxNCwicGF0aCI6Ii80NjE0ODYwNi8yNzM2MTY1OTgtMGYxYjBjNzEtYzdlOC00ZjQ2LWJhMmQtY2Y4MWQ5ZDBhYmQwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAxNDY1NFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk5ZDM1MWM1MGFjNGQwNDM5YTU2NjU4OGIwNGViODYyNzNlNGU5M2FlYTZlZDJlODU2NWNmNTUxMzJkMjUyNWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.uYq_lyezSlaEVY2mRLRSs5tRN6RsgWDnqEjxpBdDCYE)
1-Wire インターフェイスの DS18B20 が手軽に精度良く使え、水中用途に加工されたものが安価に入手できるのでおすすめ。
![](https://private-user-images.githubusercontent.com/46148606/273459369-8c4c2781-dd82-425f-8f91-0d6ef2453f3e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0OTc5MTQsIm5iZiI6MTczOTQ5NzYxNCwicGF0aCI6Ii80NjE0ODYwNi8yNzM0NTkzNjktOGM0YzI3ODEtZGQ4Mi00MjVmLThmOTEtMGQ2ZWYyNDUzZjNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAxNDY1NFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIwNmIyNjA3NjUxY2Q0NDBhOGRmZTYxMDJiYmNiYWUyYTgxMGM2ZjNmZjE0YWU3Y2I4ZDRmM2I3NzRlOGM5Y2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.fAwY2YnhJl-tQPOR52b-ygB0sX_Jrh_1XhoDpMTw0G8)
センサーとラズパイは次のように接続する。センサー側コードの色は要確認のこと。複数のセンサーがある場合は並列に接続していく。DQ にはプルアップ抵抗 4.7[kΩ]を接続する。
センサー | ラズパイ |
---|---|
VDD(赤) | 3V3 or 5V power |
DQ (黄) | GPIO 4 |
GND(黒) | Ground |
Raspberry Pi OS with desktop をセットアップする. ここでは 'pi' ユーザーであるものとして進めていく。
![](https://private-user-images.githubusercontent.com/46148606/273459447-23678573-d958-4fd1-b8ab-7823ba4e57eb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0OTc5MTQsIm5iZiI6MTczOTQ5NzYxNCwicGF0aCI6Ii80NjE0ODYwNi8yNzM0NTk0NDctMjM2Nzg1NzMtZDk1OC00ZmQxLWI4YWItNzgyM2JhNGU1N2ViLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAxNDY1NFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ0ODZmOWUwODU5ZDE3Nzk5MTM2NDhjZTk4NGI1YzU5N2I1OTE3Mjg3N2M1NGZiYTY2MmVkMWI3ZDgyM2Q0YWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.TSYyTPem3y7UKojR6SRSaH4lPXwe3ON-aGRWEyVSX6Y)
Github のリポジトリをローカルにコピーする。
git clone https://github.com/seotaro/rpi-aquarium-thermometer.git
cd rpi-aquarium-thermometer
Node.js をセットアップする。
make setup-node
1-Wire インターフェイスを有効にする。
make enable-1-wire
リブートして、1-Wire デバイスを確認する。
名称が28-xxxxxxxxxxxx
形式のフォルダーが接続されたデバイスで、デバイスの数だけある。
ls /sys/bus/w1/devices/
コマンドはデスクトップモードで実行する.
cd {'rpi-aquarium-thermometer'}
yarn
yarn start
データベースファイル
/home/pi/.config/rpi-aquarium-thermometer/database.db
設定ファイル
/home/pi/.config/rpi-aquarium-thermometer/config.json
{
"READ_SENSOR_INTERVAL": 10000, // センサーの読み取り間隔 [ms]
"DELETE_DATABASE_INTERVAL": 3600000, // データベースを削除する間隔 [ms]
"DS18B20": "on", // DS18B20 を有効にする
// センサー名称の定義例)
"DEVICES": {
"id": "name",
"28-xxxxxxxxxxxx": "90cm tank",
"28-yyyyyyyyyyyy": "45cm tank-1",
"28-zzzzzzzzzzzz": "45cm tank-2"
}
}
ビルドする。
cd {'rpi-aquarium-thermometer'}
yarn
yarn build
mv dist/rpi-aquarium-thermometer-0.1.0-armv7l.AppImage /home/pi
ラズパイ起動時に自動で実行されるよう設定する。
ログは/home/pi/.cache/lxsession/LXDE-pi/run.log
に出力される。
make enable-autostart
リブートする。
自動で実行しないようにするには下記を実行する。
make disable-autostart
メモリが少ないモデル(Raspberry Pi 3A+ など)はメモリ不足でビルドができないことがある。スペックの高いラズパイでビルドして使用することができる。Electron なので Mac や Windows でクロスビルドできるはずなのだが、うまくいっていない。
Node.js のセットアップは不要であるが、1-Wire インターフェイスはあらかじめ有効にしておくこと。 ビルドした AppImage を実行するラズパイに保存して、下記のようにデスクトップモードで実行する。
chmod +x rpi-aquarium-thermometer-0.1.0-armv7l.AppImage
./rpi-aquarium-thermometer-0.1.0-armv7l.AppImage