Съдържание:

Автоматичен дистрибутор на карти: 7 стъпки
Автоматичен дистрибутор на карти: 7 стъпки

Видео: Автоматичен дистрибутор на карти: 7 стъпки

Видео: Автоматичен дистрибутор на карти: 7 стъпки
Видео: Чип Ключ Мазда Сх-7 сделать дубликат автоключа зажигания в форме карты 2024, Ноември
Anonim
Автоматичен дистрибутор на карти
Автоматичен дистрибутор на карти

Избрах дистрибутор на смарт карти за първи проект, защото обичам да играя на карти. Това, което най -много не ми харесва, е да раздавам карти. Трябва да помните за всяка игра колко карти получава всеки човек. Това става объркващо, когато знаете много игри с карти. Моят проект също ще помогне на хора, които имат проблеми с разпространението на карти като възрастни хора и хора, страдащи от Паркинсон.

Консумативи

  • 1 Raspberry Pi (използвах Raspberry Pi 4)
  • SD карта (препоръчително 16GB)
  • 1 Outbread парче за Raspberry Pi (T-парче)
  • 2 дъски
  • 1 Захранващ модул за платка, 5V и 3V3
  • 1 LCD дисплей
  • 1 Потенциометър
  • 1 MPU6050 (акселерометър и жироскоп)
  • 1 NPN транзистори
  • 1 PCF8574N I/O разширител
  • 1 стъпков двигател
  • 1 ULN2003 табла за управление на стъпков двигател
  • 1 HC-SR04 ултразвуков сензор
  • 1 5V DC двигатели
  • 1 диоди
  • 6 470 ома резистори
  • 4 10K ома резистора
  • Електрически проводник за свързване на всичко

Полезно е да имате, докато правите:

  • Поялник
  • Припой
  • Дремел или трион (нещо за рязане на дърво и абс пластмаса)

Софтуер:

  • Шпакловка
  • MySQL работна маса
  • Win32 Disk Imager
  • Редактор на кодове (препоръчвам Visual Studio Code)
  • WinSCP
  • Raspbian изображение

Стъпка 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 в полето Host name
  4. Уверете се, че е избран SSH и портът е 22
  5. Щракнете върху отвори
  6. Ако получите предупреждение, можете просто да продължите и да го игнорирате
  7. Потребителското име е pi, а паролата е малинова

Конфигуриране и инсталиране на софтуер:

Отворете raspi-config със следната команда:

sudo raspi-config

Изберете петата опция: Опции за взаимодействие

Активирайте SPI и I2C

Деактивирайте следните неща в третата опция: Опции за зареждане:

  • Екран за пръскане
  • Изберете cli за стартиране, а не десктоп

Настройка на Wi -Fi:

Wifi е полезен за лесно навигиране до уебсайта. Уверете се, че вашите идентификационни данни за wifi са затворени.

За да настроим wifi, се нуждаем от няколко неща:

Добавете своя wifi с помощта на тази команда и променете SSID и PASSWORD към вашата информация:

sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf

Изпълнете тази команда, за да преконфигурирате вашия wifi:

sudo wpa_cli

Изберете правилния интерфейс:

интерфейс wlan0

Преконфигурирайте интерфейса:

преконфигурирайте

Проверете дали преконфигурирането е успешно с тази команда:

ip a

Ако видите IP адрес в интерфейса на wlan0, тогава всичко е настроено.

Актуализиране на операционната система

Актуализирайте операционната система с тези 2 команди:

sudo apt актуализация

sudo apt пълно обновяване

Настройване на MariaDB:

Инсталиране на Apache Webserver:

sudo apt инсталирате apache2 -y

Инсталиране на MariaDB сървър:

sudo apt install mariadb -server -y

Сега трябва да рестартираме:

sudo рестартиране

Препоръчително е да защитите инсталацията на MariaDB. Можете да го направите, като изпълните тази команда:

sudo mysql_secure_installation

Първо ще бъдете помолени за текущата парола за root, но инсталацията по подразбиране няма такава, така че натиснете enter.

След това ще бъдете попитани дали искате да зададете парола за root, въведете y. Уверете се, че можете да запомните паролата!

  • Въведете y, за да премахнете анонимни потребители
  • Въведете y, за да забраните отдалечено влизане в root
  • Въведете y, за да премахнете тестовите бази данни и достъп до тях
  • Въведете y, за да презаредите привилегиите

Вашата инсталация на MariaDB трябва да е сигурна!

Сега можем да създадем нов потребител:

Въведете обвивката mysql с тази команда:

sudo mysql

Създайте потребител с потребителското име mysql и парола (вашата_парола) следните команди:

създаване на потребител mysql@localhost идентифициран от 'your_password';

предоставете всички права на *. * на mysql@localhost;

ФЛУШ ПРИВИЛЕГИ;

Излезте от черупката на mysql с тази команда:

изход;

Пакети на Python:

Python вече трябва да е инсталиран, освен ако не изберете версията Lite:

sudo apt инсталирате python3-pip

Нуждаем се от голямо количество Python пакети, можете да ги инсталирате със следната команда:

pip3 инсталирайте mysql-конектор-python колба-socketio колба-cors gevent gevent-websocket

Сега трябва да рестартираме още веднъж

sudo рестартиране

Стъпка 2: Настройка на Visual Studio Code и MySQL Workbench

Свързване към Pi с MySQL Workbench:

Отворете MySQL Workbench

Направете нова връзка с Pi със следната информация:

  • Име на връзката: Raspi
  • Метод на свързване: Стандартен TCP/IP през SSH
  • SSH име на хост: IP-адрес на Pi

Можете да получите IP адреса с тази команда:

ip a

  • SSH потребителско име: pi
  • MySQL име на хост: 127.0.0.1
  • MySQL сървър Порт: 3306
  • Потребителско име: mysql

Щракнете върху OK и въведете паролата за потребителя pi и след това въведете паролата за потребителя mysql.

Настройване на код на Visual Studio:

Отворете Visual Studio Code

Инсталирайте тези 2 разширения:

  • Дистанционно - SSH
  • Дистанционно - SSH: Редактиране на конфигурационни файлове

Натиснете Visual Studio Code F1 и въведете ssh

Изберете Remote SSH: Добавяне на нов SSH хост

Попълнете ssh pi@IP-адрес

В следващата стъпка натиснете enter

Връзката вече е направена с Pi. Можете да се свържете с Pi, като натиснете F1 и изберете свързване към отдалечен хост.

Въведете паролата, така че Visual Studio Code да има достъп до Pi.

Още нещо: Инсталирайте разширението Python на отдалечената машина, за да можете лесно да стартирате и отстранявате грешки в кода.

Стъпка 3: Диаграма на оформяне

Диаграма за оформяне
Диаграма за оформяне
Диаграма за оформяне
Диаграма за оформяне
Диаграма за оформяне
Диаграма за оформяне

В тази стъпка ще обясня схемата.

Схемите по -горе са направени с Fritzing.

DC мотор:

Свържете GPIO 18 към основата на колектора, средния щифт на npn транзистор. Свържете земята на двигателя към колектора от транзистора и захранването на двигателя до 5V. Свържете земята на транзистора към заземяващата линия. Свържете диода в бариера над двигателя, така че да блокира потока да тече директно към транзистора.

Стъпков мотор:

Свържете стъпковия двигател към платката за управление. На платката за управление има от едната страна щифтове за свързване на 5V и заземяване. Другите щифтове са контролни. Тези щифтове контролират магнитите вътре в двигателя, така че да може да се завърти. Свържете тези щифтове към GPIO 12, 16, 20 и 21 на Raspberry Pi.

HC-SR04 ултразвук:

Този сензор може да измерва разстояния до около 4,5 метра с помощта на звук.

Свържете VCC щифта към 5V, задействащия щифт към GPIO 25, ехо пина с резистор 470 Ohm към GPIO 24 и земята с резистор 470 Ohm към земята.

MPU6050:

Свържете VCC щифта към 3V3, земята към земята, scl към scl на Pi и sda към sda на Pi. За този сензор използвам I2C, за да го контролирам. Можете да прочетете повече за това тук. Ето едно основно обяснение: Pi е главен, а MPU6050 е подчинен. Чрез scl линията Pi контролира времето и sda линията се използва за изпращане на данни от главния към подчинения или от подчинения към главния. Само капитанът може да инициира прехвърляне на данни.

Резистор, зависим от светлина:

За да получа правилни показания от LDR използвам чип MCP3008. Това гарантира, че показанията от ldr са стабилни и правилно преобразувани от аналогови в цифрови сигнали.

Свържете 3V3 към едната страна на ldr с резистор от 10K Ohm между него. Между ldr и резистора свържете проводник към канала 0 на MCP3008. След това свържете другата страна на ldr към земята.

ЛСД дисплей:

Можете да използвате LCD дисплея без PCF8574, но тъй като GPIO щифтовете на Pi са ограничени, използвам PCF8574, за да запазя някои GPIO щифтове. Можете също да използвате регистър за смяна, но аз предпочитам PCF8574. Можете да управлявате PCF8574 с протокола SMbus, но аз написах свой собствен клас, за да го контролирам. Потенциометърът контролира контраста.

Игли за LCD дисплей:

  • VSS към земята
  • VDD до 5V
  • 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+ до 5V
  • LED- към земята

PCF8574 пинове:

  • A0 към земята
  • A1 към земята
  • A2 към земята
  • Земя до земя
  • VCC до 5V
  • SDA към GPIO 27
  • SCL към GPIO 22 с резистор 330 Ohm

Възможно е да нямате LED+ и LED- в зависимост от вида на дисплея, който имате. LED+ и LED- са за подсветка.

Свържете положителната страна на потенциометъра към 5V и земята към земята.

Уверете се, че използвате издърпващи се резистори!

Стъпка 4: Код на Github

Можете да намерите целия необходим код на моя Github.

Папка проект1:

Тази папка съдържа целия код за бекенда. В папката Klasses са всички класове за контрол на хардуера.

Хранилищата на папките съдържат 2 файла: Database.py и DataRepository.py. Database.py поддържа връзката с базата данни и обработва заявки. DataRepository.py съдържа всички заявки, необходими за сайта.

App.py е основният файл на бекенда. Този файл се стартира автоматично, когато Pi се стартира.

Config.py съдържа няколко настройки за свързване с базата данни. Уверете се, че попълвате тези файлове със собствена информация.

Можете да поставите тази папка навсякъде във вашата домашна директория.

HTML папка:

Тази папка съдържа всички файлове за сайта, интерфейса.

  • Папката съдържа файловете за оформлението на сайта.
  • Шрифтове съдържа шрифтовете, използвани на сайта.
  • Скриптът съдържа всички Javascript файлове, за да направи сайта динамичен

Тази папка трябва да е в папката/var/www/html

Можете да копирате файл или папка с тази команда:

sudo mv/path/to/current/directory/path/to/destination/директория

За да преминете към типа сайт във вашия браузър, IP адресът, показан на LCD дисплея.

Стъпка 5: Нормализирана структура на базата данни

Нормализирана структура на базата данни
Нормализирана структура на базата данни

В тази стъпка ще импортираме базата данни.

  1. Свържете се с вашия Raspberry Pi с MySQL Workbench
  2. Кликнете върху Сървър -> Импортиране на данни
  3. Изберете Импортиране на самостоятелен файл
  4. В папката Database-export от Github има sql файл, наречен dump_project1.sql
  5. Прегледайте този файл и щракнете върху стартиране на импортирането

Това е. Pi вече може да получи достъп до базата данни, ако има правилната информация.

Стъпка 6: Калъф за дистрибутора на карти

Калъф за дистрибутора на карти
Калъф за дистрибутора на карти
Калъф за дистрибутора на карти
Калъф за дистрибутора на карти
Калъф за дистрибутора на карти
Калъф за дистрибутора на карти

В тази стъпка ще обясня какво използвах за случая и как монтирах всичко.

За случая използвах 2 ABS кутии:

- 265 x 185 x 95 мм

- 171 x 121 x 80 мм

Дупките, които направих в кутиите

Отвор за LCD дисплея, 3 отвора за захранващите кабели, един за проводниците от стъпковия двигател, DC двигателя и ултразвуковия сензор.

В най -малката кутия направих дупка за проводниците от компонентите и отвор за преминаване на картите. В горната част направих най -голямата дупка, за да можете да поставите карти за игра в устройството.

Монтирах DC двигателя със скоба и някаква двустранна лента. Направих дървена дъска, върху която да сложа картите с дупка, за да може колелото да изстреля карта.

Избрах за ABS пластмаса, защото е лека, така че стъпковият мотор може лесно да я завърти. Дървесината може да бъде наистина тежка и стъпковият двигател може да има проблеми с това. За изрязване на дупките използвах бормашина с бормашини, предназначени за метал, и Dremel. Изрязването на по -големите дупки отне много повече работа и един трион би бил по -добър.

Стъпка 7: Програмирайте като услуга

Наистина е полезно кодът да стартира след стартирането на Pi. За това ще направим услуга.

Създайте нов файл, наречен smartcard.service, със следната команда:

sudo nano /etc/systemd/system/smartcard.service

Това трябва да влезе във файла:

[Мерна единица]

Описание = Бекенд на смарт карта След = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = наследяване StandardError = наследяване Рестартиране = винаги Потребител = pi [Инсталиране] WantedBy = многопотребителска цел WorkingDirectory е пътят до папката, където се намира програмата

Сега имате своя собствена смарт карта!

Препоръчано: