الأربعاء، 18 فبراير، 2015

عمل رادار بسيط بواسطة الأردوينو

Arduino Simple  Rader using Ultrasonic 




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

ايضاً يقوم بحفظ القيم بمصفوفة تتضمن الزاوية و المسافة عند هذه الزاوية بالنسبة للالتراسونيك , و طباعة القيم على شاشة المخرجات Serial Monitor و يمكن ايضاً ارسالها لأي برمجية أخرى و عمل نظام مراقبة Interface بواسطته .

سنحتاج في هذه التجربة إلى :



1) Servomotor mg995 180degree
2)Ultrasonic sensor
3)Arduino uno board 
4)Breadboard small size 

سنقوم بتركيب الالتراسونيك فوق السيرفو بالشكل المناسب باستخدام ماده لاصقه .


توصيل السيرفو :-

يتم توصيل مدخل التغذيه vcc مع مدخل ال5V بالاردوينو 
يتم توصل الGND مع مدخل الGND بالاردوينو
واخيرا توصيل سلك ال DATA مع مدخل D9 بالاردوينو  


توصيل االالتراسونيك :

يحتوي الالتراسونيك على اربعة منافذ توصيل ,مدخل التغذيه VCC , ومدخل الGND ,ومدخل ال Trigger اللذي يقوم بارسال النبضات ,ومدخل الECHO اللي يستقبل صدى النبضات اللتي ارسها ال TRIGGER

سنقوم بتوصيل الTRIGGER مع D12
ومدخل ال ECHO مع D13




التوصيل  :



البرنامج : 

/*
Arduino simple Rader system 
using Arduino And ultrasonic and Servo 
Code written By : 
Abderrahman Qasaymeh  - Jordan
http://www.genotronex.com/
*/

#include "Ultrasonic.h"
#include <Servo.h> 
long   distance;
Ultrasonic ultrasonic(12,13);//attache pin 12 & 13 to trig $ echo
Servo myservo;//Define the name of the servo
int index;

int ultrasonic_distance [180];// DEfine array of ultrasonic readings 
int servo_angle[180];// Define array of servo positions
void setup() {
  
Serial.begin(9600);
myservo.attach(9);// connect servo to pin D9 (PWM)
for(index= 0;index<181;index++)// for loop to determine the servo angels (0-180)
{
servo_angle[index]=index;

}
}



void loop()
{

for(index=0;index<=180;index++)//in this loop we are controlling the servo
//such that it's postion will increas one degree every loop and 
// while that the ultrasonic will take the distance readings 
{
  
 myservo.write(servo_angle[index]);
 delay(200);
ultrasonic_distance [index]= ultrasonic.Ranging(CM);// store the readings og the ultrasonic into x array
delay(100);// increas the degree of the servo by 1 degree every loop


}
// and finally print the results on the serial monitor 
  Serial.println("servo_degree");
  delay(20);// be attention this delay is very important 
  //without it the serial monitor wont print anything
  // becouse of the execution speed of the instructions 
Serial.print("\t"); 
delay(20);
 Serial.print("\t"); 
 delay(20);
 Serial.println("distance");
 delay(20);

for(index=0;index<180;index++)
{
Serial.print(servo_angle[index]);
delay(20);
 Serial.print("\t"); 
 delay(20);
  Serial.print("\t"); 
 delay(20);
Serial.println (ultrasonic_distance [index]);

delay(20);
}



}





السيرفو :-
#include <Servo.h>

نستخدم هذه ال instruction لاستدعاء مكتبة السيرفو والتي تتيح لنا التعامل مع جميع التعليمات اللازمه للتحكم بال servo



Servo Name;
هذه ال instruction تعرف من خلالها  object السيرفو الذي سنتعامل معه 


Name.attach(Pin Number);

عن طريق هذه الinstruction نقوم بتحديد المدخل pin الذي اوصلناه بالسيرفو والذي كان pin 9  , ويجب ان يكون هذا المدخل هو احد مداخل الPWM او احد مداخل ال analogue 



Name.write(val)

هنا نحدد الزاويه اللتي يعمل فيها السيرفو وهي عدد صحيح مداه (0-180)

الالتراسونيك :


#include "Ultrasonic.h"

هذه الinstruction تتيح لنا التعامل مع المكتبه الخاصه بحساس الالتراسونيك



Ultrasonic ultrasonic(trig,echo); 

هنا يتم تعريف المداخل اللتي ستوصل عليها كل من ال trigger  وال echo وقد تم توصيلهما على D12 و D13 بالترتيب 


ultrasonic.Ranging(CM)

وعن طريق هذه ال Instruction نستطيع الحصول على قراءة الالتراسونيك بالسنتيمترات






وهذه النتائج تظهر على شاشة السيريال : 







وهذا الفيديو يوضح عمل المشروع : 


الكاتب : عبد الرحمن قسايمة - الأردن 

1 التعليقات :

  1. بجد ربنا يزيدكم م علمه ع المدونة الرائعة والموقع الاجمل ، حاجات كتير ممكن تبان صعبة >>>> بس بصراحة انتوا مبسطينها ع الاخر

    انا كان عندى استفسار خارج التوبيك ده >>> احنا بنعمل مشروع ربوت " طفاية حريق " حرال الحركة _ ملوش مسار محدد ف حركته _ وتقريبا الحمد لله ماشيين فيه كويس
    >>> بس واجهتنا مشكلة انه ازاي نرجعه تانى لنقطة الاصل اللى اتحرك منها بعد اتمام المهمة تاعته

    ارجو الرد للاهمية >>> وربنا يزيدكم م علمه وينفع به اياكم وامتكم

    ردحذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.