مستكشف سقوط الأمطار

مبتدئ

image_pdf

توفير المياه واستخدامها السليم أمر مهم جدا. لذا في هذا المشروع سنقوم بستكشاف ما إذا كان هناك أمطار، حتى نتمكن من اتخاذ بعض الإجراءات وحفظ مياه الأمطار. يمكن استخدام كاشف مياه الأمطار في العديد من المجالات منها مجال الري، والتشغيل الآلي للمنزل، والاتصالات، والسيارات… الخ.

arduino-rain-sensor-module

القطع المطلوبة :

في هذا المشروع سنقوم بإستخدام القطع التالية :

arduino-rain-sensor-module

حساس كاشف الأمطار

arduino uno r3

Arduino Uno R3

 اسلاك توصيل ذكر/أنثى (Jumper Wires Male Female)

حساس كاشف الأمطار :

وحدة استشعار الأمطار هي أداة سهلة للكشف عن ما إذا كان هناك أمطار أم لا. هذه الوحدة تسمح لك قياس الرطوبة عبر دبابيس الإخراج التناظرية، كما أنها توفر مخرج رقمي يعطي قيم رقمية إعتمادا على تجاوز قيمة معينة من الرطوبة.

arduino-rain-sensor-module

يشمل هذا المستشعر الوحدة الإلكترونية بالإضافة إلى لوح مطبوع تجمع قطرات الأمطار عليه.

مداخل ومخارج وحدة استشعار الأمطار :

توضح الصورة والجدول أدناه موقع ووصف للمخارج والمداخل والضوابط والمؤشرات.

arduino-rain-sensor-module
المخرج/ المدخل/ الضابط الوصف
Vcc مصدر الطاقة 5 فولت
GND مصدر الطاقة الأرضي أو السالب
المخرج الرقمي (DO) المخرج الرقمي: تكون القيمة LOW عندما تتجاوز الرطوبة قيمة معينة.
المخرج التناظري (AO) المخرج التناظري: من صفر إلى 5 فولت. يتم انخفاض الجهد عند زيادة الرطوبة.
ضبط الحساسية مع إتجاه عقارب الساعة يكون أكثر حساسية. وعكس إتجاه عقارب الساعة تقل الحساسية.

يتم استخدام المخرج التناظري للكشف عن كمية هطول الأمطار. فعند تجمع قطرات الأمطار على اللوح المطبوع، فإنها تخلق مسارات مقاومة موازية. لذلك، عند زيادة الأمطار (إنخفاض المقاومة)، سيؤدي إلى إنخاض الجهد الناتج على المخرج (أي قيمة LOW  على المخرج الرقمي). على العكس تماما، فعند إنخفاض كمية الأمطار سيؤدي ذلك إلى زيادة الجهد الناتج على المخرج التناظري والرقمي. على سبيل المثال، إذا كانت اللوحة جافة تماما سيسبب ذلك إلى وصول وحدة الإخراج إلى 5 فولت.

توصيل المستشعر بالأردوينو :

قم بالتوصيل كما هو موضح بالصورة التالية :

arduino-rain-sensor-module

البرمجة :

في هذا المشروع، سيتم التحقق ما إذا كان هنالك أمطار، وعرض كمية الأمطار المتساقة. قم برفع الكود التالي إلى لوحة الأردوينو :

int nRainIn = A1;
int nRainDigitalIn = 2;
int nRainVal;
boolean bIsRaining = false;
String strRaining;

void setup() {
  Serial.begin(9600);
  pinMode(2,INPUT);
}
void loop() {
  nRainVal = analogRead(nRainIn);
  bIsRaining = !(digitalRead(nRainDigitalIn));
  
  if(bIsRaining){
    strRaining = "YES";
  }
  else{
    strRaining = "NO";
  }
  
  Serial.print("Raining?: ");
  Serial.print(strRaining);  
  Serial.print("\t Moisture Level: ");
  Serial.println(nRainVal);
  
  delay(200);

}

لمحة عن الكود :

أولا نقوم بتعريف متغيرات إعتمادا على ما تم توصيله بين المستشعر والأردوينو. وتعريف عدد من المتغيرات التي سنحتاج استخدامها لاحقا بالكود :

int nRainIn = A1; 
int nRainDigitalIn = 2; 
int nRainVal; 
boolean bIsRaining = false; 
String strRaining;

في دله ()setup، نقوم بتهيئة شاشة الإتصال التسلسلي، وتعريف المنفذ رقم 2 كمدخل :

void setup() {

Serial.begin(9600);

pinMode(2,INPUT);

}

في دلة ()loop، نقوم بقراءة القيمة التناظرية والرقمية،

nRainVal = analogRead(nRainIn); 
bIsRaining = !(digitalRead(nRainDigitalIn));

والتحقق ما إذا كان هناك سقوط أمطار أم لا.

if(bIsRaining){ 
  strRaining = "YES";
 } 
else{ 
strRaining = "NO"; 
}

بعد ذلك، تتم طباعة النتائج على شاشة الإتصال التسلسلي.

Serial.print("Raining?: "); 
Serial.print(strRaining); 
Serial.print("\t Moisture Level: "); 
Serial.println(nRainVal);
X
تم إضافة المنتج إلى السلة بنجاح