はじめに
こんにちはRHEMS技研の宮内です!
最近、喫煙室の換気扇がタバコを吸い終わったあともつきっぱなしなのがしばしばあり、一定時間人がいなかったら自動でOFFにするようにしたいとのことで、
今回は学習も兼ねESP32を用いて_換気扇のOFFスイッチの自動化_をしてみようと思います!
仕組み
まずはESPr® Developer 32で試作品を作って見ました。センサーはHC-SR04(超音波距離センサー)を使い、換気扇の下の距離を測り人がいないようならサーボモータを動かしOFFスイッチを押す。といった感じです。
SwichBotを使うのは簡単らしく却下されました、、
コードはこちらになります
#include <HCSR04.h>
#include <ESP32Servo.h>
int TRIG = 15; //trigger pin
int ECHO = 14; //echo pin
int s_pin = 17; //サーボモータの信号ピン
int minUs = 500, maxUs = 2400; //最小0.5ms最大2.4msの制御パルス
int pos = 0; //基準となる角度0度
unsigned int t = 0;
Servo myservo;
UltraSonicDistanceSensor distanceSensor(TRIG, ECHO);
void setup () {
Serial.begin(115200);
myservo.setPeriodHertz(50); //50Hzを入力
myservo.attach(s_pin, minUs, maxUs);
}
void servo()
{
Serial.println("換気扇を止めます");
myservo.write(180); //180度まで回転
delay(1000);
myservo.write(5); //5度まで回転
delay(1000);
}
void loop () {
double dis = distanceSensor.measureDistanceCm();
Serial.println(dis);
(dis <= 50) && (t = 0); //人がいる
(dis >= 100) && (t = (t <= 4) ? (t + 1) : ({servo(); 0;})); //人がいない(5分いないならスイッチoff)
delay(60000); //1分刻みで確認
}
ライブラリは距離センサはこちら、サーボモータはこちらのものを使わせていただいています。
図ではArduinoを使っているので、4pin → 14pin、5pin → 15pin、7pin → 17pin、5v → VoutpinにそれぞれESPr® Developer 32へ置き換えてください。
HC-SR04は5V起動、ESPr® Developer 32は3.3V起動とめんどくさいですがそこは1kΩ抵抗を3個使い合わせています。
#詰まった箇所
ESP32でサーボモータを使う際に参考になるものを探したが、実際しっかり180度回るものがなかったりと結構時間がかかった、、今回使わせていただいたライブラリなら制御パルスなどをしっかり合わせれば楽に角度を変更できるのでオススメです!
#さいごに
今回、喫煙する人にだいたい換気扇の下で吸うと聞きまずはこれを作ってみました。
ですが吸う時に移動する人や、下で吸わない人に対応できていないため次はPIR(人感センサ)を用いて作ってみたいと思います!
ではその➁でお会いしましょ〜✋