Sommario:

Distributore automatico di carte: 7 passaggi
Distributore automatico di carte: 7 passaggi

Video: Distributore automatico di carte: 7 passaggi

Video: Distributore automatico di carte: 7 passaggi
Video: Distributore Automatico con Gettoniera e Arduino - Video 679 2024, Dicembre
Anonim
Distributore automatico di carte
Distributore automatico di carte

Ho scelto un distributore di smart card come mio primo progetto perché mi piace giocare a carte. La cosa che non mi piace di più è distribuire le carte. Devi ricordare per ogni partita quante carte riceve ogni persona. Questo diventa confuso quando conosci molti giochi di carte. Il mio progetto aiuterà anche le persone che hanno problemi con la distribuzione delle carte come le persone anziane e le persone che soffrono di Parkinson.

Forniture

  • 1 Raspberry Pi (ho usato un Raspberry Pi 4)
  • Scheda SD (16 GB consigliati)
  • 1 pezzo di pane per Raspberry Pi (raccordo a T)
  • 2 breadboard
  • 1 Modulo di alimentazione per breadboard, 5V e 3V3
  • 1 display LCD
  • 1 Potenziometro
  • 1 MPU6050 (accelerometro e giroscopio)
  • 1 transistor NPN
  • 1 espansione I/O PCF8574N
  • 1 motore passo-passo
  • 1 breakout board ULN2003 per il controllo del motore passo-passo
  • 1 sensore a ultrasuoni HC-SR04
  • 1 motori 5V CC
  • 1 diodi
  • 6 resistori da 470 Ohm
  • 4 resistori da 10K Ohm
  • Cavo elettrico per collegare tutto

Utile da avere durante la realizzazione:

  • Saldatore
  • Saldare
  • Dremel o seghetto alternativo (qualcosa per tagliare legno e plastica abs)

Software:

  • mastice
  • Banco di lavoro MySQL
  • Imager disco Win32
  • Editor di codice (consiglio Visual Studio Code)
  • WinSCP
  • Immagine Raspbian

Passaggio 1: preparare il Rasperry Pi

Per prima cosa dobbiamo preparare il Raspberry Pi prima di fare qualsiasi altra cosa. Perché tutto funzionerà con il Pi, quindi questo è uno dei pezzi più importanti del distributore di carte.

Installazione:

Scarica l'immagine Raspbian da

  1. Scarica il file ZIP
  2. Estrai il file ZIP dove puoi trovarlo facilmente
  3. Apri Win32 Disk Imager e seleziona l'immagine estratta
  4. Seleziona la scheda SD nel menu a discesa e fai clic su Scrivi
  5. Una volta terminato il processo di scrittura, puoi chiudere Win32 Disk Imager

Ora dobbiamo fare alcune altre cose prima di poterci connettere al Pi

  1. Passare alla cartella di avvio sulla scheda SD
  2. Apri il file cmdline.txt
  3. Aggiungi 'ip=169.254.10.1' alla fine della riga separata da uno spazio
  4. Salva ed esci dal file
  5. Crea nella stessa directory un file chiamato ssh e rimuovi l'estensione (questo abiliterà ssh al primo avvio in modo da poterci connettere al Pi)
  6. Espellere in sicurezza la scheda SD e inserirla nel Pi

Ora possiamo connetterci al Pi:

  1. Prendi un cavo ethernet e inserisci un'estremità nel Pi e l'altra estremità nel tuo computer
  2. mastice aperto
  3. Inserisci 169.254.10.1 nel campo Nome host
  4. Assicurati che SSH sia selezionato e che la porta sia 22
  5. Fare clic su Apri
  6. Se ricevi un avviso, puoi semplicemente continuare e ignorarlo
  7. Il nome utente è pi e la password è lampone

Configurazione e installazione del software:

Apri raspi-config con il seguente comando:

sudo raspi-config

Seleziona la quinta opzione: Opzioni di interfaccia

Abilita SPI e I2C

Disabilita le seguenti cose nella 3a opzione: Opzioni di avvio:

  • Schermata iniziale
  • Scegli cli per l'avvio e non desktop

Configurazione Wi-Fi:

Il Wi-Fi è utile per navigare facilmente nel sito web. Assicurati di avere le tue credenziali wifi vicine.

Per configurare il wifi abbiamo bisogno di alcune cose:

Aggiungi il tuo wifi usando questo comando e cambia SSID e PASSWORD con le tue informazioni:

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

Esegui questo comando per riconfigurare il tuo wifi:

sudo wpa_cli

Seleziona l'interfaccia corretta:

interfaccia wlan0

Riconfigurare l'interfaccia:

riconfigurare

Controlla se la riconfigurazione è andata a buon fine con questo comando:

ip a

Se vedi un indirizzo IP sull'interfaccia wlan0, allora tutto è configurato.

Aggiornamento del sistema operativo

Aggiorna il sistema operativo con questi 2 comandi:

sudo apt update

sudo apt aggiornamento completo

Configurazione di MariaDB:

Installazione del server Web Apache:

sudo apt install apache2 -y

Installazione del server MariaDB:

sudo apt install mariadb-server -y

Ora dobbiamo riavviare:

sudo reboot

Si consiglia di proteggere l'installazione di MariaDB. Puoi farlo eseguendo questo comando:

sudo mysql_secure_installation

Per prima cosa ti verrà chiesta la password di root corrente ma l'installazione predefinita non ne ha una quindi premi invio.

Successivamente ti verrà chiesto se desideri impostare una password di root, digita y. Assicurati di ricordare la password!

  • Inserisci y per rimuovere gli utenti anonimi
  • Inserisci y per disabilitare il login di root in remoto
  • Immettere y per rimuovere i database di prova e accedervi
  • Inserisci y per ricaricare i privilegi

La tua installazione di MariaDB dovrebbe essere sicura!

Ora possiamo creare un nuovo utente:

Entra nella shell mysql con questo comando:

sudo mysql

Crea un utente con il nome utente mysql e una password (your_password) i seguenti comandi:

creare l'utente mysql@localhost identificato da 'your_password';

concedere tutti i privilegi su *.* a mysql@localhost;

PRIVILEGI DI SCARICO;

Esci dalla shell mysql con questo comando:

Uscita;

Pacchetti Python:

Python dovrebbe essere già installato a meno che tu non abbia scelto la versione Lite:

sudo apt install python3-pip

Abbiamo bisogno di una buona quantità di pacchetti Python, puoi installarli tutti con il seguente comando:

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

Ora dobbiamo riavviare ancora una volta

sudo reboot

Passaggio 2: configurazione di Visual Studio Code e MySQL Workbench

Connessione al Pi con MySQL Workbench:

Apri MySQL Workbench

Crea una nuova connessione al Pi con le seguenti informazioni:

  • Nome connessione: Raspi
  • Metodo di connessione: TCP/IP standard su SSH
  • Nome host SSH: indirizzo IP del Pi

Puoi ottenere l'indirizzo IP con questo comando:

ip a

  • Nome utente SSH: pi
  • Nome host MySQL: 127.0.0.1
  • Porta del server MySQL: 3306
  • Nome utente: mysql

Fare clic su ok e immettere la password per l'utente pi, quindi immettere la password per l'utente mysql.

Configurazione del codice di Visual Studio:

Apri codice di Visual Studio

Installa queste 2 estensioni:

  • Remoto - SSH
  • Remoto - SSH: modifica dei file di configurazione

Premi Visual Studio Code F1 e digita ssh

Scegli SSH remoto: aggiungi un nuovo host SSH

Compila ssh pi@IP-address

Nel passaggio successivo premi invio

La connessione è ora effettuata con il Pi. Puoi connetterti al Pi premendo F1 e selezionando Connetti a host remoto.

Immettere la password in modo che Visual Studio Code abbia accesso al Pi.

Un'altra cosa: installa l'estensione Python sulla macchina remota in modo da poter eseguire facilmente ed eseguire il debug del codice.

Passaggio 3: diagramma di sfregamento

Diagramma di Fritzing
Diagramma di Fritzing
Diagramma di Fritzing
Diagramma di Fritzing
Diagramma di Fritzing
Diagramma di Fritzing

In questo passaggio spiegherò il circuito.

Gli schemi sopra sono realizzati con Fritzing.

Motore a corrente continua:

Collega GPIO 18 alla base del collettore, il pin centrale su un transistor npn. Collegare la massa del motore al collettore dal transistor e l'alimentazione del motore a 5V. Collegare la massa del transistor alla linea di massa. Collegare il diodo in barriera sopra il motore in modo che impedisca alla corrente di fluire direttamente al transistor.

Motore passo-passo:

Collegare il motore passo-passo alla scheda di controllo. Sulla scheda di controllo ci sono da un lato i pin per collegare 5V e massa. Gli altri pin sono pin di controllo. Questi pin controllano i magneti all'interno del motore in modo che possa girare. Collega questi pin a GPIO 12, 16, 20 e 21 sul Raspberry Pi.

HC-SR04 Ultrasuoni:

Questo sensore può misurare distanze fino a circa 4,5 metri utilizzando il suono.

Collegare il pin VCC a 5V, il pin trigger a GPIO 25, il pin eco con un resistore da 470 Ohm a GPIO 24 e la massa con un resistore da 470 Ohm a terra.

MPU6050:

Collegare il pin VCC a 3V3, la massa a massa, scl a scl sul Pi e sda a sda sul Pi. Per questo sensore uso I2C per controllarlo. Puoi leggere di più a riguardo qui. Ecco una spiegazione di base: il Pi è il master e l'MPU6050 è lo slave. Attraverso la linea scl il Pi controlla le temporizzazioni e la linea sda viene utilizzata per inviare i dati dal master allo slave o dallo slave al master. Solo il master può avviare il trasferimento dei dati.

Resistenza dipendente dalla luce:

Per ottenere letture corrette dall'LDR utilizzo un chip MCP3008. Questo assicura che le letture del ldr siano stabili e correttamente convertite da segnali analogici a digitali.

Collegare 3V3 a un lato del ldr con un resistore di 10K Ohm tra di esso. Tra ldr e il resistore collegare un filo al canale 0 dell'MCP3008. Quindi collegare l'altro lato del ldr a terra.

Display LCD:

È possibile utilizzare il display LCD senza PCF8574 ma poiché i pin GPIO sul Pi sono limitati, utilizzo un PCF8574 per salvare alcuni pin GPIO. Puoi anche usare un registro a scorrimento, ma io preferisco un PCF8574. Puoi controllare il PCF8574 con il protocollo SMbus ma ho scritto la mia classe per controllarlo. Il potenziometro controlla il contrasto.

Pin del display LCD:

  • VSS a terra
  • VDD a 5V
  • V0 al pin variabile del potenziometro
  • RS a GPIO 13
  • R/W a massa perché scrivo solo sul display e non leggo
  • Da E a GPIO 19
  • DB0 a P0 del PCF
  • Da DB1 a P1
  • Da DB2 a P2
  • DB3 a P3
  • DB4 a P4
  • DB5 a P5
  • DB6 a P6
  • DB7 a P7
  • LED+ a 5V
  • LED-a terra

Pin PCF8574:

  • A0 a terra
  • A1 a terra
  • A2 a terra
  • Terra a terra
  • VCC a 5V
  • Da SDA a GPIO 27
  • SCL a GPIO 22 con resistenza di 330 Ohm

Potresti non avere LED+ e LED- a seconda del tipo di display che hai. LED+ e LED- sono per la retroilluminazione.

Collegare il lato positivo del potenziometro a 5V e la massa a terra.

Assicurati di utilizzare resistori di pull-up!

Passaggio 4: codice su Github

Puoi trovare tutto il codice necessario sul mio Github.

Cartella progetto1:

Questa cartella contiene tutto il codice per il backend. Nella cartella Klasses ci sono tutte le classi per controllare l'hardware.

I repository di cartelle contengono 2 file: Database.py e DataRepository.py. Database.py mantiene la connessione al database e gestisce le query. DataRepository.py contiene tutte le query necessarie per il sito.

App.py è il file principale del backend. Questo file si avvia automaticamente all'avvio del Pi.

Config.py contiene alcune impostazioni per connettersi al database. Assicurati di compilare questi file con le tue informazioni.

Puoi posizionare questa cartella ovunque nella tua directory home.

Cartella html:

Questa cartella contiene tutti i file per il sito, il frontend.

  • La cartella contiene i file per il layout del sito.
  • Caratteri contiene i caratteri utilizzati nel sito.
  • Script contiene tutti i file Javascript per rendere dinamico il sito

Questa cartella deve essere nella cartella /var/www/html

Puoi copiare un file o una cartella con questo comando:

sudo mv /percorso/della/directory/corrente /percorso/della/destinazione/directory

Per navigare nel sito digita nel tuo browser l'indirizzo IP visualizzato sul display LCD.

Passaggio 5: struttura del database normalizzata

Struttura del database normalizzata
Struttura del database normalizzata

In questo passaggio importeremo il database.

  1. Connettiti al tuo Raspberry Pi con MySQL Workbench
  2. Fare clic su Server -> Importazione dati
  3. Seleziona Importa file autonomo
  4. Nella cartella Database-export from Github c'è un file sql chiamato dump_project1.sql
  5. Sfoglia fino a questo file e fai clic su avvia importazione

Questo è tutto. Il Pi ora può accedere al database se ha le informazioni corrette.

Passaggio 6: custodia per il distributore di carte

Custodia per il distributore di carte
Custodia per il distributore di carte
Custodia per il distributore di carte
Custodia per il distributore di carte
Custodia per il distributore di carte
Custodia per il distributore di carte

In questo passaggio ti spiego cosa ho usato per il case e come ho montato il tutto.

Per il caso ho utilizzato 2 scatole in ABS:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

I buchi che ho fatto nelle scatole

Un foro per il display LCD, 3 fori per i cavi di alimentazione, uno per i fili del motore passo-passo, del motore DC e del sensore a ultrasuoni.

Nella scatola più piccola ho fatto un foro per i fili dei componenti e un foro per il passaggio delle schede. Nella parte superiore ho fatto il buco più grande in modo da poter posizionare le carte da gioco nel dispositivo.

Ho montato il motore DC con una staffa e del nastro biadesivo. Ho realizzato una tavola di legno su cui appoggiare le carte con un foro per la ruota per sparare una carta.

Ho scelto la plastica ABS perché è leggera, quindi il motore passo-passo può girarla facilmente. Il legno può essere molto pesante e il motore passo-passo potrebbe avere problemi con questo. Per tagliare i fori ho usato un trapano con punte progettate per il metallo e un Dremel. Tagliare i fori più grandi ha richiesto molto più lavoro e un seghetto alternativo sarebbe stato migliore.

Passaggio 7: programma come servizio

È davvero utile che il codice inizi dopo l'avvio del Pi. Per questo faremo un servizio.

Crea un nuovo file chiamato smartcard.service con il seguente comando:

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

Questo deve andare nel file:

[Unità]

Description=Backend smart card After=network.target [Service] ExecStart=/usr/bin/python3 -u app.py WorkingDirectory=/home/pi/project1 StandardOutput=inherit StandardError=inherit Restart=sempre User=pi [Install] WantedBy =destinazione multiutente WorkingDirectory è il percorso della cartella in cui si trova il programma

Ora hai la tua Smart Card!

Consigliato: