Πίνακας περιεχομένων:

Αυτόματος διανομέας καρτών: 7 βήματα
Αυτόματος διανομέας καρτών: 7 βήματα

Βίντεο: Αυτόματος διανομέας καρτών: 7 βήματα

Βίντεο: Αυτόματος διανομέας καρτών: 7 βήματα
Βίντεο: Ξύλο μεταξύ κάμεραμαν του ΣΚΑΙ και πολίτη 2024, Νοέμβριος
Anonim
Αυτόματος Διανομέας Καρτών
Αυτόματος Διανομέας Καρτών

Έχω επιλέξει έναν διανομέα έξυπνων καρτών ως το πρώτο μου έργο, επειδή μου αρέσει να παίζω cardgame. Αυτό που μου αρέσει περισσότερο είναι να μοιράζεσαι κάρτες. Πρέπει να θυμάστε για κάθε παιχνίδι πόσα φύλλα παίρνει κάθε άτομο. Αυτό προκαλεί σύγχυση όταν γνωρίζετε πολλά παιχνίδια καρτών. Το πρότζεκτ μου θα βοηθήσει επίσης άτομα που έχουν πρόβλημα με τη διανομή καρτών, όπως άτομα μεγαλύτερης ηλικίας και άτομα που πάσχουν από Πάρκινσον.

Προμήθειες

  • 1 Raspberry Pi (χρησιμοποίησα ένα Raspberry Pi 4)
  • Κάρτα SD (συνιστάται 16 GB)
  • 1 κομμάτι Outbread για Raspberry Pi (T-piece)
  • 2 σανίδες ψωμιού
  • 1 μονάδα τροφοδοσίας για breadboard, 5V και 3V3
  • 1 οθόνη LCD
  • 1 Ποτενσιόμετρο
  • 1 MPU6050 (επιταχυνσιόμετρο και γυροσκόπιο)
  • 1 τρανζίστορ NPN
  • 1 διαστολέας εισόδου/εξόδου PCF8574N
  • 1 βηματικό μοτέρ
  • 1 ULN2003 breakout board για έλεγχο βηματικού κινητήρα
  • 1 αισθητήρας υπερήχων HC-SR04
  • 1 κινητήρες DC 5V
  • 1 δίοδοι
  • 6 αντιστάσεις 470 Ohm
  • 4 αντιστάσεις 10K Ohm
  • Ηλεκτρικό σύρμα για σύνδεση όλων

Χρήσιμο να έχετε κατά την παρασκευή:

  • Συγκολλητικό σίδερο
  • Κόλλα μετάλλων
  • Dremel ή πριόνι (κάτι για να κόψετε ξύλο και πλαστικό κοιλιακών)

Λογισμικό:

  • Στόκος
  • Πάγκος εργασίας MySQL
  • Win32 Disk Imager
  • Επεξεργαστής κώδικα (προτείνω Visual Studio Code)
  • WinSCP
  • Raspbian εικόνα

Βήμα 1: Προετοιμασία του Rasperry Pi

Πρώτα πρέπει να προετοιμάσουμε το Raspberry Pi πριν κάνουμε οτιδήποτε άλλο. Επειδή όλα θα λειτουργούν με το Pi, έτσι αυτό είναι ένα από τα πιο σημαντικά κομμάτια του διανομέα καρτών.

Εγκατάσταση:

Κατεβάστε την εικόνα Raspbian από τη διεύθυνση

  1. Κατεβάστε το αρχείο ZIP
  2. Εξαγάγετε το αρχείο ZIP όπου μπορείτε να το βρείτε εύκολα
  3. Ανοίξτε το Win32 Disk Imager και επιλέξτε την εξαγόμενη εικόνα
  4. Επιλέξτε την κάρτα SD στο αναπτυσσόμενο μενού και κάντε κλικ στην εγγραφή
  5. Μόλις ολοκληρωθεί η διαδικασία εγγραφής, μπορείτε να κλείσετε το Win32 Disk Imager

Τώρα πρέπει να κάνουμε μερικά ακόμη πράγματα πριν μπορέσουμε να συνδεθούμε με το Pi

  1. Μεταβείτε στον φάκελο εκκίνησης στην κάρτα SD
  2. Ανοίξτε το αρχείο cmdline.txt
  3. Προσθέστε 'ip = 169.254.10.1' στο τέλος της γραμμής που χωρίζεται με κενό
  4. Αποθηκεύστε και βγείτε από το αρχείο
  5. Δημιουργήστε στον ίδιο κατάλογο ένα αρχείο που ονομάζεται ssh και αφαιρέστε την επέκταση (αυτό θα ενεργοποιήσει το ssh στην πρώτη εκκίνηση, ώστε να μπορούμε να συνδεθούμε στο Pi)
  6. Αφαιρέστε με ασφάλεια την κάρτα SD και τοποθετήστε την στο Pi

Τώρα μπορούμε να συνδεθούμε με το Pi:

  1. Πιάστε ένα καλώδιο ethernet και τοποθετήστε το ένα άκρο στο Pi και το άλλο άκρο στον υπολογιστή σας
  2. Άνοιγμα στόκου
  3. Εισαγάγετε 169.254.10.1 στο πεδίο Όνομα κεντρικού υπολογιστή
  4. Βεβαιωθείτε ότι το SSH είναι επιλεγμένο και η θύρα είναι 22
  5. Κάντε κλικ στο άνοιγμα
  6. Εάν λάβετε μια προειδοποίηση, μπορείτε απλά να συνεχίσετε και να την αγνοήσετε
  7. Το όνομα χρήστη είναι pi και ο κωδικός πρόσβασης είναι βατόμουρο

Διαμόρφωση και εγκατάσταση λογισμικού:

Ανοίξτε το raspi-config με την ακόλουθη εντολή:

sudo raspi-config

Επιλέξτε την 5η επιλογή: Επιλογές διασύνδεσης

Ενεργοποίηση SPI και I2C

Απενεργοποιήστε τα ακόλουθα πράγματα στην 3η επιλογή: Επιλογές εκκίνησης:

  • Οθόνη εκτόξευσης
  • Επιλέξτε cli για εκκίνηση και όχι επιφάνεια εργασίας

Ρύθμιση Wifi:

Το Wifi είναι χρήσιμο για εύκολη πλοήγηση στον ιστότοπο. Βεβαιωθείτε ότι έχετε κλείσει τα διαπιστευτήριά σας wifi.

Για να ρυθμίσετε το wifi χρειαζόμαστε μερικά πράγματα:

Προσθέστε το wifi σας χρησιμοποιώντας αυτήν την εντολή και αλλάξτε SSID και PASSWORD στις πληροφορίες σας:

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

Εκτελέστε αυτήν την εντολή για να διαμορφώσετε ξανά το wifi σας:

sudo wpa_cli

Επιλέξτε τη σωστή διεπαφή:

διεπαφή wlan0

Επαναδιαμορφώστε τη διεπαφή:

επαναδιαμορφώσω

Ελέγξτε εάν η αναδιαμόρφωση ήταν επιτυχής με αυτήν την εντολή:

ip a

Εάν δείτε μια διεύθυνση IP στη διεπαφή wlan0, τότε όλα είναι ρυθμισμένα.

Ενημέρωση λειτουργικού συστήματος

Ενημερώστε το λειτουργικό σύστημα με αυτές τις 2 εντολές:

sudo apt ενημέρωση

sudo apt πλήρης αναβάθμιση

Ρύθμιση MariaDB:

Εγκατάσταση διακομιστή Apache:

sudo apt install apache2 -y

Εγκατάσταση διακομιστή MariaDB:

sudo apt install mariadb -server -y

Τώρα πρέπει να κάνουμε επανεκκίνηση:

sudo επανεκκίνηση

Συνιστάται να εξασφαλίσετε την εγκατάσταση της MariaDB. Μπορείτε να το κάνετε εκτελώντας αυτήν την εντολή:

sudo mysql_secure_installation

Πρώτα θα σας ζητηθεί ο τρέχων κωδικός πρόσβασης ρίζας, αλλά η προεπιλεγμένη εγκατάσταση δεν έχει έναν, οπότε πατήστε enter.

Στη συνέχεια θα ερωτηθείτε εάν θέλετε να ορίσετε έναν κωδικό πρόσβασης ρίζας, πληκτρολογήστε y. Βεβαιωθείτε ότι μπορείτε να θυμηθείτε τον κωδικό πρόσβασης!

  • Εισαγάγετε y για κατάργηση ανώνυμων χρηστών
  • Εισαγάγετε y για να απενεργοποιήσετε τη σύνδεση root από απόσταση
  • Εισαγάγετε y για κατάργηση βάσεων δεδομένων δοκιμής και πρόσβαση σε αυτήν
  • Εισαγάγετε y για να φορτώσετε ξανά τα προνόμια

Η εγκατάσταση της MariaDB πρέπει να είναι ασφαλής!

Τώρα μπορούμε να δημιουργήσουμε έναν νέο χρήστη:

Εισαγάγετε το κέλυφος mysql με αυτήν την εντολή:

sudo mysql

Δημιουργήστε έναν χρήστη με το όνομα χρήστη mysql και έναν κωδικό πρόσβασης (your_password) τις ακόλουθες εντολές:

δημιουργία χρήστη mysql@localhost που προσδιορίζεται από το 'your_password'.

παραχωρήστε όλα τα προνόμια στο *. * στο mysql@localhost.

ΠΡΟΣΦΟΡΕΣ ΠΡΟΣΦΟΡΑΣ;

Βγείτε από το κέλυφος mysql με αυτήν την εντολή:

έξοδος;

Πακέτα Python:

Η Python θα πρέπει να είναι ήδη εγκατεστημένη, εκτός εάν επιλέξετε την έκδοση Lite:

sudo apt εγκατάσταση python3-pip

Χρειαζόμαστε μια καλή ποσότητα πακέτων Python, μπορείτε να τα εγκαταστήσετε όλα με την ακόλουθη εντολή:

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

Τώρα πρέπει να κάνουμε επανεκκίνηση για άλλη μια φορά

sudo επανεκκίνηση

Βήμα 2: Ρύθμιση του Visual Studio Code και του MySQL Workbench

Σύνδεση στο Pi με τον πάγκο MySQL:

Ανοίξτε τον πάγκο εργασίας MySQL

Δημιουργήστε μια νέα σύνδεση με το Pi με τις ακόλουθες πληροφορίες:

  • Όνομα σύνδεσης: Raspi
  • Μέθοδος σύνδεσης: Τυπικό TCP/IP μέσω SSH
  • Όνομα κεντρικού υπολογιστή SSH: IP-διεύθυνση του Pi

Μπορείτε να λάβετε τη διεύθυνση IP με αυτήν την εντολή:

ip a

  • Όνομα χρήστη SSH: pi
  • Όνομα κεντρικού υπολογιστή MySQL: 127.0.0.1
  • Θύρα διακομιστή MySQL: 3306
  • Όνομα χρήστη: mysql

Κάντε κλικ στο ok και εισαγάγετε τον κωδικό πρόσβασης για το χρήστη pi και, στη συνέχεια, εισαγάγετε τον κωδικό πρόσβασης για τον χρήστη mysql.

Ρύθμιση κώδικα Visual Studio:

Ανοίξτε το Visual Studio Code

Εγκαταστήστε αυτές τις 2 επεκτάσεις:

  • Τηλεχειριστήριο - SSH
  • Απομακρυσμένο - SSH: Επεξεργασία αρχείων διαμόρφωσης

Πατήστε στο Visual Studio Code F1 και πληκτρολογήστε ssh

Επιλέξτε Απομακρυσμένο SSH: Προσθήκη νέου κεντρικού υπολογιστή SSH

Συμπληρώστε τη διεύθυνση ssh pi@IP

Στο επόμενο βήμα πατήστε enter

Η σύνδεση γίνεται τώρα με το Pi. Μπορείτε να συνδεθείτε στο Pi πιέζοντας F1 και επιλέγοντας Connect to Remote host.

Εισαγάγετε τον κωδικό πρόσβασης, ώστε ο Visual Studio Code να έχει πρόσβαση στο Pi.

Ένα ακόμη πράγμα: Εγκαταστήστε την επέκταση Python στο απομακρυσμένο μηχάνημα, ώστε να μπορείτε εύκολα να εκτελέσετε και να εντοπίσετε σφάλματα.

Βήμα 3: Διάγραμμα Fritzing

Διάγραμμα Fritzing
Διάγραμμα Fritzing
Διάγραμμα Fritzing
Διάγραμμα Fritzing
Διάγραμμα Fritzing
Διάγραμμα Fritzing

Σε αυτό το βήμα θα εξηγήσω το κύκλωμα.

Τα παραπάνω σχήματα γίνονται με το Fritzing.

Μοτέρ DC:

Συνδέστε το GPIO 18 στη βάση του συλλέκτη, το μεσαίο πείρο σε ένα τρανζίστορ npn. Συνδέστε τη γείωση του κινητήρα στον συλλέκτη από το τρανζίστορ και την ισχύ του κινητήρα στα 5V. Συνδέστε τη γείωση του τρανζίστορ στη γραμμή γείωσης. Συνδέστε τη δίοδο στο φράγμα πάνω από τον κινητήρα έτσι ώστε να μπλοκάρει τη ροή της ροής απευθείας στο τρανζίστορ.

Βηματικός κινητήρας:

Συνδέστε το βηματικό μοτέρ στην πλακέτα ελέγχου. Στην πλακέτα ελέγχου υπάρχουν στη μία πλευρά ακίδες για σύνδεση 5V και γείωσης. Οι άλλες ακίδες είναι καρφίτσες ελέγχου. Αυτές οι ακίδες ελέγχουν τους μαγνήτες στο εσωτερικό του κινητήρα, ώστε να μπορεί να γυρίζει. Συνδέστε αυτές τις ακίδες στο GPIO 12, 16, 20 και 21 στο Raspberry Pi.

HC-SR04 Υπερήχων:

Αυτός ο αισθητήρας μπορεί να μετρήσει αποστάσεις έως περίπου 4,5 μέτρα χρησιμοποιώντας ήχο.

Συνδέστε τον πείρο VCC στο 5V, τον πείρο σκανδάλης στο GPIO 25, τον πείρο ηχώ με αντίσταση 470 Ohm στο GPIO 24 και τη γείωση με αντίσταση 470 Ohm στη γείωση.

MPU6050:

Συνδέστε τον πείρο VCC στο 3V3, τη γείωση στη γείωση, scl στο scl στο Pi και το sda στο sda στο Pi. Για αυτόν τον αισθητήρα χρησιμοποιώ I2C για να τον ελέγξω. Μπορείτε να διαβάσετε περισσότερα για αυτό εδώ. Εδώ είναι μια βασική εξήγηση: Το Pi είναι ο κύριος και το MPU6050 είναι ο σκλάβος. Μέσω της γραμμής scl το Pi ελέγχει τους χρονισμούς και η γραμμή sda χρησιμοποιείται για την αποστολή δεδομένων από τον κύριο στον σκλάβο ή από τον σκλάβο στον κύριο. Μόνο ο κύριος μπορεί να ξεκινήσει τη μεταφορά δεδομένων.

Αντίσταση εξαρτώμενη από το φως:

Για να λάβω σωστές ενδείξεις από το LDR χρησιμοποιώ ένα τσιπ MCP3008. Αυτό διασφαλίζει ότι οι ενδείξεις από το ldr είναι σταθερές και σωστές μετατρέπονται από αναλογικά σε ψηφιακά σήματα.

Συνδέστε το 3V3 στη μία πλευρά του ldr με αντίσταση 10K Ohm μεταξύ του. Μεταξύ του ldr και της αντίστασης συνδέστε ένα καλώδιο στο κανάλι 0 του MCP3008. Στη συνέχεια, συνδέστε την άλλη πλευρά του ldr στο έδαφος.

Οθόνη LCD:

Μπορείτε να χρησιμοποιήσετε την οθόνη LCD χωρίς PCF8574, αλλά επειδή οι ακίδες GPIO στο Pi είναι περιορισμένες, χρησιμοποιώ ένα PCF8574 για να αποθηκεύσετε μερικές καρφίτσες GPIO. Μπορείτε επίσης να χρησιμοποιήσετε έναν καταχωρητή αλλαγής αλλά προτιμώ ένα PCF8574. Μπορείτε να ελέγξετε το PCF8574 με το πρωτόκολλο SMbus, αλλά έγραψα τη δική μου τάξη για να τον ελέγξω. Το ποτενσιόμετρο ελέγχει την αντίθεση.

Καρφίτσες οθόνης LCD:

  • VSS στη γείωση
  • VDD έως 5V
  • V0 στη μεταβλητή ακίδα του ποτενσιόμετρου
  • RS σε GPIO 13
  • R/W στη γείωση επειδή γράφω μόνο στην οθόνη και δεν διαβάζω
  • E έως GPIO 19
  • DB0 έως P0 του PCF
  • DB1 έως P1
  • DB2 έως P2
  • DB3 έως P3
  • DB4 έως P4
  • DB5 έως P5
  • DB6 έως P6
  • DB7 έως P7
  • LED+ έως 5V
  • LED- στη γείωση

PCF8574 ακίδες:

  • A0 στο έδαφος
  • Α1 στο έδαφος
  • Α2 στο έδαφος
  • Από το έδαφος στο έδαφος
  • VCC έως 5V
  • SDA έως GPIO 27
  • SCL έως GPIO 22 με αντίσταση 330 Ohm

Μπορεί να μην έχετε LED+ και LED- ανάλογα με τον τύπο οθόνης που έχετε. LED+ και LED- είναι για τον οπίσθιο φωτισμό.

Συνδέστε τη θετική πλευρά του ποτενσιόμετρου στα 5V και το έδαφος στη γείωση.

Βεβαιωθείτε ότι χρησιμοποιείτε αντιστάσεις Pull-up!

Βήμα 4: Κωδικός στο Github

Μπορείτε να βρείτε όλο τον απαραίτητο κωδικό στο Github μου.

Έργο φακέλου 1:

Αυτός ο φάκελος περιέχει όλο τον κωδικό για το backend. Στο φάκελο Τα γυαλιά είναι όλες οι κλάσεις για τον έλεγχο του υλικού.

Τα αποθετήρια φακέλων περιέχουν 2 αρχεία: Database.py και DataRepository.py. Το Database.py διατηρεί τη σύνδεση με τη βάση δεδομένων και χειρίζεται ερωτήματα. Το DataRepository.py περιέχει όλα τα ερωτήματα που απαιτούνται για τον ιστότοπο.

Το App.py είναι το κύριο αρχείο του backend. Αυτό το αρχείο ξεκινά αυτόματα κατά την εκκίνηση του Pi.

Το Config.py περιέχει μερικές ρυθμίσεις για σύνδεση με τη βάση δεδομένων. Βεβαιωθείτε ότι έχετε συμπληρώσει αυτά τα αρχεία με τις δικές σας πληροφορίες.

Μπορείτε να τοποθετήσετε αυτόν τον φάκελο οπουδήποτε στον αρχικό σας κατάλογο.

Html φακέλου:

Αυτός ο φάκελος περιέχει όλα τα αρχεία για τον ιστότοπο, το frontend.

  • Ο φάκελος περιέχει τα αρχεία για τη διάταξη του ιστότοπου.
  • Οι γραμματοσειρές περιέχουν τις γραμματοσειρές που χρησιμοποιούνται στον ιστότοπο.
  • Το Script περιέχει όλα τα αρχεία Javascript για να κάνει τον ιστότοπο δυναμικό

Αυτός ο φάκελος πρέπει να βρίσκεται στο φάκελο/var/www/html

Μπορείτε να αντιγράψετε ένα αρχείο ή φάκελο με αυτήν την εντολή:

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

Για να μεταβείτε στον τύπο ιστότοπου στο πρόγραμμα περιήγησής σας, η διεύθυνση IP που εμφανίζεται στην οθόνη LCD.

Βήμα 5: Κανονικοποιημένη δομή βάσης δεδομένων

Κανονικοποιημένη δομή βάσης δεδομένων
Κανονικοποιημένη δομή βάσης δεδομένων

Σε αυτό το βήμα θα εισαγάγουμε τη βάση δεδομένων.

  1. Συνδεθείτε στο Raspberry Pi σας με τον MySQL Workbench
  2. Κάντε κλικ στο διακομιστή -> Εισαγωγή δεδομένων
  3. Επιλέξτε Εισαγωγή αυτοτελούς αρχείου
  4. Στο φάκελο Βάση δεδομένων-εξαγωγή από το Github υπάρχει ένα αρχείο sql που ονομάζεται dump_project1.sql
  5. Περιηγηθείτε σε αυτό το αρχείο και κάντε κλικ στην έναρξη εισαγωγής

Αυτό είναι. Το Pi μπορεί τώρα να έχει πρόσβαση στη βάση δεδομένων εάν έχει τις σωστές πληροφορίες.

Βήμα 6: Θήκη για τον Διανομέα Καρτών

Θήκη για τον Διανομέα Καρτών
Θήκη για τον Διανομέα Καρτών
Θήκη για τον Διανομέα Καρτών
Θήκη για τον Διανομέα Καρτών
Θήκη για τον Διανομέα Καρτών
Θήκη για τον Διανομέα Καρτών

Σε αυτό το βήμα θα εξηγήσω τι χρησιμοποίησα για τη θήκη και πώς τα τοποθέτησα όλα.

Για τη θήκη χρησιμοποίησα 2 κουτιά ABS:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Οι τρύπες που έκανα στα κουτιά

Μια τρύπα για την οθόνη LCD, 3 οπές για τα καλώδια τροφοδοσίας, μία για τα καλώδια από το βηματικό μοτέρ, τον κινητήρα DC και τον αισθητήρα υπερήχων.

Στο μικρότερο κουτί έκανα μια τρύπα για τα καλώδια από τα εξαρτήματα και μια τρύπα για να περάσουν οι κάρτες. Στην κορυφή έκανα τη μεγαλύτερη τρύπα, ώστε να μπορείτε να τοποθετήσετε χαρτιά στη συσκευή.

Τοποθέτησα τον κινητήρα DC με βραχίονα και ταινία διπλής όψης. Έφτιαξα μια ξύλινη σανίδα για να στρώσω τα χαρτιά με μια τρύπα για να τραβήξει μια κάρτα ο τροχός.

Έχω επιλέξει για πλαστικό ABS επειδή είναι ελαφρύ, ώστε ο βηματικός κινητήρας να μπορεί να το γυρίσει εύκολα. Το ξύλο μπορεί να είναι πολύ βαρύ και ο βηματικός κινητήρας μπορεί να έχει προβλήματα με αυτό. Για να κόψω τις τρύπες χρησιμοποίησα ένα τρυπάνι με τρυπάνια σχεδιασμένο για μέταλλο και ένα Dremel. Το κόψιμο των μεγαλύτερων οπών χρειάστηκε πολύ περισσότερη δουλειά και ένα πριόνι θα ήταν καλύτερο.

Βήμα 7: Πρόγραμμα ως υπηρεσία

Είναι πραγματικά χρήσιμο να ξεκινήσει ο κώδικας μετά την εκκίνηση του Pi. Για αυτό θα κάνουμε μια υπηρεσία.

Δημιουργήστε ένα νέο αρχείο που ονομάζεται smartcard.service με την ακόλουθη εντολή:

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

Αυτό πρέπει να μπει στο αρχείο:

[Μονάδα]

Περιγραφή = Υποστήριξη έξυπνης κάρτας Μετά = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = κληρονομεί StandardError = κληρονομεί Επανεκκίνηση = πάντα User = pi [Εγκατάσταση] WantedBy = multi-user.target WorkingDirectory είναι η διαδρομή προς το φάκελο στον οποίο βρίσκεται το πρόγραμμα

Τώρα έχετε τη δική σας έξυπνη κάρτα!

Συνιστάται: