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

نافورة مياه تلامسية: 9 خطوات (بالصور)
نافورة مياه تلامسية: 9 خطوات (بالصور)

فيديو: نافورة مياه تلامسية: 9 خطوات (بالصور)

فيديو: نافورة مياه تلامسية: 9 خطوات (بالصور)
فيديو: نافورة مياه بدون كهرباء نافورة بدون توقف نافورة من ازايز المياه 2024, يوليو
Anonim
نافورة مياه تلامسية
نافورة مياه تلامسية

في نهاية عامي الأول كطالب MCT ، تم تكليفي بعمل مشروع يحتوي على جميع المهارات التي اكتسبتها من الدورات على مدار العام.

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

يستخدم هذا المشروع مستشعر المسافة لاكتشاف ما إذا كان قد تم وضع كوب أو زجاج تحت ناتج المياه ، ثم تبدأ النافورة بإخراج الماء لمدة 60 ثانية (100 مل / دقيقة). هذا لجعله أكثر اتساقًا لأن اكتشاف ما إذا كان الزجاج قد تم سحبه بعيدًا ثبت أنه صعب جدًا / بطيء في المهمة وهذا هو سبب وضع عداد في مكانه. بعد ملء كوبك بـ 100 مل من الماء ، يمكنك الانتظار لمدة 5 ثوانٍ وإذا كان الزجاج لا يزال أمام مستشعر المسافة ، فسيتم ملء وقت آخر (وهذا يعني أيضًا أن هناك مهلة مدتها 5 ثوانٍ بين ملء زجاجتين مختلفتين العناصر).

اللوازم

عناصر

- 1x RaspberryPi (لقد استخدمت الإصدار الرابع ولكن الإصدارات الأقدم قد تعمل أيضًا) - قد يعمل الترانزستور 1x S8050 أو الترانزستور 1x PN2222 أيضًا- 1x Photoresistor- 1x HC-SR04 (مستشعر المسافة بالموجات فوق الصوتية) - 1x RFID-RC522-3x مختلفة ألوان LEDs (أزرق ، أصفر ، أحمر) - 1x LCD1602- 1x Active Buzzer- 1x PCF8574- 1x MCP3008- 1x Water Pump (تم استخدام مضخة تمعجية بجهد 12 فولت ، رابط لهذا العنصر)

- مصدر طاقة تيار مستمر 1x (12 فولت ، 600 مللي أمبير في الساعة) - طوبة طاقة واحدة مع 3 نقاط - ألواح توصيل 3x (ربما يمكنك استخدام أقل) - T-cobbler لدبابيس RaspberryPi GPIO - كابل T-cobbler (للتوصيل بين pi والإسكافي)

المواد والأدوات المستخدمة

- تمرين باستخدام لقم الثقب التالية:

- 4 مم (للحفر المسبق للبراغي) - 15 مم (لحفر الثقوب لمستشعر المسافة)

- أي مفك براغي - 30 برغي بطول 45 مم - 6 براغي 20 مم - 2 مفصلات للباب - لوحة من MDF بحجم 130 سم في 80 سم - زوجان من الملفات

الخطوة 1: تجميع الدائرة

تجميع الدائرة
تجميع الدائرة
تجميع الدائرة
تجميع الدائرة
تجميع الدائرة
تجميع الدائرة

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

بالنسبة للعناصر النشطة ، لدينا شاشة LCD1602 وجرس نشط ومضخة تمعجية ، يتم استخدام شاشة LCD لعرض الحالة مثل ما إذا كانت العلبة مفتوحة أو المضخة تعمل وكذلك سيتم عرض عنوان IP للجهاز ، الجرس هو تُستخدم لإصدار صوت ينذر بالخطر عند فتح العلبة دون تصريح من أحد.

لقد أضفت اللوح ووجهات النظر التخطيطية للدائرة أدناه.

الخطوة 2: إعداد RaspberryPi الخاص بنا

لإعداد RaspberryPi الخاص بنا ، سنقوم بتنزيل برنامج التصوير من موقع Raspberry ، وبذلك يمكنك تنزيل إصدار Raspbian الذي تريده وتصوير بطاقة SDCARD الخاصة بك. بعد أن تنتهي هذه الأداة من عملها ، يمكنك فتح SDCARD في Windows Explorer ، وستتمكن من رؤية قسم التمهيد الخاص بـ RaspberryPi. هنا سنجد ملفًا يسمى cmdline.txt (لا تفتح هذا الملف في المفكرة ، وافتحه في Notepad ++ أو أي IDE آخر). سنضيف ip = 169.254.10.1 في نهاية هذا الملف للتأكد من أنه يمكننا الاتصال بجهازنا عبر ethernet (تأكد من عدم إضافة أي ENTERS في نهاية ملفك وإلا فستواجه مشكلة).

يمكنك الآن وضع بطاقة SDCARD الخاصة بك في RaspberryPi وتشغيلها ، وتوصيل Pi بجهاز الكمبيوتر الخاص بك واستخدام Putty للاتصال بـ Pi عبر SSH. أستخدم الأمر التالي للاتصال بـ Pi بدلاً من استخدام Putty. "ssh [email protected]" قد تنتهي هذه المهلة ، لذا كن صبورًا وانتظر حتى يتم تمهيد Pi. بمجرد المطالبة بكلمة المرور ، سنقوم بملء كلمة المرور الافتراضية "raspberry". تأكد من تغيير كلمة المرور هذه بعد تسجيل الدخول لمنع أي شخص لديه نية سيئة من الوصول إلى Raspberry Pi الخاص بك.

سنقوم الآن بتكوين Pi الخاص بنا لتوفير الوظائف اللازمة للكود الخاص بنا. استخدم "sudo raspi-config" لفتح قائمة التكوين وهنا سننتقل إلى Interfacing Options.

هنا سنقوم بتبديل الخيارات التالية ON: - SPI- I2C

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

الحزم: (قم بتشغيل الأوامر بالترتيب كما هو موضح هنا)

ما يلي للحصول على آخر التحديثات الخاصة بنا Pi- sudo apt update && apt Upgrade -y

قم بتثبيت خادم MySQL وخادم الويب - sudo apt install mariadb-server apache2

سأستخدم MySQL Workbench لإعداد قاعدة البيانات لاحقًا في هذا الدليل ، إذا كنت لا تستخدم هذا وتفضل phpmyadmin ، يمكنك تثبيت هذا باستخدام الأمر التالي ، فأنت حر في استخدام أي عميل MySQL آخر طالما أنك قادر على استيراد قاعدة البيانات بشكل صحيح. - sudo apt install phpmyadmin

بعد الانتهاء من كل ما سبق ، نحتاج إلى إنشاء مستخدم لقاعدة بياناتنا. استخدم "sudo mysql -u root" لتسجيل الدخول إلى خادم MySQL ، هنا سننشئ مستخدمًا يسمى db_admin بكلمة المرور الخاصة به ، احتفظ تمت الإشارة إلى كلمة المرور هذه في مكان ما لاحقًا في التعليمات. امنح جميع الامتيازات في *. * TO "db_admin" @ "٪" مُعرَّف بواسطة "yourPasswordHere" WITH GRANT OPTION ؛

استخدم الأمر "\ q" للخروج من محطة MySQL.

حزم Python: ما زلنا بحاجة إلى تثبيت بعض حزم python قبل المتابعة ، قم بتشغيل الأمر أدناه للتأكد من أن كل شيء موجود للحصول على تجربة لا تشوبها شائبة.

sudo pip3 تثبيت قارورة-قارورة كورس-مقبس- جيفينت-ويبسوكيت جرينليت سبي-بيسبيديف

بالإضافة إلى MySQL التالية ، قم بتوصيل حزم python ، أو apt install python3-mysql.connector -y

إذا سارت الأمور على ما يرام ، يمكنك الآن زيارة Pi على متصفح الويب الخاص بك بالعنوان التالي

الخطوة الثالثة: إعداد الواجهة الخلفية

إعداد الخلفية
إعداد الخلفية

سأشرح هنا كيف يمكنك إعداد الواجهة الخلفية بنفسك ، قم أولاً بتنزيل ملف rar من الأسفل ، قم بفك ضغطه على دليل مؤقت. اتصل بـ RaspberryPi الخاص بك باستخدام FileZilla أو WinSCP باستخدام بيانات الاعتماد التالية:

IP: 169.254.10.1 المستخدم: piPassword: raspberry (إذا قمت بتغيير كلمة المرور ، فافعل ذلك هنا أيضًا)

يمكنك بعد ذلك المضي قدمًا في نقل الملفات التي قمت بإلغاء تحديدها إلى أي دليل تريده في الدليل الرئيسي لمستخدم pi. من أجل التبسيط ، سنفترض في هذا الإعداد أننا حمّلنا جميع ملفاتنا ضمن دليل المستندات.

احتفظ ببرنامج FTP مفتوحًا للخطوة التالية!

افتح الآن موجه الأوامر مرة أخرى باستخدام اتصال SSH لأننا سنحتاج إلى إجراء بعض التغييرات على خادم الويب حتى تتمكن الواجهة الأمامية من الاتصال بالواجهة الخلفية ، سنقوم بفتح ملف تكوين Apache2 الافتراضي وتعديله قليلاً: sudo nano /etc/apache2/sites-available/000-default.conf

أضف الأسطر التالية أسفل DocumentRoot في ملف التكوين الذي فتحناه للتو: ProxyPass / api / https://127.0.0.1:5000/api/ProxyPassReverse / api /

يمكنك إلقاء نظرة على الصورة المرفقة على سبيل المثال.

الخطوة 4: إعداد الواجهة الأمامية

قبل نقل ملفاتنا ، سيتعين علينا القيام بشيء ما قبل أن نتمكن من البدء في نقل ملفات الواجهة الأمامية الخاصة بنا. افتح موجه الأوامر الخاص بك باستخدام اتصال SSH الذي أجريته مسبقًا واستخدم الأمر أدناه للتبديل إلى المستخدم الجذر لـ RaspberryPi الخاص بنا: "sudo su -"

بعد ذلك ، يمكننا تغيير كلمة مرور المستخدم الجذر باستخدام الأمر التالي: "passwd" سيطلب منك ذلك إدخال كلمة مرور جديدة ، وبعد القيام بذلك ، يمكنك التبديل مرة أخرى إلى برنامج FTP وتسجيل الدخول باستخدام بيانات اعتماد الجذر الخاصة بك:

IP: 169.254.10.1 المستخدم: root

قم بتنزيل ملف rar من الأسفل وفك ضغطه في مجلد مؤقت ، يمكنك نقل هذه الملفات إلى RaspberryPi الخاص بك إلى الدليل التالي / var / www / html / ، بعد الانتهاء من ذلك يمكنك زيارة الواجهة الأمامية على http: / /169.254.10.1 ، لا يمكنك التفاعل بعد لأن الواجهة الخلفية لم تعمل بعد ، سأوضح لك لاحقًا في هذا الدليل كيفية القيام بذلك.

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

استيراد قاعدة البيانات لمشروعنا
استيراد قاعدة البيانات لمشروعنا
استيراد قاعدة البيانات لمشروعنا
استيراد قاعدة البيانات لمشروعنا

افتح برنامج إدارة خادم MySQL المفضل لديك واتصل بـ Raspberry Pi باستخدام بيانات الاعتماد التي أنشأناها في الخطوة 2.

قم بتنزيل ملف تفريغ قاعدة البيانات من الأسفل واستيراده كما تفعل عادةً ، ومنضدة MySQL ستذهب إلى File> Open SQL Script وحدد ملف تفريغ قاعدة البيانات الذي قمت بتنزيله ، ثم اضغط على CTRL + SHIFT + ENTER ويجب تشغيل برنامج SQL النصي والهيكل لقاعدة البيانات.

لقد أضفت بيانات الاعتماد التي استخدمتها لـ RaspberryPi كمثال أدناه بالإضافة إلى العديد من الصور لهيكل قاعدة البيانات ، يمكنك إلقاء نظرة عليها ومحاولة الحصول على فكرة عامة عن كيفية عمل كل شيء.

الخطوة السادسة: بدء مشروعنا

بدء مشروعنا
بدء مشروعنا
بدء مشروعنا
بدء مشروعنا

قبل أن نتمكن من بدء مشروعنا ، نحتاج إلى تغيير بيانات اعتماد قاعدة البيانات في ملف config.py ، إذا اتبعت الإرشادات تمامًا كما ذكر هذا الدليل ، فيمكنك العثور عليها ضمن /home/pi/Documents/Backend/src/config.py هنا تحتاج إلى تغيير بيانات اعتماد المتغير db_config لمطابقة تلك التي أنشأناها سابقًا لقاعدة البيانات الخاصة بنا. لقد أضفت مثالاً لما ستراه في هذا الملف أدناه.

بعد ذلك سنقوم بإضافة ملف خدمة. وسيتأكد هذا الملف من بدء مشروعنا عند بدء RaspberryPi ، تأكد من تغيير الدليل بشكل مناسب حيث قمت بتثبيت ملفات الواجهة الخلفية. استخدم الأمر التالي لإنشاء ملف الخدمة: sudo nano /etc/systemd/system/dispenser.service سيؤدي ذلك إلى إنشاء ملف خدمة ونسخ الكود أدناه ولصقه في هذا الملف.

[الوحدة] الوصف = Water DispenserAfter = mysql.service

[الخدمة] النوع = simpleRestart = alwaysRestartSec = 1User = piExecStart = / usr / bin / python3 /home/pi/Documents/Backend/index.py

[تثبيت] WantedBy = multi-user.target

قم بتعديل السطر الذي يقول /home/pi/Documents/Backend/index.py حيث قمت بتثبيت ملفاتك الخلفية ، إذا لم تفعل ذلك بشكل صحيح فلن يبدأ المشروع بشكل صحيح! سأضيف ملف المثال أدناه.

بعد القيام بذلك والخروج من محرر النصوص ، يمكننا تمكين الخدمة بالأوامر التالية: - sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser

وكميزة إضافية يمكننا تشغيل: sudo systemctl status dispenser - سيعرض هذا بعض المعلومات حول خدمتنا ، إذا كانت نشطة أم لا ، …

الخطوة 7: القضية

القضية
القضية
القضية
القضية
القضية
القضية
القضية
القضية

تهانينا ، لقد اقتربنا من ذلك ، سأضيف بعض الصور التي ستُظهر بدقة الأبعاد التي استخدمتها لمشروعي ، لقد استخدمت ألواح MDF بسمك 18 مم ، ويمكنك اختياريًا استخدام سمك مختلف. يمكن استخدام غلافي كمبدأ توجيهي لتصميم غلافك أو يمكنك إعادة إنشاء ما صنعته. (إذا كنت تستخدم سمكًا مختلفًا من MDF ، فلن تسمح لك رسوماتي بعمل تصميمي بعد الآن ، فتأكد من تكييفه!) 32 سم (اللوحة السفلية) - لوحتان مقاس 16 سم × 24 سم (اللوحة الأمامية حيث تبقى شاشة LCD واللوحة المجاورة) - لوحة واحدة مقاس 28 سم × 24 سم (اللوحة الوسطى مرئية من الأمام) - لوحة واحدة مقاس 30 سم × 24 سم (اللوحة العلوية)

الخطوة 8: اعجب بالمنتج النهائي

معجب بالمنتج النهائي
معجب بالمنتج النهائي
معجب بالمنتج النهائي
معجب بالمنتج النهائي

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

لقد أنفقت الكثير من الدماء والعرق والدموع في هذا المشروع ، لذا سأكون ممتنًا لو تركت تعليقًا ، نرحب بأي انتقاد لتحسينه!

الخطوة 9: المشاكل

أود أن أضع المشروع في حالته الحالية كنموذج أولي عملي يمكنه رؤية المزيد من التحسينات.

تم تصميم قاعدة الكود للواجهة الخلفية بطريقة تجعل علاقة العبيد الرئيسية يمكن إجراؤها بشكل مثالي حيث تعمل نافورة واحدة كواجهة أمامية رئيسية وجميع النوافير الأخرى ستدفع البيانات والتغييرات عبر REST api الخاص بالسيد. هناك أيضًا بقايا من نظام رمز API في الكود حيث كان من المفترض أن يتم تنفيذه ولكن تم قطعه لاحقًا بسبب قيود الوقت.

لقد قمت بتحميل الكود الخاص بي إلى خادم Gitlab الخاص بي وهناك يمكنك إلقاء نظرة على الكود ككل:

موصى به: