Table des matières:

Trieur de clés : 6 étapes
Trieur de clés : 6 étapes

Vidéo: Trieur de clés : 6 étapes

Vidéo: Trieur de clés : 6 étapes
Vidéo: Le Plus Grand Point Noir Du Monde ?😱 2024, Novembre
Anonim
Trieur de clés
Trieur de clés
Trieur de clés
Trieur de clés

J'étudie actuellement NMCT à Howest. Pour notre dernier semestre, nous devions faire un projet. J'ai donc fait un Keysorter.

Qu'est ce que ça fait?

Nous avons beaucoup de clés de voiture à la maison et elles se ressemblent toutes. J'ai donc fait un Keysorter pour résoudre ce problème.

Il doit scanner une clé via RFID et lui donner une place dans la boîte. Si je scanne à nouveau la même clé, la place précédemment attribuée s'affichera. Il y a aussi un bouton pour montrer la dernière voiture lavée.

Cela fonctionnera toujours sur un Raspberry Pi qui a également la possibilité d'ajouter une page Web via Flask.

Sur la page, je devrais pouvoir regarder toutes les clés, ajouter un nom à une clé et supprimer une clé.

Étape 1: Étape 1: De quoi ai-je besoin ?

Étape 1: De quoi aurai-je besoin ?
Étape 1: De quoi aurai-je besoin ?
Étape 1: De quoi aurai-je besoin ?
Étape 1: De quoi aurai-je besoin ?

J'ai commencé par faire une liste des composants dont j'aurai besoin pour faire fonctionner cette chose.

Composants:

  • Tarte aux framboises
  • 2 x registre à décalage (74hc595)
  • 3 boutons
  • 9 LED vertes
  • Scanner RFID (CRFM522)
  • 12 x résistance 220 ohms

Ensuite, j'ai mis tout cela dans mon schéma fritzing.

Une fois cela fait, je l'ai fait dans la vraie vie.

Étape 2: Étape 2: Créer un schéma de base de données

Étape 2: faire un schéma de base de données
Étape 2: faire un schéma de base de données

Pour enregistrer toutes mes données, j'ai dû créer une base de données pouvant fonctionner sur mon Pi.

Je l'ai fait dans Mysql.

Voiture de table:

  • Identifiant de la voiture
  • Identifiant d'utilisateur
  • Marque (marque de voiture)
  • Taper
  • Dernier lavé
  • Clé
  • ID_RFID

Étape 3: Étape 3: Codage

Étape 3: Codage
Étape 3: Codage

Quand tout cela était prêt, j'ai pu commencer à coder.

J'ai commencé par faire le code de mon capteur en Python 3.5.

Pour télécharger le code cliquez ici.

Utilisez le lien pour cloner le projet.

Étape 4: Étape 4: Mettre le code Al sur mon Raspberry Pi

Installation de paquets

J'ai d'abord installé tous les packages dont j'avais besoin pour que cela fonctionne.

moi@mon-rpi:~ $ sudo apt update

moi@my-rpi:~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Environnement virtuel

me@my-rpi:~ $ python3 -m pip install --upgrade pip setuptools wheel virtualenvme@my-rpi:~ $ mkdir project1 && cd project1 me@my-rpi:~/project1 $ python3 -m venv --system- site-packages env me@my-rpi:~/project1 $ source env/bin/activate (env)me@my-rpi:~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Téléchargez le projet sur votre Pi en utilisant pycharm

Ouvrez Pycharm et accédez à VCS > Importer à partir du contrôle de version > Github et clonez mon fichier github.

Placez la configuration de déploiement dans le répertoire que vous venez de créer. (/home/moi/projet1). Appuyez sur postulez !

Allez dans les paramètres de l'interpréteur et choisissez l'environnement virtuel que vous venez de créer. (/home/moi/project1/env/bin/pyhon)

Vérifiez si le mappage de chemin est correct.

Vous pouvez maintenant télécharger le code dans votre répertoire à l'aide de Pycharm.

Base de données

Vérifiez si la base de données est en cours d'exécution. Vous devriez obtenir quelque chose comme ceci:

me@my-rpi:~ $ sudo systemctl status mysql● mariadb.service - Serveur de base de données MariaDB Chargé: chargé (/lib/systemd/system/mariadb.service; activé; préréglage du fournisseur: activé) Actif: actif (en cours d'exécution) depuis Sun 2018-06-03 09:41:18 CEST; Il y a 1 jour 4h PID principal: 781 (mysqld) Statut: "Taking your SQL requests now…" Tâches: 28 (limit: 4915) CGroup: /system.slice/mariadb.service └─781 /usr/sbin/mysqld

03 juin 09:41:13 my-rpi systemd[1]: Démarrage du serveur de base de données MariaDB… 03 juin 09:41:15 my-rpi mysqld[781]: 2018-06-03 9:41:15 4144859136 [Note] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03 juin 09:41:18 my-rpi systemd[1]: démarrage du serveur de base de données MariaDB.

moi@mon-rpi:~ $ ss -lt | grep mysql ÉCOUTEZ 0 80 127.0.0.1:mysql *:*

Créer des utilisateurs et ajouter la base de données

moi@mon-rpi:~ $ sudo mariadb

une fois que vous êtes dans la base de données, faites-le.

CRÉER UN UTILISATEUR 'project1-admin'@'localhost' IDENTIFIÉ PAR 'adminpassword';CRÉER UN UTILISATEUR 'project1-web'@'localhost' IDENTIFIÉ PAR 'webpassword'; CRÉER UN UTILISATEUR 'project1-sensor'@'localhost' IDENTIFIÉ PAR 'sensorpassword';

CRÉER une BASE DE DONNÉES projet1;

ACCORDER TOUS LES PRIVILÈGES SUR project1.* à 'project1-admin'@'localhost' AVEC GRANT OPTION; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; PRIVILÈGES DE FLASH;

CREATE TABLE `user` (`idUser` int(11) NOT NULL, `Password` varchar(45) DEFAULT NULL, PRIMARY KEY (`idUser`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `car` (`idCar` int(11) NOT NULL AUTO_INCREMENT, `idUser` int(11) NOT NULL, `Brand` varchar(45) DEFAULT NULL, `Type` varchar(45) DEFAULT NULL, `LastWashed` datetime DEFAULT NULL, `RFID_Number` varchar(15) DEFAULT NULL, `Key` varchar(5) DEFAULT NULL, PRIMARY KEY (`idCar`, `idUser`), KEY `fk_Car_User1_idx` (`idUser`), CONTRAINTE `fk_Car FOREIGN KEY (`idUser`) REFERENCES `user` (`idUser`) ON DELETE AUCUNE ACTION A LA MISE A JOUR AUCUNE ACTION) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

Connectez votre base de données à Pycharm

Cliquez sur l'onglet base de données sur le côté droit. Si vous n'avez pas d'onglet ouvert, procédez comme suit: Affichage > Fenêtres d'outils > Base de données.

Cliquez sur ajouter une connexion. Choisissez Source de données > MySQL (s'il y a un bouton de téléchargement de pilote, appuyez dessus.)

Accédez à SSH/SSL et vérifiez SSH. Remplissez vos identifiants Raspberry pi (hôte/utilisateur/mot de passe). Le port doit être 22 et n'oubliez pas de vérifier le mot de passe.

Retournez voir le général. L'hôte doit être localhost et la base de données doit être project1. Remplissez les informations d'identification de project1-admin et testez la connexion.

Si la connexion est OK, allez dans l'onglet Schemas et assurez-vous que project1 est coché.

Vérifiez si la base de données est correcte

me@my-rpi:~ $ echo 'afficher les tables;' | mysql project1 -t -u project1-admin -pEntrez le mot de passe: +---------------------------+ | Tables_dans_projet1 | +---------------------------+ | capteur | | utilisateurs | +---------------------------+

Fichiers de configuration

Dans le répertoire conf vous trouverez 4 fichiers. Vous devez remplacer les noms d'utilisateur par votre nom d'utilisateur.

Systemd

Pour tout démarrer, vous devez exécuter ces commandes.

me@my-rpi:~/project1 $ sudo cp conf/project1-*.service /etc/systemd/system/

me@my-rpi:~/project1 $ sudo systemctl daemon-reload me@my-rpi:~/project1 $ sudo systemctl start project1-* me@my-rpi:~/project1 $ sudo systemctl status project1-* ● project1- flask.service - Instance uWSGI pour servir l'interface Web du projet1 Chargé: chargé (/etc/systemd/system/project1-flask.service; désactivé; préréglage du fournisseur: activé) Actif: actif (en cours d'exécution) depuis le lundi 2018-06-04 13: 14h56 CEST; Il y a 1s PID principal: 6618 (uwsgi) Tâches: 6 (limite: 4915) CGroup: /system.slice/project1-flask.service ├─6618 /usr/bin/uwsgi --ini /home/me/project1/conf/ uwsgi-flask.ini 6620 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621 /usr/bin/uwsgi --ini /home/me/project1/ conf/uwsgi-flask.ini 6622 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623 /usr/bin/uwsgi --ini /home/me/ project1/conf/uwsgi-flask.ini └─6624 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini

04 juin 13:14:56 my-rpi uwsgi[6618]: mappé 383928 octets (374 Ko) pour 5 cœurs 04 juin 13:14:56 my-rpi uwsgi[6618]: *** MODE opérationnel: preforking ***

● project1-sensor.service - Service du capteur du projet 1 Chargé: chargé (/etc/systemd/system/project1-sensor.service; désactivé; préréglage du fournisseur: activé) Actif: actif (en cours d'exécution) depuis le lundi 2018-06-04 13: 16h49 CEST; Il y a 5s PID principal: 6826 (python) Tâches: 1 (limite: 4915) CGroup: /system.slice/project1-sensor.service └─6826 /home/me/project1/env/bin/python /home/me/project1 /sensor/sensor.py

04 juin 13:16:49 my-rpi systemd[1]: Démarrage du service de capteur du projet 1. Juin 04 13:16:49 my-rpi python[6826]: DEBUG:_main_:Saved sensor process_count=b'217\n' to database Juin 04 13:16:55 my-rpi python[6826]: DEBUG:_main_: Capteur enregistré process_count=b'218\n' dans la base de données

nginx

moi@mon-rpi:~/project1 $ ls -l /etc/nginx/sites-*

/etc/nginx/sites-available: total 4 -rw-r--r-- 1 root root 2416 12 juillet 2017 par défaut

/etc/nginx/sites-enabled: total 0 lrwxrwxrwx 1 root root 34 Jan 18 13:25 default -> /etc/nginx/sites-available/default

Pour que tout soit par défaut, exécutez ces commandes.

moi@my-rpi:~/project1 $ sudo cp conf/nginx /etc/nginx/sites-available/project1me@my-rpi:~/project1 $ sudo rm /etc/nginx/sites-enabled/default me@my- rpi:~/project1 $ sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1 me@my-rpi:~/project1 $ sudo systemctl restart nginx.service

Démarrage automatique

Assurons-nous que tout démarre automatiquement.

Allez dans le répertoire conf et exécutez ces dernières commandes et le tour est joué !

me@my-rpi:~/project1 $ sudo systemctl enable project1-*

Si vous redémarrez votre Pi, il devrait démarrer automatiquement.

Étape 5: Étape 5: Faire un logement

Étape 5: Faire un logement
Étape 5: Faire un logement
Étape 5: Faire un logement
Étape 5: Faire un logement
Étape 5: Faire un logement
Étape 5: Faire un logement
Étape 5: Faire un logement
Étape 5: Faire un logement

Recyclage

Pour faire mon logement, j'ai utilisé un vieux placard que ma mère jetterait.

base

J'ai scié 4 planches (34 cm x 26 cm). (c'est donc un cube de 34 x 34 x 26).

En bas, j'ai ajouté un mince morceau de bois comme fond.

Tableau avec led

Au milieu j'ai mis 2 petits morceaux de bois de chaque côté tous les deux à 9 cm du haut. Cela tient le tableau où les led seront assis.

Le tableau avec les leds est un petit tableau (32 cm x 32 cm).

J'ai percé 9 trous pour que les leds sortent.

division

J'ai fait la division avec le même matériau que le fond et la planche avec des leds.

4 pièces chacune avec une incision à 10,3 cm (9 cm x 31 cm). Maintenant, je suis capable de les assembler.

Boutons et lecteur RFID

J'ai fait un trou dans la base pour y mettre mon lecteur RFID et mes boutons. Pour le RFID, j'ai mis un mince morceau de carton devant pour le rendre plus propre.

Étape 6: Étape 6: Tout mettre dans le boîtier

Cela dépend de la façon dont vous voulez le faire. J'ai personnellement utilisé beaucoup de câbles sans soudure car je souhaite pouvoir réutiliser mon Raspberry Pi.

J'ai collé les LED en place et collé le lecteur RFID et les planches à pain sur le boîtier.

Et c'est comme ça qu'on fait un Keysorter !

Conseillé: