Inhaltsverzeichnis:

Automatischer Kartenverteiler - Gunook
Automatischer Kartenverteiler - Gunook

Video: Automatischer Kartenverteiler - Gunook

Video: Automatischer Kartenverteiler - Gunook
Video: Kartenmischgeräte 2024, November
Anonim
Automatischer Kartenverteiler
Automatischer Kartenverteiler

Als erstes Projekt habe ich einen Chipkartenverteiler gewählt, weil ich gerne Kartenspiele spiele. Am wenigsten mag ich das Austeilen von Karten. Sie müssen sich bei jedem Spiel merken, wie viele Karten jede Person bekommt. Das wird verwirrend, wenn man viele Kartenspiele kennt. Mein Projekt wird auch Menschen helfen, die Probleme mit der Kartenverteilung haben, wie ältere Menschen und Parkinson-Kranke.

Lieferungen

  • 1 Raspberry Pi (ich habe einen Raspberry Pi 4 verwendet)
  • SD-Karte (16 GB empfohlen)
  • 1 Outbread-Stück für Raspberry Pi (T-Stück)
  • 2 Steckbretter
  • 1 Netzteilmodul für Steckbrett, 5V und 3V3
  • 1 LCD-Anzeige
  • 1 Potentiometer
  • 1 MPU6050 (Beschleunigungsmesser und Gyroskop)
  • 1 NPN-Transistoren
  • 1 PCF8574N E/A-Erweiterung
  • 1 Schrittmotor
  • 1 ULN2003 Breakout-Board zur Steuerung des Schrittmotors
  • 1 Ultraschallsensor HC-SR04
  • 1 5V DC-Motoren
  • 1 Dioden
  • 6 470 Ohm Widerstände
  • 4 10K Ohm Widerstände
  • Elektrisches Kabel, um alles zu verbinden

Nützlich bei der Herstellung:

  • Lötkolben
  • Lot
  • Dremel oder Stichsäge (etwas zum Schneiden von Holz und ABS-Kunststoff)

Software:

  • Kitt
  • MySQL-Workbench
  • Win32 Disk Imager
  • Code-Editor (ich empfehle Visual Studio Code)
  • WinSCP
  • Raspbian-Bild

Schritt 1: Vorbereitung des Rasperry Pi

Zuerst müssen wir den Raspberry Pi vorbereiten, bevor wir etwas anderes tun. Da auf dem Pi alles läuft, ist dies eines der wichtigsten Teile des Kartenverteilers.

Installation:

Laden Sie das Raspbian-Image von https://www.raspberrypi.org/downloads/raspberry-pi-os/ herunter.

  1. Laden Sie die ZIP-Datei herunter
  2. Entpacken Sie die ZIP-Datei, wo Sie sie leicht finden können
  3. Öffnen Sie Win32 Disk Imager und wählen Sie das extrahierte Image aus
  4. Wählen Sie die SD-Karte im Dropdown-Menü aus und klicken Sie auf Schreiben
  5. Sobald der Schreibvorgang abgeschlossen ist, können Sie Win32 Disk Imager schließen

Jetzt müssen wir noch ein paar Dinge tun, bevor wir uns mit dem Pi. verbinden können

  1. Navigieren Sie zum Boot-Ordner auf der SD-Karte
  2. Öffnen Sie die Datei cmdline.txt
  3. Fügen Sie 'ip=169.254.10.1' am Ende der Zeile mit einem Leerzeichen getrennt hinzu
  4. Datei speichern und beenden
  5. Erstellen Sie im selben Verzeichnis eine Datei namens ssh und entfernen Sie die Erweiterung (dies aktiviert ssh beim ersten Booten, damit wir uns mit dem Pi verbinden können)
  6. Werfen Sie die SD-Karte sicher aus und legen Sie sie in das Pi. ein

Jetzt können wir uns mit dem Pi verbinden:

  1. Schnappen Sie sich ein Ethernet-Kabel und stecken Sie ein Ende in den Pi und das andere Ende in Ihren Computer
  2. Offener Kitt
  3. Geben Sie 169.254.10.1 in das Feld Hostname ein
  4. Stellen Sie sicher, dass SSH ausgewählt ist und der Port 22. ist
  5. Klicken Sie auf Öffnen
  6. Wenn Sie eine Warnung erhalten, können Sie einfach fortfahren und sie ignorieren
  7. Der Benutzername ist pi und das Passwort ist himbeer

Konfiguration und Installation der Software:

Öffnen Sie raspi-config mit folgendem Befehl:

sudo raspi-config

Wählen Sie die 5. Option: Schnittstellenoptionen

SPI und I2C aktivieren

Deaktivieren Sie die folgenden Dinge in der 3. Option: Boot-Optionen:

  • Begrüßungsbildschirm
  • Wählen Sie cli für den Start und nicht den Desktop

WLAN-Einrichtung:

Wifi ist nützlich, um einfach auf die Website zu navigieren. Stellen Sie sicher, dass Sie Ihre WLAN-Anmeldeinformationen in der Nähe haben.

Um WLAN einzurichten, benötigen wir ein paar Dinge:

Fügen Sie Ihr WLAN mit diesem Befehl hinzu und ändern Sie SSID und PASSWORT in Ihre Informationen:

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

Führen Sie diesen Befehl aus, um Ihr WLAN neu zu konfigurieren:

sudo wpa_cli

Wählen Sie die richtige Schnittstelle aus:

Schnittstelle wlan0

Konfigurieren Sie die Schnittstelle neu:

neu konfigurieren

Überprüfen Sie mit diesem Befehl, ob die Neukonfiguration erfolgreich war:

ip a

Wenn Sie eine IP-Adresse auf der wlan0-Schnittstelle sehen, ist alles eingerichtet.

Aktualisieren des Betriebssystems

Aktualisieren Sie das Betriebssystem mit diesen 2 Befehlen:

sudo apt-Update

sudo apt Voll-Upgrade

Einrichtung von MariaDB:

Apache-Webserver installieren:

sudo apt install apache2 -y

Installation des MariaDB-Servers:

sudo apt install mariadb-server -y

Jetzt müssen wir neu starten:

sudo neu starten

Es wird empfohlen, die MariaDB-Installation zu sichern. Sie können dies tun, indem Sie diesen Befehl ausführen:

sudo mysql_secure_installation

Zuerst werden Sie nach dem aktuellen Root-Passwort gefragt, aber die Standardinstallation hat keins, also drücken Sie die Eingabetaste.

Als nächstes werden Sie gefragt, ob Sie ein Root-Passwort festlegen möchten, geben Sie y ein. Merken Sie sich das Passwort!

  • Geben Sie y ein, um anonyme Benutzer zu entfernen
  • Geben Sie y ein, um die Root-Anmeldung aus der Ferne zu deaktivieren
  • Geben Sie y ein, um Testdatenbanken zu entfernen und darauf zuzugreifen
  • Geben Sie y ein, um die Privilegien neu zu laden

Ihre MariaDB-Installation sollte sicher sein!

Jetzt können wir einen neuen Benutzer erstellen:

Rufen Sie die MySQL-Shell mit diesem Befehl auf:

sudo mysql

Erstellen Sie einen Benutzer mit dem Benutzernamen mysql und einem Passwort (your_password) die folgenden Befehle:

Erstellen Sie den Benutzer mysql@localhost, der durch 'your_password' identifiziert wird;

erteile alle Privilegien auf *.* an mysql@localhost;

Flush-Privilegien;

Beenden Sie die MySQL-Shell mit diesem Befehl:

Ausfahrt;

Python-Pakete:

Python sollte bereits installiert sein, es sei denn, Sie haben die Lite-Version gewählt:

sudo apt installieren python3-pip

Wir brauchen eine gute Menge Python-Pakete, Sie können sie alle mit dem folgenden Befehl installieren:

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

Jetzt müssen wir noch einmal neu starten

sudo neu starten

Schritt 2: Visual Studio Code und MySQL Workbench einrichten

Verbinden mit dem Pi mit MySQL Workbench:

Öffnen Sie die MySQL-Workbench

Stellen Sie eine neue Verbindung zum Pi mit den folgenden Informationen her:

  • Verbindungsname: Raspi
  • Verbindungsmethode: Standard TCP/IP über SSH
  • SSH Hostname: IP-Adresse des Pi

Sie erhalten die IP-Adresse mit diesem Befehl:

ip a

  • SSH-Benutzername: pi
  • MySQL-Hostname: 127.0.0.1
  • MySQL-Server-Port: 3306
  • Benutzername: mysql

Klicken Sie auf OK und geben Sie das Passwort für den Benutzer pi ein und geben Sie dann das Passwort für den Benutzer mysql ein.

Einrichten von Visual Studio-Code:

Visual Studio-Code öffnen

Installieren Sie diese 2 Erweiterungen:

  • Fernbedienung - SSH
  • Remote - SSH: Konfigurationsdateien bearbeiten

Drücken Sie in Visual Studio Code F1 und geben Sie ssh. ein

Wählen Sie Remote SSH: Neuen SSH-Host hinzufügen

Geben Sie ssh pi@IP-Adresse ein

Drücken Sie im nächsten Schritt die Eingabetaste

Die Verbindung zum Pi wird nun hergestellt. Sie können eine Verbindung zum Pi herstellen, indem Sie F1 drücken und mit Remote-Host verbinden auswählen.

Geben Sie das Kennwort ein, damit Visual Studio Code Zugriff auf das Pi hat.

Eine weitere Sache: Installieren Sie die Python-Erweiterung auf dem Remote-Computer, damit Sie Code problemlos ausführen und debuggen können.

Schritt 3: Fritzing-Diagramm

Fritzing-Diagramm
Fritzing-Diagramm
Fritzing-Diagramm
Fritzing-Diagramm
Fritzing-Diagramm
Fritzing-Diagramm

In diesem Schritt erkläre ich die Schaltung.

Die obigen Schaltpläne wurden mit Fritzing erstellt.

Gleichspannungs Motor:

Verbinden Sie GPIO 18 mit der Basis des Kollektors, dem mittleren Pin eines npn-Transistors. Verbinden Sie die Masse des Motors mit dem Kollektor des Transistors und die Leistung des Motors mit 5V. Verbinden Sie die Masse des Transistors mit der Masseleitung. Schließen Sie die Diode in der Barriere über den Motor an, damit der Strom nicht direkt zum Transistor fließt.

Schrittmotor:

Verbinden Sie den Schrittmotor mit der Steuerplatine. Auf der Steuerplatine befinden sich auf einer Seite Pins zum Verbinden von 5V und Masse. Die anderen Pins sind Steuerpins. Diese Stifte steuern die Magnete im Inneren des Motors, damit er sich drehen kann. Verbinden Sie diese Pins mit GPIO 12, 16, 20 und 21 auf dem Raspberry Pi.

HC-SR04 Ultraschall:

Dieser Sensor kann Entfernungen bis etwa 4,5 Meter mit Ton messen.

Verbinden Sie den VCC-Pin mit 5V, den Trigger-Pin mit GPIO 25, den Echo-Pin mit einem Widerstand von 470 Ohm mit GPIO 24 und die Masse mit einem Widerstand von 470 Ohm mit Masse.

MPU6050:

Verbinden Sie den VCC-Pin mit 3V3, die Masse mit Masse, scl mit dem scl auf dem Pi und den sda mit sda auf dem Pi. Für diesen Sensor verwende ich I2C, um ihn zu steuern. Hier können Sie mehr darüber lesen. Hier ist eine grundlegende Erklärung: Der Pi ist der Master und der MPU6050 ist der Slave. Über die scl-Leitung steuert der Pi die Timings und die sda-Leitung wird verwendet, um Daten vom Master zum Slave oder vom Slave zum Master zu senden. Nur der Master kann die Datenübertragung anstoßen.

Lichtabhängiger Widerstand:

Um korrekte Messwerte vom LDR zu erhalten, verwende ich einen MCP3008-Chip. Dies stellt sicher, dass die Messwerte vom ldr stabil sind und korrekt von analogen in digitale Signale umgewandelt werden.

Schließen Sie 3V3 an eine Seite des ldr mit einem Widerstand von 10K Ohm dazwischen an. Schließen Sie zwischen dem ldr und dem Widerstand einen Draht an den Kanal 0 des MCP3008 an. Verbinden Sie dann die andere Seite des ldr mit der Masse.

LCD Bildschirm:

Sie können das LCD-Display ohne PCF8574 verwenden, aber da die GPIO-Pins auf dem Pi begrenzt sind, verwende ich einen PCF8574, um einige GPIO-Pins zu sparen. Sie können auch ein Schieberegister verwenden, aber ich bevorzuge einen PCF8574. Sie können den PCF8574 mit dem SMbus-Protokoll steuern, aber ich habe meine eigene Klasse geschrieben, um ihn zu steuern. Das Potentiometer steuert den Kontrast.

LCD-Anzeigestifte:

  • VSS an Masse
  • VDD bis 5V
  • V0 zum variablen Pin des Potentiometers
  • RS zu GPIO 13
  • R/W auf Masse weil ich nur auf das Display schreibe und nicht lese
  • E bis GPIO 19
  • DB0 bis P0 des PCF
  • DB1 bis P1
  • DB2 zu P2
  • DB3 zu P3
  • DB4 zu P4
  • DB5 bis P5
  • DB6 bis P6
  • DB7 bis P7
  • LED+ bis 5V
  • LED- an Masse

PCF8574-Pins:

  • A0 gegen Masse
  • A1 gegen Masse
  • A2 gegen Masse
  • Masse zu Masse
  • VCC bis 5V
  • SDA zu GPIO 27
  • SCL zu GPIO 22 mit Widerstand von 330 Ohm

Je nachdem, welche Art von Display Sie haben, haben Sie möglicherweise keine LED+ und LED-. LED+ und LED- ist für die Hintergrundbeleuchtung.

Verbinden Sie die positive Seite des Potentiometers mit 5V und die Masse mit Masse.

Stellen Sie sicher, dass Sie Pull-up-Widerstände verwenden!

Schritt 4: Code auf Github

Auf meinem Github findest du den nötigen Code.

Ordner Projekt1:

Dieser Ordner enthält den gesamten Code für das Backend. Im Ordner Klassen befinden sich alle Klassen zur Steuerung der Hardware.

Der Ordner Repositorys enthält 2 Dateien: Database.py und DataRepository.py. Database.py hält die Verbindung zur Datenbank aufrecht und verarbeitet Abfragen. DataRepository.py enthält alle für die Site benötigten Abfragen.

App.py ist die Hauptdatei des Backends. Diese Datei startet automatisch, wenn der Pi bootet.

Config.py enthält einige Einstellungen, um eine Verbindung zur Datenbank herzustellen. Stellen Sie sicher, dass Sie diese Dateien mit Ihren eigenen Informationen ausfüllen.

Sie können diesen Ordner an einer beliebigen Stelle in Ihrem Home-Verzeichnis ablegen.

Ordner-HTML:

Dieser Ordner enthält alle Dateien für die Site, das Frontend.

  • Der Ordner enthält die Dateien für das Layout der Site.
  • Fonts enthält die auf der Site verwendeten Schriftarten.
  • Das Skript enthält alle Javascript-Dateien, um die Site dynamisch zu machen

Dieser Ordner muss sich im Ordner /var/www/html befinden

Mit diesem Befehl können Sie eine Datei oder einen Ordner kopieren:

sudo mv /Pfad/zum/aktuellen/Verzeichnis /Pfad/zum/Ziel/Verzeichnis

Um zur Site zu navigieren, geben Sie in Ihrem Browser die IP-Adresse ein, die auf dem LCD-Display angezeigt wird.

Schritt 5: Normalisierte Datenbankstruktur

Normalisierte Datenbankstruktur
Normalisierte Datenbankstruktur

In diesem Schritt werden wir die Datenbank importieren.

  1. Verbinden Sie sich mit Ihrem Raspberry Pi mit MySQL Workbench
  2. Klicken Sie auf Server -> Datenimport
  3. Wählen Sie Eigenständige Datei importieren
  4. Im Ordner Database-export from Github befindet sich eine SQL-Datei namens dump_project1.sql
  5. Navigieren Sie zu dieser Datei und klicken Sie auf Import starten

Das ist es. Der Pi kann jetzt auf die Datenbank zugreifen, wenn er die richtigen Informationen hat.

Schritt 6: Etui für den Kartenverteiler

Etui für den Kartenverteiler
Etui für den Kartenverteiler
Etui für den Kartenverteiler
Etui für den Kartenverteiler
Etui für den Kartenverteiler
Etui für den Kartenverteiler

In diesem Schritt werde ich erklären, was ich für das Gehäuse verwendet habe und wie ich alles montiert habe.

Für den Fall habe ich 2 ABS-Boxen verwendet:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Die Löcher, die ich in die Kisten gemacht habe

Ein Loch für das LCD-Display, 3 Löcher für die Stromkabel, eines für die Drähte des Schrittmotors, des Gleichstrommotors und des Ultraschallsensors.

In der kleinsten Schachtel habe ich ein Loch für die Drähte von den Komponenten und ein Loch für die Karten gemacht. Oben habe ich das größte Loch gemacht, damit Sie Spielkarten in das Gerät legen können.

Ich habe den Gleichstrommotor mit einer Halterung und etwas doppelseitigem Klebeband montiert. Ich machte ein Holzbrett, um die Karten mit einem Loch für das Rad zu legen, um eine Karte zu schießen.

Ich habe mich für ABS-Kunststoff entschieden, weil es leicht ist und der Schrittmotor es leicht drehen kann. Holz kann sehr schwer sein und der Schrittmotor könnte damit Probleme haben. Um die Löcher zu schneiden, habe ich einen Bohrer mit Bohrern für Metall und einen Dremel verwendet. Das Schneiden der größeren Löcher erforderte viel mehr Arbeit und eine Stichsäge wäre besser.

Schritt 7: Programm als Service

Es ist wirklich nützlich, den Code nach dem Booten des Pis starten zu lassen. Dafür werden wir einen Service machen.

Erstellen Sie mit dem folgenden Befehl eine neue Datei namens smartcard.service:

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

Das muss in die Datei:

[Einheit]

Description=Smartcard-Backend After=network.target [Service] ExecStart=/usr/bin/python3 -u app.py WorkingDirectory=/home/pi/project1 StandardOutput=inherit StandardError=inherit Restart=always User=pi [Install] WantedBy =multi-user.target WorkingDirectory ist der Pfad zu dem Ordner, in dem sich das Programm befindet

Jetzt haben Sie Ihre eigene Smart Card!

Empfohlen: