Mục lục:

Kiểm soát quyền truy cập của Arduino YÚN Với MySQL, PHP5 và Python: 11 bước (có hình ảnh)
Kiểm soát quyền truy cập của Arduino YÚN Với MySQL, PHP5 và Python: 11 bước (có hình ảnh)

Video: Kiểm soát quyền truy cập của Arduino YÚN Với MySQL, PHP5 và Python: 11 bước (có hình ảnh)

Video: Kiểm soát quyền truy cập của Arduino YÚN Với MySQL, PHP5 và Python: 11 bước (có hình ảnh)
Video: Bộ điều khiển kiểm soát rfid acess control _ kênh chế tác 2024, Tháng mười một
Anonim
Kiểm soát quyền truy cập của Arduino YÚN Với MySQL, PHP5 và Python
Kiểm soát quyền truy cập của Arduino YÚN Với MySQL, PHP5 và Python

Xin chào các bạn!

Như bạn đã biết, vào tháng 9, lá chắn ra mắt mới của Arduino, Arduino YUN. Người bạn nhỏ này có một hệ thống nhúng Linux mà chúng tôi có thể chạy bất cứ thứ gì bạn có thể nghĩ đến (ít nhất là cho đến nay). Mặc dù có rất ít thông tin về bo mạch mới này, nhưng với sự khởi hành trong hướng dẫn cung cấp trang Arduino (sẽ liên kết sau), cộng với một chút kiến thức về nhiều Linux, có thể thực hiện một dự án lớn là Control Access. Lần này tôi sẽ giải thích cách thực hiện dự án này, nhưng theo một cách đủ cụ thể thông qua Arduino của chúng tôi. Điều này hoạt động nhờ một máy chủ cơ sở dữ liệu MySQL sẽ ổn định trong YUN của chúng tôi, cơ sở dữ liệu này sẽ lưu trữ hai bảng, một bảng dành cho người dùng được liên kết với một RFID cụ thể và một bảng khác để lưu giữ hồ sơ của tất cả các thẻ đã đi qua trình đọc của chúng tôi. Mặc dù chúng tôi sử dụng ngôn ngữ lập trình PHP và các tập lệnh Python để thực hiện một số thao tác cơ bản và làm việc với dữ liệu của chúng tôi. Hơn nữa, về phần cứng, chúng tôi sử dụng đầu đọc ID-20 bên cạnh màn hình LCD nối tiếp gồm 16 ký tự, cộng với đèn LED RGB sẽ là trạng thái cung cấp thông tin của chúng tôi. Chúng tôi có thể sử dụng kiểm soát truy cập này mọi thứ chúng tôi có thể nghĩ ra, sửa đổi và thêm một rơle hoặc một ý tưởng khác. Nó có thể được sử dụng trên bất cứ thứ gì mà bạn có thẻ và muốn ghi lại. Nhớ lại rằng tài liệu này là xuất bản miễn phí, không được phép sử dụng cho mục đích thương mại và các sửa đổi miễn phí. Tôi hy vọng đó là một con đường rộng lớn hơn của điện tử Nguồn mở. Vì vậy, chúng ta sang bước tiếp theo, các bên cần!

Bước 1: Các bộ phận

Các bộ phận
Các bộ phận
Các bộ phận
Các bộ phận
Các bộ phận
Các bộ phận

Để thực hiện dự án này, chúng ta cần có: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71,95 * RFID Reader ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34,95 * Đột phá đầu đọc RFID https://www.sparkfun.com/products/8423 $ 0,95 * Màn hình LCD ký tự 16x2 cơ bản 5V https://www.sparkfun.com/products/790 $ 16,95 * Ba lô LCD kích hoạt nối tiếp 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 * Pin và dây Somes Header $ 5,00 aprox. Nói chung, nếu bạn mua tại cửa hàng Sparkfun, mọi thứ sẽ gần $ 150. Nếu bạn sống ở Mỹ Latinh, tôi khuyên bạn nên mua các bộ phận ở www.olimex.cl, là một cửa hàng điện tử rất tốt của Chile.

Bước 2: Lắp ráp

Lắp ráp
Lắp ráp
Lắp ráp
Lắp ráp
Lắp ráp
Lắp ráp

Ít kết nối để làm, giải thích ngắn gọn. Đối với đèn LED RGB, chân LED màu đỏ phải ở chân 9 của Arduino, chân của đèn LED màu xanh lá cây phải ở chân 8 của Arduino và chân của đèn LED màu xanh phải ở chân 7 của Arduino. Đối với ID-20, bạn phải kết nối các chân sau như được chỉ ra trong bảng theo thứ tự tương ứng, đầu đọc chân với chân Arduino: Chân ID-20 với chân Arduino ID-20 / Arduino PIN 1 - GND PIN 2 - 5V PIN 7 - GND PIN 9 - PIN 10 PIN 10 - BUZZER PIN 11 - 5V Và cuối cùng, đối với đầu nối Serial LCD sẽ chỉ cần thiết cho chân 5v và GND của Arduino, trong khi chân LCD Serial RX đi vào chân 11 của Arduino.

Bước 3: Lập trình Arduino Yun

Lập trình Arduino Yun
Lập trình Arduino Yun

Với mục đích thực hiện dự án của chúng tôi, chúng tôi cần bắt đầu với một phần của phần mềm, cài đặt một số tệp trên Arduino opkg Yun của chúng tôi:

  • Máy chủ MySQL
  • PHP5
  • MySQLdb cho Python 2.7
  • Mod PHP5 sang MySQL

Nhớ lại rằng theo mặc định trong Bridge được cài đặt Python 2.7, vì vậy bạn không bao giờ cần cài đặt bất kỳ bản cập nhật nào cho việc này. Bắt đầu đăng nhập SSH dám nhập Arduino Yun của chúng tôi, sau khi bạn bắt đầu chúng vào, hãy nhập lệnh sau để cập nhật danh sách ứng dụng opkg:

cập nhật opkg

Bước 4: Cài đặt MySQL

Cài đặt MySQL
Cài đặt MySQL

Bây giờ Chúng ta sẽ thiết lập cài đặt và cấu hình MySQL Server, gõ các lệnh sau vào bảng điều khiển:

  1. opkg cài đặt 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 bật
  8. mật khẩu gốc mysqladmin -u 'tu-nueva-clave'

Sau khi nhập xong mã của chúng tôi và khởi động máy chủ MySQL, bạn nên định cấu hình cơ sở dữ liệu sẽ thao tác. Nhưng trước khi bắt đầu nhập mã, chúng ta cần hiểu các trường mang bảng của chúng ta. Hội đồng quản trị sẽ bao gồm 5 khóa học, 'id', 'name', 'name', 'email', 'rfid' để tiếp thị một số trong số chúng, tôi sẽ giải thích ngắn gọn về công dụng của chúng.

  • 'id': trường hoặc cột thuộc tính int sẽ cho chúng ta biết số được gán cho ID người dùng, số này được chỉ định bởi cùng một cơ sở dữ liệu và sẽ là cách để lập chỉ mục các bản ghi của chúng tôi.
  • 'nombre': cột thuộc tính sẽ là 'varchar' có thể được chỉ ra bằng tên mà người dùng thẻ của chúng tôi được xác định.
  • 'apellido': cột thuộc tính sẽ là 'varchar' có thể được chỉ ra bằng họ mà người dùng của chúng tôi được liên kết.
  • 'Correo': là cột thuộc tính 'varchar' sẽ chứa e-mail của người dùng được liên kết.
  • 'rfid': là cột thuộc tính 'varchar' sẽ chứa mã của thẻ RFID bạn sử dụng.

(Tôi sẽ sử dụng các biến bằng tiếng Tây Ban Nha, vì là ngôn ngữ mẹ đẻ của tôi và tôi thích c:) Bây giờ chúng ta có thể cấu hình cơ sở dữ liệu của mình mà không có vấn đề gì, do đó chúng ta tạo lệnh gọi MySQL 'arduino'. Bạn phải nhập mã sau:

mysqladmin -u root -p tạo arduino

Chúng tôi yêu cầu mật khẩu mà chúng tôi đã nhập trước đó trong quá trình cài đặt, chúng tôi sẽ gửi mật khẩu đó để hoàn tất việc tạo cơ sở. Hoàn thành tất cả những điều này, chúng tôi nhập truy vấn vào MySQL, bạn nên nhập mã sau vào bảng điều khiển:

mysql -root -p

Một lần nữa chúng tôi yêu cầu mật khẩu, bạn phải gửi lại. Khi bên trong lệnh điều khiển MySQL, con trỏ ('mysql>') sẽ xuất hiện sẵn sàng để nhập. Điều đầu tiên chúng tôi sẽ làm là di chuyển cơ sở để dữ liệu 'arduino' hoạt động trên đó. Điều này được thực hiện bằng cách gõ lệnh sau vào bảng điều khiển MySQL:

SỬ DỤNG arduino

Chúng tôi tin rằng bảng tên 'usuariosrfid' trong cơ sở dữ liệu sẽ sử dụng cho dự án này, hãy nhập mã này vào bảng điều khiển MySQL:

  1. TẠO BẢNG `usuariosrfid` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `nombre` varchar (300) KHÔNG ĐẦY,
  4. `apellido` varchar (300) KHÔNG ĐỦ,
  5. `Correo` varchar (300) KHÔNG ĐẦY,
  6. `rfid` varchar (300) KHÔNG ĐỦ,
  7. KHÓA CHÍNH (`id`)
  8. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Hãy nhớ rằng khi nhấn phím ENTER ở cuối dòng lệnh trong bảng điều khiển MySQL, nó sẽ không chạy cho đến khi bạn tìm thấy dấu ';' Do đó, ở cuối mã là ';' Để hoàn thành cài đặt và cấu hình MySQL, chúng tôi điền vào một số trường thử nghiệm trong cơ sở của chúng tôi. Nhập vào các dòng sau:

  1. CHÈN VÀO GIÁ TRỊ `usuariosrfid` (` id`, `nombre`,` apellido`, `Correo`,` rfid`)
  2. (1, 'Pedro', 'Suarez', '[email protected]', '1234a-12345-b-123c'),
  3. (4, 'Matias', 'Lopez', '[email protected]', '987a-9876b-987c');

Bây giờ tiếp tục với việc tạo bảng 'ControlUsuarios', bảng này sẽ chứa tất cả các mã RFID được trình đọc chuyển qua, bảng này bao gồm 3 trường là 'id', 'rfid', 'date'.

  • 'id' là trường hoặc cột thuộc tính int sẽ chứa id của mỗi bản ghi để lập chỉ mục.
  • Thuộc tính 'rfid' là cột 'varchar' chứa mã thẻ RFID được người đọc đọc.
  • 'date' là cột thuộc tính 'varchar' sẽ chứa ngày thẻ được đọc.

Để tạo bảng 'ControlUsuarios', chúng tôi nhập mã sau vào bảng điều khiển MySQL:

  1. TẠO BẢNG `ControlUsuarios` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) KHÔNG ĐẦY,
  4. `fecha` varchar (300) KHÔNG ĐỦ,
  5. KHÓA CHÍNH (`id`)
  6. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Cuối cùng gõ 'exit;' trong bảng điều khiển để thoát khỏi Truy vấn MySQL và quay lại SHH để chúng ta có thể bắt đầu với PHP5.

Bước 5: Cài đặt PHP5

Cài đặt PHP5
Cài đặt PHP5

Tiếp tục cài đặt và cấu hình PHP5. Việc cài đặt này dễ dàng hơn MySQL, vì vậy chúng không phải trả bất cứ chi phí nào. Đầu tiên, hãy cài đặt gói opkg từ việc tải xuống và cài đặt Arduino Yun, vì vậy hãy nhập vào bảng điều khiển SSH của Arduino:

opkg cài đặt php5 php5-cgi

Sau khi tải xuống và cài đặt PHP5 trên Arduino Yun của chúng tôi, vì vậy chúng tôi đã định cấu hình tệp gốc uHTTPd, máy chủ http mang mặc định cho Arduino, tôi khuyên bạn chỉ nên sử dụng máy chủ http này vì nó linh hoạt và dễ truy cập hơn trong cấu hình, không phải Apache hoặc Lighttpd thì khó hơn để thiết lập khi bạn là người mới trong lĩnh vực này. Để cấu hình điều này, hãy sử dụng trình chỉnh sửa tệp 'vi' SSH, đối với điều này, bạn phải có kiến thức tối thiểu để sử dụng trình chỉnh sửa này. Bắt đầu nhập mã này vào bảng điều khiển để truy cập tệp cài đặt uHTTPd:

vi / etc / config / uhttpd

Nhấn 'i' để chỉnh sửa tệp, sau đó chuyển đến dòng mã bạn đã viết '# trình thông dịch danh sách. "php = / usr / bin / php-cgi" '. Bạn phải xóa ký tự '#' ở đầu dòng, sau đó nhấn phím Escape (phím 'ESC'), khi bạn đã sẵn sàng, bạn phải gõ lệnh ': wq' để lưu tệp và thoát khỏi. Bạn phải khởi động lại uHTTPd của máy chủ, đối với điều này, bạn nên nhập vào bảng điều khiển lệnh của SSH đoạn mã sau:

/etc/init.d/uhttpd khởi động lại

Bước 6: Cài đặt Conector MySQL cho PHP5 và Python

Cài đặt Conector MySQL cho PHP5 và Python
Cài đặt Conector MySQL cho PHP5 và Python

Tiến hành cài đặt và cấu hình các mô-đun để kết nối cơ sở dữ liệu MySQL với PHP và Python. Hãy bắt đầu với trình kết nối PHP. Nhập mã sau:

  1. opkg cài đặt php5-mod-mysql
  2. sed -i 's,; extension = mysql.so, extension = mysql.so, g' /etc/php.ini

Sau khi sẵn sàng, nó sẽ không cần khởi động lại uHTTPd của máy chủ, sẵn sàng để sử dụng ngay lập tức. Bây giờ tiếp tục với trình kết nối cho Python, để làm điều đó, bạn phải nhập mã sau:

opkg cài đặt python-mysql

Với bước cuối cùng này, chúng ta sẽ có Arduino Yun sẵn sàng cho dự án của mình với đầu đọc thẻ ID-20 RFID 125khz. Kết thúc phần này với Phản hồi về những gì chúng tôi đã làm:

  • Chúng tôi đã cài đặt máy chủ MySQL trên Arduino Yun của mình, sau đó định cấu hình nó, kết thúc bằng việc chèn dữ liệu thử nghiệm.
  • Cài đặt phần bổ sung PHP vào máy chủ của chúng tôi.
  • Chúng tôi đã hoàn thành việc cài đặt và cấu hình MySQL Connector cho cả PHP và Python.

Bước 7: Mã

Trong lĩnh vực này, chúng tôi thảo luận về các mã lập trình sẽ được sử dụng cho dự án này. Chúng tôi rời khỏi với mã Python, được chia thành hai tệp: 'comprobar.py', sẽ kết nối với cơ sở dữ liệu và tìm kiếm Yun Arduino nếu kết quả nằm trong đó và điều khiển tệp '. py ', chịu trách nhiệm ghi lại bất kỳ thẻ nào được đọc bởi đầu đọc ID-20, cho dù có trong cơ sở dữ liệu của người dùng đã đăng ký hay không. Sau đó, tiếp tục với mô tả của các tệp PHP, là: 'ConsultaRelacion.php', 'ConsultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' Guardar.php '' Consulta.php ',' configuracion.php '. Đối với những tệp này dư thừa cả hai vì chúng dễ hiểu. Cuối cùng kết thúc với mã sẽ xuất hiện dưới dạng bản phác thảo Arduino của chúng tôi.

Bước 8: Tệp Python

Tệp Python
Tệp Python

Như đã đề cập trước đó, các tập lệnh Python của chúng tôi hoạt động với thư viện hoặc lớp 'MySQLdb', đã được cài đặt trước đó. Bắt đầu bằng cách tạo một tệp với '.py' được gọi là 'comprobar.py' trong trình soạn thảo của chúng tôi, tôi khuyên bạn nên sử dụng các trường hợp này để lập trình bằng Python, trình soạn thảo Sublime Text 3, mà bạn có thể tải xuống trên trang web của họ www.sublimetext.com. Hãy bắt đầu bằng cách nhập thư viện để kết nối với cơ sở dữ liệu MySQL của chúng tôi, 'hệ thống' thư viện sẽ cho phép chúng tôi giao tiếp với Arduino Yun của chúng tôi:

  1. nhập MySQLdb
  2. nhập hệ thống

Sau khi nhập các thư viện hoặc lớp này, chúng tôi sẽ thêm các biến vào mã của bạn, đó sẽ là dữ liệu kết nối từ cơ sở dữ liệu MySQL của chúng tôi, xương:

  1. host = "127.0.0.1" # tương ứng với địa chỉ của máy chủ MySQL của chúng tôi.
  2. user = "your-seat" # là người dùng cơ sở dữ liệu của chúng tôi.
  3. passw = "your-password" là mật khẩu của người dùng. base = "arduino" # Đây là tên của cơ sở dữ liệu bạn sử dụng.

Bây giờ hãy bắt đầu với các mã tập lệnh cơ sở:

  1. trong khi Đúng:
  2. db = MySQLdb.connect (máy chủ, người dùng, mật khẩu, cơ sở)
  3. cur = db.cursor ()
  4. resultado = cur.execute ("" "CHỌN * TỪ usuariosrfid WHERE rfid LIKE% s ĐẶT HÀNG THEO id" "", (sys.argv [1],))
  5. if (resultado == 1):
  6. in 1
  7. sys.exit (1)
  8. khác:
  9. in 2
  10. sys.exit (1)

Nếu chúng ta nhận ra, trong câu lệnh 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' để thực hiện truy vấn của chúng tôi so sánh biến '(sys.argv [1])' là mã từ thẻ Arduino RFID với tất cả dữ liệu trường 'rfid' bảng 'usuariosrfid', tìm mã bình đẳng từ arduino và hoặc các mã được lưu trữ trong cơ sở dữ liệu, sẽ trả về 1, nếu điều này không đúng và không có sự bình đẳng giữa mã từ arduino và một số cơ sở, chúng tôi sẽ trả về 2. Những số này sẽ được Arduino nhận. Chúng tôi tiếp tục với tệp tiếp theo 'control.py. Tệp này hoạt động theo cách tương tự như trên, chỉ lưu lại dư vị trên bảng, các bản ghi này đã lưu sẽ được thu thập bởi trình đọc ID-20 được kết nối với Arduino Yun của chúng tôi, vì vậy chúng tôi có thể giữ lại tất cả người dùng đã đăng ký sử dụng trình đọc RFID của chúng tôi.

Bước 9: Tập tin PHP

Sau đó, tiếp tục với các tệp. 'Php' sẽ giữ thư mục khỏi máy chủ của chúng tôi, để làm điều này, hãy nhớ rằng điều cần thiết là các tệp này khi đã sẵn sàng, được lưu trong tiểu phẩm dự án của chúng tôi, sẽ tự động tạo IDE Arduino, bạn cũng cần nhớ, mặc dù tôi dự đoán điều này, mà khi chúng tôi lên bản phác thảo Arduino Yun, chúng tôi tải lên qua Wi-Fi, vì vậy tôi để nó trên cùng một trang hướng dẫn sử dụng Arduino, www.arduino. cc / en / Guide / Arduino Yun # toc14, giải thích thêm về nó và cách bạn nên chuẩn bị thẻ MicroSD cho loại dự án này, nơi các tệp sẽ được lưu trữ trên máy chủ. Các tệp PHP sẽ là 10 'ConsultaRelacion.php', 'ConsultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'Guardar. php '' Consulta.php ',' configuracion.php ', sẽ được siêu liên kết với cái kia, để duy trì một menu cơ bản luôn chạy và có thể truy cập được. Chỉ cần giải thích tệp 'configuracion.php', có chức năng như một trình kết nối với cơ sở dữ liệu của chúng tôi. Trong trình chỉnh sửa của chúng tôi, chúng tôi lập lịch cho mã sau trong tệp:

  1. <? php
  2. // Máy chủ dữ liệu và cơ sở dữ liệu
  3. $ server = "localhost";
  4. $ username = "your-seat";
  5. $ password = "mật khẩu";
  6. $ database_name = "arduino";

Đây là những dữ liệu cần kết nối với cơ sở dữ liệu của chúng tôi trong arduino sẽ giống như những dữ liệu chúng tôi sử dụng trong các tập lệnh Python của mình. Hoàn tất lập trình câu lệnh kết nối, sử dụng tập lệnh của chúng tôi:

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

Các tệp khác được đính kèm.

Bước 10: Cuối cùng là chương trình Arduino YÚN

Chúng ta đã đến phần chính của hướng dẫn này, lập trình Arduino Yun của chúng ta, không có chi tiết nào sẽ nêu bật tất cả mã vì nó khá rộng, chỉ đề cập đến những điểm quan trọng sau:

  • Mã này bao gồm 6 chức năng chính và 13 chức năng phụ, chỉ hỗ trợ cho việc sử dụng Serial LCD.
  • Chỉ được nhập ba lớp, 'SoftwareSerial.h', mà chúng tôi sẽ nhập Serial Attached để kết nối với ID-20 và Serial LCD, lớp chính 'Bridge.h' mà chúng tôi sẽ tạo kết nối giữa Linux và ATMEGA32U4, và lớp 'Process.h' sẽ phục vụ cho các quy trình tham vấn trong Linux.
  • Chỉ xác định ba chân, sử dụng những chân khác miễn phí.

Mã được đính kèm

Bước 11: Chúc mừng năm mới

Tôi tiếp tục điều này một cách tỉ mỉ để phục vụ bạn và giúp bạn có thêm thông tin về Arduino Yun. Để lại tất cả các tệp đính kèm ở cuối. Đối với người nói ngôn ngữ tiếng Tây Ban Nha, tôi để lại hướng dẫn này nhưng bằng tiếng Tây Ban Nha với các tệp cần thiết. Tôi hy vọng bạn có một năm mới vui vẻ, tận hưởng nó và thành công trong năm 2014 này!

Đề xuất: