Contrôler l'accès d'Arduino YÚN avec MySQL, PHP5 et Python : 11 étapes (avec images)
Contrôler l'accès d'Arduino YÚN avec MySQL, PHP5 et Python : 11 étapes (avec images)
Anonim
Contrôler l'accès d'Arduino YÚN avec MySQL, PHP5 et Python
Contrôler l'accès d'Arduino YÚN avec MySQL, PHP5 et Python

Bonjour les amis!

Eh bien, comme vous le savez, en septembre, le nouveau premier bouclier d'Arduino, Arduino YUN. Ce petit ami a un système Linux embarqué avec lequel nous pouvons exécuter tout ce à quoi vous pouvez penser (du moins jusqu'à présent). Alors qu'il n'y a que très peu d'informations sur cette nouvelle carte, avec un départ dans le guide qui fournit la page Arduino (dont le lien sera plus tard), plus une petite connaissance de beaucoup de Linux, permet de réaliser un projet d'envergure qu'un Contrôle d'Accès. Cette fois, je vais vous expliquer comment faire ce projet, mais d'une manière suffisante notamment tout au long de notre Arduino. Cela fonctionne, grâce à un serveur de base de données MySQL qui s'installera dans notre YUN, cette base de données stockera deux tables, une pour les utilisateurs associés à un RFID particulier et une autre table pour conserver les enregistrements de toutes les cartes qui sont passées par notre lecteur. Alors que nous utilisons des langages de programmation PHP et des scripts Python pour effectuer quelques opérations de base et travailler avec nos données. De plus, pour le surcoût matériel, nous utilisons un lecteur ID-20 à côté d'un Serial LCD de 16 caractères, plus une LED RGB qui sera notre informateur des états. Nous pouvons utiliser ce contrôle d'accès à tout ce que nous pouvons penser, modifier et ajouter un relais ou une autre idée. Il peut être utilisé sur n'importe quel endroit où vous avez des cartes et souhaitez un enregistrement. Rappelons que ce document est une publication gratuite, l'utilisation commerciale et les modifications exemptées ne sont pas autorisées. J'espère que c'est une voie beaucoup plus étendue de l'électronique Open Source. On passe donc à l'étape suivante, les parties en ont besoin !

Étape 1: les pièces

Les parties
Les parties
Les parties
Les parties
Les parties
Les parties

Pour faire ce projet, nous devons avoir: * Arduino YUN https://www.sparkfun.com/products/12053 $71.95 * RFID Reader ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 $ * Lecteur RFID Breakout https://www.sparkfun.com/products/8423 0,95 $ * Écran LCD de base 16x2 caractères 5V https://www.sparkfun.com/products/790 16,95 $ * Sac à dos LCD activé en série https://www. sparkfun.com/products/258 16,95 $ * LED RVB 5 mm https://www.sparkfun.com/products/105 1,95 $ * Buzzer https://www.sparkfun.com/products/7950 1,95 $ * Somes Header Pin et fil 5,00 $ environ. En tout, si vous achetez au magasin Sparkfun, tout sera à près de 150$. Si vous habitez en Amérique latine, je vous recommande d'acheter les pièces sur www.olimex.cl, est un très bon magasin d'électronique chilien.

Étape 2: L'assemblage

L'assemblage
L'assemblage
L'assemblage
L'assemblage
L'assemblage
L'assemblage

Peu de connexions à faire, fixant brièvement expliquer. Pour les LED RVB, la broche de la LED rouge doit être sur la broche 9 de l'Arduino, la broche de la LED verte doit aller sur la broche 8 de l'Arduino et la broche de la LED bleue doit être sur la broche 7 de l'Arduino. Pour l'ID-20, vous devez connecter les broches suivantes comme indiqué dans le tableau dans l'ordre respectif, lecteur de broches à la broche Arduino: broche ID-20 à la broche Arduino ID-20 / Arduino PIN 1 -- GND PIN 2 -- 5V PIN 7 -- GND PIN 9 -- PIN 10 PIN 10 -- BUZZER PIN 11 -- 5V Et enfin, pour le connecteur Serial LCD, il ne sera nécessaire qu'aux broches 5v et GND de l'Arduino, tandis que la broche LCD Serial RX va à la broche 11 de l'Arduino.

Étape 3: Programmation de l'Arduino Yun

Programmation de l'Arduino Yun
Programmation de l'Arduino Yun

Pour réaliser notre projet, nous devons commencer par la partie du logiciel, installer quelques fichiers sur notre Arduino opkg Yun:

  • Serveur MySQL
  • PHP5
  • MySQLdb pour Python 2.7
  • Modification de PHP5 vers MySQL

Rappelez-vous que par défaut dans Bridge est installé Python 2.7, vous n'avez donc jamais besoin d'installer de mise à jour pour cela. Commencez à vous connecter SSH osez entrer dans notre Arduino Yun, une fois que vous les avez démarrés, tapez la commande suivante pour mettre à jour la liste des applications opkg:

mise à jour opkg

Étape 4: Installation de MySQL

Installation de MySQL
Installation de MySQL

Nous allons maintenant établir l'installation et la configuration de MySQL Server, tapez les commandes suivantes dans la console:

  1. opkg installer libpthread libncurses libreadline mysql-server
  2. sed -i 's, ^datadir.*, datadir = /srv/mysql/, g' /etc/my.cnf
  3. sed -i 's, ^tmpdir.*, tmpdir = /tmp/, g' /etc/my.cnf
  4. mkdir -p /srv/mysql
  5. mysql_install_db –-force
  6. /etc/init.d/mysqld démarrer
  7. /etc/init.d/mysqld activer
  8. mysqladmin -u mot de passe root 'tu-nueva-clave'

Une fois terminé la saisie de nos codes et démarré le serveur MySQL, vous devez configurer la base de données qui les manipulera. Mais avant de commencer à taper les codes, nous devons comprendre les champs qui portent notre table. Le conseil se composera de 5 cours, 'id', 'nom', 'nom', 'email', 'rfid' pour commercialiser certains d'entre eux je vais donner une brève explication de leur utilisation.

  • 'id': sera le champ ou l'attribut de la colonne int qui nous indiquera le numéro attribué à l'ID utilisateur, ce numéro est attribué par la même base de données et sera le moyen d'indexer nos enregistrements.
  • 'nombre': la colonne d'attribut sera ' varchar ' peut être indiquée par le nom avec lequel l'utilisateur de notre carte est identifié.
  • 'apellido': la colonne d'attribut sera 'varchar' peut être indiquée par le nom de famille auquel notre utilisateur est associé.
  • 'correo': est la colonne d'attribut 'varchar' qui contiendra l'e-mail de l'utilisateur associé.
  • 'rfid': est la colonne d'attribut 'varchar' qui contiendra le code de la carte RFID que vous utilisez.

(J'utiliserai les variables en espagnol, car c'est ma langue maternelle et j'aime c:) Maintenant, nous pouvons configurer notre base de données sans problème, nous créons donc un appel ' arduino ' MySQL. Vous devez taper le code suivant:

mysqladmin -u root -p créer arduino

Nous demandons le mot de passe que nous avons entré plus tôt dans l'installation, nous le soumettrons pour terminer la création de la base. Fini tout cela, nous entrons la requête dans MySQL, vous devez taper le code suivant dans la console:

mysql -root -p

Encore une fois, nous demandons le mot de passe, vous devez le soumettre à nouveau. Une fois dans la commande de la console MySQL, le pointeur ('mysql>') devrait apparaître prêt à taper. La première chose que nous allons faire est de déplacer la base des données «arduino» pour y travailler. Cela se fait en tapant la commande suivante sur la console MySQL:

UTILISER arduino

Nous pensons que la table de noms 'usuariosrfid' dans la base de données sera utilisée pour ce projet, tapez ce code dans la console MySQL:

  1. CREER LA TABLE `usuariosrfid` (
  2. `id` int(255) NON NULL AUTO_INCREMENT,
  3. `nombre` varchar(300) NON NULL,
  4. `apellido` varchar(300) NON NULL,
  5. `correo` varchar(300) NON NULL,
  6. `rfid` varchar(300) NON NULL,
  7. CLÉ PRIMAIRE (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

* N'oubliez pas que lorsque vous appuyez sur la touche ENTRÉE à la fin de la ligne de commande dans la console MySQL, elle ne s'exécutera pas tant que vous ne trouverez pas le ';' Par conséquent, à la fin du code est ';' Pour terminer l'installation et la configuration de MySQL, nous remplissons quelques champs de test au sein de notre base. Tapez les lignes suivantes:

  1. INSÉRER DANS `usuariosrfid` (`id`, `nombre`, `apellido`, `correo`, `rfid`) VALEURS
  2. (1, 'Pedro', 'Suarez', '[email protected]', '1234a-12345-b-123c'),
  3. (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');

Continuez maintenant avec la création de la table 'ControlUsuarios', qui abritera tous les codes RFID passant par le lecteur, cette table se compose de 3 champs, 'id', 'rfid', 'date'.

  • 'id' est la colonne int de champ ou d'attribut qui contiendra l'id de chaque enregistrement pour l'indexation.
  • L'attribut 'rfid' correspond à la colonne 'varchar' contenant le code de l'étiquette RFID qui a été lu par le lecteur.
  • 'date' est la colonne d'attribut 'varchar' qui contiendra la date à laquelle la carte a été lue.

Pour créer la table 'ControlUsuarios', nous entrons le code suivant dans la console MySQL:

  1. CREATE TABLE `ControlUsuarios` (
  2. `id` int(255) NON NULL AUTO_INCREMENT,
  3. `rfid` varchar(300) NON NULL,
  4. `fecha` varchar(300) NON NULL,
  5. CLÉ PRIMAIRE (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

Tapez enfin « exit; » dans la console pour quitter la requête MySQL et revenir à SHH afin que nous puissions commencer avec PHP5.

Étape 5: Installation de PHP5

Installation de PHP5
Installation de PHP5

Continuez avec l'installation et la configuration de PHP5. Cette installation est plus simple que MySQL, elle ne devrait donc rien leur coûter. Tout d'abord, installez le package opkg à partir du téléchargement et de l'installation d'Arduino Yun, alors tapez ceci dans la console SSH d'Arduino:

opkg installer php5 php5-cgi

Une fois téléchargé et PHP5 installé sur notre Arduino Yun, nous avons donc configuré le fichier racine uHTTPd, le serveur http qui apporte Arduino par défaut, je vous recommande d'utiliser uniquement ce serveur http car il est plus polyvalent et accessible en configuration, pas Apache ou Lighttpd sont plus difficiles à mettre en place lorsque vous êtes nouveau dans ce domaine. Pour configurer cela, utilisez l'éditeur de fichiers 'vi' SSH, pour cela vous devez avoir un minimum de connaissances pour utiliser cet éditeur. Commencez à taper ce code dans la console pour accéder au fichier de paramètres uHTTPd:

vi /etc/config/uhttpd

Appuyez sur 'i' pour éditer le fichier, puis allez à la ligne de code que vous avez écrite '# list interpreter. "php =/usr/bin/php-cgi"'. Vous devez supprimer le caractère '#' au début de la ligne, puis appuyez sur la touche échappement (touche 'ESC'), une fois que vous êtes prêt, vous devez taper la commande ':wq' pour enregistrer le fichier et quitter le fichier. Vous devez redémarrer le serveur uHTTPd, pour cela, vous devez taper dans la console de commande de SSH le code suivant:

/etc/init.d/uhttpd redémarrer

Étape 6: Installation du Conector MySQL pour PHP5 et Python

Installation du Connecteur MySQL pour PHP5 et Python
Installation du Connecteur MySQL pour PHP5 et Python

Procédez à l'installation et à la configuration des modules pour connecter la base de données MySQL avec PHP et Python. Commençons par le connecteur PHP. Tapez le code suivant:

  1. opkg installer php5-mod-mysql
  2. sed -i 's,;extension=mysql.so, extension=mysql.so, g' /etc/php.ini

Une fois prêt il n'aura pas besoin de redémarrer le serveur uHTTPd, prêt pour une utilisation immédiate. Continuez maintenant avec le connecteur pour Python, pour cela, vous devez saisir le code suivant:

opkg installer python-mysql

Avec cette dernière étape, nous aurons notre Arduino Yun prêt pour notre projet avec le lecteur de carte ID-20 RFID 125khz. Terminez cette partie avec des commentaires sur ce que nous avons fait:

  • Nous avons installé le serveur MySQL sur notre Arduino Yun, puis l'avons configuré, en terminant par une insertion de données de test.
  • Installez le complément PHP sur notre serveur.
  • Nous avons terminé l'installation et la configuration de MySQL Connector pour PHP et Python.

Étape 7: Codes

Dans ce domaine, nous discutons des codes de programmation à utiliser pour ce projet. On repart avec du code Python, qui se divise en deux fichiers: 'comprobar.py', qui va se connecter à la base de données et chercher Yun Arduino si le résultat s'y trouve, et le fichier 'control. py', responsable de l'enregistrement de toute carte lue par le lecteur ID-20, qu'elle soit ou non dans la base de données des utilisateurs enregistrés. Continuez ensuite avec la description des fichiers PHP, à savoir: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ', ' guardar.php '' consulta.php ', ' configuration.php '. Pour ces fichiers redundaremos à la fois parce qu'ils sont faciles à comprendre. Terminez enfin avec le code qui montera comme notre sketch Arduino.

Étape 8: Fichiers Python

Fichiers Python
Fichiers Python

Comme mentionné précédemment, nos scripts Python fonctionnaient avec la bibliothèque ou la classe 'MySQLdb', qui est déjà installée précédemment. Commencez par créer un fichier avec '.py' appelé 'comprobar.py' dans notre éditeur, je vous conseille d'utiliser ces boîtiers pour programmer en Python, l'éditeur Sublime Text 3, que vous pouvez télécharger sur leur site www.sublimetext.com. Commençons par importer la librairie pour nous connecter à notre base de données MySQL, la librairie 'sys' qui va nous permettre de communiquer avec notre Arduino Yun:

  1. importer MySQLdb
  2. importer le système

Une fois ces bibliothèques ou classes importées, nous ajoutons des variables à votre code, qui seront les données de connexion de notre base de données MySQL, os:

  1. host = "127.0.0.1" # correspond à l'adresse de notre serveur MySQL.
  2. user = "your-seat" # est l'utilisateur de notre base de données.
  3. passw = "votre-mot de passe" est pour le mot de passe de l'utilisateur. base = "arduino" # C'est le nom de la base de données que vous utilisez.

Commencez maintenant avec les codes de script de base:

  1. tant que vrai:
  2. db= MySQLdb.connect (hôte, utilisateur, mot de passe, base)
  3. cur = db.cursor()
  4. resultado = cur.execute("""SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY id""", (sys.argv[1],))
  5. si (résultat == 1):
  6. imprimer 1
  7. sys.exit(1)
  8. autre:
  9. imprimer 2
  10. sys.exit(1)

Si nous réalisons, dans le jugement 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' pour exécuter notre requête comparer la variable '(sys.argv [1])' qui est le code de la carte RFID Arduino avec toutes les données de champ 'rfid' table 'usuariosrfid', qui, trouvant le code d'égalité de l'arduino et les codes ou stockés dans la base de données, sera retourner 1, si ce n'est pas vrai et qu'il n'y a pas d'égalité entre le code de l'arduino et une partie de la base, nous retournerons 2. Ces nombres seront reçus par l'arduino. Nous continuons avec le fichier suivant 'control.py. Ce fichier fonctionne de la même manière que ci-dessus, ne gardant qu'un arrière-goût sur une table, ces enregistrements sauvegardés seront collectés par le lecteur ID-20 connecté à notre Arduino Yun, afin que nous puissions conserver tous les utilisateurs enregistrés qui utilisent notre lecteur RFID.

Étape 9: Fichiers PHP

Continuez ensuite avec les fichiers. 'Php' qui gardera le dossier de notre serveur, pour ce faire rappelez-vous qu'il faut que ces fichiers une fois prêts, soient enregistrés dans le sketch de notre projet, qui génère automatiquement l'IDE Arduino, vous devez aussi vous en souvenir, bien que j'anticipe ceci, que lorsque nous montons à notre croquis Arduino Yun, nous téléchargeons via Wi-Fi, donc je le laisse sur la même page du manuel Arduino, www.arduino. cc / en / Guide / Arduino Yun # toc14, qui explique plus à ce sujet, et comment vous devez préparer une carte MicroSD pour ce type de projet où les fichiers doivent être stockés sur le serveur. Les fichiers PHP seront 10 ' consultaRelacion.php ', ' consultaControl.php ', ' index.php' ' modificar2.php ', ' modificar.php ', ' borrar.php ', ' borrar2.php ', ' guardar. php ' ' consulta.php ', ' configuracion.php ', qui seront hyperliés à l'autre, pour maintenir un menu de base toujours en cours d'exécution et accessible. Expliquez simplement le fichier ' configuracion.php ', qui fonctionne comme un connecteur avec notre base de données. Dans notre éditeur, nous planifions le code suivant dans le fichier:

  1. <? php
  2. // Serveur de données et base de données
  3. $ serveur = "localhost";
  4. $ nom d'utilisateur = "votre siège";
  5. $ mot de passe = "mot de passe";
  6. $ nom_base de données = "arduino";

Ce sont les données qui doivent se connecter à notre base de données dans l'arduino seront les mêmes que nous utilisons dans nos scripts Python. Terminez la programmation de l'instruction connect, qui utilise notre script:

  1. $conexion=mysql_connect($server, $username, $password) ou die("Problemas al tratar de establecer la connexion");
  2. $bd_sel=mysql_select_db($database_name) ou die("Problemas al seleccionar la base de datos");
  3. ?>

Les autres fichiers sont joints.

Étape 10: Enfin, le programme de l'Arduino YÚN

Nous sommes arrivés à la partie principale de ce tutoriel, la programmation de notre Arduino Yun, aucun détail ne mettra en évidence tout le code car il est assez étendu, ne mentionnez que les points importants suivants:

  • Le code se compose de 6 fonctions principales et de 13 fonctions secondaires, qui ne sont qu'un support pour l'utilisation du Serial LCD.
  • Être importé seulement trois classes, 'SoftwareSerial.h', avec lesquelles nous entrerons Serial Attached pour se connecter avec l'ID-20 et Serial LCD, la classe principale 'Bridge.h' avec laquelle nous ferons la connexion entre Linux et ATMEGA32U4, et la classe 'Process.h' servira pour les processus de consultation sous Linux.
  • Définissez seulement trois broches, qui en utilisent d'autres soient libres.

Le code est joint

Étape 11: Bonne année

Je continue méticuleusement pour vous servir et vous aider à obtenir plus d'informations sur l'Arduino Yun. Laissez tous les fichiers attachés à la fin. Pour les locuteurs de langue espagnole, je laisse ce tutoriel mais en espagnol avec les fichiers nécessaires. Je vous souhaite une bonne année, profitez-en et réussissez cette année 2014!