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

Keysorter: 6 خطوات
Keysorter: 6 خطوات

فيديو: Keysorter: 6 خطوات

فيديو: Keysorter: 6 خطوات
فيديو: MMS - Key Sorter 400V 2024, يوليو
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

أنا حاليًا أدرس NMCT في Howest. في الفصل الدراسي الأخير كان علينا عمل مشروع. لذلك صنعت Keysorter.

ماذا تعمل، أو ماذا تفعل؟

لدينا الكثير من مفاتيح السيارة في المنزل وكلها تبدو متشابهة. لذلك صنعت Keysorter لحل هذه المشكلة.

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

سيتم تشغيل هذا أيضًا على Raspberry Pi الذي يحتوي أيضًا على خيار إضافة صفحة ويب عبر Flask.

في الصفحة ، يجب أن أتمكن من إلقاء نظرة على جميع المفاتيح ، وإضافة اسم إلى مفتاح وإزالة مفتاح.

الخطوة 1: الخطوة 1: ما الذي سأحتاجه؟

الخطوة 1: ما الذي سأحتاجه؟
الخطوة 1: ما الذي سأحتاجه؟
الخطوة 1: ما الذي سأحتاجه؟
الخطوة 1: ما الذي سأحتاجه؟

لقد بدأت بإعداد قائمة بالمكونات التي سأحتاجها لإنجاح هذا الشيء.

عناصر:

  • فطيرة التوت
  • 2 × سجل التحول (74hc595)
  • 3 × زر
  • 9 × ليد أخضر
  • ماسح RFID (MFRC522)
  • 12 × المقاوم 220 اوم

ثم أضع كل هذا في التخطيطي المذهل.

بمجرد أن أنتهيت من ذلك ، صنعته في الحياة الواقعية.

الخطوة 2: الخطوة 2: عمل تخطيطي لقاعدة البيانات

الخطوة 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!

موصى به: