Оглавление:

Автоматический распределитель карт: 7 шагов
Автоматический распределитель карт: 7 шагов

Видео: Автоматический распределитель карт: 7 шагов

Видео: Автоматический распределитель карт: 7 шагов
Видео: Схема по автоматическому поддержанию нужного количества предметов в мэ сети 2024, Ноябрь
Anonim
Автоматический дистрибьютор карт
Автоматический дистрибьютор карт

Я выбрал дистрибьютора смарт-карт в качестве своего первого проекта, потому что мне нравится играть в карточные игры. Больше всего мне не нравится раздача карт. Вы должны помнить для каждой игры, сколько карт получает каждый человек. Это сбивает с толку, когда ты знаешь много карточных игр. Мой проект также поможет людям, у которых есть проблемы с раздачей карточек, таким как пожилые люди и люди, страдающие Паркинсоном.

Запасы

  • 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 с

  1. Скачать ZIP-файл
  2. Распакуйте ZIP-файл в удобное место.
  3. Откройте Win32 Disk Imager и выберите извлеченный образ.
  4. Выберите SD-карту в раскрывающемся меню и нажмите написать
  5. После завершения процесса записи вы можете закрыть Win32 Disk Imager.

Теперь нам нужно сделать еще несколько вещей, прежде чем мы сможем подключиться к Pi.

  1. Перейдите в загрузочную папку на SD-карте.
  2. Откройте файл cmdline.txt
  3. Добавьте ip = 169.254.10.1 в конце строки через пробел.
  4. Сохраните и выйдите из файла
  5. Создайте в том же каталоге файл с именем ssh и удалите расширение (это включит ssh при первой загрузке, чтобы мы могли подключиться к Pi)
  6. Безопасно извлеките SD-карту и вставьте ее в Pi

Теперь мы можем подключиться к Pi:

  1. Возьмите кабель Ethernet и вставьте один конец в Pi, а другой конец в свой компьютер.
  2. Открытая шпатлевка
  3. Введите 169.254.10.1 в поле Имя хоста.
  4. Убедитесь, что выбран SSH и порт 22
  5. Нажмите открыть
  6. Если вы получили предупреждение, вы можете просто продолжить и игнорировать его.
  7. Имя пользователя - пи, а пароль - малина.

Настройка и установка программного обеспечения:

Откройте 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: нормализованная структура базы данных

Нормализованная структура базы данных
Нормализованная структура базы данных

На этом этапе мы собираемся импортировать базу данных.

  1. Подключитесь к Raspberry Pi с помощью MySQL Workbench
  2. Щелкните Сервер -> Импорт данных.
  3. Выберите Импортировать автономный файл
  4. В папке Database-export из Github находится sql файл с именем dump_project1.sql
  5. Перейдите к этому файлу и нажмите "Начать импорт".

Вот и все. 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 - это путь к папке, в которой находится программа.

Теперь у вас есть собственная смарт-карта!

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