Kontroluj dostęp do Arduino YÚN za pomocą MySQL, PHP5 i Pythona: 11 kroków (ze zdjęciami)
Kontroluj dostęp do Arduino YÚN za pomocą MySQL, PHP5 i Pythona: 11 kroków (ze zdjęciami)
Anonim
Kontroluj dostęp do Arduino YÚN za pomocą MySQL, PHP5 i Pythona
Kontroluj dostęp do Arduino YÚN za pomocą MySQL, PHP5 i Pythona

Cześć przyjaciele!

Cóż, jak wiadomo, we wrześniu premiera nowej tarczy Arduino, Arduino YUN. Ten mały przyjaciel ma wbudowany system Linux, dzięki któremu możemy uruchomić wszystko, o czym tylko pomyślisz (przynajmniej na razie). Chociaż jest bardzo mało informacji na temat tej nowej płyty, z wyjściem w przewodniku, który zapewnia stronę Arduino (do której będzie link później), a także odrobina wiedzy o wielu Linuksach, można przeprowadzić duży projekt kontroli dostępu. Tym razem wyjaśnię, jak wykonać ten projekt, ale w sposób wystarczający szczegółowo przez całe nasze Arduino. To działa, dzięki serwerowi bazy danych MySQL, który zadomowi się w naszym YUN, ta baza danych będzie przechowywać dwie tabele, jedną dla użytkowników związanych z konkretnym RFID, a drugą tabelę do przechowywania ewidencji wszystkich kart, które przeszły przez nasz czytnik. Podczas gdy używamy języków programowania PHP i skryptów Python do wykonywania podstawowych i pracy z naszymi danymi. Co więcej, na poziomie sprzętowym używamy czytnika ID-20 obok szeregowego wyświetlacza LCD 16 znaków plus dioda LED RGB, która będzie naszym stanem informatora. Możemy użyć tej kontroli dostępu do wszystkiego, o czym pomyślimy, zmodyfikować i dodać przekaźnik lub inny pomysł. Może być używany na wszystkim, gdzie masz karty i chcesz nagrać. Przypomnijmy, że ten dokument jest darmową publikacją, wykorzystanie komercyjne i zwolnione z tego modyfikacje nie są dozwolone. Mam nadzieję, że to o wiele szersza ścieżka elektroniki Open Source. Więc przechodzimy do następnego kroku, którego potrzebują strony!

Krok 1: Części

Części
Części
Części
Części
Części
Części

Do wykonania tego projektu potrzebujemy: * Arduino YUN https://www.sparkfun.com/products/12053 $71,95 * Czytnik RFID ID-20 (125 kHz) https://www.sparkfun.com/products/11828 34,95 USD * Czytnik RFID Breakout https://www.sparkfun.com/products/8423 0,95 USD * Podstawowy wyświetlacz LCD 16x2 znaków 5V https://www.sparkfun.com/products/790 16,95 USD * Plecak LCD z obsługą szeregową https://www. sparkfun.com/products/258 16,95 $ * LED RGB 5mm https://www.sparkfun.com/products/105 1,95 $ * Brzęczyk https://www.sparkfun.com/products/7950 1,95 $ * Sworzeń i przewód Somes Header 5,00 $ ok.. W sumie, jeśli kupisz w sklepie Sparkfun, wszystko będzie blisko 150 USD. Jeśli mieszkasz w Ameryce Łacińskiej, polecam zakup części w www.olimex.cl, jest to bardzo dobry chilijski sklep z elektroniką.

Krok 2: Montaż

Zgromadzenie
Zgromadzenie
Zgromadzenie
Zgromadzenie
Zgromadzenie
Zgromadzenie

Kilka połączeń do zrobienia, krótkie wyjaśnienie. W przypadku diody RGB czerwona dioda LED musi znajdować się na pinie 9 Arduino, zielona dioda LED powinna znajdować się na pinie 8 Arduino, a niebieska dioda LED powinna znajdować się na pinie 7 Arduino. W przypadku ID-20 należy podłączyć następujące piny jak wskazano w tabeli w odpowiedniej kolejności, czytnik pinów do pinu Arduino: Pin ID-20 do pinu Arduino ID-20 / Arduino PIN 1 -- GND PIN 2 -- 5V PIN 7 -- GND PIN 9 -- PIN 10 PIN 10 -- BUZZER PIN 11 -- 5V I na koniec, dla złącza szeregowego LCD potrzebne będą tylko piny 5V i GND Arduino, podczas gdy pin szeregowy LCD idzie do pinu 11 Arduino.

Krok 3: Programowanie Arduino Yun

Programowanie Arduino Yun
Programowanie Arduino Yun

W celu wykonania naszego projektu musimy zacząć od części oprogramowania, zainstalować kilka plików na naszym Arduino opkg Yun:

  • Serwer MySQL
  • PHP5
  • MySQLdb dla Pythona 2.7
  • Modyfikacja PHP5 do MySQL

Przypomnij sobie, że domyślnie w Bridge jest zainstalowany Python 2.7, więc nigdy nie musisz instalować żadnej aktualizacji. Rozpocznij logowanie SSH odważ się wejść do naszego Arduino Yun, po ich uruchomieniu wpisz następujące polecenie, aby zaktualizować listę aplikacji opkg:

aktualizacja opkg

Krok 4: Instalacja MySQL

Instalacja MySQL
Instalacja MySQL

Teraz ustalimy instalację i konfigurację MySQL Server, wpisz w konsoli następujące polecenia:

  1. opkg zainstaluj libpthread libncurses libreadline mysql-server
  2. sed -i's, ^datadir.*, datadir = /srv/mysql/, g' /etc/my.cnf
  3. sed -i, ^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 włącz
  8. mysqladmin -u hasło roota 'tu-nueva-clave'

Po zakończeniu wpisywania naszych kodów i uruchomieniu serwera MySQL należy skonfigurować bazę danych, którą będziemy manipulować. Ale zanim zaczniemy wpisywać kody, musimy zrozumieć pola, które zawierają naszą tabelę. Tablica będzie składać się z 5 kursów, 'id', 'name', 'name', 'e-mail', 'rfid', aby wprowadzić na rynek niektóre z nich. Podam krótkie wyjaśnienie ich użycia.

  • 'id': czy pole lub atrybut int kolumna, która powie nam numer przypisany do User ID, ten numer jest przypisany przez tę samą bazę danych i będzie sposobem indeksowania naszych rekordów.
  • 'nombre': kolumna atrybutu będzie miała wartość ' varchar ' może być oznaczona nazwą, z którą identyfikowany jest nasz użytkownik karty.
  • ' apellido': kolumna atrybutu będzie ' varchar ' może być wskazana przez nazwisko, z którym powiązany jest nasz użytkownik.
  • „correo”: jest to kolumna atrybutów „varchar”, która będzie zawierać adres e-mail powiązanego użytkownika.
  • „rfid”: to kolumna atrybutów „varchar”, która będzie zawierać kod używanej karty RFID.

(Będę używał zmiennych w języku hiszpańskim, ponieważ jest to mój język ojczysty i lubię c:) Teraz możemy bez problemu skonfigurować naszą bazę danych, dlatego tworzymy wywołanie ' arduino ' MySQL. Musisz wpisać następujący kod:

mysqladmin -u root -p utwórz arduino

Prosimy o hasło, które wpisaliśmy wcześniej podczas instalacji, prześlemy je, aby dokończyć tworzenie bazy. Skończywszy to wszystko, wpisujemy zapytanie do MySQL, w konsoli należy wpisać następujący kod:

mysql -root -p

Ponownie prosimy o hasło, musisz je ponownie podać. Po wejściu do polecenia konsoli MySQL wskaźnik ('mysql>') powinien pojawić się gotowy do wpisania. Pierwszą rzeczą, którą zrobimy, będzie przeniesienie bazy danych 'arduino' do pracy na niej. Odbywa się to poprzez wpisanie następującego polecenia w konsoli MySQL:

UŻYJ arduino

Uważamy, że tabela nazw 'usuariosrfid' w bazie danych będzie używana dla tego projektu, wpisz ten kod w konsoli MySQL:

  1. UTWÓRZ TABELĘ `usuariosrfid` (
  2. `id` int(255) NOT NULL AUTO_INCREMENT,
  3. `nombre` varchar(300) NOT NULL,
  4. `apellido` varchar(300) NIE NULL,
  5. `correo` varchar(300) NOT NULL,
  6. `rfid` varchar(300) NOT NULL,
  7. KLUCZ GŁÓWNY ('id')
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

* Pamiętaj, że po naciśnięciu klawisza ENTER na końcu wiersza poleceń w konsoli MySQL nie zostanie ona uruchomiona, dopóki nie znajdziesz ';' Dlatego na końcu kodu znajduje się ';' Aby zakończyć instalację i konfigurację MySQL, wypełniamy kilka pól testowych w naszej bazie. Wpisz następujące wiersze:

  1. WSTAWIĆ W „usuariosrfid” („id”, „nombre”, „apellido”, „correo”, „rfid”) WARTOŚCI
  2. (1, „Pedro”, „Suarez”, „[email protected]”, „1234a-12345-b-123c”),
  3. (4, „Matias”, „Lopez”, „[email protected]”, „987a-9876b-987c”);

Teraz kontynuuj tworzenie tabeli 'ControlUsuarios', która będzie zawierać wszystkie kody RFID przechodzące przez czytnik. Ta tabela składa się z 3 pól: 'id', 'rfid', 'date'.

  • „id” to pole lub kolumna atrybutu int, która będzie zawierać identyfikator każdego rekordu do indeksowania.
  • Atrybut „rfid” to kolumna „varchar” zawierająca kod tagu RFID odczytany przez czytnik.
  • „data” to kolumna atrybutu „varchar”, która będzie zawierać datę odczytania karty.

Aby utworzyć tabelę 'ControlUsuarios', wpisujemy następujący kod do konsoli MySQL:

  1. UTWÓRZ TABELĘ `ControlUsuarios` (
  2. `id` int(255) NOT NULL AUTO_INCREMENT,
  3. `rfid` varchar(300) NOT NULL,
  4. `fecha` varchar(300) NOT NULL,
  5. KLUCZ GŁÓWNY ('id')
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

Na koniec wpisz „exit”; w konsoli, aby wyjść z MySQL Query i wrócić do SHH, abyśmy mogli zacząć od PHP5.

Krok 5: Instalacja PHP5

Instalacja PHP5
Instalacja PHP5

Kontynuuj instalację i konfigurację PHP5. Ta instalacja jest łatwiejsza niż MySQL, więc nie powinna ich nic kosztować. Najpierw zainstaluj pakiet opkg z pobierania i instalacji Arduino Yun, więc wpisz w konsoli SSH Arduino to:

opkg zainstaluj php5 php5-cgi

Po pobraniu i zainstalowaniu PHP5 na naszym Arduino Yun, więc skonfigurowaliśmy plik root uHTTPd, serwer http, który przywraca Arduino domyślnie, polecam używać tylko tego serwera http, ponieważ jest on bardziej wszechstronny i dostępny w konfiguracji, a nie Apache lub Lighttpd są trudniejsze skonfigurować, gdy jesteś nowy w tej dziedzinie. Aby to skonfigurować, użyj edytora plików 'vi' SSH, do tego musisz mieć minimalną wiedzę, aby używać tego edytora. Zacznij wpisywać ten kod w konsoli, aby uzyskać dostęp do pliku ustawień uHTTPd:

vi /etc/config/uhttpd

Naciśnij 'i', aby edytować plik, a następnie przejdź do wiersza kodu, który napisałeś '# interpreter list. "php = / usr / bin / php-cgi"'. Musisz usunąć znak '#' na początku linii, a następnie nacisnąć klawisz ESC (klawisz 'ESC'), gdy będziesz gotowy, musisz wpisać polecenie ':wq', aby zapisać plik i wyjść. Musisz zrestartować serwer uHTTPd, w tym celu powinieneś wpisać w konsoli poleceń SSH następujący kod:

/etc/init.d/uhttpd restart

Krok 6: Instalacja Conectora MySQL dla PHP5 i Pythona

Instalacja Conectora MySQL dla PHP5 i Pythona
Instalacja Conectora MySQL dla PHP5 i Pythona

Przejdź do instalacji i konfiguracji modułów, aby połączyć bazę danych MySQL z PHP i Python. Zacznijmy od łącznika PHP. Wpisz następujący kod:

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

Gdy będzie gotowy, nie będzie potrzeby ponownego uruchamiania serwera uHTTPd, gotowy do natychmiastowego użycia. Teraz przejdź do łącznika dla Pythona, w tym celu musisz wprowadzić następujący kod:

opkg zainstaluj python-mysql

W tym ostatnim kroku przygotujemy nasze Arduino Yun do naszego projektu z czytnikiem kart ID-20 RFID 125khz. Zakończ tę część informacją zwrotną o tym, co zrobiliśmy:

  • Zainstalowaliśmy serwer MySQL na naszym Arduino Yun, następnie go skonfigurujemy, kończąc na wstawieniu danych testowych.
  • Zainstaluj uzupełnienie PHP na naszym serwerze.
  • Zakończyliśmy instalację i konfigurację MySQL Connector zarówno dla PHP jak i Pythona.

Krok 7: Kody

W tym obszarze omawiamy kody programowania, które mają być użyte w tym projekcie. Wychodzimy z kodem Pythona, który jest podzielony na dwa pliki: 'comprobar.py', który połączy się z bazą danych i wyszuka Yun Arduino, jeśli wynik w nim jest, oraz plik 'control. py ', odpowiedzialny za zapisywanie każdej karty odczytanej przez czytnik ID-20, niezależnie od tego, czy znajduje się w bazie danych zarejestrowanych użytkowników. Następnie przejdź do opisu plików PHP: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ', 'guardar.php ' Consulta.php ', 'configuracion.php'. Dla tych plików redundaremos oba, ponieważ są łatwe do zrozumienia. Na koniec zakończ kod, który pojawi się jako nasz szkic Arduino.

Krok 8: Pliki Python

Pliki Python
Pliki Python

Jak wspomnieliśmy wcześniej, nasze skrypty w Pythonie działały z zainstalowaną już wcześniej biblioteką lub klasą „MySQLdb”. Zacznij od stworzenia pliku z '.py' o nazwie 'comprobar.py' w naszym edytorze, polecam używać tych przypadków do programowania w Pythonie, edytora Sublime Text 3, który możesz pobrać na ich stronie www.sublimetext.com. Zacznijmy od zaimportowania biblioteki do połączenia z naszą bazą danych MySQL, biblioteki 'sys', która pozwoli nam komunikować się z naszym Arduino Yun:

  1. importuj bazę danych MySQL
  2. system importu

Po zaimportowaniu tych bibliotek lub klas dodajemy zmienne do Twojego kodu, które będą danymi połączenia z naszej bazy danych MySQL, bone:

  1. host = "127.0.0.1" # odpowiada adresowi naszego serwera MySQL.
  2. user = "twoje miejsce" # jest użytkownikiem naszej bazy danych.
  3. passw = "twoje-hasło" to hasło użytkownika. base = "arduino" # To jest nazwa używanej bazy danych.

Teraz zacznij od podstawowych kodów skryptów:

  1. podczas gdy prawda:
  2. db= MySQLdb.connect(host, użytkownik, hasło, baza)
  3. cur = baza.kursor()
  4. resultado = cur.execute("""SELECT * FROM usuariosrfid GDZIE rfid LIKE %s ORDER BY id""", (sys.argv[1],))
  5. jeśli (wynik == 1):
  6. drukuj 1
  7. sys.exit(1)
  8. w przeciwnym razie:
  9. drukuj 2
  10. sys.exit(1)

Jeśli zdamy sobie sprawę, w osądzie 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' do wykonania naszego zapytania porównaj zmienną „(sys.argv [1])”, który jest kodem z karty Arduino RFID ze wszystkimi danymi pola „rfid” w tabeli „usuariosrfid”, która po znalezieniu kodu równości z arduino i kodów lub zapisanych w bazie danych zwróć 1, jeśli to nieprawda i nie ma równości między kodem z arduino a częścią bazy, zwrócimy 2. Liczby te otrzyma Arduino. Kontynuujemy z następnym plikiem 'control.py. Plik ten działa tak samo jak powyżej, tylko zachowując posmak na stole, te zapisane rekordy będą zbierane przez czytnik ID-20 podłączony do naszego Arduino Yun, dzięki czemu możemy zachować wszystkich zarejestrowanych użytkowników korzystających z naszego czytnika RFID.

Krok 9: Pliki PHP

Następnie przejdź do plików. 'php' który zachowa folder z naszego serwera, aby to zrobić pamiętaj że konieczne jest aby te pliki raz gotowe, były zapisane w skecie naszego projektu, który automatycznie generuje IDE Arduino, też trzeba pamiętać, chociaż przewiduję tego, że gdy idziemy do naszego Arduino szkicu Yun, wgrywamy przez Wi - Fi, więc zostawiam go na tej samej stronie podręcznika Arduino, www.arduino. cc / pl / Guide / Arduino Yun # toc14, w którym wyjaśniamy więcej na ten temat oraz jak należy postępować przygotowana karta MicroSD do tego typu projektów gdzie pliki powinny być przechowywane na serwerze. Pliki PHP będą miały 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar '. php 'Consulta.php', 'configuracion.php', które będą połączone z innymi, aby utrzymać podstawowe menu zawsze działające i dostępne. Wystarczy wyjaśnić plik 'configuracion.php', który działa jako łącznik z naszą bazą danych. W naszym edytorze umieszczamy w pliku następujący kod:

  1. <? php
  2. // Serwer danych i baza danych
  3. $ serwer = "localhost";
  4. $ nazwa użytkownika = "twoje miejsce";
  5. $ hasło = "hasło";
  6. $ nazwa_bazy_danych = "arduino";

Są to dane, które muszą połączyć się z naszą bazą danych w arduino będą te same, których używamy w naszych skryptach Pythona. Zakończ programowanie instrukcji connect, która używała naszego skryptu:

  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("Problemy do wyboru bazy danych");
  3. ?>

Pozostałe pliki są załączone.

Krok 10: Wreszcie program Arduino YÚN

Dotarliśmy do głównej części tego samouczka, programowania naszego Arduino Yun, żadne szczegóły nie podkreślą całego kodu, ponieważ jest on dość obszerny, wspomnij tylko o następujących ważnych punktach:

  • Kod składa się z 6 funkcji głównych i 13 funkcji drugorzędnych, które stanowią jedynie wsparcie dla korzystania z szeregowego wyświetlacza LCD.
  • Importowane są tylko trzy klasy, 'SoftwareSerial.h', za pomocą których wprowadzimy Serial Attached, aby połączyć się z ID-20 i Serial LCD, główną klasę 'Bridge.h' z którą wykonamy połączenie między Linuxem a ATMEGA32U4, a klasa 'Process.h' posłuży do procesów konsultacyjnych w Linuksie.
  • Zdefiniuj tylko trzy piny, których użycie innych będzie bezpłatne.

Kod jest załączony

Krok 11: Szczęśliwego Nowego Roku

Kontynuuję to skrupulatnie, aby ci służyć i pomóc ci uzyskać więcej informacji na temat Arduino Yun. Wszystkie pliki zostaw załączone na końcu. Dla osób mówiących po hiszpańsku zostawiam ten samouczek, ale w języku hiszpańskim z niezbędnymi plikami. Mam nadzieję, że masz szczęśliwego nowego roku, ciesz się nim i odnieś sukces w 2014 roku!