جدول المحتويات:

عقبة تجنب السيارات الآلية: 9 خطوات
عقبة تجنب السيارات الآلية: 9 خطوات

فيديو: عقبة تجنب السيارات الآلية: 9 خطوات

فيديو: عقبة تجنب السيارات الآلية: 9 خطوات
فيديو: كيفية الخروج من الموقف عن طريق الرجوع للخلف How to Exit a parking spot by reversing 2024, يوليو
Anonim
عقبة تجنب السيارات الروبوتية
عقبة تجنب السيارات الروبوتية
عقبة تجنب السيارات الروبوتية
عقبة تجنب السيارات الروبوتية

كيفية بناء عقبة تتجنب الروبوت

الخطوة 1: الصندوق الأسود

الصندوق الأسود
الصندوق الأسود

في الخطوة الأولى ، استخدمت صندوقًا أسود كقاعدة لروبوتي.

الخطوة الثانية: اردوينو

اردوينو
اردوينو

Arduino هو عقل النظام بأكمله وينظم محركاتنا

الخطوة 3: إرفاق Arduino بـ Blackbox

إرفاق Arduino بـ Blackbox
إرفاق Arduino بـ Blackbox

أرفقت اردوينو بالصندوق الأسود باستخدام الغراء الساخن

الخطوة 4: جهاز الاستشعار بالموجات فوق الصوتية

أجهزة الاستشعار بالموجات فوق الصوتية
أجهزة الاستشعار بالموجات فوق الصوتية

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

الخطوة 5: توصيل المستشعر بلوحة التوصيل بأردوينو

اتصال اللوح لجهاز الاستشعار بـ Arduino
اتصال اللوح لجهاز الاستشعار بـ Arduino
اتصال اللوح لجهاز الاستشعار بـ Arduino
اتصال اللوح لجهاز الاستشعار بـ Arduino

لقد استخدمت الأسلاك لذكر الاتصال بين اللوح واردوينو.

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

الخطوة السادسة: درع المحرك

درع المحرك
درع المحرك

لا تستطيع لوحات Arduino التحكم في محركات التيار المستمر من تلقاء نفسها ، لأن التيارات التي تولدها منخفضة جدًا ، ولحل هذه المشكلة ، نستخدم دروع المحرك. يحتوي درع المحرك على قناتين ، مما يسمح بالتحكم في محركي DC ، أو السائر المحركات. … من خلال معالجة هذه المسامير ، يمكنك تحديد قناة المحرك لبدء التشغيل ، وتحديد اتجاه المحرك (القطبية) ، وضبط سرعة المحرك (PWM) ، وإيقاف المحرك وتشغيله ، ومراقبة الامتصاص الحالي لكل قناة

الخطوة 7: توصيل Motor Shield بـ Arduino

توصيل Motor Shield بأردوينو
توصيل Motor Shield بأردوينو

ما عليك سوى إرفاق واقي المحرك بأردوينو باستخدام أسلاك المستشعر المكسورة

الخطوة 8: توصيل 4 محركات وبطاريات بالدرع

توصيل 4 محركات وبطاريات بالدرع
توصيل 4 محركات وبطاريات بالدرع

يحتوي كل درع محرك (على الأقل) على قناتين ، واحدة للمحركات وواحدة لمصدر طاقة ، قم بتوصيلهما فيما يتعلق ببعضهما البعض

الخطوة 9: برمجة الروبوت

قم بتشغيل هذا الرمز

# تضمين # تضمين

NewPing سونار (TRIG_PIN ، ECHO_PIN ، MAX_DISTANCE) ؛

AF_DCMotor motor1 (1 ، MOTOR12_1 كيلو هرتز) ؛ AF_DCMotor motor2 (2 ، MOTOR12_1 كيلو هرتز) ؛ AF_DCMotor motor3 (3 ، MOTOR34_1 كيلو هرتز) ؛ AF_DCMotor motor4 (4 ، MOTOR34_1 كيلو هرتز) ؛ مؤازرة myservo.

#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10

قيمة منطقية goForward = false ؛ المسافة int = 80 ؛ int speedSet = 0 ؛

الإعداد باطل() {

myservo.attach (10) ، myservo.write (115) ؛ تأخير (2000) ؛ المسافة = readPing () ؛ تأخير (100) ؛ المسافة = readPing () ؛ تأخير (100) ؛ المسافة = readPing () ؛ تأخير (100) ؛ المسافة = readPing () ؛ تأخير (100) ؛ }

حلقة باطلة () {مسافة intR = 0 ؛ المسافة intL = 0 ؛ تأخير (40) ؛ إذا كانت (مسافة <= 15) {moveStop () ؛ تأخير (50) ؛ moveBackward () ، تأخير (150) ؛ moveStop () ، تأخير (100) ؛ DistanceR = lookRight () ؛ تأخير (100) ؛ DistanceL = lookLeft () ؛ تأخير (100) ؛

إذا كانت (مسافة R> = مسافة L) {turnRight () ؛ moveStop () ، } else {turnLeft ()؛ moveStop () ، }} else {moveForward ()؛ } مسافة = readPing () ؛ }

int lookRight () {myservo.write (50) ؛ تأخير (250) ؛ مسافة int = readPing () ؛ تأخير (50) ؛ myservo.write (100) ؛ مسافة العودة }

int lookLeft () {myservo.write (120) ؛ تأخير (300) ؛ مسافة int = readPing () ؛ تأخير (100) ؛ myservo.write (115) ؛ مسافة العودة تأخير (100) ؛ }

int readPing () {delay (70) ؛ int cm = sonar.ping_cm () ؛ إذا (سم == 0) {سم = 200 ؛ } عودة سم؛ }

void moveStop () {motor1.run (RELEASE) ؛ motor2.run (إطلاق) ؛ motor3.run (إطلاق) ؛ motor4.run (إطلاق) ؛ } void moveForward () {

إذا (! يذهب إلى الأمام) {يذهب إلى الأمام = صحيح ؛ motor1.run (إلى الأمام) ؛ motor2.run (إلى الأمام) ؛ motor3.run (إلى الأمام) ؛ motor4.run (إلى الأمام) ؛ لـ (speedSet = 0 ؛ speedSet <MAX_SPEED ؛ speedSet + = 2) {motor1.setSpeed (speedSet) ؛ motor2.setSpeed (مجموعة السرعة) ؛ motor3.setSpeed (مجموعة السرعة) ؛ Motor4.setSpeed (مجموعة السرعة) ؛ تأخير (5) ؛ }}}

void moveBackward () {goForward = false ؛ motor1.run (خلفي) ؛ motor2.run (خلفي) ؛ motor3.run (خلفي) ؛ motor4.run (خلفي) ؛ لـ (speedSet = 0 ؛ speedSet <MAX_SPEED ؛ speedSet + = 2) {motor1.setSpeed (speedSet) ؛ motor2.setSpeed (مجموعة السرعة) ؛ motor3.setSpeed (مجموعة السرعة) ؛ Motor4.setSpeed (مجموعة السرعة) ؛ تأخير (5) ؛ } void turnLeft () {motor1.run (BACKWARD) ؛ motor2.run (خلفي) ؛ motor3.run (إلى الأمام) ؛ motor4.run (إلى الأمام) ؛ تأخير (500) ؛ motor1.run (إلى الأمام) ؛ motor2.run (إلى الأمام) ؛ motor3.run (إلى الأمام) ؛ motor4.run (إلى الأمام) ؛ }

باطل انعطف لليسار () {motor1.run (BACKWARD) ؛ motor2.run (خلفي) ؛ motor3.run (إلى الأمام) ؛ motor4.run (إلى الأمام) ؛ تأخير (500) ؛ motor1.run (إلى الأمام) ؛ motor2.run (إلى الأمام) ؛ motor3.run (إلى الأمام) ؛ motor4.run (إلى الأمام) ؛ }

موصى به: