Sadržaj:

Automatski distributer kartica: 7 koraka
Automatski distributer kartica: 7 koraka

Video: Automatski distributer kartica: 7 koraka

Video: Automatski distributer kartica: 7 koraka
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, Studeni
Anonim
Automatski distributer kartica
Automatski distributer kartica

Za svog prvog projekta odabrao sam distributera pametnih kartica jer volim igrati karte. Najviše mi se ne sviđa dijeljenje karata. Za svaku igru morate zapamtiti koliko karata dobije svaka osoba. To postaje zbunjujuće kada znate puno kartaških igara. Moj će projekt također pomoći ljudima koji imaju problema s distribucijom kartica poput starijih ljudi i ljudi koji boluju od Parkinsonove bolesti.

Pribor

  • 1 Raspberry Pi (koristio sam Raspberry Pi 4)
  • SD kartica (preporučeno 16 GB)
  • 1 Outbread komad za Raspberry Pi (T-komad)
  • 2 ploče
  • 1 Modul napajanja za matičnu ploču, 5V i 3V3
  • 1 LCD zaslon
  • 1 Potenciometar
  • 1 MPU6050 (akcelerometar i žiroskop)
  • 1 NPN tranzistora
  • 1 PCF8574N I/O proširivač
  • 1 koračni motor
  • 1 ULN2003 razvodna ploča za upravljanje koračnim motorom
  • 1 HC-SR04 ultrazvučni senzor
  • 1 DC motori 5V
  • 1 diode
  • 6 470 Ohm otpornika
  • 4 otpornika od 10K ohma
  • Električna žica za spajanje svega

Korisno imati pri izradi:

  • Lemilica
  • Lem
  • Dremel ili ubodna pila (nešto za rezanje drva i ABS plastike)

Softver:

  • Kit
  • MySQL radni sto
  • Win32 Disk Imager
  • Uređivač koda (preporučujem Visual Studio Code)
  • WinSCP
  • Raspbian image

Korak 1: Priprema Rasperry Pi

Prvo moramo pripremiti Raspberry Pi prije nego učinimo bilo što drugo. Budući da će Pi sve funkcionirati, ovo je jedan od najvažnijih dijelova distributera kartica.

Montaža:

Preuzmite Raspbian sliku s

  1. Preuzmite ZIP datoteku
  2. Izdvojite ZIP datoteku na mjestu na kojem ćete je lako pronaći
  3. Otvorite Win32 Disk Imager i odaberite izdvojenu sliku
  4. Odaberite SD karticu na padajućem izborniku i kliknite zapiši
  5. Kada proces pisanja završi, možete zatvoriti Win32 Disk Imager

Sada moramo učiniti još nekoliko stvari prije nego što se možemo povezati s Pi

  1. Dođite do mape za pokretanje na SD kartici
  2. Otvorite datoteku cmdline.txt
  3. Dodajte 'ip = 169.254.10.1' na kraj retka odvojenog razmakom
  4. Spremite i izađite iz datoteke
  5. U istom direktoriju stvorite datoteku pod nazivom ssh i uklonite proširenje (ovo će omogućiti ssh pri prvom pokretanju kako bismo se mogli povezati s Pi)
  6. Sigurno izbacite SD karticu i stavite je u Pi

Sada se možemo povezati s Pi:

  1. Uhvatite ethernet kabel i umetnite jedan kraj u Pi, a drugi kraj u računalo
  2. Otvorite kit
  3. Unesite 169.254.10.1 u polje Naziv hosta
  4. Provjerite je li odabran SSH i je li port 22
  5. Pritisnite otvoriti
  6. Ako dobijete upozorenje, možete samo nastaviti i zanemariti ga
  7. Korisničko ime je pi, a lozinka malina

Konfiguracija i instalacija softvera:

Otvorite raspi-config sa sljedećom naredbom:

sudo raspi-config

Odaberite petu opciju: Opcije sučelja

Omogućite SPI i I2C

Onemogućite sljedeće u trećoj opciji: Opcije pokretanja:

  • Splash screen
  • Za pokretanje odaberite cli, a ne desktop

Wifi podešavanje:

Wifi je koristan za jednostavno kretanje do web stranice. Provjerite jeste li blizu vjerodajnica za WiFi.

Za postavljanje wifija potrebno nam je nekoliko stvari:

Pomoću ove naredbe dodajte svoj WiFi i promijenite SSID i PASSWORD svojim podacima:

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

Izvršite ovu naredbu za ponovno konfiguriranje vašeg WiFi -ja:

sudo wpa_cli

Odaberite ispravno sučelje:

sučelje wlan0

Ponovno konfigurirajte sučelje:

ponovno konfigurirati

Provjerite je li rekonfiguracija uspjela pomoću ove naredbe:

ip a

Ako vidite IP adresu na wlan0 sučelju, sve je postavljeno.

Ažuriranje operacijskog sustava

Ažurirajte operacijski sustav pomoću ove 2 naredbe:

sudo apt ažuriranje

sudo apt potpuna nadogradnja

Postavljanje MariaDB -a:

Instaliranje Apache web poslužitelja:

sudo apt install apache2 -y

Instaliranje MariaDB poslužitelja:

sudo apt install mariadb -server -y

Sada moramo ponovno pokrenuti sustav:

sudo ponovno podizanje sustava

Preporučuje se osiguranje instalacije MariaDB. To možete učiniti pokretanjem ove naredbe:

sudo mysql_secure_installation

Prvo ćete biti upitani za trenutnu root lozinku, no zadana instalacija je nema pa pritisnite enter.

Zatim ćete biti upitani želite li postaviti root lozinku, upišite y. Zapamtite lozinku!

  • Unesite y da biste uklonili anonimne korisnike
  • Unesite y za daljinsko onemogućavanje root prijave
  • Unesite y da biste uklonili testne baze podataka i pristupili im
  • Unesite y za ponovno učitavanje privilegija

Vaša instalacija MariaDB -a trebala bi biti sigurna!

Sada možemo stvoriti novog korisnika:

Unesite ljusku mysql s ovom naredbom:

sudo mysql

Stvorite korisnika s korisničkim imenom mysql i lozinkom (vaša_proporta) sljedećim naredbama:

stvoriti korisnika mysql@localhost identificiranog sa "vaša_proporta";

dodijelite sve privilegije na *. * mysql@localhost;

FLUSH PRIVILEGIJE;

Izađite iz ljuske mysql ovom naredbom:

Izlaz;

Python paketi:

Python bi već trebao biti instaliran ako niste odabrali Lite verziju:

sudo apt install python3-pip

Trebamo dobru količinu Python paketa, sve ih možete instalirati sa sljedećom naredbom:

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

Sada se moramo ponovno pokrenuti

sudo ponovno podizanje sustava

Korak 2: Postavljanje koda Visual Studio i MySQL radne ploče

Spajanje na Pi s MySQL radnim stolom:

Otvorite MySQL Workbench

Uspostavite novu vezu s Pi sa sljedećim podacima:

  • Naziv veze: Raspi
  • Način povezivanja: Standardni TCP/IP preko SSH -a
  • SSH naziv hosta: IP adresa Pi-a

IP adresu možete dobiti pomoću ove naredbe:

ip a

  • SSH korisničko ime: pi
  • Naziv hosta MySQL: 127.0.0.1
  • Port za MySQL poslužitelj: 3306
  • Korisničko ime: mysql

Pritisnite u redu i unesite lozinku za korisnika pi, a zatim unesite lozinku za korisnika mysql.

Postavljanje koda Visual Studio:

Otvorite kôd Visual Studio

Instalirajte ova dva proširenja:

  • Daljinski - SSH
  • Daljinski - SSH: Uređivanje konfiguracijskih datoteka

Pritisnite Visual Studio Code F1 i upišite ssh

Odaberite Udaljeni SSH: Dodajte novi SSH host

Ispunite ssh pi@IP adresu

U sljedećem koraku pritisnite enter

Veza je sada uspostavljena s Pi. Na Pi se možete povezati pritiskom na F1 i odabirom povezivanja s udaljenim hostom.

Unesite lozinku kako bi Visual Studio Code imao pristup Pi.

Još jedna stvar: Instalirajte proširenje Python na udaljeni stroj kako biste mogli jednostavno pokrenuti i otklanjati pogreške koda.

Korak 3: Dijagram frcanja

Dijagram frcanja
Dijagram frcanja
Dijagram frcanja
Dijagram frcanja
Dijagram frcanja
Dijagram frcanja

U ovom koraku ću objasniti sklop.

Gore navedene sheme izrađene su s Fritzingom.

DC motor:

Spojite GPIO 18 na bazu kolektora, srednji pin na npn tranzistoru. Spojite uzemljenje motora na kolektor s tranzistora, a napajanje motora na 5V. Spojite uzemljenje tranzistora na liniju uzemljenja. Spojite diodu u barijeru preko motora tako da blokira struju koja teče izravno na tranzistor.

Koračni motor:

Spojite koračni motor na upravljačku ploču. Na upravljačkoj ploči s jedne strane nalaze se igle za spajanje 5V i mase. Ostale iglice su kontrolne. Ovi pinovi upravljaju magnetima unutar motora kako bi se mogli okretati. Spojite ove pinove na GPIO 12, 16, 20 i 21 na Raspberry Pi.

HC-SR04 Ultrazvučni:

Ovaj senzor može mjeriti udaljenosti do oko 4,5 metara pomoću zvuka.

Priključite pin VCC na 5V, okidač na GPIO 25, eho pin s otpornikom od 470 Ohma na GPIO 24 i uzemljenje s otpornikom od 470 Ohma na masu.

MPU6050:

Spojite VCC pin na 3V3, uzemljenje s masom, scl na scl na Pi i sda na sda na Pi. Za ovaj senzor koristim I2C za upravljanje. Više o tome možete pročitati ovdje. Evo osnovnog objašnjenja: Pi je glavni, a MPU6050 rob. Putem scl linije Pi kontrolira mjerenje vremena, a sda linija se koristi za slanje podataka s glavnog na slave ili sa slave na master. Prijenos podataka može pokrenuti samo glavni.

Otpornik ovisan o svjetlu:

Za ispravna očitanja iz LDR -a koristim čip MCP3008. Time se osigurava da su očitanja iz ldr stabilna i ispravna pretvorena iz analognih u digitalne signale.

Spojite 3V3 na jednu stranu ldr -a s otpornikom od 10K Ohma. Između ldr -a i otpornika spojite žicu na kanal 0 MCP3008. Zatim spojite drugu stranu ldr -a na tlo.

LCD zaslon:

Možete koristiti LCD zaslon bez PCF8574, ali budući da su GPIO pinovi na Pi ograničeni, koristim PCF8574 za spremanje nekih GPIO pinova. Također možete koristiti registar pomaka, ali ja više volim PCF8574. Možete kontrolirati PCF8574 pomoću SMbus protokola, ali sam napisao vlastitu klasu za kontrolu. Potenciometar kontrolira kontrast.

Igle za LCD zaslon:

  • VSS na masu
  • VDD do 5V
  • V0 na promjenjivi pin potenciometra
  • RS na GPIO 13
  • R/W na masu jer pišem samo na zaslon, a ne čitam
  • E na GPIO 19
  • DB0 do P0 PCF -a
  • 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- na masu

PCF8574 pinovi:

  • A0 na masu
  • A1 na masu
  • A2 na masu
  • Od zemlje do zemlje
  • VCC na 5V
  • SDA na GPIO 27
  • SCL na GPIO 22 s otpornikom od 330 Ohma

Možda nemate LED+ i LED- ovisno o vrsti zaslona koji imate. LED+ i LED- služe za pozadinsko osvjetljenje.

Spojite pozitivnu stranu potenciometra na 5V, a uzemljenje na masu.

Upotrijebite pull-up otpornike!

Korak 4: Kôd na Githubu

Sav potreban kod možete pronaći na mom Githubu.

Mapa projekt 1:

Ova mapa sadrži sav kôd za pozadinu. U mapi Klase su sve klase za kontrolu hardvera.

Spremišta mapa sadrže 2 datoteke: Database.py i DataRepository.py. Database.py održava vezu s bazom podataka i obrađuje upite. DataRepository.py sadrži sve upite potrebne za web mjesto.

App.py je glavna datoteka pozadine. Ova se datoteka automatski pokreće kada se Pi pokrene.

Config.py sadrži nekoliko postavki za povezivanje s bazom podataka. Popunite ove datoteke vlastitim podacima.

Ovu mapu možete postaviti bilo gdje u svom kućnom imeniku.

Mapa html:

Ova mapa sadrži sve datoteke za web mjesto, sučelje.

  • Mapa sadrži datoteke za izgled web stranice.
  • Fontovi sadrže fontove koji se koriste na web mjestu.
  • Skripta sadrži sve Javascript datoteke kako bi web mjesto postalo dinamično

Ova mapa mora biti u mapi/var/www/html

Pomoću ove naredbe možete kopirati datoteku ili mapu:

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

Za navigaciju do vrste web mjesta u vašem pregledniku IP adresa prikazana na LCD zaslonu.

Korak 5: Normalizirana struktura baze podataka

Normalizirana struktura baze podataka
Normalizirana struktura baze podataka

U ovom koraku ćemo uvesti bazu podataka.

  1. Povežite se na svoj Raspberry Pi pomoću MySQL radnog stola
  2. Pritisnite Poslužitelj -> Uvoz podataka
  3. Odaberite Uvezi samostalnu datoteku
  4. U mapi Database-export iz Github-a nalazi se sql datoteka pod nazivom dump_project1.sql
  5. Potražite ovu datoteku i kliknite početak uvoza

To je to. Pi sada može pristupiti bazi podataka ako ima točne podatke.

Korak 6: Torba za distributera kartica

Torba za distributera kartica
Torba za distributera kartica
Torba za distributera kartica
Torba za distributera kartica
Torba za distributera kartica
Torba za distributera kartica

U ovom koraku ću objasniti što sam koristio za kućište i kako sam sve montirao.

Za slučaj sam koristio 2 ABS kutije:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Rupe koje sam napravio u kutijama

Rupa za LCD zaslon, 3 rupe za kabele za napajanje, jedna za žice koračnog motora, istosmjernog motora i ultrazvučnog senzora.

U najmanjoj kutiji napravio sam rupu za žice od komponenti i otvor za prolaz kartica. Na vrhu sam napravio najveću rupu tako da možete staviti karte za igru u uređaj.

Montirao sam istosmjerni motor s nosačem i nekom dvostranom trakom. Napravio sam drvenu ploču za polaganje karata s rupom za kotač za ispucavanje karte.

Odabrao sam ABS plastiku jer je lagana pa ga koračni motor može lako okrenuti. Drvo može biti jako teško i koračni motor bi mogao imati problema s tim. Za izrezivanje rupa upotrijebio sam bušilicu sa svrdlima za metal i Dremel. Rezanje većih rupa zahtijevalo je puno više posla, a ubodna pila bi bila bolja.

Korak 7: Program kao usluga

Zaista je korisno imati kôd koji počinje nakon podizanja Pi. Za to ćemo napraviti uslugu.

Izradite novu datoteku pod nazivom smartcard.service sa sljedećom naredbom:

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

Ovo mora ući u datoteku:

[Jedinica]

Opis = Pozadinska pozadina pametne kartice Nakon = network.target [Usluga] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = naslijedi StandardError = naslijedi Restart = uvijek Korisnik = pi [Instaliraj] Traži se = višekorisnički cilj WorkingDirectory je put do mape u kojoj se program nalazi

Sada imate svoju pametnu karticu!

Preporučeni: