Inhaltsverzeichnis:

Kontrollieren Sie den Zugriff von Arduino YÚN mit MySQL, PHP5 und Python - Gunook
Kontrollieren Sie den Zugriff von Arduino YÚN mit MySQL, PHP5 und Python - Gunook

Video: Kontrollieren Sie den Zugriff von Arduino YÚN mit MySQL, PHP5 und Python - Gunook

Video: Kontrollieren Sie den Zugriff von Arduino YÚN mit MySQL, PHP5 und Python - Gunook
Video: МАСТЕР-КЛАСС по Arduino | Полный семинар по программированию за 90 минут! 2024, November
Anonim
Kontrollieren Sie den Zugriff von Arduino YÚN mit MySQL, PHP5 und Python
Kontrollieren Sie den Zugriff von Arduino YÚN mit MySQL, PHP5 und Python

Hallo Freunde!

Nun, wie Sie wissen, im September das neue Premiere-Shield von Arduino, Arduino YUN. Dieser kleine Freund hat ein Linux-Embedded-System, mit dem wir alles ausführen können, was Sie sich vorstellen können (zumindest bisher). Zwar gibt es sehr wenig Informationen zu diesem neuen Board, aber mit Abgang in der Anleitung, die die Arduino-Seite bereitstellt (die später verlinkt wird), plus ein wenig Wissen über viele Linux, lässt sich ein großes Projekt mit Control Access durchführen. Dieses Mal werde ich erklären, wie dieses Projekt durchgeführt wird, aber auf eine ausreichende Weise durch unser Arduino. Dies funktioniert dank eines MySQL-Datenbankservers, der sich in unserem YUN ansiedelt. Diese Datenbank speichert zwei Tabellen, eine für Benutzer, die mit einem bestimmten RFID verbunden sind, und eine andere Tabelle, um Aufzeichnungen über alle Karten zu führen, die durch unseren Leser gegangen sind. Während wir die Programmiersprachen PHP und Python-Skripte verwenden, um einige grundlegende durchzuführen und mit unseren Daten zu arbeiten. Darüber hinaus verwenden wir als Hardware-Overhead einen Leser ID-20 neben einem seriellen LCD mit 16 Zeichen sowie einer RGB-LED, die unsere Informantenstatus sein werden. Wir können diese Zugriffskontrolle verwenden, alles, was uns einfällt, modifizieren und ein Relais oder eine andere Idee hinzufügen. Es kann für alles verwendet werden, wo Sie Karten haben und eine Aufzeichnung wünschen. Denken Sie daran, dass dieses Dokument eine kostenlose Veröffentlichung ist, kommerzielle Nutzung und ausgenommene Änderungen sind nicht erlaubt. Ich hoffe, es ist ein weitaus umfangreicherer Weg der Open-Source-Elektronik. Also gehen wir zum nächsten Schritt, den die Parteien brauchen!

Schritt 1: Die Teile

Die Teile
Die Teile
Die Teile
Die Teile
Die Teile
Die Teile

Für dieses Projekt benötigen wir: * Arduino YUN https://www.sparkfun.com/products/12053 $71.95 * RFID Reader ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 $ * RFID-Lesegerät Breakout https://www.sparkfun.com/products/8423 0,95 $ * Einfaches 16x2 Zeichen LCD 5V https://www.sparkfun.com/products/790 16,95 $ * Seriell aktivierter LCD-Rucksack https://www. sparkfun.com/products/258 $16.95 * LED RGB 5mm https://www.sparkfun.com/products/105 $1.95 * Summer https://www.sparkfun.com/products/7950 $1.95 * Somes Header Pin und Draht $5.00 ca.. Alles in allem, wenn Sie im Geschäft Sparkfun kaufen, wird alles in der Nähe von 150 US-Dollar liegen. Wenn Sie in Lateinamerika leben, würde ich empfehlen, die Teile bei www.olimex.cl zu kaufen, einem sehr guten chilenischen Elektronikgeschäft.

Schritt 2: Die Montage

Die Montage
Die Montage
Die Montage
Die Montage
Die Montage
Die Montage

Wenige Verbindungen zu tun, die Festlegung kurz erklären. Für RGB-LED muss der rote LED-Pin auf Pin 9 des Arduino liegen, die grüne LED sollte auf Arduino Pin 8 gehen und die blaue LED sollte auf Pin 7 des Arduino liegen. Für den ID-20 müssen Sie die folgenden Pins wie in der Tabelle angegeben in entsprechender Reihenfolge verbinden, Pinleser mit Arduino Pin: Pin ID-20 zu Pin Arduino ID-20 / Arduino PIN 1 -- GND PIN 2 -- 5V PIN 7 -- GND PIN 9 -- PIN 10 PIN 10 -- SUMMER PIN 11 -- 5V Und schließlich werden für den seriellen LCD-Anschluss nur 5V und GND-Pins des Arduino benötigt, während der serielle LCD-RX-Pin an Pin 11. geht des Arduinos.

Schritt 3: Programmierung des Arduino Yun

Programmierung des Arduino Yun
Programmierung des Arduino Yun

Um unser Projekt zu erstellen, müssen wir mit dem Teil der Software beginnen und einige Dateien auf unserem Arduino opkg Yun installieren:

  • MySQL-Server
  • PHP5
  • MySQLdb für Python 2.7
  • Mod von PHP5 zu MySQL

Denken Sie daran, dass in Bridge standardmäßig Python 2.7 installiert ist, sodass Sie dafür nie ein Update installieren müssen. Starten Sie die Protokollierung von SSH wagen Sie es, unser Arduino Yun einzugeben. Geben Sie nach dem Start den folgenden Befehl ein, um die Liste der Anwendungen opkg zu aktualisieren:

opkg-Update

Schritt 4: Installation von MySQL

Installation von MySQL
Installation von MySQL

Jetzt werden wir die Installation und Konfiguration von MySQL Server einrichten, geben Sie die folgenden Befehle in die Konsole ein:

  1. opkg install 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 start
  7. /etc/init.d/mysqld aktivieren
  8. mysqladmin -u Root-Passwort 'tu-nueva-clave'

Sobald Sie mit der Eingabe unserer Codes fertig sind und den MySQL-Server gestartet haben, sollten Sie die Datenbank konfigurieren, die manipuliert wird. Bevor wir jedoch mit der Eingabe der Codes beginnen, müssen wir die Felder verstehen, die unsere Tabelle enthalten. Der Vorstand soll aus 5 Kursen bestehen, 'id', 'name', 'name', 'email', 'rfid', um einige von ihnen zu vermarkten. Ich werde ihre Verwendung kurz erklären.

  • 'id': ist das Feld oder die Attribut int-Spalte, die uns die der Benutzer-ID zugewiesene Nummer mitteilt. Diese Nummer wird von derselben Datenbank zugewiesen und dient zur Indexierung unserer Datensätze.
  • 'nombre': Attributspalte wird 'varchar' sein kann durch den Namen angegeben werden, mit dem unser Kartenbenutzer identifiziert wird.
  • ' apellido': Attributspalte wird ' varchar ' sein kann durch den Nachnamen angegeben werden, mit dem unser Benutzer verbunden ist.
  • 'correo': ist die Attributspalte 'varchar', die die E-Mail des zugehörigen Benutzers enthält.
  • 'rfid': ist die Attributspalte 'varchar', die den Code der von Ihnen verwendeten RFID-Karte enthält.

(Ich werde die Variablen auf Spanisch verwenden, weil dies meine Muttersprache ist und ich c mag:) Jetzt können wir unsere Datenbank problemlos konfigurieren, daher erstellen wir einen 'arduino'-Aufruf MySQL. Sie müssen den folgenden Code eingeben:

mysqladmin -u root -p arduino erstellen

Wir fragen nach dem Passwort, das wir zuvor bei der Installation eingegeben haben, wir werden es übermitteln, um die Erstellung der Basis abzuschließen. Wenn das alles fertig ist, geben wir die Abfrage an MySQL ein, Sie sollten den folgenden Code in die Konsole eingeben:

mysql -root -p

Auch hier fragen wir nach dem Passwort, Sie müssen es erneut übermitteln. Sobald wir uns im MySQL-Konsolenbefehl befinden, sollte der Zeiger ('mysql>') eingabebereit erscheinen. Das erste, was wir tun werden, ist, die Basis für 'arduino'-Daten zu verschieben, um daran zu arbeiten. Dies geschieht durch Eingabe des folgenden Befehls in der MySQL-Konsole:

NUTZUNG arduino

Wir glauben, dass die Namenstabelle 'usuariosrfid' in der Datenbank für dieses Projekt verwendet wird, geben Sie diesen Code in die MySQL-Konsole ein:

  1. CREATE TABLE `usuariosrfid` (
  2. `id` int(255) NICHT NULL AUTO_INCREMENT,
  3. `nombre` varchar(300) NICHT NULL,
  4. `apellido` varchar(300) NICHT NULL,
  5. `correo` varchar(300) NICHT NULL,
  6. `rfid` varchar(300) NICHT NULL,
  7. PRIMÄRSCHLÜSSEL (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latein1 AUTO_INCREMENT=0;

* Denken Sie daran, dass das Drücken der EINGABETASTE am Ende der Befehlszeile in der MySQL-Konsole nicht ausgeführt wird, bis Sie das ';' Daher steht am Ende des Codes ';' Um die Installation und Konfiguration von MySQL abzuschließen, füllen wir einige Testfelder in unserer Basis aus. Geben Sie die folgenden Zeilen ein:

  1. EINFÜGEN IN `usuariosrfid` (`id`, `nombre`, `apellido`, `correo`, `rfid`) WERTE
  2. (1, 'Pedro', 'Suarez', '[email protected]', '1234a-12345-b-123c'),
  3. (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');

Fahren Sie nun mit der Erstellung der Tabelle 'ControlUsuarios' fort, die alle vom Leser passierenden RFID-Codes aufnehmen wird. Diese Tabelle besteht aus 3 Feldern, 'id', 'rfid', 'date'.

  • 'id' ist das Feld oder die Attribut int-Spalte, die die ID jedes Datensatzes für die Indizierung enthält.
  • 'rfid'-Attribut ist die Spalte 'varchar', die den RFID-Tag-Code enthält, der vom Leser gelesen wurde.
  • 'date' ist die Attributspalte 'varchar', die das Datum enthält, an dem die Karte gelesen wurde.

Um die Tabelle 'ControlUsuarios' zu erstellen, geben wir folgenden Code in die MySQL-Konsole ein:

  1. CREATE TABLE `ControlUsuarios` (
  2. `id` int(255) NICHT NULL AUTO_INCREMENT,
  3. `rfid` varchar(300) NICHT NULL,
  4. `fecha` varchar(300) NICHT NULL,
  5. PRIMÄRSCHLÜSSEL (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latein1 AUTO_INCREMENT=0;

Geben Sie schließlich 'exit;' in der Konsole, um die MySQL-Abfrage zu beenden und zu SHH zurückzukehren, damit wir mit PHP5 beginnen können.

Schritt 5: Installation von PHP5

Installation von PHP5
Installation von PHP5

Fahren Sie mit der Installation und Konfiguration von PHP5 fort. Diese Installation ist einfacher als MySQL, daher sollte sie nichts kosten. Installieren Sie zuerst das opkg-Paket aus dem Arduino Yun, das Sie herunterladen und installieren, also geben Sie dies in der SSH-Konsole von Arduino ein:

opkg installieren php5 php5-cgi

Einmal heruntergeladen und PHP5 auf unserem Arduino Yun installiert, so dass wir die Root-Datei uHTTPd konfiguriert haben, den HTTP-Server, der Arduino-Standard bringt, empfehle ich Ihnen, nur diesen http-Server zu verwenden, da er vielseitiger und zugänglicher in der Konfiguration ist, nicht Apache oder Lighttpd sind schwieriger einzurichten, wenn Sie neu in diesem Bereich sind. Um dies zu konfigurieren, verwenden Sie den Dateieditor 'vi' SSH, dafür müssen Sie über Mindestkenntnisse verfügen, um diesen Editor zu verwenden. Beginnen Sie mit der Eingabe dieses Codes in der Konsole, um auf die Einstellungsdatei uHTTPd zuzugreifen:

vi /etc/config/uhttpd

Drücken Sie 'i', um die Datei zu bearbeiten, und gehen Sie dann zu der Codezeile, die Sie geschrieben haben '# list interpreter. "php = /usr/bin /php-cgi"'. Sie müssen das Zeichen '#' am Anfang der Zeile löschen, dann die Escape-Taste (Taste 'ESC') drücken. Sie müssen den Server uHTTPd neu starten, dazu sollten Sie in der Befehlskonsole von SSH folgenden Code eingeben:

/etc/init.d/uhttpd Neustart

Schritt 6: Installation des Connectors MySQL für PHP5 und Python

Installation des Connectors MySQL für PHP5 und Python
Installation des Connectors MySQL für PHP5 und Python

Fahren Sie mit der Installation und Konfiguration der Module fort, um die MySQL-Datenbank mit PHP und Python zu verbinden. Beginnen wir mit dem PHP-Connector. Geben Sie den folgenden Code ein:

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

Sobald es fertig ist, muss der Server uHTTPd nicht neu gestartet werden, er ist sofort einsatzbereit. Fahren Sie nun mit dem Konnektor für Python fort, dafür müssen Sie folgenden Code eingeben:

opkg installiere python-mysql

Mit diesem letzten Schritt haben wir unseren Arduino Yun für unser Projekt mit dem Kartenleser ID-20 RFID 125khz bereit. Beenden Sie diesen Teil mit Feedback zu dem, was wir getan haben:

  • Wir haben den MySQL-Server auf unserem Arduino Yun installiert, dann konfiguriert und mit dem Einfügen von Testdaten abgeschlossen.
  • Installieren Sie die PHP-Ergänzung auf unserem Server.
  • Wir haben die Installation und Konfiguration von MySQL Connector für PHP und Python abgeschlossen.

Schritt 7: Codes

In diesem Bereich besprechen wir die für dieses Projekt zu verwendenden Programmiercodes. Wir verlassen mit Python-Code, der in zwei Dateien unterteilt ist: 'comprobar.py', die eine Verbindung zur Datenbank herstellt und Yun Arduino sucht, wenn das Ergebnis darin enthalten ist, und die Datei 'control. py ', verantwortlich für die Aufzeichnung jeder Karte, die vom Leser ID-20 gelesen wird, unabhängig davon, ob sie in der Datenbank der registrierten Benutzer enthalten ist oder nicht. Fahren Sie dann mit der Beschreibung der PHP-Dateien fort, sind: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ', ' guardar.php '' consulta.php ', ' configuracion.php '. Für diese Dateien redundaremos beide, weil sie leicht zu verstehen sind. Schließen Sie schließlich mit dem Code ab, der als unsere Arduino-Skizze angezeigt wird.

Schritt 8: Dateien Python

Dateien Python
Dateien Python

Wie bereits erwähnt, funktionierten unsere Python-Skripte mit der Bibliothek oder Klasse 'MySQLdb', die bereits zuvor installiert wurde. Beginnen Sie damit, eine Datei mit '.py' namens 'comprobar.py' in unserem Editor zu erstellen. Ich empfehle diese Fälle für die Programmierung in Python, dem Editor Sublime Text 3, den Sie auf deren Website www.sublimetext.com herunterladen können. Beginnen wir mit dem Importieren der Bibliothek, um eine Verbindung zu unserer MySQL-Datenbank herzustellen, der Bibliothek 'sys', die es uns ermöglicht, mit unserem Arduino Yun zu kommunizieren:

  1. MySQLdb importieren
  2. Importsystem

Nach dem Import dieser Bibliotheken oder Klassen fügen wir Ihrem Code Variablen hinzu, die die Verbindungsdaten aus unserer MySQL-Datenbank bone:

  1. host = "127.0.0.1" # entspricht der Adresse unseres MySQL-Servers.
  2. user = "your-seat" # ist der Benutzer unserer Datenbank.
  3. passw = "your-password" ist für das Passwort des Benutzers. base = "arduino" # Dies ist der Name der verwendeten Datenbank.

Beginnen Sie nun mit den Basisskriptcodes:

  1. während Wahr:
  2. db= MySQLdb.connect(host, user, passw, base)
  3. cur = db.cursor()
  4. resultado = cur.execute("""SELECT * FROM usuariosrfid WHERE rfid LIKE %s ORDER BY id""", (sys.argv[1],))
  5. if (resultado == 1):
  6. 1. drucken
  7. sys.exit(1)
  8. anders:
  9. 2. drucken
  10. sys.exit(1)

Wenn wir erkennen, im Urteil 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' Befehl, um unsere Abfrage auszuführen, vergleichen Sie die Variable '(sys.argv [1])', was der Code von der Arduino-RFID-Karte mit allen Felddaten ist return 1, wenn dies nicht wahr ist und es keine Gleichheit zwischen dem Code vom Arduino und einem Teil der Basis gibt, geben wir 2 zurück. Diese Zahlen werden vom Arduino empfangen. Wir fahren mit der nächsten Datei 'control.py' fort. Diese Datei funktioniert genauso wie oben, nur einen Nachgeschmack auf einem Tisch. Diese gespeicherten Datensätze werden von dem mit unserem Arduino Yun verbundenen Leser ID-20 gesammelt, damit wir alle registrierten Benutzer behalten können, die unseren RFID-Leser verwenden.

Schritt 9: Dateien PHP

Fahren Sie dann mit den Dateien fort. ' Php', das den Ordner von unserem Server behält. Denken Sie dazu daran, dass diese Dateien, sobald sie fertig sind, im Sketch unseres Projekts gespeichert werden, der automatisch die IDE Arduino generiert Dies, dass, wenn wir zu unserer Arduino-Skizze Yun gehen, wir über Wi-Fi hochladen, also lasse ich es auf der gleichen Seite Handbuch Arduino, www.arduino. cc / de / Guide / Arduino Yun # toc14, der mehr darüber erklärt und wie Sie eine MicroSD-Karte für diese Art von Projekt vorbereiten sollten, bei der die Dateien auf dem Server gespeichert werden sollen. Die PHP-Dateien sind 10 ' consultaRelacion.php ', ' consultaControl.php ', ' index.php' ' modificar2.php ', ' modificar.php ', ' borrar.php ', ' borrar2.php ', 'guardar. php ' ' consulta.php ', ' configuracion.php ', die mit den anderen verlinkt werden, um ein Basismenü zu erhalten, das immer aktiv und zugänglich ist. Erklären Sie einfach die Datei 'configuracion.php', die als Konnektor mit unserer Datenbank fungiert. In unserem Editor planen wir folgenden Code in der Datei ein:

  1. <? php
  2. // Datenserver und Datenbank
  3. $server = "localhost";
  4. $ username = "Ihr Platz";
  5. $ passwort = "passwort";
  6. $ database_name = "arduino";

Dies sind die Daten, die eine Verbindung zu unserer Datenbank im Arduino herstellen müssen, werden die gleichen sein, die wir in unseren Python-Skripten verwenden. Beenden Sie die Programmierung der Connect-Anweisung, die unser Skript verwendet hat:

  1. $conexion=mysql_connect($server, $username, $password) or die("Problemas al tratar de establecer la conexion");
  2. $bd_sel=mysql_select_db($database_name) or die("Probleme bei der Auswahl der Datenbasis");
  3. ?>

Die anderen Dateien sind angehängt.

Schritt 10: Schließlich das Programm des Arduino YÚN

Wir sind zum Hauptteil dieses Tutorials gekommen, der Programmierung unseres Arduino Yun. Keine Details werden den gesamten Code hervorheben, da er ziemlich umfangreich ist. Erwähnen Sie nur die folgenden wichtigen Punkte:

  • Der Code besteht aus 6 Hauptfunktionen und 13 Nebenfunktionen, die nur eine Unterstützung für die Verwendung des Serial LCD darstellen.
  • Importiert werden nur drei Klassen, 'SoftwareSerial.h', mit denen wir Serial Attached eingeben, um eine Verbindung mit dem ID-20 und Serial LCD herzustellen, die Hauptklasse 'Bridge.h', mit der wir die Verbindung zwischen Linux und ATMEGA32U4 herstellen, und die Klasse 'Process.h' wird für Beratungsprozesse in Linux dienen.
  • Definieren Sie nur drei Pins, die andere frei verwenden.

Der Code ist beigefügt

Schritt 11: Frohes neues Jahr

Ich setze dies akribisch fort, um Ihnen zu dienen und Ihnen zu helfen, mehr Informationen über das Arduino Yun zu erhalten. Lassen Sie alle Dateien am Ende angehängt. Für Sprecher der spanischen Sprache lasse ich dieses Tutorial jedoch auf Spanisch mit den erforderlichen Dateien. Ich wünsche Ihnen ein frohes neues Jahr, viel Spaß und Erfolg in diesem Jahr 2014!

Empfohlen: