National Crime Records Bureau(NCRB)によると、2010年から2014年にかけて、インドでの火災事故により1.2万ルピー以上の死者が出たと推定されています。火災事故には多くの予防策が講じられていますが、これらの自然/人災は時々発生します。火災が発生した場合、人々を救助し、消火するために、私たちは安全ではない人的資源を使用することを余儀なくされています。特にロボット工学における技術の進歩により、火と戦うために人間をロボットに置き換えることは非常に可能です。これは消防士の効率を改善し、また彼らが人命を危険にさらすことを防ぐでしょう。今日は、Arduinoを使用して消防ロボットを構築します。これにより、自動的に火災が検知され、ウォーターポンプが始動します。
このプロジェクトでは、Arduinoを使用して、火に向かって移動し、周囲の水を汲み上げて火を消すことができる簡単なロボットを構築する方法を学習します。これは、ロボット工学の基本的な概念を教えてくれる非常に単純なロボットです。次の基本を理解すれば、より洗練されたロボットを構築できるようになります。それでは始めましょう…
必要な材料:
- Arduino UNO
- 火災センサーまたは炎センサー(3つの番号)
- サーボモーター(SG90)
- L293Dモータードライバーモジュール
- ミニDC水中ポンプ
- 小さなブレッドボード
- モーター(2)とホイール(2)を備えたロボットシャーシ(任意のタイプ)
- 小さな缶
- 接続線
Arduino消防ロボットに必要な上記のすべてのコンポーネントを購入します。
消防ロボットの作業コンセプト:
このプロジェクトの主な頭脳はArduinoですが、火を感知するために、以下に示す火センサーモジュール(火炎センサー)を使用します。
ご覧のとおり、これらのセンサーには、火災を検出するために使用されるIRレシーバー(フォトダイオード)があります。これはどのように可能ですか?火が燃えると、少量の赤外線が放出されます。この光は、センサーモジュールのIRレシーバーによって受信されます。次に、オペアンプを使用してIRレシーバーの両端の電圧の変化をチェックします。これにより、火災が検出された場合、出力ピン(DO)は0V(LOW)になり、火災がない場合、出力ピンは5V(高い)。
そこで、このようなセンサーをロボットの3方向に配置して、火が燃えている方向を感知します。
L293Dモジュールを介してモーターを駆動することにより、モーターを使用して火の近くに移動できる火の方向を検出します。火の近くにいるときは、水を使って消さなければなりません。水を運ぶことができる小さな容器を使用して、5Vポンプも容器内に配置され、容器全体がサーボモーターの上に配置されるため、水を噴霧する方向を制御できます。今すぐ接続を進めましょう
回路図:
この消防ロボットの完全な回路図を以下に示します。
表示されているすべての接続を接続してプログラムをアップロードし、動作を確認するか、ボットを完全に組み立ててから接続を続行することができます。どちらの方法でも接続は非常に簡単で、正しく接続できるはずです。
使用しているロボットシャーシによっては、私が使用しているのと同じタイプのコンテナを使用できない場合があります。その場合、あなた自身の創造性を使ってポンプシステムをセットアップしてください。ただし、コードは同じままです。小さなアルミ缶(清涼飲料缶)を使ってポンプをセットし、水を注ぎました。次に、缶全体をサーボモーターの上に組み立てて、水の方向を制御しました。組み立て後のロボットはこんな感じ。
ご覧のとおり、接着剤を使用してサーボフィンをコンテナの底に固定し、ナットとボルトを使用してサーボモーターをシャーシに固定しました。コンテナをモーターの上に置き、その内部のポンプをトリガーして、チューブを通して外部に水を送り出すだけです。次に、サーボを使用してコンテナ全体を回転させ、水の方向を制御できます。
Arduinoのプログラミング:
ハードウェアの準備ができたら、アクションのためにArduinoコードをアップロードできます。完全なプログラムは、このページの末尾に与えられています。ただし、ここではいくつかの重要な部分についてさらに説明しました。
ご存知のように、火炎センサーは、火災が発生するとHIGHを出力し、火災が発生するとLOWを出力します。したがって、火災が発生した場合は、これらのセンサーをチェックし続ける必要があります。火災が発生していない場合は、以下に示すように、すべてのピンを高くしてモーターを停止したままにしてください。
if(digitalRead(Left_S)== 1 && digitalRead(Right_S)== 1 && digitalRead(Forward_S)== 1)//火災が検出されない場合、すべてのセンサーはゼロです{//ロボットを動かさないでくださいdigitalWrite(LM1、HIGH); digitalWrite(LM2、HIGH); digitalWrite(RM1、HIGH); digitalWrite(RM2、HIGH); }
同様に、火災が発生した場合は、それぞれのモーターを回転させて、ロボットにその方向に移動するように依頼できます。火に達すると、左右のセンサーは火の真正面に立っているため、火を検出しません。ここで、火を延期する関数を実行する「 fire 」という名前の変数を使用します。
else if(digitalRead(Forward_S)== 0)//火がまっすぐ進んでいる場合{//ロボットを前方に移動digitalWrite(LM1、HIGH); digitalWrite(LM2、LOW); digitalWrite(RM1、HIGH); digitalWrite(RM2、LOW); 火=真; }
変数fireがtrueになると、消防ロボットarduinoコードは、火が 消さ れるまで put_off_fire 関数を実行します。これは、以下のコードを使用して行われます。
while(fire == true){put_off_fire(); }
put_off_fire() 内では、すべてのピンを高くしてロボットを停止する必要があります。次に、ポンプをオンにして水をコンテナの外に押し出します。これを行う間、サーボモーターを使用してコンテナを回転させ、水が均一に分割されるようにすることもできます。これは、以下のコードを使用して行われます
void put_off_fire(){遅延(500); digitalWrite(LM1、HIGH); digitalWrite(LM2、HIGH); digitalWrite(RM1、HIGH); digitalWrite(RM2、HIGH); digitalWrite(pump、HIGH); delay(500); for(pos = 50; pos <= 130; pos + = 1){myservo.write(pos); delay(10); } for(pos = 130; pos> = 50; pos- = 1){myservo.write(pos); delay(10); } digitalWrite(pump、LOW); myservo.write(90); fire = false; }
消防ロボットの働き:
ロボットを初めて一緒に実行するのではなく、段階的にロボットの出力を確認することをお勧めします。サーボモーターまでロボットを組み立てて、火災にうまく追随できるかどうかを確認できます。次に、ポンプとサーボモーターが正常に動作しているかどうかを確認できます。すべてが期待どおりに機能したら、以下のプログラムを実行して、消防士ロボットの完全な動作を楽しむことができます。
ロボットの完全な動作は、以下のビデオで見つけることができます。火災を検出できる最大距離は、火災のサイズによって異なります。小さなマッチ棒の場合、距離は比較的短くなります。モジュールの上部にあるポテンショメータを使用して、ロボットの感度を制御することもできます。私はパワーバンクを使用してロボットに電力を供給しました。バッテリーを使用したり、12Vバッテリーで電力を供給したりすることもできます。
あなたがプロジェクトを理解し、似たようなものを作るのを楽しんでくれることを願っています。このビルドの取得で問題が発生した場合は、以下のコメントセクションを使用して質問を投稿するか、フォーラムを使用して技術的なヘルプを入手してください。
よりクールなDIYロボットを見つけるには、ロボット工学セクションをチェックしてください。