Съдържание:

Keysorter: 6 стъпки
Keysorter: 6 стъпки

Видео: Keysorter: 6 стъпки

Видео: Keysorter: 6 стъпки
Видео: The Science of Six Degrees of Separation 2024, Ноември
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

В момента уча NMCT в Howest. За последния ни семестър трябваше да направим проект. Така че направих Keysorter.

Какво прави?

Вкъщи имаме много ключове от колата и всички те си приличат. Затова направих Keysorter за решаване на този проблем.

Той трябва да сканира ключ чрез RFID и да му даде място в кутията. Ако сканирам отново същия ключ, той ще покаже мястото, което му е било определено по -рано. Има и бутон за показване на последната измита кола.

Това ще работи и на Raspberry Pi, който също има опция за добавяне на уеб страница чрез Flask.

На страницата трябва да мога да разгледам всички ключове, да добавя име към ключ и да премахна ключ.

Стъпка 1: Стъпка 1: Какво ще ми трябва?

Стъпка 1: Какво ще ми трябва?
Стъпка 1: Какво ще ми трябва?
Стъпка 1: Какво ще ми трябва?
Стъпка 1: Какво ще ми трябва?

Започнах, като направих списък с компоненти, които ще ми трябват, за да работи това нещо.

Компоненти:

  • Малина пи
  • 2 x регистър за смяна (74hc595)
  • 3 x бутон
  • 9 x зелен светодиод
  • RFID скенер (MFRC522)
  • 12 x резистор 220 ома

След това сложих всичко това в схемата си за фриттинг.

След като направих това, успях в реалния живот.

Стъпка 2: Стъпка 2: Създаване на схема на база данни

Стъпка 2: Създаване на схема на база данни
Стъпка 2: Създаване на схема на база данни

За да запазя всичките си данни, трябваше да създам база данни, която да работи на моя Pi.

Направих го в Mysql.

Настолна кола:

  • Идентификационен номер на автомобил
  • User ID
  • Марка (марка автомобил)
  • Тип
  • Последно измито
  • Ключ
  • RFID_ID

Стъпка 3: Стъпка 3: Кодиране

Стъпка 3: Кодиране
Стъпка 3: Кодиране

Когато всичко това беше готово, можех да започна да кодирам.

Започнах, като направих кода за моя сензор в Python 3.5.

За да изтеглите кода, щракнете тук.

Използвайте връзката, за да клонирате проекта.

Стъпка 4: Стъпка 4: Поставяне на Al кода на My Raspberry Pi

Инсталиране на пакети

Първо инсталирах всички пакети, от които се нуждаех, за да работи това.

me@my-rpi: ~ $ sudo apt update

me@my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-сървър uwsgi nginx uwsgi-plugin-python3

Виртуална среда

me@my-rpi: ~ $ python3 -m pip install-надстройка на pip setuptools колело virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv --система- сайтове-пакети env me@my-rpi: ~/project1 $ източник env/bin/активиране (env) мен@my-rpi: ~/project1 $ python -m pip инсталиране на mysql-конектор-python argon2-cffi колба колба-HTTPAuth Flask-MySQL mysql-конектор-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 CEST; Преди 1 ден 4 часа Основен PID: 781 (mysqld) Статус: „Приемане на вашите SQL заявки сега …“Задачи: 28 (ограничение: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

03 юни 09:41:13 my-rpi systemd [1]: Стартиране на сървър на база данни MariaDB… 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

след като сте в базата данни, направете това.

CREATE USER 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; CREATE USER 'project1-sensor'@'localhost' ИДЕНТИФИЦИРАНО ОТ 'sensorpassword';

CREATE DATABASE project1;

ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ на project1.* На 'project1-admin'@'localhost' С ОПЦИЯ ЗА ГРАНТ; ГРАНТИРАЙТЕ ИЗБЕРЕТЕ, ИНСЕРТИРАЙТЕ, АКТУАЛИЗИРАЙТЕ, ИЗТРИЙТЕ НА проект1.* КЪМ 'project1-web'@'localhost'; ГРАНТИРАНЕ НА ИЗБОР, ИНСЕРТИРАНЕ, АКТУАЛИЗИРАНЕ, ИЗТРИВАНЕ НА проект1.* НА 'project1-sensor'@'localhost'; ФЛУШ ПРИВИЛЕГИ;

CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

CREATE TABLE `car` (` 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 ЧУЖДЕН КЛЮЧ („idUser“) РЕФЕРЕНЦИИ „user“(„idUser“) ON ИЗТРИВАНЕ НЯМА ДЕЙСТВИЕ НА АКТУАЛИЗАЦИЯ НЯМА ДЕЙСТВИЕ) ДВИГАТЕЛ = InnoDB AUTO_INCREMENT = 4 КАРТА ПО УМОЛЧАНЕ = utf8

Свържете вашата база данни с Pycharm

Кликнете върху раздела база данни от дясната страна. Ако нямате отворен раздел, направете следното: Изглед> Инструменти Windows> База данни.

Щракнете върху добавяне на връзка. Изберете Източник на данни> MySQL (Ако има бутон за изтегляне на драйвер, натиснете го.)

Отидете на SSH/SSL и проверете SSH. Попълнете вашите идентификационни данни за Raspberry pi (хост/потребител/парола). Портът трябва да е 22 и не забравяйте да проверите паролата за запомняне.

Върнете се към Генерала. Хостът трябва да бъде localhost, а базата данни трябва да бъде project1. Попълнете идентификационните данни от project1-admin en тествайте връзката.

Ако връзката е ОК, отидете в раздела Схеми и се уверете, че project1 е проверен.

Проверете дали базата данни е правилна

me@my-rpi: ~ $ echo 'покажи таблици;' | mysql project1 -t -u project1-admin -pВъведете парола: + --------------------------- + | Таблици_в_проект1 | + ---------------------------+ | сензор | | потребители | +---------------------------+

Конфигурационни файлове

В директорията conf ще намерите 4 файла. Трябва да промените потребителските имена на вашето потребителско име.

Systemd

За да стартирате всичко, трябва да изпълните тези команди.

me@my-rpi: ~/project1 $ sudo cp conf/project1-*. услуга/etc/systemd/system/

me@my-rpi: ~/project1 $ sudo systemctl демон-презареди ме@my-rpi: ~/project1 $ sudo systemctl стартирай project1-* me@my-rpi: ~/project1 $ sudo systemctl статус project1-* ● проект1- flask.service-екземпляр uWSGI за обслужване на уеб интерфейс на project1 Заредено: заредено (/etc/systemd/system/project1-flask.service; деактивирано; предварително зададено от доставчика: активирано) Активно: активно (работи) от пн 2018-06-04 13: 14:56 CEST; Преди 1 сек. Основен 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/ project1/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 KB) за 5 ядра 04 юни 13:14:56 my-rpi uwsgi [6618]: *** РЕЖИМ на работа: предварително форкиране ***

● project1-sensor.service-услуга за сензори по Project 1 Заредено: заредено (/etc/systemd/system/project1-sensor.service; деактивирано; предварително зададено от доставчика: активирано) Активно: активно (работи) от пн 2018-06-04 13: 16:49 CEST; Преди 5s Основен PID: 6826 (python) Задачи: 1 (ограничение: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

04 юни 13:16:49 my-rpi systemd [1]: Стартирана сензорна услуга Project 1. 04 юни 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Запазен сензор process_count = b'217 / n 'в базата данни 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 12 юли 2017 по подразбиране

/etc/nginx/активирани сайтове: общо 0 lrwxrwxrwx 1 root root 34 януари 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/активирани сайтове/по подразбиране 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 активиране на проект1-*

Ако рестартирате вашия Pi, той трябва да стартира автоматично.

Стъпка 5: Стъпка 5: Изграждане на жилище

Стъпка 5: Изграждане на жилище
Стъпка 5: Изграждане на жилище
Стъпка 5: Изграждане на жилище
Стъпка 5: Изграждане на жилище
Стъпка 5: Изграждане на жилище
Стъпка 5: Изграждане на жилище
Стъпка 5: Изграждане на жилище
Стъпка 5: Изграждане на жилище

Рециклиране

За да си направя жилище, използвах стар килер, който майка ми щеше да изхвърли.

база

Нарязах 4 дъски (34 см х 26 см). (така че това е куб от 34 x 34 x 26).

На дъното добавих тънко парче дърво като дъно.

Табло със светодиоди

В средата съм сложил 2 малки парчета дърво от всяка страна, на 9 см от върха. Това държи дъската, където ще седят водещите.

Дъската със светодиодите е малка дъска (32 см х 32 см).

Пробих 9 дупки, от които да излязат светодиодите.

разделение

Направих разделянето със същия материал като дъното и дъската със светодиоди.

4 броя всяка с разрез на 10,3 см (9 см х 31 см). Сега мога да ги събера.

Бутони и RFID четец

Направих дупка в основата, за да сложа моя RFID четец и бутони. За RFID поставих тънко парче дъска пред него, за да изглежда по -чисто.

Стъпка 6: Стъпка 6: Поставяне на всичко в жилището

Това зависи от това как искате да го направите. Аз лично използвах много кабели без запояване, защото искам да мога да използвам повторно моя Raspberry Pi.

Залепих светодиодите на място и залепих RFID четеца и платките за кутията.

И така се прави Keysorter!

Препоръчано: