Оглавление:
- Запасы
- Шаг 1: подготовка Rasperry Pi
- Шаг 2. Настройка кода Visual Studio и MySQL Workbench
- Шаг 3: Диаграмма Фритцинга
- Шаг 4. Код на Github
- Шаг 5: нормализованная структура базы данных
- Шаг 6: Дело для дистрибьютора карт
- Шаг 7. Программа как услуга
Видео: Автоматический распределитель карт: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
Я выбрал дистрибьютора смарт-карт в качестве своего первого проекта, потому что мне нравится играть в карточные игры. Больше всего мне не нравится раздача карт. Вы должны помнить для каждой игры, сколько карт получает каждый человек. Это сбивает с толку, когда ты знаешь много карточных игр. Мой проект также поможет людям, у которых есть проблемы с раздачей карточек, таким как пожилые люди и люди, страдающие Паркинсоном.
Запасы
- 1 Raspberry Pi (я использовал Raspberry Pi 4)
- SD-карта (рекомендуется 16 ГБ)
- 1 кусок хлеба для Raspberry Pi (тройник)
- 2 макета
- 1 модуль питания для макета, 5В и 3В3
- 1 ЖК-дисплей
- 1 потенциометр
- 1 MPU6050 (акселерометр и гироскоп)
- 1 NPN транзисторы
- 1 модуль расширения ввода / вывода PCF8574N
- 1 шаговый двигатель
- 1 коммутационная плата ULN2003 для управления шаговым двигателем
- 1 ультразвуковой датчик HC-SR04
- 1 двигатели постоянного тока 5 В
- 1 диод
- 6 резисторов 470 Ом
- 4 резистора 10 кОм
- Электрический провод для подключения всего
Полезно иметь при приготовлении:
- Паяльник
- Припой
- Дремель или лобзик (что-то для резки дерева и абс-пластика)
Программное обеспечение:
- Шпатлевка
- Рабочая среда MySQL
- Win32 Disk Imager
- Редактор кода (рекомендую Visual Studio Code)
- WinSCP
- Распбиан образ
Шаг 1: подготовка Rasperry Pi
Сначала нам нужно подготовить Raspberry Pi, прежде чем делать что-либо еще. Поскольку все будет работать на Pi, это одна из самых важных частей распределителя карт.
Установка:
Загрузите образ Raspbian с
- Скачать ZIP-файл
- Распакуйте ZIP-файл в удобное место.
- Откройте Win32 Disk Imager и выберите извлеченный образ.
- Выберите SD-карту в раскрывающемся меню и нажмите написать
- После завершения процесса записи вы можете закрыть Win32 Disk Imager.
Теперь нам нужно сделать еще несколько вещей, прежде чем мы сможем подключиться к Pi.
- Перейдите в загрузочную папку на SD-карте.
- Откройте файл cmdline.txt
- Добавьте ip = 169.254.10.1 в конце строки через пробел.
- Сохраните и выйдите из файла
- Создайте в том же каталоге файл с именем ssh и удалите расширение (это включит ssh при первой загрузке, чтобы мы могли подключиться к Pi)
- Безопасно извлеките SD-карту и вставьте ее в Pi
Теперь мы можем подключиться к Pi:
- Возьмите кабель Ethernet и вставьте один конец в Pi, а другой конец в свой компьютер.
- Открытая шпатлевка
- Введите 169.254.10.1 в поле Имя хоста.
- Убедитесь, что выбран SSH и порт 22
- Нажмите открыть
- Если вы получили предупреждение, вы можете просто продолжить и игнорировать его.
- Имя пользователя - пи, а пароль - малина.
Настройка и установка программного обеспечения:
Откройте raspi-config с помощью следующей команды:
sudo raspi-config
Выберите 5-й вариант: Параметры сопряжения.
Включить SPI и I2C
Отключите следующие вещи в 3-м параметре: Параметры загрузки:
- Заставка
- Для запуска выберите cli, а не рабочий стол
Настройка Wi-Fi:
Wi-Fi полезен для удобного перехода на сайт. Убедитесь, что ваши учетные данные Wi-Fi закрыты.
Для настройки Wi-Fi нам понадобится несколько вещей:
Добавьте свой Wi-Fi с помощью этой команды и измените SSID и ПАРОЛЬ на свою информацию:
sudo wpa_passphrase "SSID" "ПАРОЛЬ" >> /etc/wpa_supplicant/wpa_supplicant.conf
Выполните эту команду, чтобы перенастроить свой Wi-Fi:
sudo wpa_cli
Выберите правильный интерфейс:
интерфейс wlan0
Перенастроить интерфейс:
переконфигурировать
Проверьте, была ли реконфигурация успешной, с помощью этой команды:
ip a
Если вы видите IP-адрес на интерфейсе wlan0, значит, все настроено.
Обновление операционной системы
Обновите операционную систему с помощью этих двух команд:
sudo apt update
sudo apt полное обновление
Настройка MariaDB:
Установка веб-сервера Apache:
sudo apt install apache2 -y
Установка сервера MariaDB:
sudo apt установить mariadb-server -y
Теперь нам нужно перезагрузиться:
перезагрузка sudo
Рекомендуется защитить установку MariaDB. Вы можете сделать это, выполнив эту команду:
sudo mysql_secure_installation
Сначала вам будет предложено ввести текущий пароль root, но при установке по умолчанию его нет, поэтому нажмите Enter.
Затем вас спросят, хотите ли вы установить пароль root, введите y. Убедитесь, что вы помните пароль!
- Введите y, чтобы удалить анонимных пользователей
- Введите y, чтобы удаленно отключить вход root
- Введите y, чтобы удалить тестовые базы данных и получить к ним доступ
- Введите y, чтобы перезагрузить привилегии
Ваша установка MariaDB должна быть безопасной!
Теперь мы можем создать нового пользователя:
Войдите в оболочку mysql с помощью этой команды:
sudo mysql
Создайте пользователя с именем пользователя mysql и паролем (your_password) следующими командами:
создайте пользователя mysql @ localhost, идентифицированного вашим паролем;
предоставить все привилегии на *. * mysql @ localhost;
ПРИВИЛЕГИИ ПРОМЫВКИ;
Выйдите из оболочки mysql с помощью этой команды:
выход;
Пакеты Python:
Python уже должен быть установлен, если вы не выбрали версию Lite:
sudo apt установить python3-pip
Нам нужно большое количество пакетов Python, вы можете установить их все с помощью следующей команды:
pip3 установить mysql-connector-python flask-socketio flask-cors gevent gevent-websocket
Теперь нам нужно перезагрузиться еще раз
перезагрузка sudo
Шаг 2. Настройка кода Visual Studio и MySQL Workbench
Подключение к Pi с помощью MySQL Workbench:
Откройте MySQL Workbench
Сделайте новое подключение к Pi со следующей информацией:
- Имя подключения: Raspi
- Метод подключения: стандартный TCP / IP через SSH
- SSH Hostname: IP-адрес Pi
Вы можете получить IP-адрес с помощью этой команды:
ip a
- Имя пользователя SSH: pi
- Имя хоста MySQL: 127.0.0.1
- Порт сервера MySQL: 3306
- Имя пользователя: mysql
Нажмите ОК и введите пароль для пользователя pi, а затем введите пароль для пользователя mysql.
Настройка кода Visual Studio:
Открыть код Visual Studio
Установите эти 2 расширения:
- Удаленный - SSH
- Удаленный - SSH: редактирование файлов конфигурации
Нажмите Visual Studio Code F1 и введите ssh
Выберите Remote SSH: Добавить новый SSH-хост
Заполните ssh pi @ IP-адрес
На следующем шаге нажмите ввод
Теперь соединение установлено с Pi. Вы можете подключиться к Pi, нажав F1 и выбрав «Подключиться к удаленному хосту».
Введите пароль, чтобы у Visual Studio Code был доступ к Pi.
Еще одна вещь: установите расширение Python на удаленный компьютер, чтобы вы могли легко запускать и отлаживать код.
Шаг 3: Диаграмма Фритцинга
На этом этапе я объясню схему.
Приведенные выше схемы сделаны с использованием Fritzing.
Двигатель постоянного тока:
Подключите GPIO 18 к базе коллектора, средний вывод npn-транзистора. Подключите массу мотора к коллектору от транзистора и питание мотора на 5В. Подключите землю транзистора к линии заземления. Подключите диод в барьере над двигателем, чтобы он не позволял току течь непосредственно на транзистор.
Шаговый двигатель:
Подключите шаговый двигатель к плате управления. На плате управления с одной стороны есть контакты для подключения 5В и заземления. Остальные штифты - это управляющие штифты. Эти штифты управляют магнитами внутри двигателя, чтобы он мог вращаться. Подключите эти контакты к GPIO 12, 16, 20 и 21 на Raspberry Pi.
HC-SR04 Ультразвуковой:
Этот датчик может измерять расстояние до 4,5 метров с помощью звука.
Подключите вывод VCC к 5 В, вывод триггера к GPIO 25, вывод эха с резистором 470 Ом к GPIO 24 и землю с резистором 470 Ом к земле.
MPU6050:
Подключите вывод VCC к 3V3, земля к земле, scl к scl на Pi и sda к sda на Pi. Для этого датчика я использую I2C для управления им. Вы можете прочитать больше об этом здесь. Вот базовое объяснение: Pi является ведущим, а MPU6050 - ведомым. Через линию scl Pi контролирует тайминги, а линия sda используется для отправки данных от ведущего к ведомому или от ведомого к ведущему. Только мастер может инициировать передачу данных.
Светозависимый резистор:
Чтобы получить правильные показания LDR, я использую микросхему MCP3008. Это гарантирует, что показания ldr стабильны и правильно преобразованы из аналоговых сигналов в цифровые.
Подключите 3V3 к одной стороне ldr с резистором 10 кОм между ними. Между ldr и резистором подключите провод к каналу 0 MCP3008. Затем подключите другую сторону ЛДР к земле.
ЖК дисплей:
Вы можете использовать ЖК-дисплей без PCF8574, но поскольку контакты GPIO на Pi ограничены, я использую PCF8574 для сохранения некоторых контактов GPIO. Вы также можете использовать регистр сдвига, но я предпочитаю PCF8574. Вы можете управлять PCF8574 с помощью протокола SMbus, но я написал свой собственный класс для управления им. Потенциометр контролирует контраст.
Контакты ЖК-дисплея:
- VSS на землю
- VDD до 5 В
- V0 к регулируемому выводу потенциометра
- RS в GPIO 13
- R / W на землю, потому что я пишу только на дисплей, а не читаю
- E в GPIO 19
- DB0 - P0 PCF
- DB1 в P1
- DB2 в P2
- DB3 в P3
- DB4 в P4
- DB5 - P5
- DB6 - P6
- DB7 - P7
- LED + до 5 В
- LED- на массу
Контакты PCF8574:
- A0 на землю
- A1 на землю
- A2 на землю
- Земля на землю
- VCC до 5 В
- SDA в GPIO 27
- SCL к GPIO 22 с резистором 330 Ом
У вас может не быть LED + и LED- в зависимости от того, какой у вас дисплей. LED + и LED- предназначены для подсветки.
Подключите положительный полюс потенциометра к 5 В, а землю к земле.
Обязательно используйте подтягивающие резисторы!
Шаг 4. Код на Github
Вы можете найти весь необходимый код на моем Github.
Папка project1:
Эта папка содержит весь код для серверной части. В папке Klasses находятся все классы для управления оборудованием.
Репозиторий папок содержит 2 файла: Database.py и DataRepository.py. Database.py поддерживает соединение с базой данных и обрабатывает запросы. DataRepository.py содержит все запросы, необходимые для сайта.
App.py - это главный файл серверной части. Этот файл запускается автоматически при загрузке Pi.
Config.py содержит несколько настроек для подключения к базе данных. Убедитесь, что вы заполняете эти файлы своей собственной информацией.
Вы можете разместить эту папку в любом месте вашего домашнего каталога.
Папка html:
В этой папке находятся все файлы для сайта, интерфейса.
- В папке находятся файлы для макета сайта.
- Fonts содержит шрифты, используемые на сайте.
- Скрипт содержит все файлы Javascript, чтобы сделать сайт динамичным.
Эта папка должна находиться в папке / var / www / html.
Вы можете скопировать файл или папку с помощью этой команды:
sudo mv / путь / к / текущему / каталогу / пути / к / назначению / каталогу
Для перехода на сайт введите в браузере IP-адрес, отображаемый на ЖК-дисплее.
Шаг 5: нормализованная структура базы данных
На этом этапе мы собираемся импортировать базу данных.
- Подключитесь к Raspberry Pi с помощью MySQL Workbench
- Щелкните Сервер -> Импорт данных.
- Выберите Импортировать автономный файл
- В папке Database-export из Github находится sql файл с именем dump_project1.sql
- Перейдите к этому файлу и нажмите "Начать импорт".
Вот и все. Pi теперь может получить доступ к базе данных, если она имеет правильную информацию.
Шаг 6: Дело для дистрибьютора карт
На этом этапе я объясню, что я использовал для корпуса и как все монтировал.
Для корпуса я использовал 2 коробки из АБС-пластика:
- 265 х 185 х 95 мм
- 171 х 121 х 80 мм
Отверстия, которые я проделал в коробках
Отверстие для ЖК-дисплея, 3 отверстия для кабелей питания, одно для проводов от шагового двигателя, двигателя постоянного тока и ультразвукового датчика.
В самой маленькой коробке я сделал отверстие для проводов от компонентов и отверстие для пропускания карт. Вверху я проделал самое большое отверстие, чтобы вы могли положить в устройство игральные карты.
Я установил двигатель постоянного тока с помощью кронштейна и двустороннего скотча. Я сделал деревянную доску, чтобы разложить карты с отверстием для колеса, чтобы стрелять картой.
Я выбрал АБС-пластик, потому что он легкий, поэтому шаговый двигатель может легко его поворачивать. Дерево может быть очень тяжелым, и с этим у шагового двигателя могут возникнуть проблемы. Чтобы вырезать отверстия, я использовал сверло со сверлами по металлу и дремель. Вырезание больших отверстий потребовало гораздо больше усилий, и лучше использовать лобзик.
Шаг 7. Программа как услуга
Действительно полезно, чтобы код запускался после загрузки Pi. Для этого мы сделаем услугу.
Создайте новый файл с именем smartcard.service с помощью следующей команды:
sudo nano /etc/systemd/system/smartcard.service
Это должно войти в файл:
[Ед. изм]
Описание = Бэкэнд смарт-карты After = network.target [Service] ExecStart = / usr / bin / python3 -u app.py WorkingDirectory = / home / pi / project1 StandardOutput = наследовать StandardError = наследовать Restart = always User = pi [Install] WantedBy = multi-user.target WorkingDirectory - это путь к папке, в которой находится программа.
Теперь у вас есть собственная смарт-карта!
Рекомендуемые:
Создание собственных карт для GPS-навигатора Garmin: 8 шагов (с изображениями)
Создание пользовательских карт для вашего GPS-навигатора Garmin: если у вас есть GPS-навигатор Garmin, предназначенный для пеших прогулок и других мероприятий на свежем воздухе (включая серии GPSMAP, eTrex, Colorado, Dakota, Oregon и Montana, среди некоторых других), вам не нужно соглашайтесь на простые карты, которые были предварительно загружены на него. Э
Беспроводное устройство чтения SD-карт [ESP8266]: 10 шагов (с изображениями)
Беспроводное устройство чтения SD-карт [ESP8266]: USB должен был быть универсальным, и основная цель заключалась в том, чтобы сделать устройство с горячей заменой и супер простым интерфейсом с другими устройствами, но с годами эта идея пошла наперекосяк. Существует так много различных вариантов этих USB-портов, что так неприятно
МАРИО КАРТ: 5 шагов
МАРИО КАРТ: Предметы инструментальной лаборатории мехатроники и лаборатории электроники, оба предмета, предназначенные для изучения того, как работать с управлением электрической энергией, производя реальную работу или сигналы, используя концепции предыдущих
Базовый 3D-сканер для цифровых 3D-карт: 5 шагов
Базовый 3D-сканер для цифрового 3D-картографирования: в этом проекте я опишу и объясню основные основы 3D-сканирования и реконструкции, применяемые в первую очередь для сканирования небольших полуплоскостных объектов, и чьи действия могут быть расширены до систем сканирования и реконструкции, которые могут б
Автоматический тасование карт: 6 шагов (с изображениями)
Автоматический тасование карт: Здравствуйте! Это руководство было создано во исполнение требований проекта Makecourse в Университете Южной Флориды. (www.makecourse.com) В этом руководстве я проведу вас через процесс создания автоматического тасования карт