تصميم نظام خزنة بسيط باستخدام أردوينو اكتب تعليقُا

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

شرح فكرة المشروع

  • في هذا المشروع، سيتم تصميم نظام خزنة مصغرة باستخدام أردوينو.
  • يتم فتح الخزنة باستخدام الأزرار، وهذا عن طريق تحريك الأزرار بالترتيب الذي تم تعيينه مسبقا في الكود البرمجي (في هذا الكود استعملنا، من اليمين إلى اليسار LOW-HIGH-HIGH-LOW، وكما هو موضح باللون الأحمر في الكود).
  • عند فتح البوابة، قم بغلقها وجرّب مرة أخرى باستخدام جهاز التحكم عن بُعد بالأشعة تحت الحمراء.
  • قم بالضغط على الزر الذي قمت بتعيينه لفتح البوابة، ثم تحقق ما إذا تم فتح الباب (مثالًا في هذا الكود استعملنا، زر الزائد، وكما هو موضح باللون الأخضر في الكود).
  • إذا تمت مواجهة أي مشاكل، ينصح بإعادة فحص التوصيلات والكود للتأكد من أنها مطابقة للخطوات السابقة.
  • كما يمكن تحميل كود “circuit–ir- decode-code” وفتح نافدة Serial Monitor، اختر Tools ثم Serial Monitor.
  • الآن تستطيع العثور على قيمة HEX المقابلة للزر الذي تضغط عليه على جهاز التحكم عن بُعد بالأشعة تحت الحمراء الخاص بك، ثم قم بتعديل قيمة HEX في كود “circuitcode”.
  • الرابط

ادوات المشروع

تنويه: استخدم لوحة Bread board لتوصيل الوحدات بمنفذ 5V و GND

مخطط المشروع

الكود البرمجي

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.
  • للتعرف على تجهيز لوحة أردوينو للبرمجة قم بزيارة الرابط التالي.
  • للإطلاع على كيفية تحميل وتنصيب المكتبات قم بزيارة الرابط التالي.
  • قبل تحميل الكود البرمجي، عليك تحميل المكتبات التالية:
  • Servo.h
  • IRremote.h
  • في حال لم يعمل هذا الكود البرمجي، قم بتحميل ملف الكود بالضغط على زر التحميل الموجود في الأسفل.

#include <Servo.h>//Including Servo Motor Library
#include <IRremote.h>//Including IR reciever Library

Servo gate;//Declaring the Servo Motors
Servo gate2;

//Declaring the Arduino Pins to which the components are connected to
int RECV_PIN = 3;
int first = 4;
int second = 5;
int third = 6;
int fourth = 7;
int redLed = 9;
int greenLed = 10;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup(){
//Declaring Components as input or output
pinMode(first, INPUT_PULLUP);
pinMode(second, INPUT_PULLUP);
pinMode(third, INPUT_PULLUP);
pinMode(fourth, INPUT_PULLUP);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);

//Setting up the IR reciver
irrecv.enableIRIn();

//Declaring the pin location of teh Servo Motor
gate.attach(2);

//Startng the Serial Monitor
Serial.begin(9600);
}

void blinkGreenLed(){//To blink the green LED
for(int i = 0; i<3; i++){
digitalWrite(greenLed, HIGH);
delay(100);
digitalWrite(greenLed, LOW);
delay(100);
}
}

void blinkRedLed(){//To blink the Red LED
for(int i = 0; i<3; i++){
digitalWrite(redLed, HIGH);
delay(100);
digitalWrite(redLed, LOW);
delay(100);
}
}

void loop(){
if (IrReceiver.decode()) {//Recieving and decoding the IR values from the IR receiver
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // Print “old” raw data
IrReceiver.resume(); // Enable receiving of the next value
}

if(IrReceiver.decodedIRData.decodedRawData == 0xEA15FF00){//Blinking Green LED and opening the gate when “Plus” is pressed on the IR remote
blinkGreenLed();
gate.write(90);
delay(500);
}

else if(results.value == 0xF807FF00){//Blnking Red LED and closing the servo when “Minus” is pressed on the IR remote
blinkRedLed();
gate.write(0);
}

else if(digitalRead(first) == LOW && digitalRead(second) == HIGH && digitalRead(third) == HIGH && digitalRead(fourth) == LOW){//Opening the servo when teh switches are placed in a certain combination
blinkGreenLed();
gate.write(90);

}

else{//Keeping the servo closed
blinkRedLed();
gate.write(0);
}
}

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *