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

CleanBot بواسطة Guillaume Meurillon: 8 خطوات
CleanBot بواسطة Guillaume Meurillon: 8 خطوات

فيديو: CleanBot بواسطة Guillaume Meurillon: 8 خطوات

فيديو: CleanBot بواسطة Guillaume Meurillon: 8 خطوات
فيديو: Robot vacuum cleaner on Arduino UNO // How to make // Homecraft 2024, يوليو
Anonim
CleanBot بواسطة Guillaume Meurillon
CleanBot بواسطة Guillaume Meurillon
CleanBot بواسطة Guillaume Meurillon
CleanBot بواسطة Guillaume Meurillon

هذا دليل لمشروع قمت بإنشائه للمدرسة. كان الهدف هو إنشاء جهاز مع Raspberry Pi كان متصلاً بالإنترنت ، أثناء جمع البيانات من أجهزة الاستشعار. يجب تخزين هذه البيانات في قاعدة بيانات (MySQL). كان لابد من تصور البيانات من خلال موقع ويب ، تم ترميزه بلغة Python مع حزمة Flask webapp ونموذج Jinja2.

كانت فكرتي هي إنشاء مكنسة روبوتية "مخترقة" ، باستخدام Raspberry Pi ، و Arduino ، ومكنسة روبوت مكسورة بالفعل ومجموعة من أجهزة الاستشعار.

الخطوة 1: تجميع الأجزاء

جمع الأجزاء
جمع الأجزاء
جمع الأجزاء
جمع الأجزاء
جمع الأجزاء
جمع الأجزاء
جمع الأجزاء
جمع الأجزاء

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

سيتم تضمين قائمة الأجزاء كملف ، بحيث يمكنك البحث بسهولة عن الأجزاء التي ستحتاجها.

قررت استخدام Arduino Uno بجوار Raspberry Pi ، حتى أتمكن من قراءة مستشعراتي بكفاءة دون الضغط على Raspberry Pi. لقد اخترت أيضًا Uno لأنه يحتوي على سرعة ساعة لطيفة ، وبسبب المسامير التناظرية. كان بإمكاني استخدام ADC (على سبيل المثال MCP3008) لـ Raspberry Pi الخاص بي ، لكنني كنت سأحتاج إلى المزيد من الأسلاك ، وكان من الممكن أن يكون أكثر تكلفة وسيتعين على Pi الخاص بي العمل بجهد أكبر.

ثم بدأت بفحص الأجزاء التي يمكن استخدامها من فراغ الروبوت المكسور. تعرضت الإلكترونيات الداخلية للتلف ، لكن لم يكن ذلك مشكلة ، لأنني سأستبدلها تمامًا على أي حال. لحسن الحظ ، كانت محركات التيار المستمر تعمل ، لذلك لم يتم استبدال أي منها.

قائمة الاجزاء:

  • Raspberry Pi 3 مع ذاكرة MicroSD بسعة 8 جيجابايت على الأقل من الفئة 10 وحالة ؛
  • Raspberry Pi T-cobbler ولوح (ألواح) التجارب ؛
  • Arduino Uno أو ما شابه (يفضل إصدار غير صيني مع ADC لائق ، وبعض الصينيين لديهم مشكلات AREF) مع نوع من الحالات ؛
  • كابل إيثرنت
  • فراغ آلي (مكسور) ؛
  • 3x HC-SR04 وحدات بالموجات فوق الصوتية ؛
  • 1x وحدة استشعار القاعة ؛
  • عدة مقاومات بقيم مختلفة ؛
  • LDR.
  • بطاريات Li-ion 6x 18650 + حاملات 3 خلايا لـ 12 فولت (يفضل استخدام بطاريات جديدة أو حتى استخدام بطاريات LiPo بشكل أفضل ، ستستمر هذه البطاريات لفترة أطول) ؛
  • 18650 (أو أي نوع من البطاريات التي ستستخدمها) 12 فولت 3 خلايا شحن ثنائي الفينيل متعدد الكلور ؛
  • بعض لوحات PCB DIY لحام المكونات الخاصة بك ؛
  • ورقة من بلاستيك البولي يوريثين.
  • كمبيوتر محمول / مكتبي.

قائمة الأدوات:

  • تمرين بعدة لقم.
  • جلاخة زاوية (لا تستخدمها إذا لم تكن لديك خبرة) أو شيء مثل Dremel ؛
  • قطعة من ورق الصنفرة
  • عدة مفكات
  • Superglue ، تركيب الغراء ،… ؛
  • مكواة لحام (استخدم الشحوم لتلحيم الأسلاك بشكل أسهل) ؛
  • زوج من قواطع الأسلاك وأداة نزع.

قائمة البرامج (اختياري):

  • Adobe XD: التخطيط الشبكي وإنشاء نموذج أولي ؛
  • فريتزينج: إنشاء مخطط كهربائي ؛
  • PyCharm Professional: Python IDE مع إمكانات استخدام النشر والمترجم الفوري ؛
  • المعجون: اتصال ssh سريع وسهل مع Pi ؛
  • Etcher.io: أداة سهلة وميض صورة Raspbian إلى بطاقة SD ؛
  • Win32DiskImager: أداة سهلة لإنشاء صورة من إعداد Raspbian الحالي ؛
  • Programmers Notepad: أداة بسيطة يمكنك استخدامها لتحرير ملف /boot/cmdline.txt بأمان.

الخطوة 2: رش الطلاء وتصميم الواجهة

رش الطلاء وتصميم الواجهة
رش الطلاء وتصميم الواجهة
رش الطلاء وتصميم الواجهة
رش الطلاء وتصميم الواجهة
رش الطلاء وتصميم الواجهة
رش الطلاء وتصميم الواجهة
رش الطلاء وتصميم الواجهة
رش الطلاء وتصميم الواجهة

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

بعد ترك رذاذ الطلاء يجف ، بحثت عن رمز اللون السداسي الدقيق للطلاء الذي استخدمته ، حتى أتمكن من مطابقة واجهة الويب الخاصة بي مع جهازي بشكل مثالي. كان العثور على هذا الرمز السداسي سهلاً للغاية ، لأنني استخدمت الكتابة على الجدران في مونتانا 94 ، وكانت الرموز السداسية والعادية على موقع الويب الخاص بهم.

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

الخطوة 3: إنشاء قاعدة البيانات

إنشاء قاعدة البيانات
إنشاء قاعدة البيانات

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

تُظهر لك الصورة تخطيط الجداول الخاصة بي ، مرسومًا في MySQL Workbench ، مع جميع العلاقات بين الجداول.

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

يحتوي الجدول التالي على "deviceruns" ، وهي عمليات التشغيل الفعلية التي قام بها الجهاز. تعود ملكية deviceruns من قبل مستخدم معين (الشخص الذي بدأ التشغيل) ، ولديها وقت البدء ووقت الانتهاء ، لحساب وقت التشغيل.

يتم استخدام جدول آخر لربط sensordata بكل جهاز. يتم تخزين المستشعرات نفسها في جدول آخر يحتوي على المعرف والاسم والوصف.

الخطوة 4: توصيل الأجزاء معًا

ربط الأجزاء معًا
ربط الأجزاء معًا
ربط الأجزاء معًا
ربط الأجزاء معًا

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

الخطوة 5: إعداد Raspberry Pi

إعداد Raspberry Pi
إعداد Raspberry Pi

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

لتثبيت نظام التشغيل ، ما عليك سوى تنزيل Etcher ، إنها أداة واجهة المستخدم الرسومية لكتابة الصورة على بطاقة micro SD الخاصة بك بسرعة وسهولة.

لتمكين وضع بدون رأس ، حتى تتمكن من الوصول إلى pi ، ستحتاج إلى تثبيت Putty على جهاز الكمبيوتر الخاص بك. الخطوة التالية هي الانتقال إلى مجلد التمهيد الذي أنشأه Etcher ، وفتح الملف cmdline.txt باستخدام محرر النصوص المفضل لديك ، مثل Programmers Notepad. أضف هذا النص إلى نهاية الملف:

الملكية الفكرية = 169.254.10.1

فقط تأكد من عدم إنشاء سطر جديد ، أضف هذا إلى نهاية السطر!

بعد ذلك ، ارجع إلى جذر مجلد Boot ، وأنشئ ملفًا باسم ssh. لا تضيف أي امتداد ، فهذا سيضمن تشغيل خادم SSH في كل مرة يتم فيها تشغيل Pi. الآن ببساطة ضع بطاقة SD في Pi الخاص بك ، وقم بتوصيل مصدر طاقة كافٍ بـ Pi الخاص بك وإضافة كابل إيثرنت بين Pi وجهاز الكمبيوتر الخاص بك.

افتح المعجون واكتب عنوان IP: 169.254.10.1. الآن انقر فوق نعم وقم بتسجيل الدخول ، اسم المستخدم الافتراضي هو pi وكلمة المرور هي raspberry.

بعد ذلك ، قم بتنفيذ الأمر التالي للحصول على التحديث:

sudo apt-get update -y && sudo apt-get ترقية -y && sudo apt-get dist-Upgrade -y

الخطوة الأخيرة هي إنشاء مترجم بايثون افتراضي على Raspberry Pi الخاص بك ، وهذا سوف ينفذ التعليمات البرمجية الخاصة بك. للقيام بذلك ، ما عليك سوى فتح المعجون واكتب ما يلي:

مشروع سودو مكدير 1

cd project1 python3 -m pip install - upgrade pip setuptools wheel virtualenv python3 -m venv - system-site-pack venv

الخطوة السادسة: كتابة تطبيق الويب

كتابة تطبيق الويب
كتابة تطبيق الويب

بعد توصيل كل جزء وإعداد Raspberry Pi ، بدأت في كتابة تطبيق الويب الرئيسي الخاص بي باستخدام Flask و Jinja2. Flask هو إطار عمل خلفي سهل الاستخدام لبايثون ، و Jinja2 هي لغة القوالب التي استخدمتها. باستخدام Jinja ، يمكنك إنشاء ملفات HTML عادية باستخدام حلقات for ، إذا كانت الهياكل وما إلى ذلك.

أثناء ترميز الواجهة الخلفية ، قمت أيضًا بكتابة الواجهة الأمامية للتطبيق ، بما في ذلك HTML و CSS و JavaScript لبعض العناصر. لقد استخدمت طريقة ITCSS وتدوين BEM لأوراق الأنماط الخاصة بي.

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

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

تطبيق الويب متصل بالجهاز الذي يعمل بشكل رئيسي مع Python Threading. عندما ينقر المستخدم على زر البدء ، يتم إنشاء سلسلة رسائل لتشغيل الجهاز في الخلفية. وفي الوقت نفسه ، يمكن للمستخدم تصفح التطبيق بشكل مثالي. عند النقر فوق "إيقاف" ، يتم إيقاف هذا الخيط وبالتالي يتوقف الجهاز.

الخطوة 7: إنشاء قطع لإنهاء الغلاف

خلق قطع لإنهاء الغلاف
خلق قطع لإنهاء الغلاف
خلق قطع لإنهاء الغلاف
خلق قطع لإنهاء الغلاف
خلق قطع لإنهاء الغلاف
خلق قطع لإنهاء الغلاف
خلق قطع لإنهاء الغلاف
خلق قطع لإنهاء الغلاف

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

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

الحامل الآخر عبارة عن دعم لأجهزة استشعار الموجات فوق الصوتية HC-SR04 الموجودة في مقدمة الجهاز.

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

بعد الانتهاء من هذه الأقواس ، قمت أيضًا برشها بالطلاء الذي تركته ، لجعلها تتناسب مع التصميم.

الخطوة 8: الكود

لتثبيت البرنامج ، قم بتنزيل ملف code.zip وفك ضغطه في دليل المشروع 1.

بعد ذلك ، قم بتنفيذ هذا الأمر في محطة على Raspbian أو Putty:

sudo cp project1 / conf / project-1 * / etc / systemd / system /

sudo cp project1 / conf / project1- * / etc / systemd / system / sudo systemctl daemon-reload sudo systemctl enable project-1 * sudo systemctl enable project1 * sudo systemctl أعد تشغيل nginx

بعد ذلك ، افتح قاعدة البيانات التي أنشأتها وأنشئ مستخدمًا جديدًا بكلمة مرور Argon2 مجزأة. الآن يمكنك استخدام البرنامج.

يتمتع!

موصى به: