Arduino搭載スマート分別機:乾燥/湿潤ゴミを効率的に分離
必要なパーツと用品
| Arduino Mega 2560 | ×1 |
| DFRobot Gravity: デジタル静電容量式タッチセンサー | ×1 |
| SparkFun 土壌水分センサー(ネジ端子付き) | ×1 |
| SG90 マイクロサーボモーター | ×1 |
| アクリル板 | ×1 |
| ハーフサイズ ブレッドボード | ×1 |
| ジャンパーワイヤー | ×1 |
| 9V電池 | ×1 |
必要な工具と機械
| ワイヤーストリッパー&カッター |
| ホットグルーガン |
アプリとオンラインサービス
| Arduino IDE |
このプロジェクトについて
説明: この分別機は乾燥ゴミと湿潤ゴミを正しく分離できます。
注意: プラスチックや金属の分別はできません。それには追加のセンサーやモジュールが必要です。
構造
- アクリル板2枚を分別機のボディとして使用
- サーボモーターをアクチュエータとして使用。ゴミの種類(乾燥/湿潤)に応じて回転
- 安価な文房具用定規をサーボモーターのシャフトとして使用。上部ベースとサーボモーターを接続。ホットグルーで固定
- 水分センサーを分別機の上部に固定し、投入されたゴミが直接センサーに当たるように配置。その横にタッチセンサーを配置して乾燥ゴミを検知。これで構造は完成
注: フェビクイック(瞬間接着剤)も使えますがリスクがあるため慎重に使用してください。
なぜ水分センサーだけでなくタッチセンサーも必要なのか?
- 確かに 水分センサーだけで湿潤ゴミは判別できます。しかし乾燥ゴミは判別できません。なぜか? ゴミがセンサーに載っていない「中立状態」を作ろうとしても、水分センサーはデフォルトで常に乾燥状態を示してしまうため、分別機が常にどちらか一方に傾いてしまいます。この問題を解決するためにタッチセンサーを併用します。
実装手順
- ステップ1: アクリル板2枚を用意(地元の店やAmazonで入手可能)
- ステップ2: 画像のようにアクリル板に穴を開け、電池ホルダーを固定
- ステップ3: 電池ホルダーの上部にサーボモーターを真っ直ぐ前を向くように固定(両面テープやホットグルー)
- ステップ4: プラスチック製定規を用意し、底部にモーターシャフトより少し小さい穴を開ける(ハンダゴテや細い金属棒で穴あけ)
- ステップ5: もう1枚のアクリル板を定規の上にホットグルーで固定。しっかり固定され、動かないことを確認
- ステップ6: アクリル板の上部に水分センサーとタッチセンサーを配置
これら6ステップを正しく実行すれば準備完了です!
ハードウェア説明
このハードウェアセットアップを実装するには、以下の概念を深く理解する必要があります:
- Arduino: このプロジェクトで使用するマイクロコントローラ。詳細はこちら。公式ドキュメントも確認を。
- C++プログラミング: Arduinoプログラミングには中級レベルのC++とArduino基本関数の知識が必要。
- 水分センサー: Arduinoとのインターフェース、回路図を学習。
- タッチセンサー: Arduinoとのインターフェース、回路図を学習。
- サーボモーター: 動作原理とArduinoでの制御方法を学習。
スマート分別機の動作手順
- ステップ1: ゴミを投入し、水分センサー上に落下
- ステップ2: 設定した閾値に基づき、水分センサーが乾燥か湿潤かを判別
- ステップ3: ステップ2完了と同時にサーボモーターがゴミの種類に応じて左右どちらかに回転し、ゴミが適切なコンパートメントへ落下
- ステップ4: 全工程が自律的かつ継続的に動作
動画: このプロジェクトの素晴らしい動作をぜひご覧ください(リンクは元記事参照)
ソースコード
#include <Servo.h>
class Smart_Segregator {
public:
int servo_pin;
int moisture_sensor_pin;
int touch_sensor_pin;
int detect_moisture;
int detect_touch;
Servo servo;
Smart_Segregator(int pin_1, int pin_2, int pin_3) {
servo_pin = pin_1;
moisture_sensor_pin = pin_2;
touch_sensor_pin = pin_3;
detect_moisture = 0;
detect_touch = false;
}
void init() {
Serial.begin(9600);
servo.attach(servo_pin);
servo.write(90); // 中立位置
pinMode(moisture_sensor_pin, INPUT);
pinMode(touch_sensor_pin, INPUT);
Serial.println("Your Smart Segregator is ready to Segregate!");
}
void dry_waste() {
servo.write(0); // 右へ(乾燥ゴミ用)
}
void wet_waste() {
servo.write(180); // 左へ(湿潤ゴミ用)
}
void neutral_state() {
servo.write(90); // 中央(待機)
}
void execute() {
detect_moisture = digitalRead(moisture_sensor_pin);
detect_touch = digitalRead(touch_sensor_pin);
if (detect_moisture > 85 && detect_touch == true) {
wet_waste(); // 湿潤:水分高&タッチあり
} else if (detect_moisture <= 85 && detect_touch == true) {
dry_waste(); // 乾燥:水分低&タッチあり
} else {
neutral_state(); // ゴミなし:中立
}
}
};
Smart_Segregator segregator(8, 6, 2); // サーボ:D8, 水分:D6, タッチ:D2
void setup() {
segregator.init();
}
void loop() {
segregator.execute();
}
回路図
(回路図画像は元記事を参照)
製造プロセス
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- インテリジェントスマートゴミ箱:IoTセンサーで廃棄物収集を最適化
- DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
- スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
- ESP8266・Arduino・超音波センサーで作るスマートIoTジャー:リアルタイム中身監視
- スマート自動靴紐シューズ:発電機能内蔵で実用性抜群
- ESP32で作るIoT環境モニター:温湿度・気圧・CO2をWebダッシュボードで可視化
- スマートなArduino制御ロボットアームの製作:簡単DIYチュートリアル
- Arduinoで高速・高精度RPM測定 – レーザーとIRセンサーによる新アルゴリズム
- ウェットサンプとドライサンプ:オイル潤滑システムの違いを徹底解説
- Arduinoセンサー:種類、応用、実世界プロジェクト