Satura rādītājs:
- Piegādes
- 1. solis: Rasperry Pi sagatavošana
- 2. darbība. Visual Studio Code un MySQL Workbench iestatīšana
- 3. solis: Fritzing diagramma
- 4. solis: kods vietnē Github
- 5. darbība: normalizēta datu bāzes struktūra
- 6. darbība. Kartes izplatītāja lieta
- 7. darbība. Programmēšana kā pakalpojums
Video: Automātiskais karšu izplatītājs: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Par savu pirmo projektu esmu izvēlējies viedkaršu izplatītāju, jo man patīk spēlēt kāršu spēli. Man visvairāk nepatīk kāršu dalīšana. Katrā spēlē jums jāatceras, cik daudz karšu saņem katrs cilvēks. Tas kļūst mulsinoši, ja zināt daudzas kāršu spēles. Mans projekts arī palīdzēs cilvēkiem, kuriem ir grūtības ar karšu izplatīšanu, piemēram, vecākiem cilvēkiem un cilvēkiem, kuri cieš no Parkinsona slimības.
Piegādes
- 1 Raspberry Pi (es izmantoju Raspberry Pi 4)
- SD karte (ieteicams 16 GB)
- 1 maizes gabals Raspberry Pi (T-gabals)
- 2 maizes dēļi
- 1 Strāvas padeves modulis 5V un 3V3 maizei
- 1 LCD displejs
- 1 potenciometrs
- 1 MPU6050 (akselerometrs un žiroskops)
- 1 NPN tranzistori
- 1 PCF8574N I/O paplašinātājs
- 1 pakāpju motors
- 1 ULN2003 sadalīšanas dēlis, lai kontrolētu pakāpju motoru
- 1 ultraskaņas sensors HC-SR04
- 1 5V līdzstrāvas motori
- 1 diodes
- 6 470 omi rezistori
- 4 10K omi rezistori
- Elektriskais vads, lai savienotu visu
Noderīga, gatavojot:
- Lodāmurs
- Lodēt
- Dremel vai džiga zāģis (kaut kas koka un abs plastmasas griešanai)
Programmatūra:
- Špakteles
- MySQL darbagalds
- Win32 diska attēlveidotājs
- Koda redaktors (es iesaku Visual Studio kodu)
- WinSCP
- Raspiešu tēls
1. solis: Rasperry Pi sagatavošana
Vispirms mums ir jāsagatavo Raspberry Pi, pirms mēs darām kaut ko citu. Tā kā viss darbosies ar Pi, tas ir viens no vissvarīgākajiem karšu izplatītāja gabaliem.
Uzstādīšana:
Lejupielādējiet Raspbian attēlu no vietnes
- Lejupielādējiet ZIP failu
- Izvelciet ZIP failu, lai to varētu viegli atrast
- Atveriet Win32 Disk Imager un atlasiet iegūto attēlu
- Nolaižamajā izvēlnē atlasiet SD karti un noklikšķiniet uz rakstīt
- Kad rakstīšanas process ir pabeigts, varat aizvērt Win32 Disk Imager
Tagad mums ir jādara vēl dažas lietas, pirms varam izveidot savienojumu ar Pi
- Dodieties uz sāknēšanas mapi SD kartē
- Atveriet failu cmdline.txt
- Pievienojiet “ip = 169.254.10.1” rindas beigās, kas atdalīta ar atstarpi
- Saglabājiet un izejiet no faila
- Tajā pašā direktorijā izveidojiet failu ar nosaukumu ssh un noņemiet paplašinājumu (tas ļaus ssh pirmajā sāknēšanas reizē, lai mēs varētu izveidot savienojumu ar Pi)
- Droši izņemiet SD karti un ievietojiet to Pi
Tagad mēs varam izveidot savienojumu ar Pi:
- Paņemiet Ethernet kabeli un ievietojiet vienu galu Pi un otru galu datorā
- Atveriet Putty
- Laukā Uzņēmēja nosaukums ievadiet 169.254.10.1
- Pārliecinieties, vai ir atlasīts SSH un ports ir 22
- Noklikšķiniet uz atvērt
- Ja saņemat brīdinājumu, varat vienkārši turpināt un to ignorēt
- Lietotājvārds ir pi, bet parole - aveņu
Programmatūras konfigurēšana un instalēšana:
Atveriet raspi-config ar šādu komandu:
sudo raspi-config
Izvēlieties piekto iespēju: saskarnes opcijas
Iespējot SPI un I2C
Trešajā variantā atspējojiet šādas lietas: Sāknēšanas opcijas:
- Šļakatu ekrāns
- Startēšanai izvēlieties cli, nevis darbvirsmu
Wifi iestatīšana:
Wifi ir noderīgs, lai viegli pārvietotos uz vietni. Pārliecinieties, vai jūsu Wi -Fi akreditācijas dati ir aizvērti.
Lai iestatītu wifi, mums ir nepieciešamas dažas lietas:
Pievienojiet savu wifi, izmantojot šo komandu, un mainiet SSID un PASSWORD uz savu informāciju:
sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf
Izpildiet šo komandu, lai pārkonfigurētu savu wifi:
sudo wpa_cli
Izvēlieties pareizo saskarni:
interfeiss wlan0
Pārkonfigurējiet saskarni:
pārkonfigurēt
Pārbaudiet, vai pārkonfigurācija bija veiksmīga, izmantojot šo komandu:
ip a
Ja wlan0 saskarnē redzat IP adresi, tad viss ir iestatīts.
Tiek atjaunināta operētājsistēma
Atjauniniet operētājsistēmu ar šīm divām komandām:
sudo apt atjauninājums
sudo apt pilna jaunināšana
MariaDB iestatīšana:
Apache tīmekļa servera instalēšana:
sudo apt instalēt apache2 -y
MariaDB servera instalēšana:
sudo apt instalēt mariadb -server -y
Tagad mums ir jāpārstartē:
sudo atsāknēšana
Ieteicams nodrošināt MariaDB instalācijas drošību. To var izdarīt, palaižot šo komandu:
sudo mysql_secure_installation
Vispirms jums tiks prasīta pašreizējā saknes parole, bet noklusējuma instalācijai tāda nav, tāpēc nospiediet taustiņu Enter.
Tālāk jums tiks jautāts, vai vēlaties iestatīt saknes paroli, ierakstiet y. Pārliecinieties, ka varat atcerēties paroli!
- Ievadiet y, lai noņemtu anonīmus lietotājus
- Ievadiet y, lai attālināti atspējotu root pieteikšanos
- Ievadiet y, lai noņemtu testa datu bāzes un piekļūtu tai
- Ievadiet y, lai atkārtoti ielādētu privilēģijas
Jūsu MariaDB instalācijai jābūt drošai!
Tagad mēs varam izveidot jaunu lietotāju:
Ievadiet mysql apvalku ar šo komandu:
sudo mysql
Izveidojiet lietotāju ar lietotājvārdu mysql un paroli (your_password) šādas komandas:
izveidot lietotāju mysql@localhost, kas identificēts ar 'your_password';
piešķirt visas privilēģijas vietnē *. * mysql@localhost;
FLUSH PRIVILĒGAS;
Iziet no mysql apvalka ar šo komandu:
Izeja;
Python paketes:
Python jau ir jāinstalē, ja vien neizvēlaties Lite versiju:
sudo apt instalēt python3-pip
Mums ir vajadzīgs liels daudzums Python pakotņu, tās visas var instalēt ar šādu komandu:
pip3 instalēt mysql-savienotāju-python kolbu-socketio kolbu-cors gevent gevent-websocket
Tagad mums vēlreiz jāpārstartē
sudo atsāknēšana
2. darbība. Visual Studio Code un MySQL Workbench iestatīšana
Savienojuma izveide ar Pi, izmantojot MySQL Workbench:
Atveriet MySQL Workbench
Izveidojiet jaunu savienojumu ar Pi, izmantojot šādu informāciju:
- Savienojuma nosaukums: Raspi
- Savienojuma metode: standarta TCP/IP, izmantojot SSH
- SSH resursdatora nosaukums: Pi IP adrese
IP adresi var iegūt ar šo komandu:
ip a
- SSH lietotājvārds: pi
- MySQL resursdatora nosaukums: 127.0.0.1
- MySQL servera ports: 3306
- Lietotājvārds: mysql
Noklikšķiniet uz Labi un ievadiet lietotāja pi paroli un pēc tam ievadiet lietotāja mysql paroli.
Visual Studio koda iestatīšana:
Atveriet Visual Studio kodu
Instalējiet šos divus paplašinājumus:
- Tālvadības pults - SSH
- Tālvadība - SSH: konfigurācijas failu rediģēšana
Nospiediet Visual Studio kodu F1 un ierakstiet ssh
Izvēlieties attālo SSH: pievienojiet jaunu SSH resursdatoru
Aizpildiet ssh pi@IP-adresi
Nākamajā solī nospiediet enter
Savienojums tagad ir izveidots ar Pi. Jūs varat izveidot savienojumu ar Pi, nospiežot F1 un izvēloties Connect to Remote host.
Ievadiet paroli, lai Visual Studio Code varētu piekļūt Pi.
Vēl viena lieta: instalējiet Python paplašinājumu attālajā mašīnā, lai jūs varētu viegli palaist un atkļūdot kodu.
3. solis: Fritzing diagramma
Šajā solī es izskaidrošu ķēdi.
Iepriekš minētās shēmas ir veidotas, izmantojot Fritzing.
Līdzstrāvas motors:
Pievienojiet GPIO 18 kolektora pamatnei, npn tranzistora vidējai tapai. Savienojiet motora zemi ar kolektoru no tranzistora un motora jaudu līdz 5 V. Pievienojiet tranzistora zemējumu zemējuma līnijai. Pievienojiet diodi barjerai virs motora, lai tas bloķētu strāvas plūsmu tieši uz tranzistoru.
Stepper motors:
Pievienojiet pakāpju motoru vadības panelim. Uz vadības paneļa vienā pusē ir tapas, lai savienotu 5V un zemi. Pārējās tapas ir vadības tapas. Šīs tapas kontrolē magnētus motora iekšpusē, lai tas varētu griezties. Savienojiet šīs tapas ar Raspberry Pi GPIO 12, 16, 20 un 21.
Ultraskaņas HC-SR04:
Šis sensors var izmērīt attālumu līdz aptuveni 4,5 metriem, izmantojot skaņu.
Pievienojiet VCC tapu pie 5 V, sprūda tapu ar GPIO 25, atbalss tapu ar rezistoru 470 omi ar GPIO 24 un zemi ar rezistoru 470 omi pie zemes.
MPU6050:
Savienojiet VCC tapu ar 3V3, zemi pret zemi, scl uz pi uz scl un sda uz sda uz Pi. Šim sensoram es izmantoju I2C, lai to kontrolētu. Vairāk par to varat izlasīt šeit. Šeit ir pamata skaidrojums: Pi ir galvenais un MPU6050 ir vergs. Caur scl līniju Pi kontrolē laiku, un sda līnija tiek izmantota, lai nosūtītu datus no meistara uz vergu vai no verga uz kapteini. Tikai kapteinis var sākt datu pārsūtīšanu.
No gaismas atkarīgs rezistors:
Lai iegūtu pareizus rādījumus no LDR, es izmantoju MCP3008 mikroshēmu. Tas nodrošina, ka ldr rādījumi ir stabili un pareizi pārvērsti no analogiem uz ciparu signāliem.
Pievienojiet 3V3 vienai ldr pusei ar 10K omu rezistoru. Starp ldr un rezistoru pievienojiet vadu MCP3008 kanālam 0. Pēc tam pievienojiet ldr otru pusi zemei.
LCD displejs:
Jūs varat izmantot LCD displeju bez PCF8574, bet, tā kā Pi GPIO tapas ir ierobežotas, es izmantoju PCF8574, lai saglabātu dažas GPIO tapas. Varat arī izmantot maiņu reģistru, bet es dodu priekšroku PCF8574. Jūs varat kontrolēt PCF8574 ar SMbus protokolu, bet es uzrakstīju savu klasi, lai to kontrolētu. Potenciometrs kontrolē kontrastu.
LCD displeja tapas:
- VSS uz zemes
- VDD līdz 5V
- V0 līdz potenciometra mainīgajai tapai
- RS uz GPIO 13
- R/W uz zemes, jo es rakstu tikai displejā un nelasu
- E līdz GPIO 19
- PCF no DB0 līdz P0
- DB1 līdz P1
- DB2 līdz P2
- DB3 līdz P3
- DB4 līdz P4
- DB5 līdz P5
- DB6 līdz P6
- DB7 līdz P7
- LED+ līdz 5V
- LED- pie zemes
PCF8574 tapas:
- A0 līdz zemei
- A1 līdz zemei
- A2 līdz zemei
- No zemes līdz zemei
- VCC līdz 5V
- SDA līdz GPIO 27
- SCL līdz GPIO 22 ar 330 omu rezistoru
Jums var nebūt LED+ un LED- atkarībā no tā, kāda veida displejs jums ir. LED+ un LED- ir paredzēts apgaismojumam.
Pievienojiet potenciometra pozitīvo pusi pie 5V un zemi ar zemi.
Noteikti izmantojiet pievilkšanas rezistorus!
4. solis: kods vietnē Github
Visu nepieciešamo kodu varat atrast manā Github.
Mapes projekts1:
Šajā mapē ir viss aizmugures sistēmas kods. Mapē Klasses ir visas klases, lai kontrolētu aparatūru.
Mapju krātuvēs ir 2 faili: Database.py un DataRepository.py. Database.py saglabā savienojumu ar datu bāzi un apstrādā vaicājumus. DataRepository.py satur visus vietnei nepieciešamos vaicājumus.
App.py ir aizmugures sistēmas galvenais fails. Šis fails tiek palaists automātiski, kad sāk darboties Pi.
Config.py satur dažus iestatījumus, lai izveidotu savienojumu ar datu bāzi. Noteikti aizpildiet šos failus ar savu informāciju.
Šo mapi varat ievietot jebkurā mājas direktorijā.
Mapes html:
Šajā mapē ir visi vietnes faili, priekšpuse.
- Mapē ir faili vietnes izkārtojumam.
- Fonti satur vietnē lietotos fontus.
- Skripts satur visus Javascript failus, lai padarītu vietni dinamisku
Šai mapei jābūt mapē/var/www/html
Jūs varat kopēt failu vai mapi, izmantojot šo komandu:
sudo mv/ceļš/uz/pašreizējais/direktorijs/ceļš/uz/galamērķi/direktoriju
Lai pārlūkprogrammā pārietu uz vietnes tipu, IP displejā tiek parādīta IP adrese.
5. darbība: normalizēta datu bāzes struktūra
Šajā solī mēs importēsim datu bāzi.
- Izveidojiet savienojumu ar savu Raspberry Pi, izmantojot MySQL Workbench
- Noklikšķiniet uz Serveris -> Datu importēšana
- Atlasiet Importēt autonomu failu
- Mapē Database-export from Github ir SQL fails ar nosaukumu dump_project1.sql
- Pārlūkojiet šo failu un noklikšķiniet uz Sākt importēšanu
Tieši tā. Pi tagad var piekļūt datu bāzei, ja tajā ir pareiza informācija.
6. darbība. Kartes izplatītāja lieta
Šajā solī es paskaidrošu, ko es izmantoju lietā un kā es visu uzstādīju.
Šajā gadījumā es izmantoju 2 ABS kastes:
- 265 x 185 x 95 mm
- 171 x 121 x 80 mm
Caurumi, ko izveidoju kastēs
Caurums LCD displejam, 3 caurumi barošanas kabeļiem, viens vadiem no pakāpju motora, līdzstrāvas motora un ultraskaņas sensora.
Mazākajā kastē es izveidoju caurumu vadiem no komponentiem un caurumu kartēm, lai tās izietu. Augšpusē es izveidoju lielāko caurumu, lai jūs varētu ievietot spēļu kārtis ierīcē.
Es uzstādīju līdzstrāvas motoru ar kronšteinu un kādu divpusēju lenti. Es uztaisīju koka dēli, uz kura likt kārtis, ar caurumu ritenim, lai šautu karti.
Es izvēlējos ABS plastmasu, jo tā ir viegla, tāpēc soļu motors to var viegli pagriezt. Koks var būt patiešām smags, un soļu motoram var būt problēmas ar to. Lai izgrieztu caurumus, es izmantoju urbi ar urbjiem, kas paredzēti metālam un Dremel. Lielāku caurumu griešana prasīja daudz vairāk darba, un džiga zāģis būtu labāks.
7. darbība. Programmēšana kā pakalpojums
Ir patiešām noderīgi, ja kods sākas pēc Pi sāknēšanas. Šim nolūkam mēs veiksim pakalpojumu.
Izveidojiet jaunu failu ar nosaukumu smartcard.service ar šādu komandu:
sudo nano /etc/systemd/system/smartcard.service
Tam ir jāietilpst failā:
[Vienība]
Apraksts = Viedkartes aizmugure Pēc = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = mantot StandardError = pārmantot Restartēt = vienmēr Lietotājs = pi [Instalēt] WantedBy = daudzlietotāju.mērķis WorkingDirectory ir ceļš uz mapi, kurā atrodas programma
Tagad jums ir sava viedkarte!
Ieteicams:
Londonas pazemes karšu pulkstenis: 9 soļi (ar attēliem)
Londonas pazemes karšu pulkstenis: 2014. gadā, pēc prakses Londonas 3D drukāšanas konsultācijās un eksperimenta ar krāsu litofāniem, izmantojot viņu Stratasys mašīnu, es izstrādāju savu dāvināšanas dāvanu - krāsu 3D izdruku no cauruļu līnijām, kas ir lokālas viņu telpām. biroji. ES biju
Bezvadu SD karšu lasītājs [ESP8266]: 10 soļi (ar attēliem)
Bezvadu SD karšu lasītājs [ESP8266]: USB vajadzēja būt universālam, un galvenais mērķis bija izveidot karsti maināmu, īpaši viegli lietojamu saskarni ar citām ierīcēm, taču gadu gaitā šī ideja bija neskaidra. Šo USB portu ir tik daudz dažādu variantu, kas ir tik satraucoši
Karšu skeneris tirdzniecības karšu mašīnai: 13 soļi (ar attēliem)
Tirdzniecības karšu automāta karšu skeneris: Tirdzniecības karšu automāta karšu skeneris Izmaiņu žurnālu var atrast pēdējā solī. Priekšvēsture Kartes padeves ievadā es paskaidroju sava projekta galveno motivāciju. Bet īsi sakot, mēs ar saviem bērniem esam uzkrājuši lielu daudzumu tirdzniecības karšu
Karšu padevējs tirdzniecības karšu mašīnai: 10 soļi (ar attēliem)
Kartes padevējs tirdzniecības karšu mašīnai: karšu padevējs tirdzniecības karšu mašīnai Fons Kad es biju jauns, es savācu tonnas tirdzniecības karšu, bet dažus gadus aizraušanās ar vākšanu ir samazinājusies. Pa to laiku man ir bērni, un viņi arī lēnām, bet noteikti sāk iegūt
Tirdzniecības karšu automāta karšu šķirotājs (atjauninājums 2019-01-10): 12 soļi (ar attēliem)
Tirdzniecības karšu automāta karšu kārtotājs (atjauninājums 2019-01-10): Tirdzniecības karšu automāta karšu kārtotājs Izmaiņu žurnālu var atrast pēdējā solī. Priekšvēsture Es jau paskaidroju sava projekta motivāciju rakstā Karšu padevējs. Bet īsi sakot, mēs ar saviem bērniem esam uzkrājuši lielu daudzumu tirdzniecības karšu