Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Unë kam zgjedhur një shpërndarës të kartave të mençura si projekti im i parë sepse më pëlqen të luaj një lojë me kartë. Gjëja që nuk më pëlqen më shumë është marrja e kartave. Duhet të mbani mend për çdo lojë sa karta merr çdo person. Kjo bëhet konfuze kur dini shumë lojëra me letra. Projekti im gjithashtu do të ndihmojë njerëzit që kanë probleme me shpërndarjen e kartave si njerëzit e moshuar dhe njerëzit që vuajnë nga Parkinsoni.
Furnizimet
- 1 Raspberry Pi (Kam përdorur një Raspberry Pi 4)
- Kartë SD (rekomandohet 16 GB)
- 1 copë Outbread për Raspberry Pi (pjesë T)
- 2 dërrasa buke
- 1 Modul i furnizimit me energji elektrike për bordin e bukës, 5V dhe 3V3
- 1 ekran LCD
- 1 Potenciometër
- 1 MPU6050 (përshpejtues dhe xhiroskop)
- 1 transistorë NPN
- 1 zgjerues I/O PCF8574N
- 1 motor stepper
- 1 tabelë shpërthimi ULN2003 për të kontrolluar motorin stepper
- 1 sensor tejzanor HC-SR04
- 1 motorë 5V DC
- 1 diodë
- 6 rezistente 470 Ohm
- 4 rezistente 10K Ohm
- Teli elektrik për të lidhur gjithçka
E dobishme për të pasur gjatë bërjes:
- Makine per ngjitjen e metalit
- Saldator
- Sharrë Dremel ose jig (diçka për të prerë dru dhe abs plastike)
Softuer:
- Stuko
- Tabela e punës MySQL
- Win32 Disk Imager
- Redaktuesi i kodit (unë rekomandoj Visual Studio Code)
- WinSCP
- Imazh Raspbian
Hapi 1: Përgatitja e Rasperry Pi
Së pari ne duhet të përgatisim Raspberry Pi para se të bëjmë ndonjë gjë tjetër. Sepse gjithçka do të funksionojë me Pi kështu që kjo është një nga pjesët më të rëndësishme të shpërndarësit të kartave.
Instalimi:
Shkarkoni imazhin Raspbian nga
- Shkarkoni skedarin ZIP
- Nxirrni skedarin ZIP ku mund ta gjeni me lehtësi
- Hapni Win32 Disk Imager dhe zgjidhni imazhin e nxjerrë
- Zgjidhni kartën SD në menunë zbritëse dhe klikoni në shkrim
- Pasi të përfundojë procesi i shkrimit, mund të mbyllni Win32 Disk Imager
Tani duhet të bëjmë disa gjëra të tjera para se të lidhemi me Pi
- Shkoni te dosja e nisjes në kartën SD
- Hapni skedarin cmdline.txt
- Shtoni 'ip = 169.254.10.1' në fund të rreshtit të ndarë me një hapësirë
- Ruani dhe dilni nga skedari
- Krijoni në të njëjtën drejtori një skedar të quajtur ssh dhe hiqni shtesën (kjo do të aktivizojë ssh në nisjen e parë në mënyrë që të lidhemi me Pi)
- Hiqeni me siguri kartën SD dhe vendoseni në Pi
Tani mund të lidhemi me Pi:
- Merrni një kabllo ethernet dhe futni njërin skaj në Pi dhe skajin tjetër në kompjuterin tuaj
- Stuko e hapur
- Shkruani 169.254.10.1 në fushën Emri i hostit
- Sigurohuni që SSH është zgjedhur dhe porti është 22
- Kliko hapur
- Nëse merrni një paralajmërim, thjesht mund të vazhdoni dhe ta injoroni atë
- Emri i përdoruesit është pi dhe fjalëkalimi është mjedër
Konfigurimi dhe instalimi i softuerit:
Hapni raspi-config me komandën e mëposhtme:
sudo raspi-config
Zgjidhni opsionin e 5 -të: Opsionet e ndërlidhjes
Aktivizo SPI dhe I2C
Çaktivizoni gjërat e mëposhtme në opsionin e 3 -të: Opsionet e nisjes:
- Splash screen
- Zgjidhni cli për fillimin dhe jo desktopin
Konfigurimi i Wi -Fi:
Wifi është i dobishëm për të lundruar me lehtësi në faqen e internetit. Sigurohuni që keni kredencialet tuaja wifi afër.
Për të konfiguruar wifi na duhen disa gjëra:
Shtoni WiFi tuaj duke përdorur këtë komandë dhe ndryshoni SSID dhe PASSWORD në informacionin tuaj:
sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf
Ekzekutoni këtë komandë për të rikonfiguruar wifi -në tuaj:
sudo wpa_cli
Zgjidhni ndërfaqen e duhur:
ndërfaqja wlan0
Konfiguroni ndërfaqen:
rikonfiguro
Kontrolloni nëse rikonfigurimi ishte i suksesshëm me këtë komandë:
ip a
Nëse shihni një adresë IP në ndërfaqen wlan0, atëherë gjithçka është e konfiguruar.
Përditësimi i sistemit operativ
Përditësoni sistemin operativ me këto 2 komanda:
sudo apt përditësim
sudo apt azhurnim i plotë
Konfigurimi i MariaDB:
Instalimi i serverit të uebit Apache:
sudo apt install apache2 -y
Instalimi i serverit MariaDB:
sudo apt install mariadb -server -y
Tani na duhet të rindizim:
rindez sudo
Rekomandohet të siguroni instalimin MariaDB. Mund ta bëni duke ekzekutuar këtë komandë:
sudo mysql_secure_installation
Së pari do t'ju kërkohet fjalëkalimi aktual rrënjësor, por instalimi i paracaktuar nuk ka një të tillë, kështu që shtypni enter.
Tjetra do të pyeteni nëse doni të vendosni një fjalëkalim rrënjësor, shkruani y. Sigurohuni që të mbani mend fjalëkalimin!
- Futni y për të hequr përdoruesit anonimë
- Futni y për të çaktivizuar hyrjen në rrënjë nga distanca
- Futni y për të hequr bazat e të dhënave të testimit dhe qasjen në të
- Futni y për të ringarkuar përparësitë
Instalimi juaj MariaDB duhet të jetë i sigurt!
Tani mund të krijojmë një përdorues të ri:
Futni guaskën mysql me këtë komandë:
sudo mysql
Krijoni një përdorues me emrin e përdoruesit mysql dhe një fjalëkalim (fjalëkalimi juaj_) komandat e mëposhtme:
krijoni përdorues mysql@localhost të identifikuar nga 'your_password';
jepni të gjitha të drejtat në *. * mysql@localhost;
PRIVILEGJET E PARASHIKUAR;
Dilni nga guaska mysql me këtë komandë:
dalje;
Pakot Python:
Python tashmë duhet të jetë i instaluar nëse nuk keni zgjedhur versionin Lite:
sudo apt instaloni python3-pip
Ne kemi nevojë për një sasi të mirë të paketave Python, ju mund t'i instaloni të gjitha me komandën e mëposhtme:
pip3 instaloni mysql-connector-python flask-socketio flask-cors gevent gevent-websocket
Tani duhet të rindizemi edhe një herë
rindez sudo
Hapi 2: Konfigurimi i Kodit Visual Studio dhe MySQL Workbench
Lidhja me Pi me Workbench MySQL:
Hapni Workbench MySQL
Krijoni një lidhje të re me Pi me informacionin e mëposhtëm:
- Emri i lidhjes: Raspi
- Metoda e lidhjes: Standard TCP/IP mbi SSH
- Emri i hostit SSH: IP-adresa e Pi
Ju mund të merrni adresën IP me këtë komandë:
ip a
- SSH Emri i përdoruesit: pi
- Emri i hostit MySQL: 127.0.0.1
- Porti i serverit MySQL: 3306
- Emri i përdoruesit: mysql
Klikoni ok dhe futni fjalëkalimin për përdoruesin pi dhe më pas futni fjalëkalimin për përdoruesin mysql.
Vendosja e kodit të Visual Studio:
Hapni Kodin Visual Studio
Instaloni këto 2 shtesa:
- Telekomandë - SSH
- Telekomandë - SSH: Redaktimi i skedarëve të konfigurimit
Shtypni në Visual Studio Kodi F1 dhe shkruani ssh
Zgjidhni SSH në distancë: Shtoni host të ri SSH
Plotësoni ssh pi@adresën IP
Në hapin tjetër shtypni enter
Lidhja tani është bërë me Pi. Mund të lidheni me Pi duke shtypur F1 dhe duke zgjedhur lidhjen me hostin në distancë.
Vendosni fjalëkalimin në mënyrë që Kodi Visual Studio të ketë qasje në Pi.
Edhe një gjë: Instaloni shtesën Python në makinën e largët në mënyrë që të mund të ekzekutoni dhe korrigjoni me lehtësi kodin.
Hapi 3: Diagrami i ngrirjes
Në këtë hap do të shpjegoj qarkun.
Skemat e mësipërme janë bërë me Fritzing.
Motor DC:
Lidhni GPIO 18 me bazën e kolektorit, kunjin e mesëm në një tranzistor npn. Lidhni tokën e motorit me kolektorin nga transistori dhe fuqinë e motorit në 5V. Lidhni tokën e tranzistorit me vijën e tokës. Lidhni diodën në pengesë mbi motorin në mënyrë që të bllokojë rrjedhjen që të mos rrjedhë drejtpërdrejt në transistor.
Motori stepper:
Lidhni motorin stepper me tabelën e kontrollit. Në bordin e kontrollit ka kunja në njërën anë për të lidhur 5V dhe tokëzimin. Kunjat e tjera janë kunja kontrolli. Këto kunja kontrollojnë magnetët brenda motorit në mënyrë që të kthehet. Lidhni këto kunja me GPIO 12, 16, 20 dhe 21 në Raspberry Pi.
HC-SR04 tejzanor:
Ky sensor mund të masë distancat në rreth 4.5 metra duke përdorur zërin.
Lidhni kunjin VCC me 5V, kunjin e këmbëzës në GPIO 25, kunjin e jehonës me një rezistencë 470 Ohm në GPIO 24 dhe tokën me një rezistencë 470 Ohm në tokë.
MPU6050:
Lidhni kunjin VCC në 3V3, toka në tokë, scl në scl në Pi dhe sda në sda në Pi. Për këtë sensor unë përdor I2C për ta kontrolluar atë. Mund të lexoni më shumë rreth saj këtu. Këtu është një shpjegim bazë: Pi është mjeshtri dhe MPU6050 është skllavi. Përmes linjës scl Pi kontrollon kohën dhe linja sda përdoret për të dërguar të dhëna nga masteri te skllavi ose nga skllavi te zotëria. Vetëm masteri mund të fillojë transferimin e të dhënave.
Rezistencë e varur nga drita:
Për të marrë leximet e sakta nga LDR unë përdor një çip MCP3008. Kjo siguron që leximet nga ldr të jenë të qëndrueshme dhe të sakta të konvertuara nga sinjale analoge në dixhitale.
Lidhni 3V3 në njërën anë të ldr me një rezistencë prej 10K Ohm midis tij. Midis ldr dhe rezistencës lidhni një tel në kanalin 0 të MCP3008. Pastaj lidhni anën tjetër të ldr me tokën.
Ekran LCD:
Mund të përdorni ekranin LCD pa një PCF8574, por për shkak se kunjat GPIO në Pi janë të kufizuara, unë përdor një PCF8574 për të ruajtur disa kunja GPIO. Ju gjithashtu mund të përdorni një regjistër ndërrimi, por unë preferoj një PCF8574. Ju mund të kontrolloni PCF8574 me protokollin SMbus, por unë shkrova klasën time për ta kontrolluar atë. Potenciometri kontrollon kontrastin.
Kunjat e ekranit LCD:
- VSS në tokë
- VDD në 5V
- V0 në pinin e ndryshueshëm të potenciometrit
- RS në GPIO 13
- R/W në tokë sepse shkruaj vetëm në ekran dhe nuk lexoj
- E deri te GPIO 19
- DB0 në P0 të PCF
- DB1 në P1
- DB2 në P2
- DB3 në P3
- DB4 në P4
- DB5 në P5
- DB6 në P6
- DB7 në P7
- LED+ deri në 5V
- LED- në tokë
PCF8574 kunjat:
- A0 në tokë
- A1 në tokë
- A2 në tokë
- Tokë në tokë
- VCC në 5V
- SDA në GPIO 27
- SCL në GPIO 22 me rezistencë prej 330 Ohm
Ju mund të mos keni LED+ dhe LED- në varësi të llojit të ekranit që keni. LED+ dhe LED- është për dritën e pasme.
Lidhni anën pozitive të potenciometrit me 5V dhe tokën me tokën.
Sigurohuni që përdorni rezistorë tërheqës!
Hapi 4: Kodi në Github
Ju mund të gjeni të gjithë kodin e nevojshëm në Github tim.
Projekti i dosjes 1:
Kjo dosje përmban të gjithë kodin për pjesën e pasme. Në dosjen Klasat janë të gjitha klasat për të kontrolluar harduerin.
Depot e dosjeve përmbajnë 2 skedarë: Database.py dhe DataRepository.py. Database.py mban lidhjen me bazën e të dhënave dhe trajton pyetjet. DataRepository.py përmban të gjitha pyetjet e nevojshme për sitin.
App.py është skedari kryesor i backend -it. Ky skedar fillon automatikisht kur Pi fillon.
Config.py përmban disa cilësime për t'u lidhur me bazën e të dhënave. Sigurohuni që t'i plotësoni këto skedarë me informacionin tuaj.
Ju mund ta vendosni këtë dosje kudo në drejtorinë tuaj shtëpiake.
HTML dosje:
Kjo dosje përmban të gjitha skedarët për faqen, frontend.
- Dosja përmban skedarët për paraqitjen e faqes.
- Fontet përmbajnë shkronjat e përdorura në sit.
- Script përmban të gjithë skedarët Javascript për ta bërë faqen dinamike
Ky dosje duhet të jetë në dosjen/var/www/html
Ju mund të kopjoni një skedar ose dosje me këtë komandë:
sudo mv/path/to/current/directory/path/to/destination/directory
Për të lundruar në llojin e faqes në shfletuesin tuaj, adresa IP shfaqet në ekranin LCD.
Hapi 5: Struktura e normalizuar e bazës së të dhënave
Në këtë hap ne do të importojmë bazën e të dhënave.
- Lidhuni me Raspberry Pi tuaj me MySQL Workbench
- Klikoni në Server -> Importimi i të dhënave
- Zgjidhni Importo skedar të pavarur
- Në dosjen Baza e të dhënave-eksport nga Github ekziston një skedar sql i quajtur dump_project1.sql
- Shfletoni në këtë skedar dhe klikoni në fillimin e importit
Kjo eshte. Pi tani mund të hyjë në bazën e të dhënave nëse ka informacionin e duhur.
Hapi 6: Rast për Shpërndarësin e Kartave
Në këtë hap unë do të shpjegoj se çfarë kam përdorur për rastin dhe si kam montuar gjithçka.
Për rastin kam përdorur 2 kuti ABS:
- 265 x 185 x 95 mm
- 171 x 121 x 80 mm
Vrimat që bëra në kuti
Një vrimë për ekranin LCD, 3 vrima për kabllot e energjisë, një për telat nga motori stepper, motori DC dhe sensori tejzanor.
Në kutinë më të vogël bëra një vrimë për telat nga përbërësit dhe një vrimë për kalimin e kartave. Në krye kam bërë vrimën më të madhe kështu që ju mund të vendosni letra për lojë në pajisje.
Unë e montova motorin DC me një kllapa dhe disa kaseta të dyanshme. Bëra një dërrasë druri për të vendosur kartat me një vrimë për timonin për të shkrepur një kartë.
Unë kam zgjedhur për plastikë ABS sepse është e lehtë kështu që motori stepper mund ta kthejë me lehtësi. Druri mund të jetë vërtet i rëndë dhe motori stepper mund të ketë probleme me këtë. Për të prerë vrimat kam përdorur një stërvitje me stërvitje të dizajnuara për metal dhe një Dremel. Prerja e vrimave më të mëdha kërkoi shumë më tepër punë dhe një sharrë elektrike do të ishte më mirë.
Hapi 7: Programi si Shërbim
Reallyshtë me të vërtetë e dobishme që kodi të fillojë pasi të jetë nisur Pi. Për këtë ne do të bëjmë një shërbim.
Krijoni një skedar të ri të quajtur smartcard.service me komandën e mëposhtme:
sudo nano /etc/systemd/system/smartcard.service
Kjo duhet të futet në skedar:
[Njësia]
Përshkrimi = Smart Card backend After = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = trashëgoj StandardError = trashëgoj Restart = gjithmonë User = pi [Install] WantedBy = multi-user.target WorkingDirectory është rruga drejt dosjes ku ndodhet programi
Tani keni kartën tuaj Smart!