جدول المحتويات:
- الخطوة 1: الخطوة 1: ما الذي سأحتاجه؟
- الخطوة 2: الخطوة 2: عمل تخطيطي لقاعدة البيانات
- الخطوة 3: الخطوة 3: التشفير
- الخطوة 4: الخطوة 4: وضع Al the Code على My Raspberry Pi
- الخطوة 5: الخطوة 5: صنع السكن
- الخطوة 6: الخطوة 6: وضع كل شيء في المسكن
فيديو: Keysorter: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
أنا حاليًا أدرس NMCT في Howest. في الفصل الدراسي الأخير كان علينا عمل مشروع. لذلك صنعت Keysorter.
ماذا تعمل، أو ماذا تفعل؟
لدينا الكثير من مفاتيح السيارة في المنزل وكلها تبدو متشابهة. لذلك صنعت Keysorter لحل هذه المشكلة.
يجب أن يقوم بمسح مفتاح عبر RFID ومنحه مكانًا في الصندوق. إذا قمت بمسح نفس المفتاح مرة أخرى ، فسيظهر المكان المخصص له مسبقًا. يوجد أيضًا زر لإظهار آخر سيارة مغسولة.
سيتم تشغيل هذا أيضًا على Raspberry Pi الذي يحتوي أيضًا على خيار إضافة صفحة ويب عبر Flask.
في الصفحة ، يجب أن أتمكن من إلقاء نظرة على جميع المفاتيح ، وإضافة اسم إلى مفتاح وإزالة مفتاح.
الخطوة 1: الخطوة 1: ما الذي سأحتاجه؟
لقد بدأت بإعداد قائمة بالمكونات التي سأحتاجها لإنجاح هذا الشيء.
عناصر:
- فطيرة التوت
- 2 × سجل التحول (74hc595)
- 3 × زر
- 9 × ليد أخضر
- ماسح RFID (MFRC522)
- 12 × المقاوم 220 اوم
ثم أضع كل هذا في التخطيطي المذهل.
بمجرد أن أنتهيت من ذلك ، صنعته في الحياة الواقعية.
الخطوة 2: الخطوة 2: عمل تخطيطي لقاعدة البيانات
لحفظ جميع بياناتي ، كان علي إنشاء قاعدة بيانات يمكن تشغيلها على Pi.
لقد صنعته في Mysql.
عربة الطاولة:
- معرف السيارة
- معرف المستخدم
- الماركة (ماركة السيارة)
- نوع
- آخر غسل
- مفتاح
- RFID_ID
الخطوة 3: الخطوة 3: التشفير
عندما كان كل هذا جاهزًا ، كان بإمكاني البدء في الترميز.
لقد بدأت بصنع رمز لجهاز الاستشعار الخاص بي في Python 3.5.
لتنزيل الكود اضغط هنا.
استخدم الرابط لاستنساخ المشروع.
الخطوة 4: الخطوة 4: وضع Al the Code على My Raspberry Pi
تثبيت الحزم
أولاً ، قمت بتثبيت جميع الحزم التي أحتاجها لإنجاح هذا العمل.
me @ my-rpi: ~ $ sudo apt update
me @ my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
بيئة افتراضية
me @ my-rpi: ~ python3 -m pip install --upgrade pip setuptools wheel virtualenvme @ my-rpi: ~ $ mkdir project1 && cd project1 me @ my-rpi: ~ / project1 $ python3 -m venv - system- حزم الموقع env me @ my-rpi: ~ / project1 $ source env / bin / activ (env) me @ my-rpi: ~ / project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
قم بتحميل المشروع على Pi الخاص بك باستخدام pycharm
افتح Pycharm وانتقل إلى VCS> استيراد من التحكم في الإصدار> Github وانسخ ملف github الخاص بي.
ضع تهيئة النشر في الدليل الذي أنشأته للتو. (/ home / me / project1). اضغط على تطبيق!
انتقل إلى إعدادات المترجم الفوري واختر البيئة الافتراضية التي أنشأتها للتو. (/ home / me / project1 / env / bin / pyhon)
تحقق مما إذا كان تعيين المسار صحيحًا.
يمكنك الآن تحميل الكود إلى دليلك باستخدام Pycharm.
قاعدة البيانات
تحقق مما إذا كانت قاعدة البيانات قيد التشغيل. يجب أن تحصل على شيء مثل هذا:
me @ my-rpi: ~ sudo systemctl status mysql ● mariadb.service - تحميل خادم قاعدة بيانات MariaDB: تم تحميله (/lib/systemd/system/mariadb.service ؛ مُمكّن ؛ ضبط البائع مسبقًا: ممكّن) نشط: نشط (قيد التشغيل) منذ الشمس 2018-06-03 09:41:18 بتوقيت وسط أوروبا الصيفي ؛ قبل يوم واحد 4 ساعات PID الرئيسي: 781 (mysqld) الحالة: "أخذ طلبات SQL الآن …" المهام: 28 (الحد: 4915) CGroup: /system.slice/mariadb.service └─781 / usr / sbin / mysqld
Jun 03 09:41:13 my-rpi systemd [1]: بدء خادم قاعدة بيانات MariaDB… Jun 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [ملاحظة] / usr / sbin / mysqld (mysqld 10.1.26-MariaDB-0 + deb9u1) 03 يونيو 09:41:18 my-rpi systemd [1]: بدأ خادم قاعدة بيانات MariaDB.
me @ my-rpi: ~ $ ss -lt | grep mysql LISTEN 0 80 127.0.0.1:mysql *: *
إنشاء المستخدمين وإضافة قاعدة البيانات
me @ my-rpi: ~ $ sudo mariadb
بمجرد دخولك إلى قاعدة البيانات ، قم بذلك.
إنشاء مستخدم 'project1-admin' @ 'localhost' تم تحديده بواسطة 'adminpassword' ؛ إنشاء مستخدم 'project1-web' @ 'localhost' معرف بواسطة 'webpassword' ؛ إنشاء مستخدم "project1-sensor" @ "localhost" تم تحديده بواسطة "sensorpassword" ؛
إنشاء مشروع قاعدة بيانات 1 ؛
منح جميع الامتيازات في project1. * إلى "project1-admin" @ "localhost" مع خيار المنحة ؛ منح الاختيار ، إدراج ، تحديث ، حذف في المشروع 1. * إلى "مشروع 1 ويب" @ "مضيف محلي" ؛ منح الاختيار والإدراج والتحديث والحذف في المشروع 1. * إلى "مستشعر المشروع 1" @ "المضيف المحلي" ؛ امتيازات التنظيف ؛
إنشاء جدول `المستخدم` (` idUser` int (11) NOT NULL ، `Password` varchar (45) DEFAULT NULL ، PRIMARY KEY (` idUser`)) Engine = InnoDB DEFAULT CHARSET = utf8
إنشاء جدول `سيارة` (` idCar` int (11) NOT NULL AUTO_INCREMENT، `idUser` int (11) NOT NULL،` Brand` varchar (45) DEFAULT NULL، `Type` varchar (45) DEFAULT NULL،` LastWashed` datetime DEFAULT NULL ، `RFID_Number` varchar (15) DEFAULT NULL ،` Key` varchar (5) DEFAULT NULL ، PRIMARY KEY (`idCar` ،` idUser`) ، KEY `fk_Car_User1_idx` (` idUser`) ، CONSTRAINT `fk1T المراجع الخارجية (`idUser`)` user` (`idUser`) عند حذف أي إجراء على التحديث بلا إجراء) المحرك = InnoDB AUTO_INCREMENT = 4 مجموعة افتراضية = utf8
قم بتوصيل قاعدة البيانات الخاصة بك بـ Pycharm
انقر فوق علامة تبويب قاعدة البيانات على الجانب الأيمن. إذا لم يكن لديك علامة تبويب افتحها ، فافعل ذلك: عرض> أداة Windows> قاعدة البيانات.
انقر فوق إضافة اتصال. اختر مصدر البيانات> MySQL (إذا كان هناك زر تنزيل ، اضغط عليه.)
انتقل إلى SSH / SSL en تحقق من SSH. املأ بيانات اعتماد Raspberry pi (المضيف / المستخدم / كلمة المرور). يجب أن يكون المنفذ 22 ولا تنس التحقق من تذكر كلمة المرور.
ارجع إلى الجنرال. يجب أن يكون المضيف مضيف محلي وأن تكون قاعدة البيانات مشروع 1. املأ بيانات الاعتماد من مسؤول المشروع 1 واختبر الاتصال.
إذا كان الاتصال على ما يرام ، فانتقل إلى علامة التبويب المخططات وتأكد من تحديد المشروع 1.
تحقق مما إذا كانت قاعدة البيانات صحيحة
me @ my-rpi: ~ $ echo "إظهار الطاولات ؛" | mysql project1 -t -u project1-admin -p أدخل كلمة المرور: + --------------------------- + | Tables_in_project1 | + --------------------------- + | جهاز استشعار | | المستخدمين | + --------------------------- +
ملفات التكوين
في دليل أسيوط ستجد 4 ملفات. يجب عليك تغيير أسماء المستخدمين إلى اسم المستخدم الخاص بك.
سيستم د
لبدء كل شيء يجب عليك تنفيذ هذه الأوامر.
me @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /
me @ my-rpi: ~ / project1 $ sudo systemctl daemon-reload me @ my-rpi: ~ / project1 $ sudo systemctl start project1- * me @ my-rpi: ~ / project1 $ sudo systemctl status project1- * ● project1- flask.service - مثيل uWSGI لخدمة واجهة الويب الخاصة بالمشروع 1 تم تحميله: تم تحميله (/etc/systemd/system/project1-flask.service ؛ معطل ؛ الإعداد المسبق للمورد: ممكّن) نشط: نشط (قيد التشغيل) منذ الاثنين 2018-06-04 13: 14:56 بتوقيت وسط أوروبا الصيفي ؛ منذ 1 ثانية Main PID: 6618 (uwsgi) المهام: 6 (الحد: 4915) CGroup: /system.slice/project1-flask.service ├─6618 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini ├─6620 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini ├─6622 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623 / usr / bin / uwsgi --ini / home / me / مشروع 1 / conf / uwsgi-flask.ini └─6624 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini
يونيو 04 13:14:56 my-rpi uwsgi [6618]: تعيين 383928 بايت (374 كيلوبايت) لـ 5 نوى يونيو 04 13:14:56 my-rpi uwsgi [6618]: *** الوضع التشغيلي: Preforking ***
● project1-sensor.service - تم تحميل خدمة مستشعر المشروع 1: تم تحميل (/etc/systemd/system/project1-sensor.service ؛ معطل ؛ الإعداد المسبق للمورد: ممكّن) نشط: نشط (قيد التشغيل) منذ الاثنين 2018-06-04 13: 16:49 بتوقيت وسط أوروبا الصيفي ؛ منذ 5 ثوانٍ معرف المنتج الرئيسي: 6826 (بيثون) المهام: 1 (الحد: 4915) مجموعة المجموعة: / system.slice/project1-sensor.service └─6826 / home / me / project1 / env / bin / python / home / me / project1 /sensor/sensor.py
Jun 04 13:16:49 my-rpi systemd [1]: بدأت خدمة مستشعر المشروع 1. Jun 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Saved sensor process_count = b'217 / n 'إلى قاعدة بيانات Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: المستشعر المحفوظ process_count = b'218 / n 'إلى قاعدة البيانات
nginx
me @ my-rpi: ~ / project1 $ ls -l / etc / nginx / sites- *
/ etc / nginx / sites-available: total 4 -rw-r - r-- 1 root root 2416 Jul 12 2017 افتراضي
/ etc / nginx / sites-enabled: total 0 lrwxrwxrwx 1 root root 34 Jan 18 13:25 افتراضي -> / etc / nginx / sites-available / default
لجعل كل شيء افتراضيًا ، قم بتنفيذ هذه الأوامر.
me @ my-rpi: ~ / project1 $ sudo cp conf / nginx / etc / nginx / sites-available / project1me @ my-rpi: ~ / project1 $ sudo rm / etc / nginx / sites-enabled / default me @ my- rpi: ~ / project1 $ sudo ln -s / etc / nginx / sites-available / project1 / etc / nginx / sites-enabled / project1 me @ my-rpi: ~ / project1 $ sudo systemctl أعد تشغيل nginx.service
بدء تلقائي
لنتأكد من أن كل شيء يبدأ تلقائيًا.
انتقل إلى دليل conf وقم بتنفيذ هذه الأوامر النهائية وانتهيت!
me @ my-rpi: ~ / project1 $ sudo systemctl قم بتمكين project1- *
إذا قمت بإعادة تشغيل Pi الخاص بك ، فيجب أن يبدأ تلقائيًا.
الخطوة 5: الخطوة 5: صنع السكن
إعادة التدوير
ولجعل مسكني ، استخدمت خزانة قديمة كانت أمي تتخلص منها.
يتمركز
لقد رأيت 4 ألواح (34 سم × 26 سم). (إذن فهو مكعب من 34 × 34 × 26).
في الجزء السفلي أضفت قطعة رقيقة من الخشب في الأسفل.
مجلس مع الصمام
في المنتصف ، وضعت قطعتين صغيرتين من الخشب على كل جانب على ارتفاع 9 سم من الأعلى. هذا يحمل اللوحة حيث سيجلس المصباح.
اللوح المزود بمصابيح LED عبارة عن لوحة صغيرة (32 سم × 32 سم).
لقد قمت بحفر 9 ثقوب للخروج منها.
قطاع
لقد صنعت التقسيم بنفس مادة الجزء السفلي واللوح باستخدام مصابيح LED.
4 قطع مع شق في كل منها 10.3 سم (9 سم × 31 سم). الآن أنا قادر على تجميعها معًا.
أزرار وقارئ RFID
لقد صنعت ثقبًا في القاعدة لوضع قارئ وأزرار RFID فيها. بالنسبة إلى RFID ، أضع قطعة رقيقة من اللوحة أمامها لجعلها تبدو أنظف.
الخطوة 6: الخطوة 6: وضع كل شيء في المسكن
هذا يعتمد على الطريقة التي تريد القيام بها. أنا شخصياً استخدمت الكثير من الكابلات بدون لحام لأنني أريد أن أكون قادرًا على إعادة استخدام Raspberry Pi الخاص بي.
لقد قمت بلصق المصباح في مكانه وقمت بتسجيل قارئ RFID وألواح التجارب على العلبة.
وهذه هي الطريقة التي تصنع بها Keysorter!
موصى به:
تصميم اللعبة في فليك في 5 خطوات: 5 خطوات
تصميم اللعبة في Flick in 5 Steps: Flick هي طريقة بسيطة حقًا لصنع لعبة ، لا سيما شيء مثل الألغاز أو الرواية المرئية أو لعبة المغامرة
نظام اردوينو لتنبيه وقوف السيارة عند الرجوع للخلف - خطوات خطوة: 4 خطوات
نظام اردوينو لتنبيه وقوف السيارة عند الرجوع للخلف | خطوات بخطوة: في هذا المشروع ، سأصمم دائرة مستشعر لعكس مواقف السيارات من Arduino باستخدام مستشعر الموجات فوق الصوتية Arduino UNO و HC-SR04. يمكن استخدام نظام التنبيه العكسي للسيارة المستند إلى Arduino للتنقل الذاتي ومجموعة الروبوتات وغيرها من النطاقات
اكتشاف الوجه على Raspberry Pi 4B في 3 خطوات: 3 خطوات
اكتشاف الوجه على Raspberry Pi 4B في 3 خطوات: في هذا Instructable سنقوم باكتشاف الوجه على Raspberry Pi 4 باستخدام Shunya O / S باستخدام مكتبة Shunyaface. Shunyaface هي مكتبة للتعرف على الوجوه / الكشف عنها. يهدف المشروع إلى تحقيق أسرع سرعة في الكشف والتعرف مع
كيف تصنع عداد خطوات؟: 3 خطوات (بالصور)
How to Make Step Counter؟: اعتدت أن أؤدي أداءً جيدًا في العديد من الرياضات: المشي والجري وركوب الدراجة ولعب كرة الريشة وما إلى ذلك ، أحب ركوب الخيل للسفر في وقت قريب. حسنًا ، انظر إلى بطني المنتفخ … حسنًا ، على أي حال ، قررت إعادة التمرين. ما هي المعدات التي يجب أن أحضرها؟
Arduino Halloween Edition - شاشة زومبي المنبثقة (خطوات بالصور): 6 خطوات
Arduino Halloween Edition - شاشة زومبي المنبثقة (خطوات بالصور): هل تريد تخويف أصدقائك وإحداث بعض ضوضاء الصراخ في عيد الهالوين؟ أو تريد فقط عمل مزحة جيدة؟ يمكن لشاشة الزومبي المنبثقة القيام بذلك! في هذا Instructable ، سوف أعلمك كيفية جعل زومبي القفز للخارج بسهولة باستخدام Arduino. HC-SR0