Samodejni distributer kartic: 7 korakov
Samodejni distributer kartic: 7 korakov
Anonim
Samodejni distributer kartic
Samodejni distributer kartic

Za svojega prvega projekta sem izbral distributerja pametnih kartic, ker rad igram karte. Najbolj mi ni všeč razdajanje kart. Za vsako igro se morate spomniti, koliko kart dobi vsaka oseba. To postane zmedeno, če poznate veliko iger s kartami. Moj projekt bo pomagal tudi ljudem, ki imajo težave pri razdeljevanju kartic, kot so starejši ljudje in ljudje, ki trpijo za Parkinsonovo boleznijo.

Zaloge

  • 1 Raspberry Pi (uporabil sem Raspberry Pi 4)
  • SD kartica (priporočeno 16 GB)
  • 1 kos Outbread za Raspberry Pi (T-kos)
  • 2 deski
  • 1 Napajalni modul za ploščo, 5V in 3V3
  • 1 LCD zaslon
  • 1 Potenciometer
  • 1 MPU6050 (merilnik pospeška in žiroskop)
  • 1 tranzistorja NPN
  • 1 PCF8574N V/I razširjevalec
  • 1 koračni motor
  • 1 Odklopna plošča ULN2003 za krmiljenje koračnega motorja
  • 1 ultrazvočni senzor HC-SR04
  • 1 5V enosmerni motorji
  • 1 diode
  • 6 470 ohmski upori
  • 4 10K ohmski upori
  • Električna žica za povezavo vseh

Koristno pri izdelavi:

  • Spajkalnik
  • Spajkanje
  • Dremel ali žaga (nekaj za rezanje lesa in abs plastike)

Programska oprema:

  • Kiti
  • Delovna miza MySQL
  • Win32 Disk Imager
  • Urejevalnik kod (priporočam kodo Visual Studio)
  • WinSCP
  • Raspbian image

1. korak: Priprava Rasperry Pi

Najprej moramo pripraviti Raspberry Pi, preden naredimo kaj drugega. Ker bo Pi vse deloval, je to eden najpomembnejših del distributerja kartic.

Namestitev:

Prenesite sliko Raspbian s spletnega mesta

  1. Prenesite datoteko ZIP
  2. Izvlecite datoteko ZIP, kjer jo lahko preprosto najdete
  3. Odprite Win32 Disk Imager in izberite izvlečeno sliko
  4. V spustnem meniju izberite kartico SD in kliknite napiši
  5. Ko je postopek pisanja končan, lahko zaprete Win32 Disk Imager

Zdaj moramo narediti še nekaj stvari, preden se lahko povežemo s Pi

  1. Pomaknite se do zagonske mape na kartici SD
  2. Odprite datoteko cmdline.txt
  3. Dodajte "ip = 169.254.10.1" na koncu vrstice, ločene s presledkom
  4. Shranite in zapustite datoteko
  5. Ustvarite datoteko ssh v istem imeniku in odstranite razširitev (to bo omogočilo ssh pri prvem zagonu, da se lahko povežemo s Pi)
  6. Varno izvlecite kartico SD in jo vstavite v Pi

Zdaj se lahko povežemo s Pi:

  1. Primite ethernetni kabel in en konec vstavite v Pi, drugega pa v računalnik
  2. Odprite Putty
  3. V polje Ime gostitelja vnesite 169.254.10.1
  4. Prepričajte se, da je izbran SSH in da so vrata 22
  5. Kliknite odprto
  6. Če dobite opozorilo, lahko nadaljujete in ga prezrete
  7. Uporabniško ime je pi, geslo pa malina

Konfiguracija in namestitev programske opreme:

Odprite raspi-config z naslednjim ukazom:

sudo raspi-config

Izberite peto možnost: Možnosti vmesnika

Omogoči SPI in I2C

V tretji možnosti onemogočite naslednje stvari: Možnosti zagona:

  • Začetni zaslon
  • Za zagon izberite cli in ne namizja

Nastavitev Wi -Fi:

Wifi je uporaben za enostavno krmarjenje do spletnega mesta. Prepričajte se, da imate poverilnice za wifi blizu.

Za nastavitev wifi potrebujemo nekaj stvari:

Dodajte svoj wifi s tem ukazom in spremenite SSID in GESLO v svoje podatke:

sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf

Izvedite ta ukaz, da znova konfigurirate wifi:

sudo wpa_cli

Izberite pravi vmesnik:

vmesnik wlan0

Ponovno konfigurirajte vmesnik:

ponovno konfigurirati

S tem ukazom preverite, ali je bila ponovna konfiguracija uspešna:

ip a

Če na vmesniku wlan0 vidite naslov IP, je vse nastavljeno.

Posodabljanje operacijskega sistema

Posodobite operacijski sistem s temi 2 ukazi:

sudo apt posodobitev

sudo apt popolna nadgradnja

Nastavitev MariaDB:

Namestitev spletnega strežnika Apache:

sudo apt namestite apache2 -y

Namestitev strežnika MariaDB:

sudo apt install mariadb -server -y

Zdaj moramo znova zagnati:

sudo ponovni zagon

Priporočljivo je zavarovati namestitev MariaDB. To lahko storite tako, da zaženete ta ukaz:

sudo mysql_secure_installation

Najprej boste morali vnesti trenutno korensko geslo, vendar ga privzeta namestitev nima, zato pritisnite enter.

Nato boste vprašani, ali želite nastaviti korensko geslo, vnesite y. Geslo si zapomnite!

  • Vnesite y, da odstranite anonimne uporabnike
  • Vnesite y, da na daljavo onemogočite prijavo root
  • Vnesite y, če želite odstraniti testne baze podatkov in dostopati do njih
  • Vnesite y, da znova naložite privilegije

Vaša namestitev MariaDB mora biti varna!

Zdaj lahko ustvarimo novega uporabnika:

S tem ukazom vnesite lupino mysql:

sudo mysql

Ustvarite uporabnika z uporabniškim imenom mysql in geslom (your_password) z naslednjimi ukazi:

ustvarite uporabnika mysql@localhost, ki ga označi 'vaša_ geslo';

podeli vse privilegije na *. * storitvi mysql@localhost;

FLUSH PRIVILEGIJE;

Zapustite lupino mysql s tem ukazom:

izhod;

Paketi Python:

Python bi moral biti že nameščen, razen če ste izbrali različico Lite:

sudo apt namestite python3-pip

Potrebujemo veliko količino paketov Python, vse jih lahko namestite z naslednjim ukazom:

pip3 namestite mysql-connector-python flask-socketio flask-cors gevent gevent-websocket

Zdaj moramo znova zagnati

sudo ponovni zagon

2. korak: Nastavitev kode Visual Studio in delovne mize MySQL

Povezovanje s Pi z delovno mizo MySQL:

Odprite delovno mizo MySQL

Vzpostavite novo povezavo s Pi z naslednjimi informacijami:

  • Ime povezave: Raspi
  • Način povezave: Standardni TCP/IP prek SSH
  • Ime gostitelja SSH: IP-naslov Pi

Naslov IP lahko dobite s tem ukazom:

ip a

  • Uporabniško ime SSH: pi
  • Ime gostitelja MySQL: 127.0.0.1
  • Vrata strežnika MySQL: 3306
  • Uporabniško ime: mysql

Kliknite v redu in vnesite geslo za uporabnika pi, nato pa vnesite geslo za uporabnika mysql.

Nastavitev kode Visual Studio:

Odprite kodo Visual Studio

Namestite ti 2 razširitvi:

  • Daljinski upravljalnik - SSH
  • Oddaljeno - SSH: Urejanje konfiguracijskih datotek

Pritisnite Visual Studio Code F1 in vnesite ssh

Izberite Oddaljeni SSH: Dodajte novega gostitelja SSH

Vnesite ssh pi@IP-naslov

V naslednjem koraku pritisnite enter

Povezava je zdaj vzpostavljena s Pi. Na Pi se lahko povežete tako, da pritisnete F1 in izberete povezavo z oddaljenim gostiteljem.

Vnesite geslo, da bo Visual Studio Code imel dostop do Pi.

Še nekaj: Namestite razširitev Python na oddaljeni stroj, da boste lahko preprosto zagnali in odpravili kodo.

Korak 3: Shema zmrzovanja

Fritzing diagram
Fritzing diagram
Fritzing diagram
Fritzing diagram
Fritzing diagram
Fritzing diagram

V tem koraku bom razložil vezje.

Zgornje sheme so narejene s Fritzingom.

DC motor:

Priključite GPIO 18 na dno kolektorja, srednji zatič na npn tranzistorju. Ozemljitev motorja priključite na kolektor s tranzistorja, moč motorja pa na 5V. Ozemljitev tranzistorja priključite na ozemljitveno črto. Priključite diodo v pregrado nad motorjem, da prepreči, da bi tok tekel neposredno na tranzistor.

Koračni motor:

Koračni motor priključite na nadzorno ploščo. Na nadzorni plošči so na eni strani zatiči za povezavo 5V in ozemljitve. Drugi zatiči so kontrolni zatiči. Ti zatiči nadzorujejo magnete v motorju, da se lahko obrnejo. Te zatiče priključite na GPIO 12, 16, 20 in 21 na Raspberry Pi.

HC-SR04 Ultrazvočni:

Ta senzor lahko z zvokom meri razdalje do približno 4,5 metra.

Priključite pin VCC na 5V, sprožilni zatič na GPIO 25, odmevni zatič z uporom 470 Ohm na GPIO 24 in ozemljitev z uporom 470 Ohm na tla.

MPU6050:

Priključite pin VCC na 3V3, tla na tla, scl na scl na Pi in sda na sda na Pi. Za ta senzor uporabljam I2C za nadzor. Več o tem si lahko preberete tukaj. Tu je osnovna razlaga: Pi je mojster, MPU6050 pa suženj. Skozi linijo scl Pi nadzoruje časovne intervale, linija sda pa se uporablja za pošiljanje podatkov od glavnega do podrejenega ali od podrejenega do glavnega. Prenos podatkov lahko sproži samo poveljnik.

Upor, odvisen od svetlobe:

Za pravilne odčitke iz LDR uporabljam čip MCP3008. To zagotavlja, da so odčitki iz ldr stabilni in pravilni, pretvorjeni iz analognih v digitalne signale.

Priključite 3V3 na eno stran ldr z uporom 10K Ohm med njim. Med ldr in uporom priključite žico na kanal 0 MCP3008. Nato priključite drugo stran ldr na tla.

LCD zaslon:

LCD zaslon lahko uporabljate brez PCF8574, a ker so zatiči GPIO na Pi omejeni, uporabljam PCF8574, da shranim nekaj zatičev GPIO. Uporabite lahko tudi register premikov, vendar imam raje PCF8574. PCF8574 lahko nadzirate s protokolom SMbus, vendar sem napisal svoj razred za nadzor. Potenciometer nadzoruje kontrast.

Zatiči LCD zaslona:

  • VSS na tla
  • VDD do 5V
  • V0 do spremenljivega zatiča potenciometra
  • RS v GPIO 13
  • R/W na zemljo, ker pišem samo na zaslon in ne berem
  • 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- ozemljitev

PCF8574 zatiči:

  • A0 na tla
  • A1 na tla
  • A2 na tla
  • Od tal do tal
  • VCC do 5V
  • SDA v GPIO 27
  • SCL na GPIO 22 z uporom 330 Ohm

Morda nimate LED+ in LED- odvisno od vrste zaslona, ki ga imate. LED+ in LED- sta za osvetlitev ozadja.

Pozitivno stran potenciometra priključite na 5V, ozemljitev pa na ozemljitev.

Uporabite vlečne upore!

4. korak: Koda na Githubu

Vso potrebno kodo najdete na mojem Githubu.

Mapa projekt 1:

Ta mapa vsebuje vso kodo za ozadje. V mapi Klasses so vsi razredi za nadzor strojne opreme.

Skladišča map vsebujejo 2 datoteki: Database.py in DataRepository.py. Database.py vzdržuje povezavo z bazo podatkov in obravnava poizvedbe. DataRepository.py vsebuje vse poizvedbe, potrebne za spletno mesto.

App.py je glavna datoteka zaledja. Ta datoteka se samodejno zažene, ko se Pi zažene.

Config.py vsebuje nekaj nastavitev za povezavo z bazo podatkov. Te datoteke izpolnite s svojimi podatki.

To mapo lahko postavite kamor koli v domačem imeniku.

Mapa html:

Ta mapa vsebuje vse datoteke za spletno mesto, prednjo stran.

  • Mapa vsebuje datoteke za postavitev spletnega mesta.
  • Pisave vsebujejo pisave, ki se uporabljajo na spletnem mestu.
  • Skript vsebuje vse datoteke Javascript, s katerimi je spletno mesto dinamično

Ta mapa mora biti v mapi/var/www/html

S tem ukazom lahko kopirate datoteko ali mapo:

sudo mv/path/to/current/directory/path/to/destination/directory

Če se želite v brskalniku pomakniti do vrste spletnega mesta, se na zaslonu LCD prikaže naslov IP.

5. korak: Normalizirana struktura baze podatkov

Normalizirana struktura baze podatkov
Normalizirana struktura baze podatkov

V tem koraku bomo uvozili bazo podatkov.

  1. Povežite se z Raspberry Pi z delovno mizo MySQL
  2. Kliknite Strežnik -> Uvoz podatkov
  3. Izberite Uvozi samostojno datoteko
  4. V mapi Database-export iz Github je datoteka sql z imenom dump_project1.sql
  5. Poiščite to datoteko in kliknite začeti uvoz

To je to. Pi lahko zdaj dostopa do baze podatkov, če ima pravilne podatke.

6. korak: Primer za distributerja kartic

Etui za distributerja kartic
Etui za distributerja kartic
Etui za distributerja kartic
Etui za distributerja kartic
Etui za distributerja kartic
Etui za distributerja kartic

V tem koraku bom razložil, kaj sem uporabil za ohišje in kako sem vse montiral.

Za primer sem uporabil 2 ABS škatli:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Luknje, ki sem jih naredil v škatlah

Luknja za LCD zaslon, 3 luknje za napajalne kable, ena za žice koračnega motorja, enosmerni motor in ultrazvočni senzor.

V najmanjši škatli sem naredil luknjo za žice iz komponent in luknjo za prehod kartic. Na vrhu sem naredil največjo luknjo, tako da lahko v napravo postavite igralne karte.

Montiral sem enosmerni motor z nosilcem in nekaj dvostranskim trakom. Naredil sem leseno desko, na katero sem položil karte z luknjo za kolo, s katerim bi ustrelil karto.

Za ABS plastiko sem se odločil, ker je lahka, zato jo lahko koračni motor enostavno obrača. Les je lahko res težak in s tem bi lahko imel koračni motor težave. Za rezanje lukenj sem uporabil vrtalnik s svedri za kovino in Dremel. Rezanje večjih lukenj je zahtevalo veliko več dela in žaga bi bila boljša.

7. korak: Program kot storitev

Zelo koristno je, da se koda zažene po zagonu Pi. Za to bomo naredili storitev.

Ustvarite novo datoteko, imenovano smartcard.service, z naslednjim ukazom:

sudo nano /etc/systemd/system/smartcard.service

To mora iti v datoteko:

[Enota]

Opis = Zaledje pametne kartice Po = network.target [Storitev] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = podeduje StandardError = deduje Restart = vedno Uporabnik = pi [Namesti] WantedBy = cilj za več uporabnikov WorkingDirectory je pot do mape, kjer se nahaja program

Zdaj imate svojo pametno kartico!