Оглавление:

Управление доступом Arduino YÚN с помощью MySQL, PHP5 и Python: 11 шагов (с изображениями)
Управление доступом Arduino YÚN с помощью MySQL, PHP5 и Python: 11 шагов (с изображениями)

Видео: Управление доступом Arduino YÚN с помощью MySQL, PHP5 и Python: 11 шагов (с изображениями)

Видео: Управление доступом Arduino YÚN с помощью MySQL, PHP5 и Python: 11 шагов (с изображениями)
Видео: Управление arduino с помощью php 2024, Ноябрь
Anonim
Управляйте доступом Arduino YÚN с помощью MySQL, PHP5 и Python
Управляйте доступом Arduino YÚN с помощью MySQL, PHP5 и Python

Привет друзья!

Что ж, как известно, в сентябре состоится премьера нового щита Arduino, Arduino YUN. У этого маленького друга есть встроенная система Linux, с которой мы можем запускать все, о чем вы можете подумать (по крайней мере, пока). Хотя об этой новой плате очень мало информации, с отступлением в руководстве, которое предоставляет страницу Arduino (ссылка на которую будет позже), плюс небольшое знание многих Linux, можно выполнить крупный проект Control Access. На этот раз я объясню, как сделать этот проект, но достаточно подробно для всего нашего Arduino. Это работает, благодаря серверу базы данных MySQL, который будет размещен в нашем YUN, эта база данных будет хранить две таблицы, одну для пользователей, связанных с конкретным RFID, и другую таблицу для хранения записей всех карт, которые прошли через наш считыватель. Пока мы используем языки программирования PHP и скрипты Python для выполнения некоторых базовых задач и работы с нашими данными. Кроме того, из-за накладных расходов на оборудование мы используем считыватель ID-20 рядом с последовательным ЖК-дисплеем из 16 символов, а также светодиод RGB, который будет нашим информатором. Мы можем использовать этот контроль доступа для всего, что мы можем придумать, изменить и добавить реле или другую идею. Его можно использовать на чем угодно, где у вас есть карточки и вы хотите записать. Напомним, что этот документ является бесплатной публикацией, коммерческое использование и внесение изменений в него не допускается. Я надеюсь, что это более обширный путь к электронике с открытым исходным кодом. Итак, переходим к следующему этапу, партиям нужна!

Шаг 1: Детали

Части
Части
Части
Части
Части
Части

Для реализации этого проекта нам необходимы: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71,95 * Считыватель RFID ID-20 (125 кГц) https://www.sparkfun.com/products/11828 34,95 долл. США * RFID-считыватель Breakout https://www.sparkfun.com/products/8423 0,95 долл. США * Базовый ЖК-дисплей 16x2 символов 5 В https://www.sparkfun.com/products/790 16,95 долл. США * Рюкзак с ЖК-дисплеем с последовательным подключением https:// www. sparkfun.com/products/258 16,95 долл. США * LED RGB 5 мм https://www.sparkfun.com/products/105 1,95 долл. США * Зуммер https://www.sparkfun.com/products/7950 1,95 долл. США * Штырь и провод разъема Somes Приблизительно 5 долл. США. Всего, если покупать в магазине Sparkfun, все будет около 150 долларов. Если вы живете в Латинской Америке, я бы порекомендовал покупать запчасти на www.olimex.cl, это очень хороший чилийский магазин электроники.

Шаг 2: Сборка

Сборка
Сборка
Сборка
Сборка
Сборка
Сборка

Несколько подключений сделать, изложив вкратце объясню. Для RGB-светодиода вывод красного светодиода должен быть на выводе 9 Arduino, вывод зеленого светодиода должен подключаться к выводу 8 Arduino, а вывод синего светодиода должен быть на выводе 7 Arduino. Для ID-20 вы должны подключить следующие контакты, как указано в таблице в соответствующем порядке, считыватель контактов к контакту Arduino: контакт ID-20 к контакту Arduino ID-20 / Arduino PIN 1 - GND PIN 2 - 5V PIN 7 - GND PIN 9 - PIN 10 PIN 10 - ЗУММЕР PIN 11 - 5V И, наконец, для последовательного разъема ЖК-дисплея потребуются только выводы 5v и GND Arduino, в то время как вывод последовательного RX ЖК-дисплея идет на вывод 11 Ардуино.

Шаг 3: Программирование Arduino Yun

Программирование Arduino Yun
Программирование Arduino Yun

Для создания нашего проекта нам нужно начать с части программного обеспечения, установить некоторые файлы на наш Arduino opkg Yun:

  • Сервер MySQL
  • PHP5
  • MySQLdb для Python 2.7
  • Модификация PHP5 на MySQL

Напомним, что по умолчанию в Bridge установлен Python 2.7, поэтому вам не нужно устанавливать никаких обновлений для этого. Начните регистрацию SSH, осмелитесь войти в нашу Arduino Yun, как только вы их запустите, введите следующую команду, чтобы обновить список приложений opkg:

обновление opkg

Шаг 4: установка MySQL

Установка MySQL
Установка MySQL

Теперь мы установим установку и настройку MySQL Server, наберите в консоли следующие команды:

  1. opkg установить libpthread libncurses libreadline mysql-server
  2. sed -i, ^ 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 включить
  8. mysqladmin -u пароль root 'tu-nueva-clave'

После завершения ввода наших кодов и запуска сервера MySQL вы должны настроить базу данных, с которой будут работать. Но прежде чем начать набирать коды, нам нужно разобраться в полях, в которых хранится наша таблица. Доска должна состоять из 5 курсов, «id», «name», «name», «email», «rfid», чтобы продавать некоторые из них, я дам краткое объяснение их использования.

  • 'id': будет поле или атрибут int столбец, который сообщит нам номер, присвоенный идентификатору пользователя, этот номер назначается той же базой данных и будет способом индексировать наши записи.
  • 'nombre': столбец атрибутов будет 'varchar' может обозначаться именем, с которым идентифицирован наш пользователь карты.
  • 'apellido': столбец атрибутов будет 'varchar' может обозначаться фамилией, с которой связан наш пользователь.
  • «correo»: это столбец атрибутов «varchar», который будет содержать электронную почту связанного пользователя.
  • 'rfid': это столбец атрибута 'varchar', который будет содержать код используемой RFID-карты.

(Я буду использовать переменные на испанском, потому что это мой родной язык и мне нравится c:) Теперь мы можем без проблем настроить нашу базу данных, поэтому мы создаем MySQL-вызов arduino. Вы должны ввести следующий код:

mysqladmin -u root -p создать arduino

Просим пароль, который мы ввели ранее при установке, мы отправим его для завершения создания базы. Закончив все это, вводим запрос в MySQL, в консоли следует набрать следующий код:

mysql -root -p

Снова просим пароль, вы должны отправить его снова. Оказавшись внутри команды консоли MySQL, мы должны увидеть указатель ('mysql>') готовым к вводу. Первое, что мы сделаем, это переместим базу для данных arduino, чтобы с ней работали. Это делается путем ввода следующей команды в консоли MySQL:

ИСПОЛЬЗУЙТЕ arduino

Мы полагаем, что таблица имен usuariosrfid в базе данных будет использоваться для этого проекта, введите этот код в консоль MySQL:

  1. СОЗДАТЬ ТАБЛИЦУ `usuariosrfid` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. varchar (300) NOT NULL,
  4. varchar (300) NOT NULL,
  5. varchar (300) NOT NULL,
  6. `rfid` varchar (300) NOT NULL,
  7. ПЕРВИЧНЫЙ КЛЮЧ (`id`)
  8. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Помните, что при нажатии клавиши ENTER в конце командной строки в консоли MySQL он не запустится, пока вы не найдете ';' Следовательно, в конце кода стоит ';' Чтобы завершить установку и настройку MySQL, мы заполняем несколько тестовых полей в нашей базе. Введите следующие строки:

  1. ВСТАВИТЬ `usuariosrfid` (` id`, `nombre`,` apellido`, `correo`,` rfid`) ЗНАЧЕНИЯ
  2. (1, 'Педро', 'Суарес', '[email protected]', '1234a-12345-b-123c'),
  3. (4, «Матиас», «Лопес», «[email protected]», «987a-9876b-987c»);

Теперь продолжите создание таблицы «ControlUsuarios», в которой будут храниться все коды RFID, передаваемые считывателем. Эта таблица состоит из 3 полей: «id», «rfid», «date».

  • 'id' - это поле или столбец атрибута int, который будет содержать идентификатор каждой записи для индексации.
  • Атрибут 'rfid' - это столбец 'varchar', содержащий код метки RFID, прочитанный считывателем.
  • 'date' - это столбец атрибута 'varchar', который будет содержать дату чтения карты.

Чтобы создать таблицу ControlUsuarios, мы вводим следующий код в консоль MySQL:

  1. СОЗДАТЬ ТАБЛИЦУ `ControlUsuarios` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) NOT NULL,
  4. varchar (300) NOT NULL,
  5. ПЕРВИЧНЫЙ КЛЮЧ (`id`)
  6. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Наконец, введите "exit;" в консоли, чтобы выйти из MySQL Query, и вернуться в SHH, чтобы мы могли начать с PHP5.

Шаг 5: Установка PHP5

Установка PHP5
Установка PHP5

Продолжите установку и настройку PHP5. Эта установка проще, чем MySQL, поэтому она им ничего не должна стоить. Сначала установите пакет opkg из загрузки и установки Arduino Yun, поэтому введите в консоли SSH Arduino следующее:

opkg установить php5 php5-cgi

После загрузки и установки PHP5 на нашем Arduino Yun, поэтому мы настроили корневой файл uHTTPd, http-сервер, который обеспечивает Arduino по умолчанию, я рекомендую вам использовать только этот http-сервер, потому что он более универсален и доступен в конфигурации, а не Apache или Lighttpd более сложны настроить, когда вы новичок в этой области. Чтобы настроить это, используйте редактор файлов 'vi' SSH, для этого у вас должны быть минимальные знания, чтобы использовать этот редактор. Начните вводить этот код в консоли, чтобы получить доступ к файлу настроек uHTTPd:

vi / и т. д. / config / uhttpd

Нажмите 'i', чтобы отредактировать файл, затем перейдите к строке кода, которую вы написали '# list интерпретатор. "php = / usr / bin / php-cgi" '. Вы должны удалить символ '#' в начале строки, затем нажать клавишу escape (клавиша 'ESC'), когда вы будете готовы, вы должны ввести команду ': wq', чтобы сохранить файл и выйти из. Вы должны перезапустить сервер uHTTPd, для этого вы должны ввести в командной консоли SSH следующий код:

/etc/init.d/uhttpd перезапуск

Шаг 6: Установка Conector MySQL для PHP5 и Python

Установка Conector MySQL для PHP5 и Python
Установка Conector MySQL для PHP5 и Python

Продолжите установку и настройку модулей для подключения базы данных MySQL с PHP и Python. Начнем с коннектора PHP. Введите следующий код:

  1. opkg установить php5-mod-mysql
  2. sed -i 's,; extension = mysql.so, extension = mysql.so, g' /etc/php.ini

Когда все будет готово, не потребуется перезапускать сервер uHTTPd, готовый к немедленному использованию. Теперь продолжите работу с коннектором для Python, для этого вы должны ввести следующий код:

opkg установить python-mysql

На этом последнем шаге мы подготовим нашу Arduino Yun для нашего проекта с картридером ID-20 RFID 125 кГц. Завершите эту часть отзывом о том, что мы сделали:

  • Мы установили сервер MySQL на наш Arduino Yun, затем настроили его, закончив вставкой тестовых данных.
  • Установите дополнение PHP на наш сервер.
  • Мы закончили установку и настройку MySQL Connector для PHP и Python.

Шаг 7: коды

В этой области мы обсуждаем программные коды, которые будут использоваться в этом проекте. Мы уходим с кодом Python, который разделен на два файла: comprobar.py, который будет подключаться к базе данных и искать Yun Arduino, если результат находится в нем, и файл control. py ', отвечающий за запись любой карты, считываемой считывателем ID-20, независимо от того, находится ли она в базе данных зарегистрированных пользователей. Затем перейдите к описанию файлов PHP: «consultaRelacion.php», «consultaControl.php», «index.php», «modificar2.php», «modificar.php», «borrar.php», «delete2». php ',' guardar.php '' consulta.php ',' configuracion.php '. Для этих файлов redundaremos оба потому, что они просты для понимания. Наконец, закончите с кодом, который станет нашим скетчем Arduino.

Шаг 8: файлы Python

Файлы Python
Файлы Python

Как упоминалось ранее, наши сценарии Python работали с библиотекой или классом MySQLdb, который уже был установлен ранее. Начните с создания файла с.py под названием comprobar.py в нашем редакторе, я рекомендую использовать эти кейсы для программирования на Python, редактор Sublime Text 3, который вы можете скачать на их сайте www.sublimetext.com. Начнем с импорта библиотеки для подключения к нашей базе данных MySQL, библиотеки sys, которая позволит нам общаться с нашим Arduino Yun:

  1. импортировать MySQLdb
  2. import sys

После импорта этих библиотек или классов мы добавляем в ваш код переменные, которые будут данными подключения из нашей базы данных MySQL, bone:

  1. host = "127.0.0.1" # соответствует адресу нашего сервера MySQL.
  2. user = "your-seat" # является пользователем нашей базы данных.
  3. passw = "your-password" используется для пароля пользователя. base = "arduino" # Это имя используемой базы данных.

Теперь начнем с базовых кодов скрипта:

  1. в то время как True:
  2. db = MySQLdb.connect (хост, пользователь, пароль, база)
  3. cur = db.cursor ()
  4. resultado = cur.execute ("" "ВЫБРАТЬ * ИЗ usuariosrfid ГДЕ rfid НРАВИТСЯ% s ORDER BY id" "", (sys.argv [1],))
  5. если (resultado == 1):
  6. печать 1
  7. sys.exit (1)
  8. еще:
  9. печать 2
  10. sys.exit (1)

Если мы понимаем, что в суждении 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' команда для выполнения нашего запроса сравните переменную '(sys.argv [1])', который представляет собой код с RFID-карты Arduino со всеми данными поля 'rfid', таблица 'usuariosrfid', которая при нахождении кода равенства из arduino и кодов or, хранящихся в базе данных, будет вернуть 1, если это не так и нет равенства между кодом от Arduino и некоторой базы, мы вернем 2. Эти числа будут получены Arduino. Переходим к следующему файлу control.py. Этот файл работает так же, как и выше, только сохраняет послевкусие на столе. Эти сохраненные записи будут собираться считывателем ID-20, подключенным к нашему Arduino Yun, поэтому мы можем сохранить всех зарегистрированных пользователей, которые используют наш считыватель RFID.

Шаг 9: Файлы PHP

Затем приступайте к файлам. 'Php', который будет хранить папку с нашего сервера, для этого помните, что необходимо, чтобы эти файлы, когда они были готовы, были сохранены в ските нашего проекта, который автоматически генерирует IDE Arduino, вам также нужно помнить, хотя я ожидаю Это то, что когда мы подходим к нашему скетчу Arduino Yun, мы загружаем его через Wi-Fi, поэтому я оставляю его на той же странице руководства Arduino, www.arduino. cc / en / Guide / Arduino Yun # toc14, в котором подробно рассказывается об этом и о том, как вы должны использовать подготовленную карту MicroSD для этого типа проекта, где файлы должны храниться на сервере. Файлы PHP будут иметь следующие названия: 10 «consultaRelacion.php», «consultaControl.php», «index.php», «modificar2.php», «modificar.php», «borrar.php», «borrar2.php», «guardar». php '' consulta.php ',' configuracion.php ', который будет связан гиперссылкой с другим, чтобы основное меню всегда работало и было доступно. Просто объясните файл configuracion.php, который работает как соединитель с нашей базой данных. В нашем редакторе мы добавляем в файл следующий код:

  1. <? php
  2. // Сервер данных и база данных
  3. $ server = "локальный хост";
  4. $ username = "ваше место";
  5. $ password = "пароль";
  6. $ database_name = "ардуино";

Это данные, которые необходимо подключить к нашей базе данных в Arduino, они будут такими же, как мы используем в наших скриптах Python. Завершаем программирование оператора подключения, который использовал наш скрипт:

  1. $ conexion = mysql_connect ($ server, $ username, $ password) или die ("Problemas al tratar de establecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) или die ("Проблемы выбора базы данных");
  3. ?>

Остальные файлы прилагаются.

Шаг 10: Наконец, программа Arduino YN

Мы подошли к основной части этого руководства, программированию нашего Arduino Yun, никакие детали не выделят весь код, так как он довольно обширный, упомяните только следующие важные моменты:

  • Код состоит из 6 основных функций и 13 второстепенных функций, которые предназначены только для использования последовательного ЖК-дисплея.
  • Импортируются только три класса SoftwareSerial.h, с помощью которых мы будем вводить Serial Attached для подключения к ID-20 и последовательному ЖК-дисплею, основной класс Bridge.h, с помощью которого мы будем устанавливать соединение между Linux и ATMEGA32U4, а класс «Process.h» будет служить для процессов консультаций в Linux.
  • Определите только три контакта, которые используют остальные.

Код прилагается

Шаг 11: С Новым годом

Я продолжаю это тщательно, чтобы служить вам и помочь вам получить больше информации об Arduino Yun. Оставьте все файлы прикрепленными к концу. Для носителей испанского языка я оставляю это руководство, но на испанском языке с необходимыми файлами. Желаю вам счастливого Нового года, желаю вам удачи и успехов в этом 2014 году!

Рекомендуемые: