工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

Arduinoベースの早期洪水検知システム - ソースコードと回路設計

早期洪水監視システム - 回路図とプロジェクトソースコード

発展途上国・先進国を問わず、洪水は人命と動物の命、財産を奪う大規模な自然災害です。海底地震、ハリケーン、降雨、その他の自然災害による洪水が、毎年世界中の多くの地域で発生しています。

降雨時、さまざまな地理的地域での排水システムの不備が洪水を引き起こし、多くの命が失われています。水位上昇を検知して事前に警告するシステムがあれば、多くの人々を避難させ、命を救うことができます。テクノロジーを活用して水位上昇を検知し、人々に事前に警告するシステムが必要です。

このプロジェクトでは、池、ダム、貯水池の水位を検知し、ブザーで警告を発するプロトタイプを紹介します。これは小規模なプロトタイプで、Arduino UNO、超音波センサー、ブザー、LCD、接続ワイヤーを使用します。

関連プロジェクト:

早期洪水検知の回路図

Arduinoベースの早期洪水検知システム - ソースコードと回路設計

必要なコンポーネント

関連プロジェクト:

それでは、この基本回路で使用されるコンポーネントについて一つずつ学びましょう。

Arduino UNO

Arduinoは、電子プロジェクトの開発に使用されるオープンソースプラットフォームです。いつでも簡単にプログラミング、消去、再プログラミングが可能です。市場にはArduino UNO、Arduino Nano、Arduino Mega、Arduino Lilypadなど、用途に応じた異なる仕様のArduinoボードが多数販売されています。

このプロジェクトでは、家電製品を自動制御するためにArduino UNOを使用します。16MHzのクロック速度で動作するATmega328マイクロコントローラーICを搭載しています。USART、I2C、SPI通信プロトコルで動作する強力なボードです。

このボードは通常、マイクロUSBケーブルを使用してArduino IDEソフトウェアでプログラミングされます。ATmega328にはプリプログラムされたオンボードブートローダーが搭載されており、外部ハードウェアなしでコードをアップロードしやすくなっています。電子プロジェクトや製品の制作に幅広く応用されています。CおよびC++言語を使用してボードをプログラミングしますが、これらは非常に学びやすく使いやすい言語です。

関連プロジェクト:

Arduino IDEはプログラミングを大幅に簡素化します。コードをvoid setup()とvoid loop()の2つの部分に分離します。void setup()関数は1回だけ実行され、主にプロセスの初期化に使用され、void loop()は継続的に実行されるべきコード部分で構成されます。

このモデルは、入出力として使用できる6つのアナログ入力ピンと14のデジタルGPIOピンで構成され、そのうち6つはPWM出力を提供し、pinMode()、digitalWrite()、digitalRead()、analogRead()関数でアナログ入力が可能です。6つのアナログ入力チャネルはピンA0からA5で、10ビット分解能を提供します。

ボードは、5ボルトで動作するUSBケーブルまたは7〜20ボルトで動作するDCジャックのいずれかで電源供給できます。オンボード電圧レギュレーターにより、低電力デバイスの動作用に3.3ボルトを生成します。

ATmega328はUSART、SPI、I2C通信プロトコルで動作するため、USART通信用に0(Rx)と1(Tx)ピン、I2C用にSDA(A4)とSCL(A5)ピン、SPI通信プロトコル用にSS(10)、MOSI(11)、MISO(12)、SCK(13)ピンを備えています。

関連プロジェクト:

HC-SR04超音波センサー

HC-SR04は、非接触で多くの場所での距離測定を支援する超音波センサーです。レーダーとソナーと同じ原理で動作し、非常に精密な方法で距離を測定する効率的な手段を提供します。

理論上は最大450cmまで測定可能ですが、実際には2cmから80cmまでを3mmの精度で測定できます。5ボルトで動作し、電流は15mA未満、周波数は40ヘルツです。

Arduinoベースの早期洪水検知システム - ソースコードと回路設計

HC-SR04には1つの送信機と1つの受信機が搭載されています。距離は、学校で習った基本的な速度、距離、時間の公式で計算されます:

距離 = 速度 × 時間

HC-SR04センサーの送信機は空気中に超音波を送信します。この波がセンサーの範囲内の物体によって反射されると、反射波がセンサーの受信機によって受信されます。上記の公式を使用して距離を計算するには、速度と時間を知る必要があります。

超音波の普遍的な速度は約330m/sであることは知られています。時間はマイクロコントローラー上に構築された回路によって測定されます。エコーピンは、超音波が受信機に戻るのにかかった時間の間、ハイ状態になります。これにより、HC-SR04超音波センサーと物体の間の距離を計算できます。

関連プロジェクト:

HC-SR04とArduino UNOのインターフェース

HC-SR04超音波センサーは、Arduino、PIC、Raspberry Piなどすべてのマイクロコントローラーで使用できます。このプロジェクトでは、HC-SR04超音波センサーをArduino UNOとインターフェースします。HC-SR04モジュールには4つのピンがあります:VCC、GND、Trig、Echo。

HC-SR04モジュールに5ボルトとGNDをArduino UNOから供給します。トリガーピンとエコーピンは入力と出力ピンなので、Arduino UNOの入力と出力ピンに接続する必要があります。距離を測定するには、まずトリガーピンを10マイクロ秒間「ハイ」に設定し、その後「ロー」に設定します。

これにより、40kHzの周波数の超音波が生成され、物体に向かって反射し、モジュールの受信機に戻ります。波が何らかの物体を検知すると、すぐにモジュールの受信機部分に戻り、エコーピンがセンサーに戻る期間だけ「ハイ」になります。

この期間に波の速度(330m/s)を掛けることで、HC-SR04モジュールと物体の間の距離が求められます。

関連記事:

16×2 LCDディスプレイ

16×2 LCDをArduino UNOとインターフェースするのは非常に簡単です。市場にはさまざまなタイプのLCDがありますが、このプロジェクトで使用しているのは16×2で、2行あり、各行に16文字表示できます。

このモジュールには日立のHD44780ドライバーが搭載されており、マイクロコントローラーとのインターフェースと通信を支援します。このLCDは4ビットモードと8ビットモードで動作できます。4ビットモードではLCDとマイクロコントローラーの接続確立に4つのデータピンのみが必要ですが、8ビットモードでは8つのデータピンが必要です。

ここでは、必要なワイヤー数が少なく回路がシンプルになる4ビットモードで使用します。16×2 LCDのピン説明を見てみましょう。

Arduinoベースの早期洪水検知システム - ソースコードと回路設計

16×2 LCDモジュールのピン説明:
LCDピン 説明
VSS グランドピン
VCC +5V電源
VEE LCDコントラスト調整ピン
RS レジスタ選択: データモードまたはコマンドモード
RW 読み取りまたは書き込みモード
E LCDイネーブル
DB0-DB7 これらのピンでデータとコマンドを供給
LED+ バックライトLEDのアノード
LED- バックライトLEDのカソード

このLCDには独自の光源がないため、画面の後ろにLEDがあり、ディスプレイのバックライトとして機能します。Arduino IDEにはLiquidCrystalライブラリが用意されており、初期化と表示出力を容易にする多くの組み込み関数があります。このプロジェクトで主に使用するLCD関数は:

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); lcd.begin() lcd.clear() lcd.print()

早期洪水検知システムの動作とソースコード

超音波センサーを、送信機と受信機が水位に向くように基準レベルに配置します。Arduino UNOがセンサーと水位の間の距離を測定します。

LCDにそれらの間の距離を表示します。洪水レベルの基準を設定し、水位が基準に達したらブザーを「ハイ」に設定し、LCDに洪水警告テキストを表示します。

コード説明

#include 
LiquidCrystal lcd(2,3,4,5,6,7);
lcd.begin(16,2);

LCDディスプレイ用の組み込みライブラリがインクルードされています。LiquidCrystal lcd()関数はArduino UNOに接続されたデータのピン番号を取ります。Lcd.begin()で16×2 LCDを初期化します。

pinMode(18,OUTPUT); //トリガーピン
pinMode(19,INPUT); //エコーピン
pinMode(20,OUTPUT); //ブザー

ピン18と20をトリガーとブザー用の出力ピンに、ピン19をエコーピン用の入力ピンに設定します。

t=pulseIn(19,HIGH);
dist=t*340/20000;

時間変数't'がトリガーピンがハイになっている時間を検出し、これをセンチメートル単位の距離を計算するために使用し、変数'dist'に値を格納します。

if(dist<40) {
  digitalWrite(20,HIGH);
  lcd.clear();
  lcd.setCursor(0,1);
  lcd.print("Water level is rising. Kindly evacuate");
  delay(2000);
} else {
  digitalWrite(20,LOW);
  delay(2000);
}

このコードでは、水位と超音波センサーの距離が40cmになったときを洪水条件として設定しています。水位が40cm以下になるとブザーがハイになって警告し、LCDに洪水警告メッセージを表示します。

完全なソースコード:

#include 
LiquidCrystal lcd(2,3,4,5,6,7);
float t = 0;
float dist = 0;
void setup() {
  lcd.begin(16,2);
  pinMode(18,OUTPUT); //トリガーピン
  pinMode(19,INPUT); //エコーピン
  pinMode(20,OUTPUT); //ブザー
  lcd.setCursor(0,1);
  lcd.print(" Water Level Detector");
  delay(2000);
}
void loop() {
  lcd.clear();
  digitalWrite(20,LOW);
  digitalWrite(18,LOW);
  delayMicroseconds(2);
  digitalWrite(18,HIGH);
  delayMicroseconds(10);
  digitalWrite(18,LOW);
  delayMicroseconds(2);
  t=pulseIn(19,HIGH);
  dist=t*340/20000;
  lcd.clear();
  lcd.setCursor(0,1);
  lcd.print("Distance : ");
  lcd.print(dist/100);
  lcd.print(" m");
  delay(1000);
  if(dist<40) {
    digitalWrite(20,HIGH);
    lcd.clear();
    lcd.setCursor(0,1);
    lcd.print("Water level is rising. Kindly evacuate");
    delay(2000);
  } else {
    digitalWrite(20,LOW);
    delay(2000);
  }
}

関連プロジェクト:

産業技術

  1. AT89S52マイコンとLM35センサーによる温度ベース機器制御システム
  2. ArduinoだけでDTMFデコーダーを構築 – 外付けIC不要
  3. Python連携で信頼性向上: Arduino RFID勤怠管理システム
  4. Arduino Unoベースの人間検知レスキューロボット:センサー統合ステップバイステップ
  5. SERENA:Arduino Mega 2560とTFT LCDタッチスクリーン搭載カスタムアラームシステム
  6. リアルタイム森林火災監視システム: SMSアラート機能付き
  7. Arduino + Windows IoT + Azure クラウドによる高度な転倒検知システム
  8. Arduino衝突警告システム – 超音波センサーで視覚・聴覚アラート
  9. Symphony Link:データセンター向け信頼性の高い水漏れ検知
  10. Biz4Intellia IoT水漏れ検知が産業効率を高める5つの主な利点
  11. C# usingステートメント完全ガイド:名前空間インポート、エイリアス、静的ディレクティブ