منظفات الأرضيات التلقائية ليست شيئًا جديدًا ، لكنها تشترك جميعًا في مشكلة شائعة. كلهم مكلفون جدا لما يفعلونه اليوم ، سنصنع روبوتًا آليًا لتنظيف المنزل يكلف جزءًا صغيرًا فقط من تلك الموجودة في السوق. يستطيع هذا الروبوت اكتشاف العوائق والأشياء التي أمامه ويمكنه الاستمرار في الحركة وتجنب العقبات حتى يتم تنظيف الغرفة بالكامل. بها فرشاة صغيرة ملحقة بها لتنظيف الأرضية.
تحقق أيضًا من روبوت التنظيف بالمكنسة الذكية باستخدام Arduino
المكون المطلوب:
- اردوينو UNO R3.
- أجهزة الاستشعار بالموجات فوق الصوتية.
- درع سائق محرك اردوينو.
- هيكل روبوت دفع عجلة.
- كمبيوتر لبرمجة اردوينو.
- بطارية للمحركات.
- بنك طاقة لتشغيل اردوينو
- فرشاة احذية.
- وسادة سكوتش برايت.
ملاحظة: بدلاً من استخدام البطاريات ، يمكنك أيضًا استخدام سلك طويل من 4 خيوط كما فعلنا. على الرغم من أن هذا ليس حلاً أنيقًا أو عمليًا للغاية ، إلا أنه يمكنك القيام به إذا كنت لا تخطط لاستخدامه في العالم الحقيقي كل يوم. تأكد من أن أطوال الكابل كافية.
قبل الخوض في التفاصيل دعونا نناقش حول الموجات فوق الصوتية أولاً.
جهاز استشعار الموجات فوق الصوتية HC-SR04:
يستخدم جهاز الاستشعار بالموجات فوق الصوتية لقياس المسافة بدقة عالية وقراءات مستقرة. يمكن قياس المسافة من 2 سم إلى 400 سم أو من 1 بوصة إلى 13 قدم. تبعث موجة فوق صوتية بتردد 40 كيلو هرتز في الهواء وإذا كان الجسم سيعترض طريقه ، فسوف يرتد مرة أخرى إلى المستشعر. باستخدام ذلك الوقت الذي يستغرقه ضرب الجسم والعودة ، يمكنك حساب المسافة.
يستخدم جهاز الاستشعار بالموجات فوق الصوتية تقنية تسمى "ECHO". "ECHO" هو ببساطة موجة صوتية منعكسة. سيكون لديك ECHO عندما ينعكس الصوت مرة أخرى بعد الوصول إلى طريق مسدود.
تولد وحدة HCSR04 اهتزازًا صوتيًا في نطاق الموجات فوق الصوتية عندما نجعل دبوس "Trigger" مرتفعًا لحوالي 10us والذي سيرسل انفجارًا صوتيًا من 8 دورات بسرعة الصوت وبعد ضرب الكائن ، سيتم استقباله بواسطة دبوس Echo. اعتمادًا على الوقت الذي يستغرقه اهتزاز الصوت للعودة ، فإنه يوفر خرج نبضًا مناسبًا. إذا كان الكائن بعيدًا ، فسيستغرق الأمر وقتًا أطول لسماع ECHO وسيكون عرض نبضة الإخراج كبيرًا. وإذا كان العائق قريبًا ، فسيتم سماع صوت ECHO بشكل أسرع وسيكون عرض النبض الناتج أصغر.
يمكننا حساب مسافة الجسم بناءً على الوقت الذي تستغرقه الموجات فوق الصوتية للعودة إلى المستشعر. نظرًا لأن وقت الصوت وسرعته معروفان ، يمكننا حساب المسافة بالصيغ التالية.
المسافة = (الوقت × سرعة الصوت في الهواء (343 م / ث)) / 2.
القيمة مقسومة على اثنين لأن الموجة تنتقل للأمام وللخلف لتغطي نفس المسافة. وبالتالي فإن الوقت اللازم للوصول إلى العقبة هو نصف إجمالي الوقت المستغرق
إذن المسافة بالسنتيمتر = 17150 * T.
لقد قمنا سابقًا بالعديد من المشاريع المفيدة باستخدام مستشعر Ultrasonic و Arduino ، تحقق منها أدناه:
- قياس المسافة على أساس اردوينو باستخدام جهاز استشعار فوق صوتي
- إنذار الباب باستخدام Arduino والمستشعر فوق الصوتي
- مراقبة القمامة المستندة إلى IOT باستخدام Arduino
تجميع روبوت منظف الأرضيات:
قم بتركيب Arduino على الهيكل. تأكد من عدم حدوث ماس كهربائى في أي شيء في حال كان الهيكل مصنوعًا من المعدن إنها فكرة جيدة أن تحصل على صندوق لاردوينو ودرع تحكم المحرك. ثبت المحركات بالعجلات والهيكل باستخدام البراغي. يجب أن يكون للهيكل الخاص بك خيارات للقيام بذلك من المصنع ، ولكن إذا لم يكن كذلك ، فيمكنك ارتجال حل مختلف. الايبوكسي ليس فكرة سيئة. قم بتركيب فرشاة الحذاء في مقدمة الهيكل. استخدمنا مزيجًا من الإيبوكسي M-Seal والبراغي المثقوبة لهذا الغرض ، على الرغم من أنه يمكنك استخدام أي حل آخر قد يكون أسهل بالنسبة لك. قم بتركيب وسادة التنظيف من سكوتش برايت خلف الفرشاة. استخدمنا عمودًا يمر عبر الهيكل الذي يحمله في اللعب ، على الرغم من أن هذا يمكن ارتداؤه أيضًا. يمكن استخدام عمود محمل بنابض لمرافقته. قم بتركيب البطاريات (أو الكابلات الموجودة في الجزء الخلفي من الهيكل المعدني).يعتبر الإيبوكسي أو حامل البطارية من الطرق الجيدة للقيام بذلك. الغراء الساخن ليس سيئًا أيضًا.
الأسلاك والتوصيلات:
حلبة روبوت التنظيف المنزلي التلقائي بسيط للغاية. قم بتوصيل مستشعر الموجات فوق الصوتية بـ Arduino كما هو مذكور أدناه ووضع درع Motor Driver على Arduino مثل أي درع آخر.
يتم توصيل دبوس Trig من Ultrasonic بالدبوس 12 على Arduino ، ودبوس Echo متصل بالدبوس 13 ، ودبوس الجهد إلى دبوس 5V والدبوس الأرضي بالدبوس الأرضي. يسمح دبوس Echo ودبوس Trig لـ Arduino بالتواصل مع المستشعر. يتم توصيل الطاقة إلى المستشعر من خلال دبابيس الجهد والأرض ، وتسمح دبابيس Trig و Echo بإرسال واستقبال البيانات باستخدام Arduino. تعرف على المزيد حول واجهة المستشعر بالموجات فوق الصوتية مع Arduino هنا.
يجب أن يحتوي درع المحرك على ناتجين على الأقل ، ويجب توصيلهما بمحركين. عادة ، يتم تسمية هذه المخرجات "M1" و "M2" أو "المحرك 1" و "المحرك 2". قم بتوصيل البطاريات وبنك الطاقة إلى درع المحرك و Arduino على التوالي. لا تتقاطع معهم. يجب أن يحتوي درع المحرك على قناة إدخال. إذا كنت تستخدم الأسلاك ، فقم بتوصيلها بمحولات التيار المتردد.
شرح البرمجة:
افتح Arduino IDE. الصق كود Arduino الكامل ، المعطى في نهاية هذا البرنامج التعليمي ، في IDE. قم بتوصيل Arduino بالكمبيوتر. حدد المنفذ في Tools / Port. انقر فوق الزر تحميل.
اختبر الروبوت. إذا تحول قليلاً أو كثيرًا ، فجرّب التأخيرات حتى تصل إلى الكمال.
قبل الدخول في الكود ، نحتاج إلى تثبيت مكتبة Adafruit Motor Shield لقيادة محركات التيار المستمر. نظرًا لأننا نستخدم درع سائق المحرك L293D ، فنحن بحاجة إلى تنزيل مكتبة AFmotor من هنا. ثم قم بإضافته إلى مجلد مكتبة Arduino IDE الخاص بك. تأكد من إعادة تسميته إلى AFMotor . تعرف على المزيد حول تثبيت هذه المكتبة.
الكود سهل ويمكن فهمه بسهولة ، لكننا هنا شرحنا أجزاء قليلة منه:
أدناه رمز يقوم بإعداد الروبوت. أولاً قمنا بتضمين مكتبة Adafruit لقيادة المحركات بدرع سائق المحرك. بعد ذلك ، حددنا Trig pin و Echo pin. كما يقوم بإعداد المحركات. يقوم بتعيين دبوس Trig للإخراج ودبوس Echo للإدخال.
# تضمين # تعريف trigPin 12 # تعريف echoPin 13 AF_DCM motor1 (1 ، MOTOR12_64KHZ) ؛ AF_DCMotor motor2 (2 ، MOTOR12_8KHZ) ؛ إعداد باطل () {pinMode (trigPin، OUTPUT) ؛ pinMode (echoPin ، INPUT) ؛ }
يخبر الكود أدناه Arduino بتكرار الأوامر التالية. بعد ذلك ، يستخدم المستشعر لنقل واستقبال الأصوات فوق الصوتية. يقوم بحساب المسافة من الجسم بمجرد ارتداد الموجات فوق الصوتية ، بعد ملاحظة أن الكائن ضمن المسافة المحددة ، يخبر Arduino بتدوير المحركات وفقًا لذلك.
حلقة فارغة () {مدة طويلة ، مسافة ؛ digitalWrite (trigPin ، LOW) ؛ تأخير ميكروثانية (2) ؛ digitalWrite (trigPin ، عالية) ؛ تأخير ميكروثانية (10) ؛ digitalWrite (trigPin ، LOW) ؛ المدة = pulseIn (echoPin ، HIGH) ؛ المسافة = (المدة / 2) / 29.1 ؛ if (مسافة <20) {motor1.setSpeed (255) ؛ motor2.setSpeed (0) ؛ motor1.run (خلفي) ؛ motor2.run (خلفي) ؛ تأخير (2000) ؛ // غيّر هذا وفقًا لكيفية دوران الروبوت.
هذا يجعل الروبوت يدور عن طريق تدوير أحد المحركات والحفاظ على الآخر في حالة ركود.
الكود أدناه يجعل الروبوت يدير كلا المحركين في نفس الاتجاه من أجل جعله يتحرك للأمام حتى يكتشف كائنًا في الحدود المذكورة أعلاه.
آخر {motor1.setSpeed (160) ؛ // قم بتغيير هذا وفقًا لمدى السرعة التي ينبغي أن ينطلق بها الروبوت الخاص بك. motor2.setSpeed (160) ؛ // قم بتغيير هذا إلى نفس القيمة التي تضعها أعلاه. motor1.run (إلى الأمام) ؛ motor2.run (إلى الأمام) ؛ }