Kawal Akses Arduino YÚN Dengan MySQL, PHP5 dan Python: 11 Langkah (dengan Gambar)
Kawal Akses Arduino YÚN Dengan MySQL, PHP5 dan Python: 11 Langkah (dengan Gambar)
Anonim
Kawal Akses Arduino YÚN Dengan MySQL, PHP5 dan Python
Kawal Akses Arduino YÚN Dengan MySQL, PHP5 dan Python

Helo Kawan!

Seperti yang anda ketahui, pada bulan September perisai perdana baru Arduino, Arduino YUN. Rakan kecil ini mempunyai sistem tertanam Linux yang dapat kami jalankan apa sahaja yang anda fikirkan (sekurang-kurangnya setakat ini). Walaupun terdapat sedikit maklumat mengenai papan baru ini, dengan panduan yang menyediakan halaman Arduino (yang akan dihubungkan kemudian), ditambah sedikit pengetahuan mengenai banyak Linux, dapat menjalankan projek besar iaitu Access Control. Kali ini saya akan menerangkan bagaimana melakukan projek ini, tetapi dengan cara yang cukup khusus sepanjang Arduino kami. Ini berfungsi, terima kasih pelayan pangkalan data MySQL yang akan menetap di YUN kami, pangkalan data ini akan menyimpan dua jadual, satu untuk pengguna yang berkaitan dengan RFID tertentu dan satu lagi untuk menyimpan rekod semua kad yang telah melalui pembaca kami. Walaupun kami menggunakan bahasa pengaturcaraan skrip PHP dan Python untuk melakukan beberapa asas dan bekerja dengan data kami. Lebih-lebih lagi, di atas perkakasan, kami menggunakan ID-20 pembaca bersebelahan dengan Serial LCD 16 aksara, ditambah RGB LED yang akan menjadi negara pemberi maklumat kami. Kami mungkin menggunakan kawalan akses ini semua yang dapat kami fikirkan, ubah suai, dan tambahkan geganti atau idea lain. Ia boleh digunakan pada apa sahaja di mana anda mempunyai kad dan mahukan rekod. Ingat bahawa dokumen ini adalah penerbitan percuma, penggunaan komersial dan pengubahsuaian yang dikecualikan tidak dibenarkan. Saya harap ini adalah jalan elektronik Open Source yang lebih luas. Oleh itu, kita pergi ke langkah seterusnya, pihak-pihak perlu!

Langkah 1: Bahagian

Bahagian
Bahagian
Bahagian
Bahagian
Bahagian
Bahagian

Untuk melakukan projek ini, kita perlu mempunyai: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71.95 * RFID Reader ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34.95 * Breakout Pembaca RFID https://www.sparkfun.com/products/8423 $ 0.95 * Dasar Karakter 16x2 LCD 5V https://www.sparkfun.com/products/790 $ 16.95 * Ransel LCD Diaktifkan Bersiri https:// www. sparkfun.com/products/258 $ 16.95 * LED RGB 5mm https://www.sparkfun.com/products/105 $ 1.95 * Buzzer https://www.sparkfun.com/products/7950 $ 1.95 * Somes Header Pin and wire $ 5.00 aprox. Secara keseluruhan, jika anda membeli di kedai Sparkfun, semuanya akan hampir $ 150. Sekiranya anda tinggal di Amerika Latin, saya akan mengesyorkan membeli alat ganti di www.olimex.cl, adalah kedai elektronik Chile yang sangat baik.

Langkah 2: Perhimpunan

Perhimpunan
Perhimpunan
Perhimpunan
Perhimpunan
Perhimpunan
Perhimpunan

Sedikit hubungan yang perlu dilakukan, meletakkan penjelasan secara ringkas. Untuk LED RGB, pin LED merah mesti berada di pin 9 Arduino, pin LED hijau harus berada di pin Arduino 8 dan pin LED biru harus berada di pin 7 Arduino. Untuk ID-20 anda mesti menyambungkan pin berikut seperti yang ditunjukkan dalam jadual mengikut urutan masing-masing, pembaca pin ke pin Arduino: Pin ID-20 untuk menyematkan Arduino ID-20 / Arduino PIN 1 - GND PIN 2 - 5V PIN 7 - PIN GND 9 - PIN 10 PIN 10 - PIN BUZZER 11 - 5V Dan akhirnya, untuk penyambung LCD Serial hanya diperlukan untuk pin 5v dan GND dari Arduino, sementara pin LCD Serial RX masuk ke pin 11 dari Arduino.

Langkah 3: Pengaturcaraan Arduino Yun

Pengaturcaraan Arduino Yun
Pengaturcaraan Arduino Yun

Untuk tujuan membuat projek kami, kami perlu memulakan dengan bahagian perisian, memasang beberapa fail pada Arduino opkg Yun kami:

  • Pelayan MySQL
  • PHP5
  • MySQLdb untuk Python 2.7
  • Mod PHP5 ke MySQL

Ingat bahawa secara lalai di Bridge dipasang Python 2.7, jadi anda tidak perlu memasang kemas kini untuk ini. Mula log SSH berani memasuki Arduino Yun kami, setelah anda memulakannya, ketik perintah berikut untuk mengemas kini senarai aplikasi opkg:

kemas kini opkg

Langkah 4: Pemasangan MySQL

Pemasangan MySQL
Pemasangan MySQL

Sekarang Kami akan menetapkan pemasangan dan konfigurasi Server MySQL, ketik perintah berikut di konsol:

  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 bermula
  7. /etc/init.d/mysqld aktifkan
  8. kata laluan root mysqladmin -u 'tu-nueva-clave'

Setelah selesai memasukkan kod kami dan memulakan pelayan MySQL, anda harus mengkonfigurasi pangkalan data yang akan dimanipulasi. Tetapi sebelum mula menaip kod, kita perlu memahami bidang yang membawa jadual kita. Dewan terdiri daripada 5 kursus, 'id', 'name', 'name', 'email', 'rfid' untuk memasarkan beberapa daripadanya saya akan memberikan penjelasan ringkas mengenai penggunaannya.

  • 'id': akan bidang atau atribut int kolom yang akan memberitahu kami nombor yang diberikan kepada ID Pengguna, nombor ini diberikan oleh pangkalan data yang sama dan akan menjadi cara untuk mengindeks rekod kami.
  • 'nombre': lajur atribut akan menjadi 'varchar' mungkin ditunjukkan dengan nama yang digunakan pengguna kad kami.
  • 'apellido': lajur atribut akan menjadi 'varchar' mungkin ditunjukkan dengan nama belakang yang dikaitkan dengan pengguna kami.
  • 'correo': adalah kolom atribut 'varchar' yang akan mengandungi e-mel pengguna yang berkaitan.
  • 'rfid': adalah kolom atribut 'varchar' yang akan mengandungi kod kad RFID yang anda gunakan.

(Saya akan menggunakan pemboleh ubah dalam bahasa Sepanyol, kerana bahasa ibunda saya dan saya suka c:) Sekarang kita dapat mengkonfigurasi pangkalan data kita tanpa masalah, oleh itu kita membuat panggilan 'arduino' MySQL. Anda mesti menaip kod berikut:

mysqladmin -u root -p buat arduino

Kami meminta kata laluan yang kami masukkan lebih awal dalam pemasangan, kami akan menyerahkannya untuk menyelesaikan pembuatan pangkalan. Selesai semua ini, kami memasukkan pertanyaan ke MySQL, anda harus memasukkan kod berikut di konsol:

mysql -root -p

Sekali lagi kami meminta kata laluan, anda mesti mengemukakannya semula. Sebaik sahaja berada di dalam arahan konsol MySQL, kita pointer ('mysql>') akan kelihatan siap untuk menaip. Perkara pertama yang akan kita lakukan ialah memindahkan asas data 'arduino' untuk mengusahakannya. Ini dilakukan dengan menaip arahan berikut di konsol MySQL:

GUNAKAN arduino

Kami yakin jadual nama 'usuariosrfid' dalam pangkalan data akan digunakan untuk projek ini, taipkan kod ini di konsol MySQL:

  1. BUAT JADUAL `usuariosrfid` (
  2. `id` int (255) BUKAN NULL AUTO_INCREMENT,
  3. `nombre` varchar (300) TIDAK NULL,
  4. `apellido` varchar (300) TIDAK BENAR,
  5. `correo` varchar (300) TIDAK BENAR,
  6. `rfid` varchar (300) TIDAK BENAR,
  7. KUNCI PERDANA (`id`)
  8. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Ingat bahawa semasa menekan kekunci ENTER di hujung baris arahan di konsol MySQL, ia tidak akan berjalan sehingga anda menemui ';' Oleh itu, pada akhir kod adalah ';' Untuk menyelesaikan pemasangan dan konfigurasi MySQL, kami mengisi beberapa medan ujian di pangkalan kami. Taipkan baris berikut:

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

Sekarang teruskan dengan pembuatan jadual 'ControlUsuarios', yang akan menempatkan semua kod RFID yang dilalui oleh pembaca, jadual ini terdiri daripada 3 bidang, 'id', 'rfid', 'date'.

  • 'id' adalah kolom int atau atribut yang akan mengandungi id setiap rekod untuk pengindeksan.
  • Atribut 'rfid' adalah lajur 'varchar' yang mengandungi kod tag RFID telah dibaca oleh pembaca.
  • 'date' adalah kolom atribut 'varchar' yang akan mengandungi tarikh kad dibaca.

Untuk membuat jadual 'ControlUsuarios', kami memasukkan kod berikut ke dalam konsol MySQL:

  1. BUAT JADUAL `ControlUsuarios` (
  2. `id` int (255) BUKAN NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) TIDAK BENAR,
  4. `fecha` varchar (300) TIDAK BENAR,
  5. KUNCI PERDANA (`id`)
  6. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Akhirnya taip 'exit;' di konsol untuk keluar dari MySQL Query, dan kembali ke SHH supaya kita dapat memulakan dengan PHP5.

Langkah 5: Pemasangan PHP5

Pemasangan PHP5
Pemasangan PHP5

Teruskan dengan pemasangan dan konfigurasi PHP5. Pemasangan ini lebih mudah daripada MySQL, oleh itu ia tidak memerlukan sebarang kos. Pertama, pasang pakej opkg dari muat turun dan pasang Arduino Yun, jadi ketikkan konsol SSH Arduino ini:

opkg pasang php5 php5-cgi

Setelah dimuat turun dan PHP5 dipasang di Arduino Yun kami, jadi kami mengkonfigurasi fail root uHTTPd, pelayan http yang membawa Arduino lalai, saya cadangkan anda hanya menggunakan pelayan http ini kerana ia lebih serba boleh dan boleh diakses dalam konfigurasi, bukan Apache atau Lighttpd lebih sukar untuk disiapkan semasa anda baru dalam bidang ini. Untuk mengkonfigurasi ini, gunakan editor fail 'vi' SSH, untuk ini anda mesti mempunyai pengetahuan minimum untuk menggunakan editor ini. Mulailah mengetik kod ini di konsol untuk mengakses fail tetapan uHTTPd:

vi / etc / config / uhttpd

Tekan 'i' untuk mengedit fail, kemudian pergi ke baris kod yang telah anda tulis '# jurubahasa senarai. "php = / usr / bin / php-cgi" '. Anda mesti memadamkan watak '#' di awal baris, kemudian tekan kekunci melarikan diri (kunci 'ESC'), setelah anda bersedia, anda mesti menaip perintah ': wq' untuk menyimpan fail dan keluar dari. Anda mesti memulakan semula pelayan uHTTPd, untuk ini, anda harus memasukkan konsol arahan SSH kod berikut:

/etc/init.d/uhttpd mulakan semula

Langkah 6: Pasang Conector MySQL untuk PHP5 dan Python

Pemasangan MySQL Conector untuk PHP5 dan Python
Pemasangan MySQL Conector untuk PHP5 dan Python

Teruskan dengan pemasangan dan konfigurasi modul untuk menghubungkan pangkalan data MySQL dengan PHP dan Python. Mari mulakan dengan penyambung PHP. Taipkan kod berikut:

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

Setelah siap, ia tidak perlu menghidupkan semula pelayan uHTTPd, siap untuk digunakan dengan segera. Sekarang teruskan dengan penyambung untuk Python, untuk itu, anda mesti memasukkan kod berikut:

opkg pasang python-mysql

Dengan langkah terakhir ini, kami akan menyediakan Arduino Yun untuk projek kami dengan pembaca kad ID-20 RFID 125khz. Selesaikan bahagian ini dengan Maklum balas mengenai apa yang telah kami lakukan:

  • Kami memasang pelayan MySQL pada Arduino Yun kami, kemudian mengkonfigurasinya, diakhiri dengan penyisipan data ujian.
  • Pasang pelengkap PHP ke pelayan kami.
  • Kami selesai dengan pemasangan dan konfigurasi MySQL Connector untuk PHP dan Python.

Langkah 7: Kod

Di kawasan ini, kami membincangkan kod pengaturcaraan yang akan digunakan untuk projek ini. Kami pergi dengan kod Python, yang terbahagi kepada dua fail: 'comprobar.py', yang akan menyambung ke pangkalan data dan mencari Yun Arduino jika hasilnya ada di dalamnya, dan fail 'kawalan. py ', bertanggungjawab untuk merakam sebarang kad yang dibaca oleh pembaca ID-20, sama ada dalam pangkalan data pengguna berdaftar atau tidak. Kemudian teruskan dengan penerangan fail PHP, adalah: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Untuk fail ini, redundaremos keduanya kerana mudah difahami. Akhirnya selesaikan dengan kod yang akan menjadi lakaran Arduino kami.

Langkah 8: Fail Python

Fail Python
Fail Python

Seperti disebutkan sebelumnya, skrip Python kami berfungsi dengan perpustakaan atau kelas 'MySQLdb', yang sudah dipasang sebelumnya. Mulakan dengan membuat fail dengan '.py' yang disebut 'comprobar.py' di editor kami, saya cadangkan menggunakan kes ini untuk pengaturcaraan di Python, editor Sublime Text 3, yang boleh anda muat turun di laman web mereka www.sublimetext.com. Mari mulakan dengan mengimport perpustakaan untuk menyambung ke pangkalan data MySQL kami, perpustakaan 'sys' yang akan membolehkan kami berkomunikasi dengan Arduino Yun kami:

  1. import MySQLdb
  2. import sys

Setelah mengimport perpustakaan atau kelas ini, kami menambahkan pemboleh ubah ke kod anda, yang akan menjadi data sambungan dari pangkalan data MySQL kami, tulang:

  1. host = "127.0.0.1" # sesuai dengan alamat pelayan MySQL kami.
  2. user = "your-seat" # adalah pengguna pangkalan data kami.
  3. passw = "kata laluan anda" adalah untuk kata laluan pengguna. base = "arduino" # Ini adalah nama pangkalan data yang anda gunakan.

Sekarang mulakan dengan kod skrip asas:

  1. Walaupun Betul:
  2. db = MySQLdb.connect (host, pengguna, passw, base)
  3. cur = db.cursor ()
  4. resultado = cur.execute ("" "PILIH * DARI usuariosrfid DI MANA rfid SUKA% s ORDER BY id" "", (sys.argv [1],))
  5. jika (resultado == 1):
  6. mencetak 1
  7. sys.exit (1)
  8. lain:
  9. mencetak 2
  10. sys.exit (1)

Sekiranya kita sedar, dalam penghakiman 'cur.execute result = ("" "PILIH * DARI MANA rfid usuariosrfid SEPERTI% s ORDER BY id" "" (sys.argv [1]))' perintah untuk melaksanakan pertanyaan kami membandingkan pembolehubah '(sys.argv [1])' yang merupakan kod dari kad RFID Arduino dengan semua data medan 'rfid' jadual 'usuariosrfid', yang, mencari kod persamaan dari arduino dan atau kod yang disimpan dalam pangkalan data, akan kembalikan 1, jika ini tidak benar dan tidak ada persamaan antara kod dari arduino dan beberapa pangkalan, kami akan mengembalikan 2. Nombor-nombor ini akan diterima oleh Arduino. Kami meneruskan fail seterusnya 'control.py. Fail ini berfungsi dengan cara yang sama seperti di atas, hanya menyimpan aftertaste di atas meja, rekod yang telah disimpan ini akan dikumpulkan oleh ID-20 pembaca yang terhubung dengan Arduino Yun kami, sehingga kami dapat menyimpan semua pengguna berdaftar yang menggunakan pembaca RFID kami.

Langkah 9: Fail PHP

Kemudian teruskan fail. 'Php' yang akan menyimpan folder dari pelayan kami, untuk melakukan ini ingat bahawa perlu bahawa fail-fail ini setelah siap, disimpan di skit projek kami, yang secara automatik menghasilkan IDE Arduino, anda juga perlu ingat, walaupun saya menjangka ini, bahawa ketika kita melihat sketsa Arduino Yun, kita memuat naik melalui Wi-Fi, jadi saya meninggalkannya di manual halaman yang sama Arduino, www.arduino. cc / en / Panduan / Arduino Yun # toc14, yang menerangkan lebih lanjut mengenainya, dan bagaimana anda harus menyediakan kad MicroSD untuk jenis projek ini di mana fail harus disimpan di pelayan. Fail PHP akan berupa 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' consulta.php ',' configuracion.php ', yang akan dihubungkan dengan yang lain, untuk memastikan menu asas sentiasa berjalan dan dapat diakses. Terangkan sahaja fail 'configuracion.php', yang berfungsi sebagai penyambung dengan pangkalan data kami. Dalam editor kami, kami menjadualkan kod berikut dalam fail:

  1. <? php
  2. / / Pelayan data dan pangkalan data
  3. $ pelayan = "localhost";
  4. $ nama pengguna = "tempat duduk anda";
  5. $ kata laluan = "kata laluan";
  6. $ database_name = "arduino";

Ini adalah data yang perlu disambungkan ke pangkalan data kami di arduino akan sama seperti yang kami gunakan dalam skrip Python kami. Selesai memprogram penyataan sambung, yang menggunakan skrip kami:

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

Fail-fail lain dilampirkan.

Langkah 10: Akhirnya, Program Arduino YÚN

Kami sampai ke bahagian utama tutorial ini, memprogram Arduino Yun kami, tidak ada perincian yang akan menyoroti semua kodnya kerana ia cukup luas, hanya sebutkan perkara penting berikut:

  • Kod ini terdiri daripada 6 fungsi utama dan 13 fungsi sekunder, yang hanya merupakan sokongan untuk penggunaan LCD Serial.
  • Hanya diimport tiga kelas, 'SoftwareSerial.h', dengan mana kami akan memasukkan Serial Attached untuk berhubung dengan ID-20 dan Serial LCD, kelas utama 'Bridge.h' yang dengannya kami akan membuat hubungan antara Linux dan ATMEGA32U4, dan kelas 'Process.h' akan berfungsi untuk proses perundingan di Linux.
  • Tentukan hanya tiga pin, yang menggunakan yang lain adalah percuma.

Kod dilampirkan

Langkah 11: Selamat Tahun Baru

Saya meneruskannya dengan teliti untuk melayani anda dan membantu anda mendapatkan lebih banyak maklumat mengenai Arduino Yun. Biarkan semua fail dilampirkan ke hujungnya. Untuk penutur bahasa Sepanyol, saya meninggalkan tutorial ini tetapi dalam bahasa Sepanyol dengan fail yang diperlukan. Saya harap anda mempunyai tahun baru yang bahagia, menikmatinya dan berjaya pada tahun 2014 ini!

Disyorkan: