MOZIのアイコン画像
MOZI 2021年05月13日作成
製作品 製作品 閲覧数 1836
MOZI 2021年05月13日作成 製作品 製作品 閲覧数 1836

お風呂センサーを作る

お風呂センサーを作る

初めに

皆さんこんにちはMOZI電子工作です。
お風呂センサを作っていきたいと思います。

具体的にはお風呂の栓が閉まっているのかを検知するものをObniz 1Yを使って作りたいと思います。
お風呂の栓をいちいち確認するのが億劫だったのでスマホから簡単に確認できるようにしようと思い作りました。

使ったもの

今回使ったものはこんな感じです。

名前 URL
VL53L0X使用 レーザー測距センサモジュール(ToF) https://akizukidenshi.com/catalog/g/gM-12590/
BME680使用 温湿度・気圧・ガスセンサモジュールキット https://akizukidenshi.com/catalog/g/gK-14469/
低損失レギュレータ5V1.5A NJM2396F05 https://akizukidenshi.com/catalog/g/gI-09262/
片面ガラスコンポジット・ユニバーサル基板 Cタイプ めっき仕上げ (72×47mm) 日本製 https://akizukidenshi.com/catalog/g/gP-03229/
Arduino NANO
obniz Board 1Y

これらを使って作っていきます。
obniz Board 1Yはelchikaさんに提供していただきました。ありがとうございます!
温度湿度センサーは一応、浴室内の温湿度を測定するためにおまけとして付けています。
距離センサーと温湿度センサーはelchikaのハードウェア投稿キャンペーンの際にもらったものを使用させていただきます。

回路

回路は以下のような感じにしました。
Obnizで直接センサーを制御できれば良かったのですが、温度センサ、距離センサともにobniz用のライブラリなどはないらしくプログラムが大変そうだったのでArduinoNANOで読み取り、UARTでobnizと通信する形にしています。
電源は風呂の中ということもありコンセントからの給電は難しいので電池で給電しています。設計的にすぐになくなってしまうと思うので次回への課題です。
キャプションを入力できます
キャプションを入力できます

片面ユニバーサル基板を使って作ったのですが、一つもランドはがしをせずきれいに実装できました!
キャプションを入力できます
キャプションを入力できます

プログラム

Arduino

bath_sensor.ino

#include <Wire.h> #include <VL53L1X.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include "Adafruit_BME680.h" VL53L1X sensor; #define BME_SCK 13 #define BME_MISO 12 #define BME_MOSI 11 #define BME_CS 10 #define SEALEVELPRESSURE_HPA (1010.5) Adafruit_BME680 bme; // I2C //Adafruit_BME680 bme(BME_CS); // hardware SPI //Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); int distance; //栓を距離センサで検知するための変数 void setup() { Serial.begin(9600); while (!Serial); // Set up oversampling and filter initialization bme.setTemperatureOversampling(BME680_OS_8X); bme.setHumidityOversampling(BME680_OS_2X); bme.setPressureOversampling(BME680_OS_4X); bme.setIIRFilterSize(BME680_FILTER_SIZE_3); bme.setGasHeater(320, 150); // 320*C for 150 ms } void loop() { if (!bme.begin()) { Serial.println("e,"); //温度湿度センサーエラー } if (! bme.performReading()) { Serial.println("e,"); //温度湿度センサーエラー return; } double temp = bme.temperature - 6; //気温  double atm = bme.pressure / 100.0; //気圧 double hum = bme.humidity; //湿度 sensor.setTimeout(500); if (!sensor.init()) { Serial.print("E,"); //距離センサーエラー delay(1); return; } else { sensor.setDistanceMode(VL53L1X::Long); sensor.setMeasurementTimingBudget(50000); sensor.startContinuous(50); for(int i=1;i<3;i++){ distance += sensor.read(); } distance /= 3; Serial.print(temp); Serial.print(","); Serial.print(hum); Serial.print(","); Serial.print(atm); Serial.print(","); Serial.print(distance); Serial.print(","); } }

Obniz

bath_sensor

<html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.14.0/obniz.js" crossorigin="anonymous" ></script> </head> <body> <H1>現在</H1> <p>気温<div id="temp">error</div>℃</p> <p>湿度<div id="hum">error</div>%</p> <p>気圧<div id="atm">error</div>hPa</p> <p>栓<div id="senn">error<div></p> <script> var obniz = new Obniz("0745-4337"); obniz.onconnect = async function() { await obniz.wait(10); var uart = obniz.getFreeUart(); uart.start({tx: 0, rx: 1, gnd:11, baud:9600 }); uart.onreceive = function(data, text) { let datas = text.split(","); if(datas[0] == 'e'){ document.getElementById('senn').innerHTML = "距離センサーエラー"; }else if(datas[0] == "E"){ document.getElementById('temp').innerHTML = "温度センサーエラー" }else{ document.getElementById('temp').innerHTML = datas[0]; document.getElementById('hum').innerHTML = datas[1]; document.getElementById('atm').innerHTML = datas[2]; if(datas[3]<1660){ document.getElementById('senn').innerHTML = "開いています"; }else{ document.getElementById('senn').innerHTML = "閉じています"; } } } } </script> </body> </html>

ObnizのJavaScriptは最初慣れず、難しかったですが、なんとかできました。

ケースづくり

ケースは3Dプリンターで作成しました。

キャプションを入力できます

こんな感じに
キャプションを入力できます
中身
キャプションを入力できます

動かしてみる

設置したところ
キャプションを入力できます
スマホから確認ができます。obnizでページを開くと、確認することができます。
動作させてみるとこんな感じ。

栓の開いているかどうかは距離センサを使って作ったので精度が少し足りていないのか、安定していない時もあるので改善点ではあります。
温度、湿度、気圧は問題なく安定して読み取れているようです。

obnizを使っているので外出先など、家のWi-Fiに接続できない時でも確認することができます!ゆくゆくは風呂を自動で湯はりする装置も作ってみたいです。

↓動作動画

ここに動画が表示されます

最後に

Obnizは全てクラウドで制御できる点など、かなりインターネットに関する泥臭いことをすることなく、簡単に作ることができました。今後もobnizを使って色々使っていきたいと思います。

最後まで読んでいただきありごとうございました!
(選ばれるといいなーー)

MOZIのアイコン画像
電子工作してます。 主にArduinoやRaspberry piや3Dプリンターなどでいろいろ作ってます。 いろいろ書いていく予定です。よろしくお願いします!
  • MOZI さんが 2021/05/13 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する