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, Novembar
Anonim
Automatski distributer kartica
Automatski distributer kartica

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

Supplies

  • 1 Raspberry Pi (koristio sam Raspberry Pi 4)
  • SD kartica (preporučuje se 16 GB)
  • 1 Outbread komad za Raspberry Pi (T-komad)
  • 2 matične ploče
  • 1 Modul napajanja za matičnu ploču, 5V i 3V3
  • 1 LCD ekran
  • 1 Potenciometar
  • 1 MPU6050 (akcelerometar i žiroskop)
  • 1 NPN tranzistor
  • 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 5V DC motori
  • 1 diode
  • 6 470 Ohm otpornika
  • 4 otpornika od 10K ohma
  • Električna žica za povezivanje svega

Korisno imati pri izradi:

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

Softver:

  • Git
  • 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 šta drugo. Budući da će Pi sve funkcionirati, ovo je jedan od najvažnijih dijelova distributera kartica.

Instalacija:

Preuzmite Raspbian sliku sa

  1. Preuzmite ZIP datoteku
  2. Izdvojite ZIP datoteku na kojoj ćete je lako pronaći
  3. Otvorite Win32 Disk Imager i odaberite izdvojenu sliku
  4. Odaberite SD karticu u 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. Idite 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. Sačuvajte i izađite iz datoteke
  5. Kreirajte u istom direktoriju datoteku pod nazivom ssh i uklonite ekstenziju (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. Uzmite ethernet kabel i umetnite jedan kraj u Pi, a drugi kraj u računar
  2. Otvorite kit
  3. Unesite 169.254.10.1 u polje Ime hosta
  4. Uvjerite se da je izabran SSH i da je port 22
  5. Kliknite otvoreno
  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ći 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. Uvjerite se da su vam WiFi vjerodajnice zatvorene.

Za postavljanje wifija potrebno nam je nekoliko stvari:

Dodajte svoju WiFi mrežu pomoću ove naredbe 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:

interfejs wlan0

Ponovo konfigurirajte sučelje:

ponovo 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 operativnog sistema

Ažurirajte operativni sistem pomoću ove 2 naredbe:

sudo apt update

sudo apt potpuna nadogradnja

Postavljanje MariaDB -a:

Instaliranje Apache web servera:

sudo apt install apache2 -y

Instaliranje MariaDB servera:

sudo apt install mariadb -server -y

Sada moramo ponovo pokrenuti sistem:

sudo reboot

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, ali 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 MariaDB instalacija trebala bi biti sigurna!

Sada možemo stvoriti novog korisnika:

Unesite ljusku mysql s ovom naredbom:

sudo mysql

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

kreirati korisnika mysql@localhost identificiranog sa 'your_password';

dodijelite sve privilegije na *. * mysql@localhost;

FLUSH PRIVILEGES;

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

Treba nam velika količina Python paketa, sve ih možete instalirati sa sljedećom naredbom:

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

Sada moramo ponovo pokrenuti sistem

sudo reboot

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

Povezivanje na Pi sa MySQL radnim stolom:

Otvorite MySQL Workbench

Uspostavite novu vezu sa Pi sa sljedećim podacima:

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

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

ip a

  • SSH korisničko ime: pi
  • MySQL Ime hosta: 127.0.0.1
  • Port za MySQL server: 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 2 proširenja:

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

Pritisnite Visual Studio Code F1 i upišite ssh

Odaberite Remote SSH: Dodajte novi SSH host

Popunite ssh pi@IP-adresu

U sljedećem koraku pritisnite enter

Veza je sada uspostavljena sa Pi. Na Pi se možete povezati pritiskom na F1 i odabirom povezivanja na udaljeni host.

Unesite lozinku kako bi Visual Studio Code imao pristup Pi.

Još jedna stvar: Instalirajte Python ekstenziju na udaljenu mašinu kako biste mogli jednostavno pokrenuti i otklanjati greške u kodu.

Korak 3: Dijagram urezivanja

Dijagram fritzinga
Dijagram fritzinga
Dijagram fritzinga
Dijagram fritzinga
Dijagram fritzinga
Dijagram fritzinga

U ovom koraku ću objasniti krug.

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 pinovi za spajanje 5V i mase. Ostali pinovi su kontrolni pinovi. Ovi pinovi upravljaju magnetima unutar motora kako bi se mogli okretati. Spojite ove pinove na GPIO 12, 16, 20 i 21 na Raspberry Pi -u.

HC-SR04 Ultrazvučni:

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

Spojite VCC pin na 5V, pin okidača 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 na masu, scl na scl na Pi i sda na sda na Pi. Za ovaj senzor koristim I2C za kontrolu. 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 master.

Otpornik ovisan o svjetlu:

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

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

LCD ekran:

Možete koristiti LCD ekran bez PCF8574, ali pošto su GPIO pinovi na Pi ograničeni, koristim PCF8574 da sačuvam neke GPIO pinove. Možete koristiti i 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 ekran:

  • VSS na masu
  • VDD do 5V
  • V0 na promjenjivi pin potenciometra
  • RS na GPIO 13
  • R/W na masu jer pišem samo na ekran, 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 sa otpornikom od 330 Ohma

Možda nećete imati LED+ i LED- ovisno o vrsti ekrana koji imate. LED+ i LED- služe za pozadinsko osvjetljenje.

Priključite 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.

Folder project1:

Ova mapa sadrži sav kôd za pozadinu. U fascikli Klasses 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 lokaciju.

App.py je glavna datoteka pozadine. Ova datoteka se 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 direktoriju.

Mapa html:

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

  • Mapa sadrži datoteke za izgled 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 fascikla mora biti u fascikli/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 lokacije u vašem pregledniku IP adresa prikazana na LCD ekranu.

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. Kliknite na Server -> 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 na početak uvoza

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

Korak 6: Slučaj za distributera kartice

Futrola za distributera kartica
Futrola za distributera kartica
Futrola za distributera kartica
Futrola za distributera kartica
Futrola za distributera kartica
Futrola za distributera kartica

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

Za kućište 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 prolazak kartica. Na vrhu sam napravio najveću rupu tako da možete staviti karte za igru u uređaj.

Montirao sam istosmjerni motor sa držačem i malo dvostrane trake. Napravio sam drvenu dasku na koju sam položio karte s rupom za točak za snimanje karte.

Izabrao sam za 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 pokretanja Pi -a. Za to ćemo napraviti uslugu.

Kreirajte 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 = 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žim = višekorisnički cilj WorkingDirectory je put do mape u kojoj se program nalazi

Sada imate svoju pametnu karticu!

Preporučuje se: