سلسلة أردوينو – Zero to Hero – توصيل مستشعر مسافات ultrasonic proximity sensor

حساب الوزن و الوقت للطباعة ثلاثية الأبعاد
July 8, 2015
: كيفيه صناعه النرد بالأردوينو
July 14, 2015

IMG_9710

مرحبا يا أصدقائي 🙂 عاملين ايه؟ يا رب تكونوا بخير و صحة 😀 🙂

النهارده هنحكي عن ال ” ultrasonic”

بداية الرحلة في سؤال, ايه هو الالتراسونيك؟

ال ultrasonic proximity sensor : هو عبارة عن سينسور بيقيس المسافة من خلال موجات فوق صوتية. بطريقة عمل أشبه بنفس الطريقة اللي الخفاش بيشوف اللي حواليه بيها

و هي انه يرسل موجات فوق صوتية و بعد كده يحسب الفترة الزمنية اللي استغرقتها الموجات فق الصوتية ده من لحظة ما ارسلها لحد ما خبطت و انعكست و رجعتله علي هيئة صدي echo. فبالتالي يقدر يحدد المسافة بينه و بين اللي حواليه

IMG_9711

التوصيل :

ببساطة هتحتاج توصل pin ال trig و ال echo علي منفذين من منافذ الأردوينو, بالاضافة لتوصيل ال 5 فولت و الأرضي كما هو موضح بالشكل التالي :

Screenshot from 2015-07-06 15:58:56

Arduino code:

باستخدام مكتبة new ping :

و يمكنك تحميل المكتبة من الموقع الرسمي للأردوينو من الرابط التالي :
http://playground.arduino.cc/Code/NewPing#Download

حيث يمكنك استخدام الكود الموضح في أمثلة المكتبة كالتالي :
file=> examples => NewPing=> NewPingExample
بحيث تتم طباعة القراءة علي المنفذ التسلسلي Serial Port

// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------

#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}

void loop() {
  delay(50);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
  Serial.print("Ping: ");
  Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
}

كما يمكنك برمجة الأردوينو للتعامل مع السينسور بدون مكتبات برمجية كما في الكود التالي :

بحيث تتم طباعة القراءة علي المنفذ التسلسلي Serial Port

const int trigPin = 12;
const int echoPin = 11;
// Create an instance of software serial.
void setup()  
{
 // Open the hardware serial port
  Serial.begin(9600);
  pinMode(13,OUTPUT);

  // set the data rate for the SoftwareSerial port
}

void loop() // run over and over
{  
  long duration, inches, cm;
 
  // The sensor is triggered by a HIGH pulse of 10 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  pinMode(trigPin, OUTPUT);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
 
  // Read the signal from the sensor: a HIGH pulse whose
  // duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(echoPin, INPUT);
  duration = pulseIn(echoPin, HIGH);
 
  // convert the time into a distance
  inches = microsecondsToInches(duration);
  cm = microsecondsToCentimeters(duration);
  
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();

delay(100);
}
long microsecondsToInches(long microseconds)
{
  // According to Parallax's datasheet for the PING))), there are
  // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
  // second).  This gives the distance travelled by the ping, outbound
  // and return, so we divide by 2 to get the distance of the obstacle.
  // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
  return microseconds / 74 / 2;
}
 
long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}

@ جميع حقوق النشر محفوظة للكاتب.

 

#ultrasonic #proximity_sensor # HC-sr04

  • Rahim Keffi

    روعة أخي جزاك الله خيرا
    و ننتظر دائما المزيد 🙂

    • Moody Hesham

      شكرا 🙂
      جزانا و إياكم ^_^