Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Przygotowanie Rasperry Pi
- Krok 2: Konfigurowanie Visual Studio Code i MySQL Workbench
- Krok 3: Schemat spieniania
- Krok 4: Kod na Github
- Krok 5: Znormalizowana struktura bazy danych
- Krok 6: Sprawa dla dystrybutora kart
- Krok 7: Programuj jako usługę
Wideo: Automatyczny dystrybutor kart: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Na swój pierwszy projekt wybrałem dystrybutora kart inteligentnych, ponieważ lubię grać w gry karciane. Najbardziej nie lubię rozdawania kart. W każdej grze musisz pamiętać, ile kart otrzymuje każda osoba. To staje się mylące, gdy znasz wiele gier karcianych. Mój projekt pomoże również osobom, które mają problemy z rozdawaniem kart, takim jak osoby starsze i osoby cierpiące na chorobę Parkinsona.
Kieszonkowe dzieci
- 1 Raspberry Pi (użyłem Raspberry Pi 4)
- Karta SD (zalecane 16 GB)
- 1 element Outbread dla Raspberry Pi (trójnik)
- 2 deski do krojenia chleba
- 1 moduł zasilający do płytki stykowej, 5V i 3V3
- 1 wyświetlacz LCD
- 1 potencjometr
- 1 MPU6050 (akcelerometr i żyroskop)
- 1 tranzystory npn
- 1 ekspander we/wy PCF8574N
- 1 silnik krokowy
- 1 tabliczka zaciskowa ULN2003 do sterowania silnikiem krokowym;
- 1 czujnik ultradźwiękowy HC-SR04
- 1 silniki 5V DC
- 1 dioda
- 6 rezystorów 470 Ohm
- 4 rezystory 10K Ohm
- Przewód elektryczny do podłączenia wszystkiego
Przydatne mieć podczas robienia:
- Lutownica
- Lutować
- Dremel lub wyrzynarka (coś do cięcia drewna i plastiku ABS)
Oprogramowanie:
- Kit
- Środowisko pracy MySQL
- Win32 Disk Imager
- Edytor kodu (polecam Visual Studio Code)
- WinSCP
- Obraz raspański
Krok 1: Przygotowanie Rasperry Pi
Najpierw musimy przygotować Raspberry Pi, zanim zrobimy cokolwiek innego. Ponieważ wszystko będzie działać z Pi, więc jest to jeden z najważniejszych elementów dystrybutora kart.
Instalacja:
Pobierz obraz Raspbian z
- Pobierz plik ZIP
- Rozpakuj plik ZIP, gdzie możesz go łatwo znaleźć
- Otwórz Win32 Disk Imager i wybierz wyodrębniony obraz
- Wybierz kartę SD z rozwijanego menu i kliknij napisz
- Po zakończeniu procesu zapisu możesz zamknąć program Win32 Disk Imager
Teraz musimy zrobić jeszcze kilka rzeczy, zanim będziemy mogli połączyć się z Pi
- Przejdź do folderu rozruchowego na karcie SD
- Otwórz plik cmdline.txt
- Dodaj 'ip=169.254.10.1' na końcu linii oddzielone spacją
- Zapisz i wyjdź z pliku
- Utwórz w tym samym katalogu plik o nazwie ssh i usuń rozszerzenie (to włączy ssh przy pierwszym uruchomieniu, abyśmy mogli połączyć się z Pi)
- Bezpiecznie wyjmij kartę SD i włóż ją do Pi
Teraz możemy połączyć się z Pi:
- Chwyć kabel Ethernet i włóż jeden koniec do Pi, a drugi do komputera
- Otwarta szpachla
- Wpisz 169.254.10.1 w polu Nazwa hosta
- Upewnij się, że wybrano SSH, a port to 22
- Kliknij otwórz
- Jeśli otrzymasz ostrzeżenie, możesz po prostu kontynuować i je zignorować
- Nazwa użytkownika to pi, a hasło to malina
Konfiguracja i instalacja oprogramowania:
Otwórz raspi-config za pomocą następującego polecenia:
sudo raspi-config
Wybierz piątą opcję: Opcje interfejsu
Włącz SPI i I2C
Wyłącz następujące rzeczy w trzeciej opcji: Opcje rozruchu:
- Ekran powitalny
- Wybierz cli do uruchamiania, a nie pulpit
Konfiguracja Wi-Fi:
Wifi jest przydatne do łatwego poruszania się po stronie. Upewnij się, że masz zamknięte dane logowania do Wi-Fi.
Aby skonfigurować Wi-Fi, potrzebujemy kilku rzeczy:
Dodaj swoje Wi-Fi za pomocą tego polecenia i zmień SSID i HASŁO do swoich informacji:
sudo wpa_passphrase "SSID" "HASŁO" >> /etc/wpa_supplicant/wpa_supplicant.conf
Wykonaj to polecenie, aby ponownie skonfigurować Wi-Fi:
sudo wpa_cli
Wybierz odpowiedni interfejs:
interfejs wlan0
Zmień konfigurację interfejsu:
przekonfigurować
Sprawdź, czy rekonfiguracja przebiegła pomyślnie za pomocą tego polecenia:
ip a
Jeśli widzisz adres IP w interfejsie wlan0, wszystko jest skonfigurowane.
Aktualizacja systemu operacyjnego
Zaktualizuj system operacyjny za pomocą tych 2 poleceń:
aktualizacja sudo apt
sudo apt pełna aktualizacja
Konfiguracja MariaDB:
Instalowanie serwera WWW Apache:
sudo apt zainstaluj apache2 -y
Instalowanie serwera MariaDB:
sudo apt zainstaluj serwer mariadb -y
Teraz musimy zrestartować:
ponowne uruchomienie sudo
Zalecane jest zabezpieczenie instalacji MariaDB. Możesz to zrobić, uruchamiając to polecenie:
sudo mysql_secure_installation
Najpierw zostaniesz poproszony o aktualne hasło roota, ale domyślna instalacja nie ma go, więc naciśnij enter.
Następnie zostaniesz zapytany, czy chcesz ustawić hasło roota, wpisz y. Upewnij się, że pamiętasz hasło!
- Wpisz y, aby usunąć anonimowych użytkowników
- Wpisz y, aby wyłączyć zdalne logowanie root
- Wpisz y, aby usunąć testowe bazy danych i uzyskać do nich dostęp
- Wpisz y, aby ponownie załadować uprawnienia
Twoja instalacja MariaDB powinna być bezpieczna!
Teraz możemy stworzyć nowego użytkownika:
Wejdź do powłoki mysql za pomocą tego polecenia:
sudo mysql
Utwórz użytkownika z nazwą użytkownika mysql i hasłem (twoje_hasło) następującymi poleceniami:
utwórz użytkownika mysql@localhost identyfikowanego przez 'twoje_hasło';
nadaj wszystkie przywileje na *.* mysql@localhost;
PRZYWILEJE WSPÓŁPRACUJĄCE;
Wyjdź z powłoki mysql za pomocą tego polecenia:
Wyjście;
Pakiety Pythona:
Python powinien być już zainstalowany, chyba że wybrałeś wersję Lite:
sudo apt zainstaluj python3-pip
Potrzebujemy sporej ilości pakietów Pythona, możesz je wszystkie zainstalować za pomocą następującego polecenia:
pip3 zainstaluj mysql-connector-python flask-socketio flask-cors gevent gevent-websocket
Teraz musimy zrestartować komputer jeszcze raz
ponowne uruchomienie sudo
Krok 2: Konfigurowanie Visual Studio Code i MySQL Workbench
Łączenie się z Pi za pomocą MySQL Workbench:
Otwórz środowisko pracy MySQL
Nawiąż nowe połączenie z Pi z następującymi informacjami:
- Nazwa połączenia: Raspi
- Metoda połączenia: Standardowy TCP/IP przez SSH
- Nazwa hosta SSH: adres IP Pi
Możesz uzyskać adres IP za pomocą tego polecenia:
ip a
- Nazwa użytkownika SSH: pi
- Nazwa hosta MySQL: 127.0.0.1
- Port serwera MySQL: 3306
- Nazwa użytkownika: mysql
Kliknij ok i wprowadź hasło dla użytkownika pi, a następnie wprowadź hasło dla użytkownika mysql.
Konfigurowanie kodu programu Visual Studio:
Otwórz kod programu Visual Studio
Zainstaluj te 2 rozszerzenia:
- Zdalny - SSH
- Zdalny - SSH: edytowanie plików konfiguracyjnych
Naciśnij Visual Studio Code F1 i wpisz ssh
Wybierz zdalny SSH: Dodaj nowego hosta SSH
Wpisz ssh pi@adres IP
W następnym kroku naciśnij enter
Połączenie jest teraz nawiązane z Pi. Możesz połączyć się z Pi, naciskając F1 i wybierając połącz ze zdalnym hostem.
Wprowadź hasło, aby Visual Studio Code miał dostęp do Pi.
Jeszcze jedno: zainstaluj rozszerzenie Pythona na zdalnej maszynie, aby móc łatwo uruchamiać i debugować kod.
Krok 3: Schemat spieniania
W tym kroku wyjaśnię obwód.
Powyższe schematy są wykonane za pomocą Fritzing.
Silnik prądu stałego:
Podłącz GPIO 18 do podstawy kolektora, środkowy pin na tranzystorze npn. Podłącz masę silnika do kolektora z tranzystora i moc silnika do 5V. Podłącz masę tranzystora do linii uziemienia. Podłącz diodę w barierze nad silnikiem tak, aby blokowała przepływ prądu bezpośrednio do tranzystora.
Silnik krokowy:
Podłącz silnik krokowy do tablicy kontrolnej. Na płytce sterującej znajdują się z jednej strony piny do podłączenia 5V i masy. Pozostałe piny to piny kontrolne. Te kołki sterują magnesami wewnątrz silnika, dzięki czemu może się on obracać. Podłącz te piny do GPIO 12, 16, 20 i 21 na Raspberry Pi.
HC-SR04 Ultradźwiękowy:
Ten czujnik może mierzyć odległości do około 4,5 metra za pomocą dźwięku.
Podłącz pin VCC do 5V, pin wyzwalający do GPIO 25, pin echo z rezystorem 470 Ohm do GPIO 24 a masę z rezystorem 470 Ohm do masy.
MPU6050:
Podłącz pin VCC do 3V3, uziemienie do masy, scl do scl na Pi i sda do sda na Pi. Do tego czujnika używam I2C do sterowania nim. Więcej na ten temat przeczytasz tutaj. Oto podstawowe wyjaśnienie: Pi jest urządzeniem głównym, a MPU6050 urządzeniem podrzędnym. Poprzez linię scl Pi kontroluje taktowanie, a linia sda służy do wysyłania danych od urządzenia nadrzędnego do urządzenia podrzędnego lub od urządzenia podrzędnego do urządzenia nadrzędnego. Tylko master może zainicjować transfer danych.
Rezystor świetlny:
Aby uzyskać prawidłowe odczyty z LDR, używam układu MCP3008. Daje to pewność, że odczyty z ldr są stabilne i poprawnie konwertowane z sygnałów analogowych na cyfrowe.
Podłącz 3V3 do jednej strony ldr z opornikiem 10K Ohm pomiędzy nimi. Pomiędzy ldr a rezystorem podłącz przewód do kanału 0 MCP3008. Następnie podłącz drugą stronę ldr do ziemi.
Wyświetlacz LCD:
Możesz używać wyświetlacza LCD bez PCF8574, ale ponieważ piny GPIO na Pi są ograniczone, używam PCF8574 do zapisania niektórych pinów GPIO. Możesz również użyć rejestru przesuwnego, ale wolę PCF8574. PCF8574 można sterować protokołem SMbus, ale napisałem własną klasę do sterowania tym. Potencjometr kontroluje kontrast.
Piny wyświetlacza LCD:
- VSS do ziemi
- VDD do 5V
- V0 do zmiennego pinu potencjometru
- RS do GPIO 13
- R/W do masy bo tylko piszę na wyświetlaczu a nie czytam
- E do GPIO 19
- DB0 do P0 PCF
- DB1 do P1
- DB2 do P2
- DB3 do P3
- DB4 do P4
- DB5 do P5
- DB6 do P6
- DB7 do P7
- LED+ do 5V
- LED-do ziemi
Piny PCF8574:
- A0 do ziemi
- A1 do ziemi
- A2 do ziemi
- Ziemia do ziemi
- VCC do 5V
- SDA do GPIO 27
- SCL do GPIO 22 z rezystorem 330 Ohm
Możesz nie mieć diod LED+ i LED- w zależności od rodzaju wyświetlacza. LED+ i LED- służą do podświetlenia.
Podłącz dodatnią stronę potencjometru do 5V, a masę do masy.
Upewnij się, że używasz rezystorów podciągających!
Krok 4: Kod na Github
Cały potrzebny kod znajdziesz na moim Github.
Projekt folderu1:
Ten folder zawiera cały kod dla backendu. W folderze Klasy znajdują się wszystkie klasy do sterowania sprzętem.
Folder repozytoria zawiera 2 pliki: Database.py i DataRepository.py. Database.py utrzymuje połączenie z bazą danych i obsługuje zapytania. DataRepository.py zawiera wszystkie zapytania potrzebne do serwisu.
App.py to główny plik backendu. Ten plik uruchamia się automatycznie po uruchomieniu Pi.
Config.py zawiera kilka ustawień do łączenia się z bazą danych. Upewnij się, że wypełniłeś te pliki własnymi informacjami.
Możesz umieścić ten folder w dowolnym miejscu w swoim katalogu domowym.
Folder html:
Ten folder zawiera wszystkie pliki witryny, frontend.
- Folder zawiera pliki układu strony.
- Czcionki zawiera czcionki używane na stronie.
- Skrypt zawiera wszystkie pliki JavaScript, aby strona była dynamiczna
Ten folder musi znajdować się w folderze /var/www/html
Możesz skopiować plik lub folder za pomocą tego polecenia:
sudo mv /ścieżka/do/bieżącego/katalogu /ścieżka/do/docelowego/katalogu
Aby przejść do strony, wpisz w przeglądarce adres IP wyświetlany na wyświetlaczu LCD.
Krok 5: Znormalizowana struktura bazy danych
W tym kroku zaimportujemy bazę danych.
- Połącz się ze swoim Raspberry Pi za pomocą MySQL Workbench
- Kliknij Serwer -> Import danych
- Wybierz opcję Importuj samodzielny plik
- W folderze Database-export z Github znajduje się plik sql o nazwie dump_project1.sql
- Przejdź do tego pliku i kliknij Rozpocznij import
Otóż to. Pi może teraz uzyskać dostęp do bazy danych, jeśli ma prawidłowe informacje.
Krok 6: Sprawa dla dystrybutora kart
W tym kroku wyjaśnię, czego użyłem do obudowy i jak wszystko zamontowałem.
Do przypadku użyłem 2 pudełek ABS:
- 265 x 185 x 95 mm
- 171 x 121 x 80 mm
Otwory, które zrobiłem w pudełkach
Otwór na wyświetlacz LCD, 3 otwory na kable zasilające, jeden na przewody od silnika krokowego, silnika prądu stałego i czujnika ultradźwiękowego.
W najmniejszym pudełku zrobiłem otwór na przewody od komponentów i otwór na karty. W górnej części zrobiłem największy otwór, dzięki czemu można w urządzeniu umieścić karty do gry.
Zamontowałem silnik prądu stałego ze wspornikiem i jakąś dwustronną taśmą. Zrobiłem drewnianą deskę do układania kart z otworem na koło do wystrzelenia karty.
Wybrałem plastik ABS, ponieważ jest lekki, więc silnik krokowy może go łatwo obracać. Drewno bywa naprawdę ciężkie i silnik krokowy może mieć z tym problemy. Do wycięcia otworów użyłem wiertarki z wiertłami do metalu oraz Dremela. Wycinanie większych otworów wymagało dużo więcej pracy, a wyrzynarka byłaby lepsza.
Krok 7: Programuj jako usługę
Naprawdę przydatne jest, aby kod zaczynał się po uruchomieniu Pi. W tym celu wykonamy usługę.
Utwórz nowy plik o nazwie smartcard.service za pomocą następującego polecenia:
sudo nano /etc/systemd/system/smartcard.service
To musi znaleźć się w pliku:
[Jednostka]
Description=Zaplecze karty inteligentnej After=network.target [Service] ExecStart=/usr/bin/python3 -u app.py WorkingDirectory=/home/pi/project1 StandardOutput=inherit StandardError=inherit Restart=always User=pi [Install] WantedBy =wielu użytkowników.cel WorkingDirectory to ścieżka do folderu, w którym znajduje się program
Teraz masz własną kartę inteligentną!
Zalecana:
Automatyczny środek do dezynfekcji rąk: 8 kroków
Automatyczny środek do dezynfekcji rąk: Pandemia COVID-19 stała się czymś, co opinia publiczna bardzo często słyszała w 2020 roku. Każdy obywatel, który usłyszy słowo „COVID-19”, natychmiast pomyśli o słowie „Niebezpieczny”, „Śmiertelny”, „Utrzymuj w czystości”i innymi słowami. Ten COVID-19 ma również
Automatyczny dozownik do ręcznego dezynfekcji rąk: 6 kroków
Automatyczny dozownik do ręcznego dezynfekcji rąk: W tym projekcie zbudujemy automatyczny dozownik do dezynfekcji rąk. Ten projekt będzie wykorzystywał Arduino, czujnik ultradźwiękowy, pompę wody i dezynfektor do rąk. Czujnik ultradźwiękowy służy do sprawdzania obecności rąk poniżej wylotu dezynfektora
Automatyczny dozownik alkoholu żelowego z Esp32: 9 kroków
Automatyczny dozownik alkoholu żelowego z Esp32: W samouczku zobaczymy, jak zrobić kompletny prototyp, aby złożyć automatyczny dozownik alkoholu żelowego z esp32, będzie zawierał montaż krok po kroku, obwód elektroniczny, a także kod źródłowy wyjaśniony krok po kroku krok
Podajnik kart do maszyny do kolekcjonowania kart: 10 kroków (ze zdjęciami)
Podajnik kart do maszyny do kolekcjonowania: Podajnik kart do maszyny do kolekcjonowania TłoKiedy byłem młody, zbierałem tony kart kolekcjonerskich, ale od kilku lat pasja do kolekcjonowania maleje. W międzyczasie mam dzieci i powoli, ale pewnie też zaczynają się
Sortownik kart do maszyny do kolekcjonowania kart (aktualizacja 10.01.2019): 12 kroków (ze zdjęciami)
Sortownik kart do maszyny do kolekcjonowania (aktualizacja 10.01.2019): Sortownik kart do maszyny do kolekcjonowania kart Dziennik zmian można znaleźć w ostatnim kroku. Tło Wyjaśniłem już motywację mojego projektu w artykule Podajnik kart. Krótko mówiąc, moje dzieci i ja zgromadziliśmy dużą ilość kart kolekcjonerskich