Съдържание:
- Консумативи
- Стъпка 1: Подготовка на Rasperry Pi
- Стъпка 2: Настройка на Visual Studio Code и MySQL Workbench
- Стъпка 3: Диаграма на оформяне
- Стъпка 4: Код на Github
- Стъпка 5: Нормализирана структура на базата данни
- Стъпка 6: Калъф за дистрибутора на карти
- Стъпка 7: Програмирайте като услуга
Видео: Автоматичен дистрибутор на карти: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Избрах дистрибутор на смарт карти за първи проект, защото обичам да играя на карти. Това, което най -много не ми харесва, е да раздавам карти. Трябва да помните за всяка игра колко карти получава всеки човек. Това става объркващо, когато знаете много игри с карти. Моят проект също ще помогне на хора, които имат проблеми с разпространението на карти като възрастни хора и хора, страдащи от Паркинсон.
Консумативи
- 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 от
- Изтеглете 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 в полето Host name
- Уверете се, че е избран SSH и портът е 22
- Щракнете върху отвори
- Ако получите предупреждение, можете просто да продължите и да го игнорирате
- Потребителското име е 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: Нормализирана структура на базата данни
В тази стъпка ще импортираме базата данни.
- Свържете се с вашия Raspberry Pi с MySQL Workbench
- Кликнете върху Сървър -> Импортиране на данни
- Изберете Импортиране на самостоятелен файл
- В папката Database-export от Github има sql файл, наречен dump_project1.sql
- Прегледайте този файл и щракнете върху стартиране на импортирането
Това е. 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 е пътят до папката, където се намира програмата
Сега имате своя собствена смарт карта!
Препоръчано:
Създайте персонализирани карти за вашия Garmin GPS: 8 стъпки (със снимки)
Създайте персонализирани карти за вашия Garmin GPS: Ако имате Garmin GPS, предназначен за туризъм и други дейности на открито (включително серията GPSMAP, eTrex, Колорадо, Дакота, Орегон и Монтана, между няколко други), не е нужно да задоволете се с картите с голи кости, които бяха предварително заредени върху него. Д
Безжичен четец на SD карти [ESP8266]: 10 стъпки (със снимки)
Безжичен четец на SD карти [ESP8266]: USB трябваше да бъде универсален и основната цел беше да се направи гореща смяна, супер лесна за взаимодействие с други устройства, но с годините идеята се обърка. Има толкова много различни варианти на тези USB портове, което е толкова разочароващо при
Направете книга с карти с помощта на Google Maps: 17 стъпки (със снимки)
Направете книга с карти с помощта на Google Maps: Онзи ден гледах в книжарницата за Уличен пътеводител за окръг Дюпедж, Илинойс, тъй като приятелката ми живее там и се нуждае от подробна карта на улиците. За съжаление, единственият, който имаха близо, беше този за окръг Кук (като този
Скенер за карти за машина за търговия с карти: 13 стъпки (със снимки)
Скенер за карти за машина за търговия с карти: Скенер за карти за машина за търговия с карти Протоколът за промените може да бъде намерен в последната стъпка. Предистория Обясних основната мотивация на моя проект във Въведението за подаване на карти. Но накратко, моите деца и аз натрупахме голямо количество търговски карти b
Сортировчик на карти за машина за търговски карти (актуализация 2019-01-10): 12 стъпки (със снимки)
Сортировчик на карти за машина за търговия с карти (Актуализация 2019-01-10): Сортировчик на карти за машина за търговия с карти Протоколът за промени може да бъде намерен в последната стъпка. Предистория Вече обясних мотивацията на моя проект в статията за подаване на карти. Но накратко, моите деца и аз натрупахме голямо количество карта за търговия