Cuprins:

Distribuitor automat de carduri: 7 pași
Distribuitor automat de carduri: 7 pași
Anonim
Distribuitor automat de carduri
Distribuitor automat de carduri

Am ales un distribuitor de carduri inteligente ca prim proiect pentru că îmi place să joc un joc de cărți. Lucrul care nu-mi place cel mai mult este împărțirea cărților. Trebuie să vă amintiți pentru fiecare joc câte cărți primește fiecare persoană. Acest lucru devine confuz atunci când cunoașteți multe jocuri de cărți. Proiectul meu va ajuta, de asemenea, persoanele care au probleme cu distribuirea cardurilor, cum ar fi persoanele în vârstă și persoanele care suferă de Parkinson.

Provizii

  • 1 Raspberry Pi (am folosit un Raspberry Pi 4)
  • Card SD (se recomandă 16 GB)
  • 1 bucată de pâine pentru Raspberry Pi (piesă T)
  • 2 panouri
  • 1 Modul de alimentare pentru panou, 5V și 3V3
  • 1 ecran LCD
  • 1 Potențiometru
  • 1 MPU6050 (accelerometru și giroscop)
  • 1 tranzistoare NPN
  • 1 expansor I / O PCF8574N
  • 1 motor pas cu pas
  • 1 placă de rupere ULN2003 pentru controlul motorului pas cu pas
  • 1 senzor cu ultrasunete HC-SR04
  • 1 motoare 5V DC
  • 1 diode
  • 6 470 Ohm rezistențe
  • 4 rezistențe de 10K Ohm
  • Sârmă electrică pentru a conecta totul

Util pentru a avea în timp ce realizați:

  • Ciocan de lipit
  • Solder
  • Dremel sau ferăstrău (ceva pentru a tăia lemnul și plasticul din abs)

Software:

  • Chit
  • Bancul de lucru MySQL
  • Win32 Disk Imager
  • Editor de cod (recomand codul Visual Studio)
  • WinSCP
  • Imagine Raspbian

Pasul 1: Pregătirea Rasperry Pi

Mai întâi trebuie să pregătim Raspberry Pi înainte de a face orice altceva. Deoarece totul va funcționa cu Pi, aceasta este una dintre cele mai importante piese ale distribuitorului de carduri.

Instalare:

Descărcați imaginea Raspbian de pe

  1. Descărcați fișierul ZIP
  2. Extrageți fișierul ZIP unde îl puteți găsi cu ușurință
  3. Deschideți Win32 Disk Imager și selectați imaginea extrasă
  4. Selectați cardul SD din meniul derulant și faceți clic pe Scrieți
  5. Odată ce procesul de scriere este finalizat, puteți închide Win32 Disk Imager

Acum trebuie să mai facem câteva lucruri înainte să ne putem conecta la Pi

  1. Navigați la folderul de încărcare de pe cardul SD
  2. Deschideți fișierul cmdline.txt
  3. Adăugați „ip = 169.254.10.1” la capătul liniei separat cu un spațiu
  4. Salvați și ieșiți din fișier
  5. Creați în același director un fișier numit ssh și eliminați extensia (aceasta va activa ssh la prima încărcare, astfel încât să ne putem conecta la Pi)
  6. Scoateți în siguranță cardul SD și puneți-l în Pi

Acum ne putem conecta la Pi:

  1. Luați un cablu Ethernet și introduceți un capăt în Pi și celălalt capăt în computer
  2. Deschide Putty
  3. Introduceți 169.254.10.1 în câmpul Nume gazdă
  4. Asigurați-vă că SSH este selectat și portul este 22
  5. Faceți clic pe Deschidere
  6. Dacă primiți un avertisment, îl puteți continua și ignora
  7. Numele de utilizator este pi, iar parola este zmeură

Configurarea și instalarea software-ului:

Deschideți raspi-config cu următoarea comandă:

sudo raspi-config

Selectați a 5-a opțiune: Opțiuni de interfață

Activați SPI și I2C

Dezactivați următoarele lucruri în cea de-a treia opțiune: Opțiuni de încărcare:

  • Ecran splash
  • Alegeți cli pentru pornire și nu pentru desktop

Configurare Wifi:

Wifi este util pentru a naviga cu ușurință la site-ul web. Asigurați-vă că aveți acreditările dvs. wifi aproape.

Pentru a configura wifi avem nevoie de câteva lucruri:

Adăugați Wi-Fi utilizând această comandă și schimbați SSID și PAROLĂ la informațiile dvs.:

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

Executați această comandă pentru a vă reconfigura wifi-ul:

sudo wpa_cli

Selectați interfața corectă:

interfață wlan0

Reconfigurați interfața:

reconfigura

Verificați dacă reconfigurarea a reușit cu această comandă:

ip a

Dacă vedeți o adresă IP pe interfața wlan0, atunci totul este configurat.

Actualizarea sistemului de operare

Actualizați sistemul de operare cu aceste 2 comenzi:

actualizare sudo apt

sudo apt full-upgrade

Configurarea MariaDB:

Instalarea Apache Webserver:

sudo apt instalează apache2 -y

Instalarea serverului MariaDB:

sudo apt instalează mariadb-server -y

Acum trebuie să repornim:

sudo reboot

Se recomandă securizarea instalării MariaDB. Puteți face acest lucru executând această comandă:

sudo mysql_secure_installation

Mai întâi vi se va cere parola curentă de root, dar instalarea implicită nu o are, așa că apăsați Enter.

Apoi veți fi întrebat dacă doriți să setați o parolă root, tastați y. Asigurați-vă că vă puteți aminti parola!

  • Introduceți y pentru a elimina utilizatorii anonimi
  • Introduceți y pentru a dezactiva conectarea root la distanță
  • Introduceți y pentru a elimina bazele de date de testare și accesați-le
  • Introduceți y pentru a reîncărca privilegii

Instalarea dvs. MariaDB ar trebui să fie sigură!

Acum putem crea un nou utilizator:

Introduceți shell-ul mysql cu această comandă:

sudo mysql

Creați un utilizator cu numele de utilizator mysql și o parolă (parola_ dvs.) următoarele comenzi:

creați utilizatorul mysql @ localhost identificat prin „parola_vostru”;

acordă toate privilegiile pe *. * către mysql @ localhost;

PRIVILEGII DE FLUSH;

Ieșiți din shell-ul mysql cu această comandă:

Ieșire;

Pachete Python:

Python ar trebui să fie deja instalat dacă nu alegeți versiunea Lite:

sudo apt instalează python3-pip

Avem nevoie de o cantitate bună de pachete Python, le puteți instala pe toate cu următoarea comandă:

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

Acum trebuie să repornim încă o dată

sudo reboot

Pasul 2: Configurarea Visual Studio Code și MySQL Workbench

Conectarea la Pi cu MySQL Workbench:

Deschideți MySQL Workbench

Faceți o nouă conexiune la Pi cu următoarele informații:

  • Numele conexiunii: Raspi
  • Metoda de conectare: TCP / IP standard pe SSH
  • SSH Hostname: adresa IP a Pi

Puteți obține adresa IP cu această comandă:

ip a

  • Nume utilizator SSH: pi
  • Numele gazdei MySQL: 127.0.0.1
  • Port server MySQL: 3306
  • Nume utilizator: mysql

Faceți clic pe ok și introduceți parola pentru utilizatorul pi, apoi introduceți parola pentru utilizatorul mysql.

Configurarea codului Visual Studio:

Deschideți codul Visual Studio

Instalați aceste 2 extensii:

  • Telecomandă - SSH
  • Remote - SSH: Editarea fișierelor de configurare

Apăsați în Visual Studio Code F1 și tastați ssh

Alegeți Remote SSH: Adăugați o nouă gazdă SSH

Completați ssh pi @ adresa IP

În pasul următor apăsați Enter

Conexiunea se face acum cu Pi. Vă puteți conecta la Pi apăsând F1 și selectând conectare la gazdă la distanță.

Introduceți parola, astfel încât Visual Studio Code să aibă acces la Pi.

Încă un lucru: instalați extensia Python pe mașina de la distanță, astfel încât să puteți rula cu ușurință și să depanați codul.

Pasul 3: Diagrama Fritzing

Diagrama Fritzing
Diagrama Fritzing
Diagrama Fritzing
Diagrama Fritzing
Diagrama Fritzing
Diagrama Fritzing

În acest pas voi explica circuitul.

Schemele de mai sus sunt realizate cu Fritzing.

Motor DC:

Conectați GPIO 18 la baza colectorului, pinul central al unui tranzistor npn. Conectați pământul motorului la colectorul de la tranzistor și puterea motorului la 5V. Conectați pământul tranzistorului la linia de pământ. Conectați bariera diodei peste motor astfel încât să blocheze curentul să curgă direct la tranzistor.

Motor pas cu pas:

Conectați motorul pas cu pas la placa de control. Pe placa de control există pinii dintr-o parte pentru a conecta 5V și masă. Ceilalți pini sunt pini de control. Acești pini controlează magneții din interiorul motorului, astfel încât acesta să se poată roti. Conectați acești pini la GPIO 12, 16, 20 și 21 de pe Raspberry Pi.

HC-SR04 cu ultrasunete:

Acest senzor poate măsura distanțe la aproximativ 4,5 metri folosind sunetul.

Conectați pinul VCC la 5V, pinul de declanșare la GPIO 25, pinul de ecou cu o rezistență de 470 Ohm la GPIO 24 și solul cu un rezistor de 470 Ohm la sol.

MPU6050:

Conectați pinul VCC la 3V3, solul la sol, scl la scl de pe Pi și sda la sda de pe Pi. Pentru acest senzor folosesc I2C pentru a-l controla. Puteți citi mai multe despre asta aici. Iată o explicație de bază: Pi este stăpânul și MPU6050 este sclavul. Prin linia scl, Pi controlează temporizările, iar linia sda este utilizată pentru a trimite date de la comandant la sclav sau de la sclav către comandant. Numai comandantul poate iniția transferul de date.

Rezistorul depinde de lumină:

Pentru a obține citiri corecte de la LDR, folosesc un cip MCP3008. Acest lucru asigură faptul că citirile din ldr sunt stabile și corecte convertite de la semnale analogice la digitale.

Conectați 3V3 la o parte a ldr-ului cu un rezistor de 10K Ohm între acesta. Între ldr și rezistor conectați un fir la canalul 0 al MCP3008. Apoi conectați cealaltă parte a ldr la sol.

Ecran LCD:

Puteți utiliza afișajul LCD fără un PCF8574, dar deoarece pinii GPIO de pe Pi sunt limitați, eu folosesc un PCF8574 pentru a salva niște pini GPIO. De asemenea, puteți utiliza un registru de schimbare, dar prefer un PCF8574. Puteți controla PCF8574 cu protocolul SMbus, dar am scris propria mea clasă pentru a o controla. Potențiometrul controlează contrastul.

Pinii afișajului LCD:

  • VSS la sol
  • VDD la 5V
  • V0 la pinul variabil al potențiometrului
  • RS către GPIO 13
  • R / W la masă pentru că scriu doar pe afișaj și nu citesc
  • E la GPIO 19
  • DB0 la P0 al PCF
  • DB1 la P1
  • DB2 la P2
  • DB3 la P3
  • DB4 la P4
  • DB5 la P5
  • DB6 la P6
  • DB7 la P7
  • LED + la 5V
  • LED- la masă

PCF8574 pini:

  • A0 la sol
  • A1 la sol
  • A2 la sol
  • Sol la sol
  • VCC la 5V
  • SDA la GPIO 27
  • SCL la GPIO 22 cu rezistor de 330 Ohm

Este posibil să nu aveți LED + și LED- în funcție de tipul de afișaj pe care l-ați primit. LED + și LED- sunt pentru iluminarea din spate.

Conectați partea pozitivă a potențiometrului la 5V și solul la masă.

Asigurați-vă că utilizați rezistențe pull-up!

Pasul 4: Cod pe Github

Puteți găsi toate codurile necesare pe Github.

Dosar proiect1:

Acest folder conține tot codul pentru backend. În folderul Klasses sunt toate clasele de control al hardware-ului.

Depozitele de dosare conțin 2 fișiere: Database.py și DataRepository.py. Database.py menține conexiunea la baza de date și gestionează interogările. DataRepository.py conține toate interogările necesare pentru site.

App.py este fișierul principal al backend-ului. Acest fișier pornește automat la pornirea Pi.

Config.py conține câteva setări pentru conectarea la baza de date. Asigurați-vă că completați aceste fișiere cu propriile informații.

Puteți plasa acest folder oriunde în directorul dvs. de acasă.

Dosar html:

Acest folder conține toate fișierele pentru site, frontend.

  • Dosarul conține fișierele pentru aspectul site-ului.
  • Fonturi conține fonturile utilizate pe site.
  • Scriptul conține toate fișierele Javascript pentru a face site-ul dinamic

Acest folder trebuie să fie în folderul / var / www / html

Puteți copia un fișier sau folder cu această comandă:

sudo mv / cale / către / curent / director / cale / către / destinație / director

Pentru a naviga la site, tastați în browser adresa IP afișată pe ecranul LCD.

Pasul 5: Structura normalizată a bazei de date

Structura normalizată a bazei de date
Structura normalizată a bazei de date

În acest pas vom importa baza de date.

  1. Conectați-vă la Raspberry Pi cu MySQL Workbench
  2. Faceți clic pe Server -> Import date
  3. Selectați Importați fișier autonom
  4. În folderul Database-export din Github există un fișier sql numit dump_project1.sql
  5. Navigați la acest fișier și faceți clic pe Start import

Asta e. Pi poate accesa acum baza de date dacă are informațiile corecte.

Pasul 6: Carcasă pentru distribuitorul de carduri

Carcasă pentru distribuitorul de carduri
Carcasă pentru distribuitorul de carduri
Carcasă pentru distribuitorul de carduri
Carcasă pentru distribuitorul de carduri
Carcasă pentru distribuitorul de carduri
Carcasă pentru distribuitorul de carduri

În acest pas voi explica ce am folosit pentru caz și cum am montat totul.

Pentru cazul în care am folosit 2 cutii ABS:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Găurile pe care le-am făcut în cutii

O gaură pentru afișajul LCD, 3 găuri pentru cablurile de alimentare, una pentru firele de la motorul pas cu pas, motorul DC și senzorul cu ultrasunete.

În cea mai mică cutie am făcut o gaură pentru firele din componente și o gaură pentru trecerea cărților. În partea de sus am făcut cea mai mare gaură, astfel încât să puteți așeza cărți de joc în dispozitiv.

Am montat motorul de curent continuu cu un suport și o bandă dublă. Am făcut o scândură de lemn pe care să așez cărțile cu o gaură pentru ca roata să tragă o carte.

Am ales pentru plasticul ABS, deoarece este ușor, astfel încât motorul pas cu pas îl poate roti cu ușurință. Lemnul poate fi foarte greu și motorul pas cu pas poate avea probleme cu acest lucru. Pentru a tăia găurile, am folosit un burghiu cu burghie concepute pentru metal și un Dremel. Tăierea găurilor mai mari a necesitat mult mai multă muncă și un ferăstrău cu jig ar fi mai bun.

Pasul 7: Programează ca serviciu

Este foarte util ca codul să înceapă după pornirea Pi. Pentru asta vom face un serviciu.

Creați un fișier nou numit smartcard.service cu următoarea comandă:

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

Acest lucru trebuie să intre în fișier:

[Unitate]

Descriere = Backend card inteligent După = network.target [Service] ExecStart = / usr / bin / python3 -u app.py WorkingDirectory = / home / pi / project1 StandardOutput = inherit StandardError = eredita Restart = întotdeauna User = pi [Instalare] WantedBy = multi-user.target WorkingDirectory este calea către folderul în care se află programul

Acum ai propriul tău Smart Card!

Recomandat: