Оглавление:

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. Что мне понадобится?

Я начал с составления списка компонентов, которые мне понадобятся для работы этой штуки.

Компоненты:

  • Raspberry Pi
  • 2 x сдвиговый регистр (74hc595)
  • 3 кнопки
  • 9 x зеленый светодиод
  • Сканер RFID (MFRC522)
  • 12 х резистор 220 Ом

Затем я поместил все это в свою схему фритзинга.

Как только я это сделал, я сделал это в реальной жизни.

Шаг 2: Шаг 2: Создание схемы базы данных

Шаг 2: Создание схемы базы данных
Шаг 2: Создание схемы базы данных

Чтобы сохранить все мои данные, мне пришлось создать базу данных, которая могла бы работать на моем Pi.

Я сделал это в Mysql.

Стол вагон:

  • ID автомобиля
  • ID пользователя
  • Марка (марка автомобиля)
  • Тип
  • Последний раз мыли
  • Ключ
  • RFID_ID

Шаг 3: Шаг 3: Кодирование

Шаг 3. Кодирование
Шаг 3. Кодирование

Когда все было готово, я мог приступить к программированию.

Я начал с написания кода для своего датчика на Python 3.5.

Чтобы скачать код, нажмите здесь.

Используйте ссылку, чтобы клонировать проект.

Шаг 4: Шаг 4: Установка кода на мой Raspberry Pi

Установка пакетов

Сначала я установил все пакеты, необходимые для работы.

мне @ my-rpi: ~ $ sudo apt update

мне @ 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- site-packages env me @ my-rpi: ~ / project1 $ source env / bin / activate (env) me @ my-rpi: ~ / project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL, mysql-коннектор-python passlib

Загрузите проект на свой Pi с помощью pycharm

Откройте Pycharm и перейдите в VCS> Импорт из контроля версий> Github и клонируйте мой файл github.

Поместите конфигурацию развертывания в только что созданный каталог. (/ дом / меня / проект1). Нажмите "Применить"!

Зайдите в настройки интерпретатора и выберите виртуальную среду, которую вы только что создали. (/ дома / меня / проект1 / env / bin / pyhon)

Проверьте правильность сопоставления пути.

Теперь вы можете загрузить код в свой каталог с помощью Pycharm.

База данных

Проверьте, запущена ли база данных, у вас должно получиться что-то вроде этого:

me @ my-rpi: ~ $ sudo systemctl status mysql ● mariadb.service - сервер базы данных MariaDB Загружен: загружен (/lib/systemd/system/mariadb.service; включен; предустановка поставщика: включен) Активен: активен (работает) с Sun 2018-06-03 09:41:18 CEST; 1 день 4ч назад Основной PID: 781 (mysqld) Статус: «Принимаю ваши SQL-запросы сейчас…» Задачи: 28 (ограничение: 4915) CGroup: /system.slice/mariadb.service └─781 / usr / sbin / mysqld

3 июня, 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.

мне @ my-rpi: ~ $ ss -lt | grep mysql СЛУШАТЬ 0 80127.0.0.1:mysql *: *

Создание пользователей и добавление базы данных

мне @ my-rpi: ~ $ sudo mariadb

как только вы окажетесь в базе данных, сделайте это.

СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'project1-admin' @ 'localhost' ИДЕНТИФИЦИРОВАНО 'adminpassword'; СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'project1-web' @ 'localhost' ИДЕНТИФИЦИРОВАНО 'webpassword'; СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'project1-sensor' @ 'localhost' ИДЕНТИФИЦИРОВАНО 'sensorpassword';

СОЗДАТЬ БАЗУ ДАННЫХ project1;

ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА project1. * 'Project1-admin' @ 'localhost' С ОПЦИЕЙ GRANT; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-web' @ 'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-sensor' @ 'localhost'; ПРИВИЛЕГИИ ПРОМЫВКИ;

СОЗДАТЬ ТАБЛИЦУ `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

СОЗДАТЬ ТАБЛИЦУ `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 `fserk`ar_Car_ ИНОСТРАННЫЙ КЛЮЧ (`idUser`) ССЫЛКИ` user` (`idUser`) ПРИ УДАЛЕНИИ НЕТ ДЕЙСТВИЙ ПРИ ОБНОВЛЕНИИ НЕТ ДЕЙСТВИЙ) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Подключите вашу базу данных к Pycharm

Щелкните вкладку базы данных справа. Если у вас не открыта вкладка, сделайте следующее: «Просмотр»> «Окна инструментов»> «База данных».

Щелкните добавить соединение. Выберите «Источник данных»> «MySQL» (если есть кнопка «Загрузить драйвер», нажмите ее.)

Перейдите в SSH / SSL и проверьте SSH. Введите свои учетные данные Raspberry pi (хост / пользователь / пароль). Порт должен быть 22 и не забудьте проверить пароль.

Вернитесь к Генералу. Хост должен быть localhost, а база данных - project1. Введите учетные данные от project1-admin и проверьте соединение.

Если соединение в порядке, перейдите на вкладку Schemas и убедитесь, что установлен флажок project1.

Проверьте правильность базы данных

me @ my-rpi: ~ $ echo 'показать таблицы;' | mysql project1 -t -u project1-admin -p Введите пароль: + --------------------------- + | Tables_in_project1 | + --------------------------- + | датчик | | пользователи | + --------------------------- +

Файлы конфигурации

В каталоге conf вы найдете 4 файла. Вам следует изменить имена пользователей на свое имя пользователя.

Systemd

Для начала вам нужно выполнить эти команды.

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 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 КБ) для 5 ядер. 04 июня 13:14:56 my-rpi uwsgi [6618]: *** Режим работы: предварительная установка ***

● project1-sensor.service - служба датчика проекта 1 Загружено: загружено (/etc/systemd/system/project1-sensor.service; отключено; предустановка поставщика: включено) Активно: активно (работает) с понедельника 2018-06-04 13: 16:49 CEST; 5с назад Основной 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]: запущена служба датчиков проекта 1. 4 июня 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

мне @ 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 / sites-enabled: всего 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 / 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 restart nginx.service

Автоматический старт

Убедимся, что все запускается автоматически.

Перейдите в каталог conf и выполните эти последние команды, и все готово!

мне @ my-rpi: ~ / project1 $ sudo systemctl enable project1- *

Если вы перезагрузите Pi, он должен запуститься автоматически.

Шаг 5: Шаг 5: Изготовление жилья

Шаг 5: Изготовление жилья
Шаг 5: Изготовление жилья
Шаг 5: Изготовление жилья
Шаг 5: Изготовление жилья
Шаг 5: Изготовление жилья
Шаг 5: Изготовление жилья
Шаг 5: Изготовление жилья
Шаг 5: Изготовление жилья

Утилизация отходов

Для постройки жилья я использовал старый чулан, который мама выбрасывала.

база

Я распил 4 доски (34 см х 26 см). (так что это куб размером 34 х 34 х 26).

Внизу я добавил тонкий кусок дерева как основание.

Доска со светодиодами

В середине я положил по 2 маленьких деревянных бруска с каждой стороны на расстоянии 9 см от верха. Это удерживает доску, на которой будет сидеть светодиод.

Доска со светодиодами представляет собой небольшую доску (32 см х 32 см).

Я просверлил 9 отверстий для выхода светодиода.

разделение

Я сделал разделение из того же материала, что и дно, и плату со светодиодами.

4 штуки с разрезом 10,3 см (9 см x 31 см). Теперь я могу собрать их вместе.

Кнопки и считыватель RFID

Я проделал отверстие в основании, чтобы вставить мой считыватель RFID и кнопки. Для RFID я положил перед ним тонкий кусок доски, чтобы он выглядел чище.

Шаг 6: Шаг 6: Размещение всего в корпусе

Это зависит от того, как вы хотите это сделать. Я лично использовал много кабелей без пайки, потому что хочу иметь возможность повторно использовать свой Raspberry Pi.

Я приклеил светодиоды и приклеил считыватель RFID и макеты к корпусу.

Вот так получается Keysorter!

Рекомендуемые: