Оглавление:
- Шаг 1: Шаг 1: Что мне понадобится?
- Шаг 2: Шаг 2: Создание схемы базы данных
- Шаг 3: Шаг 3: Кодирование
- Шаг 4: Шаг 4: Установка кода на мой Raspberry Pi
- Шаг 5: Шаг 5: Изготовление жилья
- Шаг 6: Шаг 6: Размещение всего в корпусе
Видео: Keysorter: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
В настоящее время я изучаю NMCT в Howest. Для нашего последнего семестра нам нужно было сделать проект. Итак, я сделал Keysorter.
Что оно делает?
У нас дома много ключей от машины, и все они похожи друг на друга. Поэтому я сделал Keysorter, чтобы решить эту проблему.
Он должен сканировать ключ через RFID и давать ему место в коробке. Если я снова просканирую тот же ключ, он покажет его ранее назначенное место. Также есть кнопка, чтобы показать последнюю вымытую машину.
Это будет работать на Raspberry Pi, у которого также есть возможность добавить веб-страницу через Flask.
На странице я должен уметь просмотреть все ключи, добавить имя к ключу и удалить ключ.
Шаг 1: Шаг 1: Что мне понадобится?
Я начал с составления списка компонентов, которые мне понадобятся для работы этой штуки.
Компоненты:
- Raspberry Pi
- 2 x сдвиговый регистр (74hc595)
- 3 кнопки
- 9 x зеленый светодиод
- Сканер RFID (MFRC522)
- 12 х резистор 220 Ом
Затем я поместил все это в свою схему фритзинга.
Как только я это сделал, я сделал это в реальной жизни.
Шаг 2: Шаг 2: Создание схемы базы данных
Чтобы сохранить все мои данные, мне пришлось создать базу данных, которая могла бы работать на моем Pi.
Я сделал это в Mysql.
Стол вагон:
- ID автомобиля
- ID пользователя
- Марка (марка автомобиля)
- Тип
- Последний раз мыли
- Ключ
- RFID_ID
Шаг 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: Изготовление жилья
Утилизация отходов
Для постройки жилья я использовал старый чулан, который мама выбрасывала.
база
Я распил 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!
Рекомендуемые:
Дизайн игры в Flick за 5 шагов: 5 шагов
Дизайн игры в Flick за 5 шагов: Flick - это действительно простой способ создания игры, особенно чего-то вроде головоломки, визуального романа или приключенческой игры
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
Играйте в Doom на своем IPod за 5 простых шагов !: 5 шагов
Играйте в Doom на своем IPod за 5 простых шагов!: Пошаговое руководство по двойной загрузке Rockbox на iPod, чтобы играть в Doom и десятки других игр. Это действительно легко сделать, но многие люди до сих пор удивляются, когда видят, как я играю дум на своем iPod, и путаются с инструкциями
Кормушка для рыбы Arduino Uno за 6 простых и простых шагов !: 6 шагов
Arduino Uno Fish Feeder за 6 простых и дешевых шагов !: Итак, для этого проекта может потребоваться немного предыстории. Людям с домашними рыбками, вероятно, приходилось сталкиваться с той же проблемой, что и мне: отпуск и забывчивость. Я постоянно забывала покормить рыбу и всегда старалась это сделать, пока она не упала
Акустическая левитация с Arduino Uno, шаг за шагом (8 шагов): 8 шагов
Акустическая левитация с Arduino Uno Пошаговая инструкция (8 шагов): ультразвуковые преобразователи звука L298N Женский адаптер питания постоянного тока с штыревым контактом постоянного тока Arduino UNOBreadboard Как это работает: сначала вы загружаете код в Arduino Uno (это микроконтроллер, оснащенный цифровым и аналоговые порты для преобразования кода (C ++)