Distributeur automatique de cartes : 7 étapes
Distributeur automatique de cartes : 7 étapes
Anonim
Distributeur automatique de cartes
Distributeur automatique de cartes

J'ai choisi un distributeur de cartes à puce comme premier projet parce que j'aime jouer à un jeu de cartes. Ce que je n'aime pas le plus, c'est le jeu de cartes. Vous devez vous rappeler pour chaque jeu combien de cartes chaque personne obtient. Cela devient déroutant quand vous connaissez beaucoup de jeux de cartes. Mon projet aidera également les personnes qui ont des difficultés à distribuer des cartes comme les personnes âgées et les personnes atteintes de Parkinson.

Fournitures

  • 1 Raspberry Pi (j'ai utilisé un Raspberry Pi 4)
  • Carte SD (16 Go recommandés)
  • 1 pièce hors pain pour Raspberry Pi (pièce en T)
  • 2 planches à pain
  • 1 module d'alimentation pour breadboard, 5V et 3V3
  • 1 écran LCD
  • 1 potentiomètre
  • 1 MPU6050 (accéléromètre et gyroscope)
  • 1 transistor NPN
  • 1 extension E/S PCF8574N
  • 1 moteur pas à pas
  • 1 carte de dérivation ULN2003 pour contrôler le moteur pas à pas
  • 1 capteur à ultrasons HC-SR04
  • 1 moteurs 5V CC
  • 1 diode
  • 6 résistances de 470 Ohm
  • 4 résistances 10K Ohm
  • Fil électrique pour tout connecter

Utile à avoir en faisant:

  • Fer à souder
  • Souder
  • Dremel ou scie sauteuse (quelque chose pour couper du bois et du plastique ABS)

Logiciel:

  • Mastic
  • Atelier MySQL
  • Imageur de disque Win32
  • Éditeur de code (je recommande Visual Studio Code)
  • WinSCP
  • Image raspbian

Étape 1: Préparation du Rasperry Pi

Nous devons d'abord préparer le Raspberry Pi avant de faire quoi que ce soit d'autre. Parce que tout fonctionnera avec le Pi, c'est donc l'une des pièces les plus importantes du distributeur de cartes.

Installation:

Téléchargez l'image Raspbian à partir de

  1. Téléchargez le fichier ZIP
  2. Extrayez le fichier ZIP où vous pouvez le trouver facilement
  3. Ouvrez Win32 Disk Imager et sélectionnez l'image extraite
  4. Sélectionnez la carte SD dans le menu déroulant et cliquez sur écrire
  5. Une fois le processus d'écriture terminé, vous pouvez fermer Win32 Disk Imager

Maintenant, nous devons faire quelques autres choses avant de pouvoir nous connecter au Pi

  1. Accédez au dossier de démarrage sur la carte SD
  2. Ouvrez le fichier cmdline.txt
  3. Ajoutez 'ip=169.254.10.1' à la fin de la ligne séparée par un espace
  4. Enregistrer et quitter le fichier
  5. Créez dans le même répertoire un fichier appelé ssh et supprimez l'extension (cela activera ssh au premier démarrage afin que nous puissions nous connecter au Pi)
  6. Éjectez la carte SD en toute sécurité et placez-la dans le Pi

Nous pouvons maintenant nous connecter au Pi:

  1. Prenez un câble Ethernet et insérez une extrémité dans le Pi et l'autre extrémité dans votre ordinateur
  2. Mastic ouvert
  3. Entrez 169.254.10.1 dans le champ Nom d'hôte
  4. Assurez-vous que SSH est sélectionné et que le port est 22
  5. Cliquez sur ouvrir
  6. Si vous recevez un avertissement, vous pouvez simplement continuer et l'ignorer
  7. Le nom d'utilisateur est pi et le mot de passe est framboise

Paramétrage et installation du logiciel:

Ouvrez raspi-config avec la commande suivante:

sudo raspi-config

Sélectionnez la 5ème option: Options d'interfaçage

Activer SPI et I2C

Désactivez les éléments suivants dans la 3ème option: Options de démarrage:

  • Écran de démarrage
  • Choisissez cli pour le démarrage et non le bureau

Configuration Wi-Fi:

Le wifi est utile pour naviguer facilement sur le site. Assurez-vous d'avoir vos identifiants wifi à proximité.

Pour configurer le wifi, nous avons besoin de quelques éléments:

Ajoutez votre wifi en utilisant cette commande et changez SSID et PASSWORD en vos informations:

sudo wpa_passphrase "SSID" "MOT DE PASSE" >> /etc/wpa_supplicant/wpa_supplicant.conf

Exécutez cette commande pour reconfigurer votre wifi:

sudo wpa_cli

Sélectionnez la bonne interface:

interface wlan0

Reconfigurez l'interface:

reconfigurer

Vérifiez si la reconfiguration a réussi avec cette commande:

IP un

Si vous voyez une adresse IP sur l'interface wlan0, alors tout est configuré.

Mise à jour du système d'exploitation

Mettez à jour le système d'exploitation avec ces 2 commandes:

mise à jour sudo apt

sudo apt mise à niveau complète

Configuration de MariaDB:

Installation du serveur Web Apache:

sudo apt installer apache2 -y

Installation du serveur MariaDB:

sudo apt install mariadb-server -y

Maintenant, nous devons redémarrer:

redémarrage sudo

Il est recommandé de sécuriser l'installation de MariaDB. Vous pouvez le faire en exécutant cette commande:

sudo mysql_secure_installation

Tout d'abord, il vous sera demandé le mot de passe root actuel, mais l'installation par défaut n'en a pas, alors appuyez sur Entrée.

Ensuite, il vous sera demandé si vous souhaitez définir un mot de passe root, tapez y. Assurez-vous de vous souvenir du mot de passe !

  • Entrez y pour supprimer les utilisateurs anonymes
  • Entrez y pour désactiver la connexion root à distance
  • Entrez y pour supprimer les bases de données de test et y accéder
  • Entrez y pour recharger les privilèges

Votre installation MariaDB doit être sécurisée !

Nous pouvons maintenant créer un nouvel utilisateur:

Entrez dans le shell mysql avec cette commande:

sudo mysql

Créez un utilisateur avec le nom d'utilisateur mysql et un mot de passe (votre_mot de passe) les commandes suivantes:

créer l'utilisateur mysql@localhost identifié par 'votre_mot de passe';

accordez tous les privilèges sur *.* à mysql@localhost;

PRIVILÈGES DE FLASH;

Quittez le shell mysql avec cette commande:

sortir;

Paquets Python:

Python devrait déjà être installé sauf si vous avez choisi la version Lite:

sudo apt installer python3-pip

Nous avons besoin d'une bonne quantité de packages Python, vous pouvez tous les installer avec la commande suivante:

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

Maintenant, nous devons redémarrer une fois de plus

redémarrage sudo

Étape 2: Configuration du code Visual Studio et de MySQL Workbench

Connexion au Pi avec MySQL Workbench:

Ouvrir MySQL Workbench

Établissez une nouvelle connexion au Pi avec les informations suivantes:

  • Nom de la connexion: Raspi
  • Méthode de connexion: TCP/IP standard sur SSH
  • Nom d'hôte SSH: adresse IP du Pi

Vous pouvez obtenir l'adresse IP avec cette commande:

IP un

  • Nom d'utilisateur SSH: pi
  • Nom d'hôte MySQL: 127.0.0.1
  • Port du serveur MySQL: 3306
  • Nom d'utilisateur: mysql

Cliquez sur ok et entrez le mot de passe de l'utilisateur pi, puis entrez le mot de passe de l'utilisateur mysql.

Configuration du code Visual Studio:

Ouvrir le code Visual Studio

Installez ces 2 extensions:

  • À distance - SSH
  • À distance - SSH: édition des fichiers de configuration

Appuyez sur Visual Studio Code F1 et tapez ssh

Choisissez SSH distant: ajouter un nouvel hôte SSH

Remplissez ssh pi@IP-address

À l'étape suivante, appuyez sur Entrée

La connexion est maintenant établie avec le Pi. Vous pouvez vous connecter au Pi en appuyant sur F1 et en sélectionnant se connecter à l'hôte distant.

Entrez le mot de passe pour que Visual Studio Code ait accès au Pi.

Une dernière chose: installez l'extension Python sur la machine distante afin de pouvoir facilement exécuter et déboguer le code.

Étape 3: Diagramme de frittage

Diagramme de frittage
Diagramme de frittage
Diagramme de frittage
Diagramme de frittage
Diagramme de frittage
Diagramme de frittage

Dans cette étape, je vais expliquer le circuit.

Les schémas ci-dessus sont réalisés avec Fritzing.

Docteur moteur:

Connectez GPIO 18 à la base du collecteur, la broche du milieu sur un transistor npn. Connectez la masse du moteur au collecteur du transistor et la puissance du moteur à 5V. Connectez la masse du transistor à la ligne de masse. Connectez la diode en barrière sur le moteur afin qu'elle empêche le courant de s'écouler directement vers le transistor.

Moteur pas à pas:

Connectez le moteur pas à pas à la carte de commande. Sur le tableau de commande, il y a sur un côté des broches pour connecter 5V et la terre. Les autres broches sont des broches de contrôle. Ces broches contrôlent les aimants à l'intérieur du moteur afin qu'il puisse tourner. Connectez ces broches aux GPIO 12, 16, 20 et 21 du Raspberry Pi.

Ultrasons HC-SR04:

Ce capteur peut mesurer des distances jusqu'à environ 4,5 mètres en utilisant le son.

Connectez la broche VCC au 5V, la broche de déclenchement au GPIO 25, la broche d'écho avec une résistance de 470 Ohm au GPIO 24 et la terre avec une résistance de 470 Ohm à la terre.

MPU6050:

Connectez la broche VCC à 3V3, la masse à la masse, le scl au scl sur le Pi et le sda au sda sur le Pi. Pour ce capteur, j'utilise I2C pour le contrôler. Vous pouvez en savoir plus à ce sujet ici. Voici une explication de base: le Pi est le maître et le MPU6050 est l'esclave. Grâce à la ligne scl, le Pi contrôle les horaires et la ligne sda est utilisée pour envoyer des données du maître à l'esclave ou de l'esclave au maître. Seul le maître peut lancer le transfert de données.

Résistance dépendante de la lumière:

Pour obtenir des lectures correctes du LDR, j'utilise une puce MCP3008. Cela garantit que les lectures du ldr sont stables et correctes converties des signaux analogiques aux signaux numériques.

Connectez 3V3 à un côté du ldr avec une résistance de 10K Ohm entre eux. Entre le ldr et la résistance connectez un fil au canal 0 du MCP3008. Ensuite, connectez l'autre côté du ldr au sol.

Affichage LCD:

Vous pouvez utiliser l'écran LCD sans PCF8574, mais comme les broches GPIO du Pi sont limitées, j'utilise un PCF8574 pour enregistrer certaines broches GPIO. Vous pouvez également utiliser un registre à décalage mais je préfère un PCF8574. Vous pouvez contrôler le PCF8574 avec le protocole SMbus mais j'ai écrit ma propre classe pour le contrôler. Le potentiomètre contrôle le contraste.

Broches d'affichage LCD:

  • VSS à la terre
  • VDD à 5V
  • V0 à la broche variable du potentiomètre
  • RS à GPIO 13
  • R/W à la masse car j'écris uniquement sur l'écran et ne lis pas
  • E à GPIO 19
  • DB0 à P0 du PCF
  • DB1 à P1
  • DB2 à P2
  • DB3 à P3
  • DB4 à P4
  • DB5 à P5
  • DB6 à P6
  • DB7 à P7
  • LED+ à 5V
  • LED à la terre

Broches PCF8574:

  • A0 à la terre
  • A1 à la terre
  • A2 au sol
  • Terre à terre
  • VCC à 5V
  • SDA vers GPIO 27
  • SCL vers GPIO 22 avec résistance de 330 Ohm

Il se peut que vous n'ayez pas de LED+ et LED- selon le type d'affichage que vous avez. LED+ et LED- sont pour le rétroéclairage.

Connectez le côté positif du potentiomètre à 5V et la terre à la terre.

Assurez-vous d'utiliser des résistances Pull-up !

Étape 4: Coder sur Github

Vous pouvez trouver tout le code nécessaire sur mon Github.

Dossier projet1:

Ce dossier contient tout le code du backend. Dans le dossier Classes se trouvent toutes les classes pour contrôler le matériel.

Les référentiels de dossiers contiennent 2 fichiers: Database.py et DataRepository.py. Database.py maintient la connexion à la base de données et gère les requêtes. DataRepository.py contient toutes les requêtes nécessaires pour le site.

App.py est le fichier principal du backend. Ce fichier démarre automatiquement au démarrage du Pi.

Config.py contient quelques paramètres pour se connecter à la base de données. Assurez-vous de remplir ces fichiers avec vos propres informations.

Vous pouvez placer ce dossier n'importe où dans votre répertoire personnel.

Dossier html:

Ce dossier contient tous les fichiers du site, le frontend.

  • Le dossier contient les fichiers pour la mise en page du site.
  • Polices contient les polices utilisées sur le site.
  • Script contient tous les fichiers Javascript pour rendre le site dynamique

Ce dossier doit être dans le dossier /var/www/html

Vous pouvez copier un fichier ou un dossier avec cette commande:

sudo mv /chemin/vers/répertoire/actuel /chemin/vers/destination/répertoire

Pour accéder au site, tapez dans votre navigateur l'adresse IP affichée sur l'écran LCD.

Étape 5: Structure de base de données normalisée

Structure de base de données normalisée
Structure de base de données normalisée

Dans cette étape, nous allons importer la base de données.

  1. Connectez-vous à votre Raspberry Pi avec MySQL Workbench
  2. Cliquez sur Serveur -> Importation de données
  3. Sélectionnez Importer un fichier autonome
  4. Dans le dossier Database-export de Github, il y a un fichier sql appelé dump_project1.sql
  5. Accédez à ce fichier et cliquez sur démarrer l'importation

C'est ça. Le Pi peut désormais accéder à la base de données s'il dispose des informations correctes.

Étape 6: Cas pour le distributeur de cartes

Étui pour le distributeur de cartes
Étui pour le distributeur de cartes
Étui pour le distributeur de cartes
Étui pour le distributeur de cartes
Étui pour le distributeur de cartes
Étui pour le distributeur de cartes

Dans cette étape, je vais expliquer ce que j'ai utilisé pour le boîtier et comment j'ai tout monté.

Pour le cas j'ai utilisé 2 boitiers ABS:

- 265x185x95mm

- 171x121x80mm

Les trous que j'ai fait dans les boîtes

Un trou pour l'écran LCD, 3 trous pour les câbles d'alimentation, un pour les fils du moteur pas à pas, le moteur à courant continu et le capteur à ultrasons.

Dans la plus petite boîte, j'ai fait un trou pour les fils des composants et un trou pour le passage des cartes. En haut, j'ai fait le plus grand trou pour que vous puissiez placer des cartes à jouer dans l'appareil.

J'ai monté le moteur à courant continu avec un support et du ruban adhésif double face. J'ai fait une planche en bois pour poser les cartes avec un trou pour la roue pour tirer une carte.

J'ai choisi le plastique ABS car il est léger et le moteur pas à pas peut le faire tourner facilement. Le bois peut être très lourd et le moteur pas à pas pourrait avoir des problèmes avec cela. Pour percer les trous, j'ai utilisé une perceuse avec des forets conçus pour le métal et un Dremel. Couper les trous les plus gros demandait beaucoup plus de travail et une scie sauteuse serait préférable.

Étape 7: programmer en tant que service

Il est vraiment utile que le code démarre après le démarrage du Pi. Pour cela nous allons rendre un service.

Créez un nouveau fichier appelé smartcard.service avec la commande suivante:

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

Cela doit aller dans le fichier:

[Unité]

Description=Backend de la carte à puce 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-utilisateur.cible WorkingDirectory est le chemin d'accès au dossier où se trouve le programme

Vous avez maintenant votre propre carte à puce !