【ESP32】ライブラリ不要!サーボモーター(SG90)の速度制御で作る自動開閉ゴミ箱

当ページのリンクには広告が含まれています。
ESP32マイコンで自動開閉ゴミ箱を作るアイキャッチ
悩んでいる子ねこ

今回は、ESP32マイコンを使って**「自動開閉ゴミ箱」をDIYしました。 市販のセンサー付きゴミ箱も便利ですが、自分で作れば「蓋が閉まる速度」「反応感度」**を自分好みにカスタマイズできます。

特に今回は、サーボモーター用のライブラリを使用せず、ソースコードの工夫だけで開閉スピードをコントロールする方法を採用しました。「蓋がバタン!と閉まるのが嫌だ」という方は必見です。

目次

作成の流れ

Wi-FiとBluetoothを搭載した低消費電力マイコン「ESP32」を使用し、以下の手順で作成します。

  1. 必要な部品と道具の準備
  2. 配線図に従った接続
  3. Arduino IDEでのプログラミング(速度制御ロジック)
  4. 書き込みと動作確認
  5. ゴミ箱への組み込み・筐体加工

1.必要な部品と道具

電子部品

  • ESP32マイコンボード(ESP-WROOM-32): 必須アイテム
  • サーボモーター(SG90):安価で扱いやすい定番モーター
  • IRセンサー(LM393):手を検知するための赤外線センサー
  • AC-DC 5V電源アダプター:安定動作のため外部電源を推奨(今回は廃棄ルーターから流用)

筐体・工具

  • プラスチック製のゴミ箱(ペダル式など)
  • 切断用具(ルーター、ヤスリなど)
  • 固定用具(ホットグルーガン、ネジ、プラスチック溶接機など)
  • 保護材(アクリル板、プラ板など)

2.配線図と接続

ESP32と各センサーを以下のように接続します。

自動開閉ゴミ箱配線図
自動開閉ゴミ箱配線実態図

[画像:配線図または実体配線図をここに挿入]

部品ピン名ESP32接続先備考
IRセンサーVCC3.3V
GNDGND
OUTGPIO 33センサー信号
サーボ(SG90)赤 (VCC)5V (VIN)パワー不足を防ぐため5Vへ
茶 (GND)GND
橙 (Signal)GPIO 5PWM制御信号

ポイント: サーボモーターは電流を消費するため、動作が不安定な場合は外部電源の容量を確認してください。

3.プログラム(ソースコード)

Arduino IDEを使用してESP32に書き込みます。 このプログラムの最大の特徴は、ライブラリに頼らずPWM(パルス幅変調)を直接指定して、蓋がゆっくり閉まるように制御している点です。

ソースプログラム

const int IRSENSOR = 33;  // 赤外線センサ接続ピン
const int SERV = 5;       // サーボ接続ピン
boolean IRSENSOR_flg=false;     //IRセンサ反応フラグ


void setup() {
  pinMode(IRSENSOR, INPUT_PULLUP);//IRセンサに手をかざす(安定させるため内部プルアップ抵抗を有効化)
  pinMode(SERV,OUTPUT);
}

void loop() {
  if(digitalRead(IRSENSOR) == LOW){    //IRセンサに手をかざしたか検知(LOWで検知)
  IRSENSOR_flg=true;                //IRセンサに手をかざした状態 
}
  if (IRSENSOR_flg == true){     //センサーが反応したらサーボモーター動作開始
  for(int j=90;j>0;j--){//1. 蓋を開ける90°から0°へ回転
  SERVSpeed(j);
  }
}
  for(int i=0;i<=90;i++){//2. 蓋を閉める0°から90°へ回転
  SERVSpeed(i);
  exit(0);//繰り返さない
}
}
void SERVSpeed(int x){//xの値は0~180
int PWM = (x*8.75)+420;//角度からパルス幅への変換式
//数値8.75:指定角度まで開かない場合は数値を大きく調整
//数値420:閉まる位置(0点)がずれる場合(開いたままなら数値を小さくする)
digitalWrite(SERV,HIGH);
delayMicroseconds(PWM);//計算したパルス幅だけHIGHにする
digitalWrite(SERV,LOW);
delay(200);//この数値(ms)が大きいほど、次の角度へ進む待ち時間が長くなり、ゆっくり動く
}

調整のポイント

  • 角度調整: サーボモーターの個体差により、8.75420 という係数は微調整が必要です。
  • 速度調整: delay(200) の数値を大きくするとさらにゆっくり閉まり、小さくすると速く閉まります。

仮り動作確認

ソースプログラムをESP32マイコンに書き込みます。Arduino IDEのシリアルモニタで出力が表示されることを確認してブレッドボード上にて動作確認を行います。

AC電源アダプタは廃棄無線LANから流用した出力DC5V1Aです。

ESP32自動開閉ゴミ箱ブレッドボード上にて確認
自動開閉ゴミ箱ブレッドボード上にて仮接続

Arduinoスターターキット:電子工作を基礎から学ぶ良キット。

4.組み立てと加工

サーボモーターの取り付け

ゴミ箱の蓋部分を加工してサーボモーターを取り付けます。今回はルーターで削り、ネジとプラスチック溶接機を使ってヒンジ部分と接続しました。

使用した工具
使用した工具

物理的な接続が一番の難関です。スムーズに開閉できるよう、現物合わせで調整を行いました。

センサーとマイコンの設置

ゴミ箱の前面にIRセンサーとESP32を配置します。ゴミ箱内部に配線を隠し、汚れ防止のために廃棄プリンターから取り出したアクリル板でカバーを作成しました。

配線はゴミ箱の内側に隠してホットグルーガンなどで固定しました。

5.完成・動作確認

完成したゴミ箱がこちらです。

手をかざすと、「スッ」と開き、用が済んだら「ゆっくり」と閉まります。 既存のペダル機構も残してあるので、電池切れの際や足で開けたい時も問題なく使えます。

まとめ

ESP32を使えば、市販品にはない「自分好みの動き」をする家電が作れます。特にサーボモーターのライブラリを使わない制御方法は、仕組みの理解にも繋がるのでおすすめです。

皆さんもぜひ、身の回りのものを自動化してみてください!

ペダルを踏んでもフタ開閉できます
ペダルを踏んでもフタ開閉できます
ESP32マイコンで自動開閉ゴミ箱を作るアイキャッチ

この記事が気に入ったら
フォローしてね!

この記事が参考になりましたらシェアお願いします
  • URLをコピーしました!
  • URLをコピーしました!
目次