Controle de acesso do Arduino YÚN com MySQL, PHP5 e Python: 11 etapas (com imagens)
Controle de acesso do Arduino YÚN com MySQL, PHP5 e Python: 11 etapas (com imagens)
Anonim
Controle de acesso do Arduino YÚN com MySQL, PHP5 e Python
Controle de acesso do Arduino YÚN com MySQL, PHP5 e Python

Olá amigos!

Bem, como você sabe, em setembro o novo escudo de estreia do Arduino, o Arduino YUN. Este amiguinho tem um sistema Linux embarcado com o qual podemos rodar qualquer coisa que você imaginar (pelo menos até agora). Embora haja pouquíssimas informações sobre essa nova placa, com partida no guia que disponibiliza a página do Arduino (que será linkada posteriormente), além de um pouco de conhecimento de muitos Linux, pode-se realizar um grande projeto de Controle de Acesso. Desta vez irei explicar como fazer este projeto, mas de uma forma bastante particular através de nosso Arduino. Isso funciona, graças a um servidor de banco de dados MySQL que se instalará em nosso YUN, esse banco de dados armazenará duas tabelas, uma para usuários associados a um determinado RFID e outra para manter registros de todos os cartões que passaram por nosso leitor. Embora usemos linguagens de programação PHP e scripts Python para executar alguns scripts básicos e trabalhar com nossos dados. Além disso, no overhead de hardware, utilizamos uma leitora ID-20 próxima a um LCD Serial de 16 caracteres, além de um LED RGB que serão nossos estados informantes. Podemos usar esse controle de acesso em tudo o que pudermos pensar, modificar e adicionar um relé ou outra ideia. Ele pode ser usado em qualquer lugar onde você tenha cartões e queira um registro. Lembre-se de que este documento é uma publicação gratuita, o uso comercial e modificações isentas não são permitidos. Espero que seja um caminho muito mais extenso para a eletrônica de código aberto. Então vamos para a próxima etapa, as partes precisam!

Etapa 1: as peças

As partes
As partes
As partes
As partes
As partes
As partes

Para fazer este projeto, precisamos ter: * Arduino YUN https://www.sparkfun.com/products/12053 $ 71,95 * Leitor RFID ID-20 (125 kHz) https://www.sparkfun.com/products/11828 $ 34,95 * Leitor RFID Breakout https://www.sparkfun.com/products/8423 $ 0,95 * LCD básico de 16x2 caracteres 5V https://www.sparkfun.com/products/790 $ 16,95 * Mochila de LCD habilitado para serial 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. Ao todo, se você comprar na loja Sparkfun, tudo ficará perto de US $ 150. Se você mora na América Latina, recomendo comprar as peças em www.olimex.cl, uma loja de eletrônicos chilena muito boa.

Etapa 2: a montagem

A montagem
A montagem
A montagem
A montagem
A montagem
A montagem

Poucas conexões para fazer, estabelecendo uma breve explicação. Para LED RGB, o pino do LED vermelho deve estar no pino 9 do Arduino, o pino do LED verde deve estar no pino 8 do Arduino e o pino do LED azul deve estar no pino 7 do Arduino. Para o ID-20 você deve conectar os seguintes pinos conforme indicado na tabela na respectiva ordem, leitor de pinos ao pino Arduino: Pin ID-20 para pino Arduino ID-20 / Arduino PIN 1 - GND PIN 2 - 5V PIN 7 - GND PIN 9 - PIN 10 PIN 10 - BUZZER PIN 11 - 5V E por último, para o conector Serial LCD só serão necessários os pinos 5v e GND do Arduino, enquanto o pino Serial RX do LCD vai para o pino 11 do Arduino.

Etapa 3: Programação do Arduino Yun

Programação do Arduino Yun
Programação do Arduino Yun

Para o propósito de fazer nosso projeto, precisamos começar com a parte do software, instalar alguns arquivos em nosso Arduino opkg Yun:

  • Servidor MySQL
  • PHP5
  • MySQLdb para Python 2.7
  • Mod de PHP5 para MySQL

Lembre-se de que por padrão no Bridge vem instalado o Python 2.7, então você nunca precisa instalar nenhuma atualização para isso. Comece a registrar SSH ouse entrar em nosso Arduino Yun, depois de iniciá-los, digite o seguinte comando para atualizar a lista de aplicativos opkg:

atualização de opkg

Etapa 4: Instalação do MySQL

Instalação do MySQL
Instalação do MySQL

Agora vamos estabelecer a instalação e configuração do MySQL Server, digite os seguintes comandos no console:

  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 enable
  8. mysqladmin -u senha de root 'tu-nueva-clave'

Assim que terminar de inserir nossos códigos e iniciar o servidor MySQL, deve-se configurar o banco de dados que irá manipular. Mas antes de começar a digitar os códigos, precisamos entender os campos que carregam nossa tabela. O quadro consistirá em 5 cursos, 'id', 'nome', 'nome', 'email', 'rfid' para comercializar alguns deles, darei uma breve explicação de seu uso.

  • 'id': será o campo ou atributo da coluna int que nos informará o número atribuído ao ID do usuário, este número é atribuído pela mesma base de dados e será a forma de indexar nossos registros.
  • 'nombre': a coluna de atributo será 'varchar' podendo ser indicada pelo nome com o qual o usuário do nosso cartão é identificado.
  • 'apellido': a coluna do atributo será 'varchar' podendo ser indicada pelo sobrenome ao qual nosso usuário está associado.
  • 'correo': é a coluna de atributo 'varchar' que conterá o e-mail do usuário associado.
  • 'rfid': é a coluna de atributo 'varchar' que conterá o código do cartão RFID que você usa.

(Vou usar as variáveis em espanhol, pois é minha língua nativa e gosto de c:) Agora podemos configurar nosso banco de dados sem problemas, portanto, criaremos um 'arduino' chamado MySQL. Você deve digitar o seguinte código:

mysqladmin -u root -p criar arduino

Solicitamos a senha que inserimos anteriormente na instalação, iremos submetê-la para concluir a criação da base. Terminado tudo isso, entramos na consulta ao MySQL, você deve digitar o seguinte código no console:

mysql -root -p

Novamente pedimos a senha, você deve submetê-la novamente. Uma vez dentro do comando do console MySQL, o ponteiro ('mysql>') deve aparecer pronto para digitar. A primeira coisa que faremos é mover a base para os dados do 'arduino' para trabalhar nela. Isso é feito digitando o seguinte comando no console do MySQL:

USE arduino

Acreditamos que a tabela de nomes 'usuariosrfid' no banco de dados será usada para este projeto, digite este código no console do MySQL:

  1. CREATE TABLE `usuariosrfid` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `nombre` varchar (300) NÃO NULO,
  4. `apellido` varchar (300) NÃO NULO,
  5. `correo` varchar (300) NÃO NULO,
  6. `rfid` varchar (300) NÃO NULO,
  7. CHAVE PRIMÁRIA (`id`)
  8. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

* Lembre-se de que ao pressionar a tecla ENTER no final da linha de comando no console do MySQL, ele não será executado até que você encontre o caractere ';' Portanto, no final do código está ';' Para completar a instalação e configuração do MySQL, preenchemos alguns campos de teste em nossa base. Digite as seguintes linhas:

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

Agora continue com a criação da tabela 'ControlUsuarios', que abrigará todos os códigos RFID que passam pelo leitor, esta tabela é composta por 3 campos, 'id', 'rfid', 'data'.

  • 'id' é o campo ou atributo da coluna int que conterá o id de cada registro para indexação.
  • O atributo 'rfid' é a coluna 'varchar' que contém o código da tag RFID que foi lido pelo leitor.
  • 'data' é a coluna de atributo 'varchar' que conterá a data em que o cartão foi lido.

Para criar a tabela 'ControlUsuarios', inserimos o seguinte código no console MySQL:

  1. CRIAR TABELA `ControlUsuarios` (
  2. `id` int (255) NOT NULL AUTO_INCREMENT,
  3. `rfid` varchar (300) NÃO NULO,
  4. `fecha` varchar (300) NÃO NULO,
  5. CHAVE PRIMÁRIA (`id`)
  6. ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 0;

Finalmente digite 'exit;' no console para sair do MySQL Query e retornar ao SHH para que possamos começar com PHP5.

Etapa 5: Instalação do PHP5

Instalação do PHP5
Instalação do PHP5

Continue com a instalação e configuração do PHP5. Esta instalação é mais fácil do que o MySQL, então não deve custar nada a eles. Primeiro, instale o pacote opkg do Arduino Yun baixando e instalando, então digite no console SSH do Arduino:

opkg install php5 php5-cgi

Depois de fazer o download e instalar o PHP5 em nosso Arduino Yun, configuramos o arquivo raiz uHTTPd, o servidor http que traz o padrão do Arduino, recomendo que você só use este servidor http porque é mais versátil e acessível na configuração, não Apache ou Lighttpd são mais difíceis para configurar quando você for novo neste campo. Para configurar isso, utilize o editor de arquivos 'vi' SSH, para isso você deve ter conhecimentos mínimos para utilizar este editor. Comece digitando este código no console para acessar o arquivo de configurações uHTTPd:

vi / etc / config / uhttpd

Pressione 'i' para editar o arquivo e vá para a linha de código que você escreveu '# interpretador de lista. "php = / usr / bin / php-cgi" '. Você deve deletar o caractere '#' no início da linha, então pressionar a tecla escape (tecla 'ESC'), quando estiver pronto, você deve digitar o comando ': wq' para salvar o arquivo e sair do. Deve-se reiniciar o servidor uHTTPd, para isso, você deve digitar no console de comando do SSH o seguinte código:

/etc/init.d/uhttpd restart

Etapa 6: instalação do Conector MySQL para PHP5 e Python

Instalação do Conector MySQL para PHP5 e Python
Instalação do Conector MySQL para PHP5 e Python

Prossiga com a instalação e configuração dos módulos para conectar o banco de dados MySQL com PHP e Python. Vamos começar com o conector PHP. Digite o seguinte código:

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

Uma vez pronto, não será necessário reiniciar o servidor uHTTPd, pronto para uso imediato. Agora continue com o conector para Python, para isso, você deve inserir o seguinte código:

opkg install python-mysql

Com esta última etapa, teremos nosso Arduino Yun pronto para nosso projeto com o leitor de cartão ID-20 RFID 125kHz. Conclua esta parte com comentários sobre o que fizemos:

  • Instalamos o servidor MySQL em nosso Arduino Yun e o configuramos, terminando com uma inserção de dados de teste.
  • Instale o complemento PHP em nosso servidor.
  • Concluímos a instalação e configuração do MySQL Connector para PHP e Python.

Etapa 7: Códigos

Nesta área, discutimos os códigos de programação a serem usados neste projeto. Saímos com o código Python, que é dividido em dois arquivos: 'comprobar.py', que se conectará ao banco de dados e buscará Yun Arduino se o resultado estiver nele, e o controle do arquivo. py ', responsável por registrar qualquer cartão que seja lido pela leitora ID-20, esteja ou não no banco de dados de usuários cadastrados. Em seguida, continue com a descrição dos arquivos PHP, são: 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'delete2. php ',' guardar.php '' consulta.php ',' configuracion.php '. Por esses arquivos redundaremos tanto porque são de fácil compreensão. Por fim, termine com o código que aparecerá como nosso esboço do Arduino.

Etapa 8: Arquivos Python

Arquivos Python
Arquivos Python

Conforme mencionado anteriormente, nossos scripts Python funcionavam com a biblioteca ou classe 'MySQLdb', que já está instalada anteriormente. Comece criando um arquivo com '.py' chamado 'comprobar.py' em nosso editor, recomendo usar esses casos para programação em Python, o editor Sublime Text 3, que você pode baixar no site www.sublimetext.com. Vamos começar importando a biblioteca para conectar ao nosso banco de dados MySQL, a biblioteca 'sys' que nos permitirá a comunicação com o nosso Arduino Yun:

  1. importar MySQLdb
  2. import sys

Depois de importar essas bibliotecas ou classes, adicionamos variáveis ao seu código, que serão os dados de conexão de nosso banco de dados MySQL, osso:

  1. host = "127.0.0.1" # corresponde ao endereço do nosso servidor MySQL.
  2. user = "your-seat" # é o usuário de nosso banco de dados.
  3. passw = "sua-senha" é para a senha do usuário. base = "arduino" # Este é o nome do banco de dados que você usa.

Agora comece com os códigos de script básicos:

  1. enquanto verdadeiro:
  2. db = MySQLdb.connect (host, usuário, senha, base)
  3. cur = db.cursor ()
  4. resultado = cur.execute ("" "SELECT * FROM usuariosrfid ONDE rfid LIKE% s ORDER BY id" "", (sys.argv [1],))
  5. if (resultado == 1):
  6. imprimir 1
  7. sys.exit (1)
  8. outro:
  9. imprimir 2
  10. sys.exit (1)

Se percebermos, no julgamento 'cur.execute result = ("" "SELECT * FROM WHERE rfid usuariosrfid LIKE% s ORDER BY id" "" (sys.argv [1]))' comando para executar nossa consulta, compare a variável '(sys.argv [1])' que é o código do cartão Arduino RFID com todos os dados de campo 'rfid' da tabela 'usuariosrfid', que, encontrando o código de igualdade do arduino e os códigos ou armazenados no banco de dados, retornar 1, se isso não for verdade e não houver igualdade entre o código do arduino e algum da base, retornaremos 2. Esses números serão recebidos pelo Arduino. Continuamos com o próximo arquivo 'control.py. Este arquivo funciona da mesma forma que o anterior, apenas mantendo um gosto residual em uma mesa, esses registros salvos devem ser coletados pelo leitor ID-20 conectado ao nosso Arduino Yun, para que possamos manter todos os usuários cadastrados que utilizam nosso leitor RFID.

Etapa 9: Arquivos PHP

Em seguida, prossiga com os arquivos. 'Php' que vai guardar a pasta do nosso servidor, para fazer isso lembre-se que é necessário que esses arquivos uma vez prontos, sejam salvos no skit nosso projeto, que gera automaticamente o IDE Arduino, você também precisa lembrar, embora eu antecipe isso, que quando vamos até o nosso sketch Yun do Arduino, fazemos upload via Wi-Fi, então deixo na mesma página do manual do Arduino, www.arduino. cc / en / Guide / Arduino Yun # toc14, que explica mais sobre o assunto, e como você deve ir preparado cartão MicroSD para este tipo de projeto onde os arquivos devem ser armazenados no servidor. Os arquivos PHP serão 10 'consultaRelacion.php', 'consultaControl.php', 'index.php' 'modificar2.php', 'modificar.php', 'borrar.php', 'borrar2.php', 'guardar. php '' consulta.php ',' configuracion.php ', que terá um hiperlink para o outro, para manter um menu básico sempre rodando e acessível. Basta explicar o arquivo 'configuracion.php', que funciona como um conector com nosso banco de dados. Em nosso editor, programamos o seguinte código no arquivo:

  1. <? php
  2. / / Servidor de dados e banco de dados
  3. $ server = "localhost";
  4. $ username = "seu lugar";
  5. $ senha = "senha";
  6. $ database_name = "arduino";

Esses são os dados que precisam se conectar ao nosso banco de dados no arduino e serão os mesmos que usamos em nossos scripts Python. Conclua a programação da instrução de conexão, que usou nosso script:

  1. $ conexion = mysql_connect ($ server, $ username, $ password) ou die ("Problemas al tratar de estabelecer la conexion");
  2. $ bd_sel = mysql_select_db ($ database_name) ou die ("Problemas al selecionar la base de datos");
  3. ?>

Os outros arquivos estão anexados.

Etapa 10: Finalmente, o Programa do Arduino YÚN

Chegamos à parte principal deste tutorial, a programação de nosso Arduino Yun, nenhum detalhe destacará todo o código por ser bastante extenso, apenas mencionando os seguintes pontos importantes:

  • O código consiste em 6 funções principais e 13 funções secundárias, que são apenas um suporte para o uso do LCD Serial.
  • Serão importados apenas três classes, 'SoftwareSerial.h', com as quais entraremos Serial Attached para conectar com o ID-20 e Serial LCD, a classe principal 'Bridge.h' com a qual faremos a conexão entre Linux e ATMEGA32U4, e a classe 'Process.h' servirá para processos de consulta no Linux.
  • Defina apenas três pinos, cujo uso outros são gratuitos.

O código está anexado

Etapa 11: Feliz Ano Novo

Eu continuo meticulosamente para atendê-lo e ajudá-lo a obter mais informações sobre o Arduino Yun. Deixe todos os arquivos anexados ao final. Para falantes de língua espanhola, deixo este tutorial, mas em espanhol com os arquivos necessários. Espero que tenham um feliz ano novo, aproveitem e tenham sucesso neste 2014!