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

الفكرة ومبدأ العمل

  • جهاز قياس السرعة هو عبارة عن جهاز بسيط يستخدم لتحديد السيارات التي قد تتجاوز السرعة المسموحة باستخدام مستشعرات الأشعة تحت الحمراء.
  • يقوم الجهاز أيضًا بتنبيه المستخدم باستخدام طنان صوتي حينما تتجاوز السرعة حدًا معينًا (لقد اخترنا السرعة الحدية 1كم/ساعة).
  • تعمل مستشعرات الأشعة تحت الحمراء على استشعار مرور الكائن في مجالها المحدد، حين ذلك يقوم اردوينو بحساب الفرق بين زمني التقاط الاشارتين، ثم يتم حساب السرعة باستخدام الصيغة التالية:  السرعة = المسافة / الزمن
  • المسافة في هذا المشروع تساوي 0.07 مم أو 7 سم ويمكن تغييرها من خلال العبارة التالية في كود البرنامج “;const float dist = 0.07ْ”.

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

  • اردوينو اونو مع سلك توصيل: عدد 1
  • موديول IR لتفادي الاصطدام: عدد 2
  • شاشة LCD 16 x 02 IIC/I2C Serial: عدد 1
  • بازر 5 فولت طنان: عدد 1
  • أسلاك توصيل ذكر لذكر
  • أسلاك توصيل ذكر إلى أنثى
  • لوح تجارب 400 نقطة لون ابيض: عدد 2 (يمكن استخدام واحدة فقط)
  • 9V Maxell Alkaline Battery بطارية قلوية: عدد 1
  • موصل بطارية 9 فولت + مقبس تيار مستمر (غطاء موصل البطارية): عدد 1

مخطط الدائرة وشرحها

طريقة توصيل المكونات مع الاردوينو

موديولات IR لتفادي الاصطدام:

Sensor 1 Output Pin -> D2

Sensor 1 GND Pin -> GND

Sensor 1 VCC Pin -> 5V

Sensor 2 Output Pin -> D3

Sensor 2 GND Pin -> GND

Sensor 2 VCC Pin -> 5V

شاشة LCD 16 x 02 IIC/I2C Serial:

SDA Pin -> A4 Pin

SCL Pin -> A5 Pin

VCC Pin -> 5V

GND Pin -> GND

بازر 5 فولت طنان:

Positive Pin -> D5

Negative Pin -> GND

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

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

قبل تحميل الكود البرمجي، قم بتنزيل مكتبة I2C LCD من هنا، ومكتبة Wire.h من هنا. للإطلاع على كيفية تحميل وتنصيب المكتبات قم بزيارة الرابط التالي، وللتعرف على تجهيز لوحة أردوينو للبرمجة قم بزيارة الرابط التالي.

في حال لم يعمل هذا الكود البرمجي، قم بتحميل ملف الكود بالضغط على زر التحميل الموجود في الأسفل.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define sensorPin1 2
#define sensorPin2 3
#define buzzerPin 5
const float dist = 0.07;
bool sensor1State = false;
bool sensor2State = false;
unsigned long interval = 0;
unsigned long startTime = 0;
double speed = 0;
const int timeout = 3000;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
pinMode(sensorPin1, INPUT);
pinMode(sensorPin2, INPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print(“Speed (kmph):”);
}
void loop() {
// put your main code here, to run repeatedly:
sensor1State = digitalRead(sensorPin1);
digitalWrite(buzzerPin, LOW);
startTime = 0;
if(!sensor1State){
startTime = millis();
while (digitalRead(sensorPin2)){
if(millis()-startTime > timeout){
lcd.setCursor(0, 1);
lcd.print(“Timeout”);
return;
}
delay(3);
}
interval = millis() – startTime;
if(interval > 3){
Serial.print(“Speed in kmph = “);
speed = ((dist)/(interval/1000.0)) * (18/5.0);
Serial.println(speed);
lcd.setCursor(0, 1);
lcd.print(speed);
lcd.print(” “);
if(speed > 1){
digitalWrite(buzzerPin, HIGH);
}
}
delay(1000);
}
//Serial.println(digitalRead(sensorPin1));
}

اترك تعليقاً

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