Satura rādītājs:

Automātiskais karšu izplatītājs: 7 soļi
Automātiskais karšu izplatītājs: 7 soļi

Video: Automātiskais karšu izplatītājs: 7 soļi

Video: Automātiskais karšu izplatītājs: 7 soļi
Video: Личные границы. Отношения. НЛП. Как отстаивать личные границы 2024, Novembris
Anonim
Automātiskais karšu izplatītājs
Automātiskais karšu izplatītājs

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

  1. Lejupielādējiet ZIP failu
  2. Izvelciet ZIP failu, lai to varētu viegli atrast
  3. Atveriet Win32 Disk Imager un atlasiet iegūto attēlu
  4. Nolaižamajā izvēlnē atlasiet SD karti un noklikšķiniet uz rakstīt
  5. 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

  1. Dodieties uz sāknēšanas mapi SD kartē
  2. Atveriet failu cmdline.txt
  3. Pievienojiet “ip = 169.254.10.1” rindas beigās, kas atdalīta ar atstarpi
  4. Saglabājiet un izejiet no faila
  5. 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)
  6. Droši izņemiet SD karti un ievietojiet to Pi

Tagad mēs varam izveidot savienojumu ar Pi:

  1. Paņemiet Ethernet kabeli un ievietojiet vienu galu Pi un otru galu datorā
  2. Atveriet Putty
  3. Laukā Uzņēmēja nosaukums ievadiet 169.254.10.1
  4. Pārliecinieties, vai ir atlasīts SSH un ports ir 22
  5. Noklikšķiniet uz atvērt
  6. Ja saņemat brīdinājumu, varat vienkārši turpināt un to ignorēt
  7. 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

Fritzēšanas diagramma
Fritzēšanas diagramma
Fritzēšanas diagramma
Fritzēšanas diagramma
Fritzēšanas diagramma
Fritzēšanas 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

Normalizēta datu bāzes struktūra
Normalizēta datu bāzes struktūra

Šajā solī mēs importēsim datu bāzi.

  1. Izveidojiet savienojumu ar savu Raspberry Pi, izmantojot MySQL Workbench
  2. Noklikšķiniet uz Serveris -> Datu importēšana
  3. Atlasiet Importēt autonomu failu
  4. Mapē Database-export from Github ir SQL fails ar nosaukumu dump_project1.sql
  5. 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

Lieta karšu izplatītājam
Lieta karšu izplatītājam
Lieta karšu izplatītājam
Lieta karšu izplatītājam
Lieta karšu izplatītājam
Lieta karšu izplatītājam

Š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: