Съдържание:
- Стъпка 1: Стъпка 1: Какво ще ми трябва?
- Стъпка 2: Стъпка 2: Създаване на схема на база данни
- Стъпка 3: Стъпка 3: Кодиране
- Стъпка 4: Стъпка 4: Поставяне на Al кода на My Raspberry Pi
- Стъпка 5: Стъпка 5: Изграждане на жилище
- Стъпка 6: Стъпка 6: Поставяне на всичко в жилището
Видео: Keysorter: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
В момента уча NMCT в Howest. За последния ни семестър трябваше да направим проект. Така че направих Keysorter.
Какво прави?
Вкъщи имаме много ключове от колата и всички те си приличат. Затова направих Keysorter за решаване на този проблем.
Той трябва да сканира ключ чрез RFID и да му даде място в кутията. Ако сканирам отново същия ключ, той ще покаже мястото, което му е било определено по -рано. Има и бутон за показване на последната измита кола.
Това ще работи и на Raspberry Pi, който също има опция за добавяне на уеб страница чрез Flask.
На страницата трябва да мога да разгледам всички ключове, да добавя име към ключ и да премахна ключ.
Стъпка 1: Стъпка 1: Какво ще ми трябва?
Започнах, като направих списък с компоненти, които ще ми трябват, за да работи това нещо.
Компоненти:
- Малина пи
- 2 x регистър за смяна (74hc595)
- 3 x бутон
- 9 x зелен светодиод
- RFID скенер (MFRC522)
- 12 x резистор 220 ома
След това сложих всичко това в схемата си за фриттинг.
След като направих това, успях в реалния живот.
Стъпка 2: Стъпка 2: Създаване на схема на база данни
За да запазя всичките си данни, трябваше да създам база данни, която да работи на моя Pi.
Направих го в Mysql.
Настолна кола:
- Идентификационен номер на автомобил
- User ID
- Марка (марка автомобил)
- Тип
- Последно измито
- Ключ
- RFID_ID
Стъпка 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: Изграждане на жилище
Рециклиране
За да си направя жилище, използвах стар килер, който майка ми щеше да изхвърли.
база
Нарязах 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!
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Как да направите 4G LTE двойна BiQuade антена Лесни стъпки: 3 стъпки
Как да направя 4G LTE двойна BiQuade антена лесни стъпки: През повечето време, с което се сблъсквах, нямам добра сила на сигнала за ежедневните ми работи. Така. Търся и опитвам различни видове антени, но не работи. След загубено време намерих антена, която се надявам да направя и изпробвам, защото тя не градивен принцип
Дизайн на играта с бързо движение в 5 стъпки: 5 стъпки
Дизайн на игра с Flick в 5 стъпки: Flick е наистина прост начин да направите игра, особено нещо като пъзел, визуален роман или приключенска игра
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки
Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати