جدول المحتويات:
- الخطوة 1: الصندوق الأسود
- الخطوة الثانية: اردوينو
- الخطوة 3: إرفاق Arduino بـ Blackbox
- الخطوة 4: جهاز الاستشعار بالموجات فوق الصوتية
- الخطوة 5: توصيل المستشعر بلوحة التوصيل بأردوينو
- الخطوة السادسة: درع المحرك
- الخطوة 7: توصيل Motor Shield بـ Arduino
- الخطوة 8: توصيل 4 محركات وبطاريات بالدرع
- الخطوة 9: برمجة الروبوت
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
كيفية بناء عقبة تتجنب الروبوت
الخطوة 1: الصندوق الأسود
في الخطوة الأولى ، استخدمت صندوقًا أسود كقاعدة لروبوتي.
الخطوة الثانية: اردوينو
Arduino هو عقل النظام بأكمله وينظم محركاتنا
الخطوة 3: إرفاق Arduino بـ Blackbox
أرفقت اردوينو بالصندوق الأسود باستخدام الغراء الساخن
الخطوة 4: جهاز الاستشعار بالموجات فوق الصوتية
من أجل صنع روبوت يمكنه التحرك من تلقاء نفسه ، نحتاج إلى نوع من الإدخال ، جهاز استشعار يناسب هدفنا. جهاز الاستشعار بالموجات فوق الصوتية هو أداة تقيس المسافة إلى الجسم باستخدام الموجات الصوتية فوق الصوتية. يستخدم المستشعر بالموجات فوق الصوتية محول طاقة لإرسال واستقبال نبضات الموجات فوق الصوتية التي تنقل معلومات حول قرب الكائن
الخطوة 5: توصيل المستشعر بلوحة التوصيل بأردوينو
لقد استخدمت الأسلاك لذكر الاتصال بين اللوح واردوينو.
انتبه إلى أن مستشعر ping قد يكون له تخطيط دبوس مختلف ولكن يجب أن يحتوي على دبوس جهد ودبوس أرضي ودبوس مثلث ودبوس صدى.
الخطوة السادسة: درع المحرك
لا تستطيع لوحات Arduino التحكم في محركات التيار المستمر من تلقاء نفسها ، لأن التيارات التي تولدها منخفضة جدًا ، ولحل هذه المشكلة ، نستخدم دروع المحرك. يحتوي درع المحرك على قناتين ، مما يسمح بالتحكم في محركي DC ، أو السائر المحركات. … من خلال معالجة هذه المسامير ، يمكنك تحديد قناة المحرك لبدء التشغيل ، وتحديد اتجاه المحرك (القطبية) ، وضبط سرعة المحرك (PWM) ، وإيقاف المحرك وتشغيله ، ومراقبة الامتصاص الحالي لكل قناة
الخطوة 7: توصيل Motor Shield بـ Arduino
ما عليك سوى إرفاق واقي المحرك بأردوينو باستخدام أسلاك المستشعر المكسورة
الخطوة 8: توصيل 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 (إلى الأمام) ؛ }