Índice:

Keysorter: 6 etapas
Keysorter: 6 etapas

Vídeo: Keysorter: 6 etapas

Vídeo: Keysorter: 6 etapas
Vídeo: MMS - Key Sorter 400V 2024, Novembro
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Atualmente estou estudando NMCT em Howest. Para o nosso último semestre, tivemos que fazer um projeto. Então fiz um Keysorter.

O que isso faz?

Temos muitas chaves de carro em casa e todas são parecidas. Então fiz um Keysorter para resolver esse problema.

Ele tem que escanear uma chave via RFID e dar a ela um lugar na caixa. Se eu escanear a mesma chave novamente, ela mostrará o local atribuído anteriormente. Existe também um botão para mostrar o último carro lavado.

Isso tudo será executado em um Raspberry Pi, que também tem a opção de adicionar uma página da web via Flask.

Na página, devo ser capaz de ver todas as chaves, adicionar um nome a uma chave e remover uma chave.

Etapa 1: Etapa 1: O que vou precisar?

Etapa 1: O que vou precisar?
Etapa 1: O que vou precisar?
Etapa 1: O que vou precisar?
Etapa 1: O que vou precisar?

Comecei fazendo uma lista dos componentes de que precisarei para fazer isso funcionar.

Componentes:

  • Raspberry Pi
  • 2 x registrador de deslocamento (74hc595)
  • 3 x botão
  • 9 x led verde
  • Scanner RFID (MFRC522)
  • 12 x resistor 220 ohm

Em seguida, coloquei tudo isso em meu esquema fritzing.

Depois de fazer isso, fiz na vida real.

Etapa 2: Etapa 2: Fazendo um esquema do banco de dados

Etapa 2: Fazendo um esquema de banco de dados
Etapa 2: Fazendo um esquema de banco de dados

Para salvar todos os meus dados, tive que criar um banco de dados que pudesse rodar no meu Pi.

Eu fiz isso em Mysql.

Carro de mesa:

  • ID do carro
  • ID do usuário
  • Marca (marca de carro)
  • Modelo
  • Última lavagem
  • Chave
  • RFID_ID

Etapa 3: Etapa 3: codificação

Etapa 3: codificação
Etapa 3: codificação

Quando tudo isso estivesse pronto, eu poderia começar a codificar.

Comecei criando o código para meu sensor em Python 3.5.

Para baixar o código clique aqui.

Use o link para clonar o projeto.

Etapa 4: Etapa 4: Colocando o código de Al no meu Raspberry Pi

Instalando pacotes

Primeiro instalei todos os pacotes de que precisava para fazer isso funcionar.

me @ my-rpi: ~ $ sudo apt update

me @ my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Ambiente virtual

me @ my-rpi: ~ $ python3 -m pip install --atualizar pip setuptools wheel virtualenvme @ my-rpi: ~ $ mkdir project1 && cd project1 me @ my-rpi: ~ / project1 $ python3 -m venv --system- site-packages env me @ my-rpi: ~ / project1 $ source env / bin / activate (env) me @ my-rpi: ~ / project1 $ python -m pip instalar mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Carregue o projeto em seu Pi usando o pycharm

Abra o Pycharm e vá para VCS> Import from Version Control> Github e clone meu arquivo github.

Coloque a configuração de implantação no diretório que você acabou de criar. (/ home / me / project1). Clique em Aplicar!

Acesse as configurações do intérprete e escolha o ambiente virtual que você acabou de criar. (/ home / me / project1 / env / bin / pyhon)

Verifique se o mapeamento do caminho está correto.

Agora você pode fazer upload do código para o seu diretório usando o Pycharm.

Base de dados

Verifique se o banco de dados está em execução. Você deve obter algo assim:

me @ my-rpi: ~ $ sudo systemctl status mysql ● mariadb.service - servidor de banco de dados MariaDB Carregado: carregado (/lib/systemd/system/mariadb.service; ativado; predefinição do fornecedor: ativado) Ativo: ativo (em execução) desde a Sun 2018-06-03 09:41:18 CEST; 1 dia 4h atrás PID principal: 781 (mysqld) Status: "Pegando suas solicitações SQL agora…" Tarefas: 28 (limite: 4915) CGroup: /system.slice/mariadb.service └─781 / usr / sbin / mysqld

03 de junho 09:41:13 my-rpi systemd [1]: Iniciando o servidor de banco de dados MariaDB… 03 de junho 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Nota] / usr / sbin / mysqld (mysqld 10.1.26-MariaDB-0 + deb9u1) 03 de junho 09:41:18 my-rpi systemd [1]: Servidor de banco de dados MariaDB iniciado.

me @ my-rpi: ~ $ ss -lt | grep mysql LISTEN 0 80 127.0.0.1:mysql *: *

Criar usuários e adicionar o banco de dados

me @ my-rpi: ~ $ sudo mariadb

quando estiver no banco de dados, faça isso.

CRIAR USUÁRIO 'project1-admin' @ 'localhost' IDENTIFICADO POR 'adminpassword'; CRIAR USUÁRIO 'project1-web' @ 'localhost' IDENTIFICADO POR 'webpassword'; CRIAR USUÁRIO 'projeto1-sensor' @ 'localhost' IDENTIFICADO POR 'sensorpassword';

CREATE DATABASE project1;

GRANT ALL PRIVILEGES ON project1. * To 'project1-admin' @ 'localhost' WITH GRANT OPTION; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-web' @ 'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-sensor' @ 'localhost'; PRIVILÉGIOS DE FLUSH;

CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

CREATE TABLE `car` (` idCar` int (11) NOT NULL AUTO_INCREMENT, `idUser` int (11) NOT NULL,` Brand` varchar (45) DEFAULT NULL, `Type` varchar (45) DEFAULT NULL,` LastWashed` datetime DEFAULT NULL, `RFID_Number` varchar (15) DEFAULT NULL,` Key` varchar (5) DEFAULT NULL, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONSTRAINT `fk_Car_User1` FOREIGN KEY (`idUser`) REFERÊNCIAS` user` (`idUser`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Conecte seu banco de dados ao Pycharm

Clique na guia do banco de dados no lado direito. Se você não tiver uma guia aberta, faça o seguinte: Exibir> Janelas de ferramentas> Banco de dados.

Clique em adicionar conexão. Escolha Fonte de dados> MySQL (se houver um botão de download do driver, pressione-o).

Vá para SSH / SSL e verifique o SSH. Preencha suas credenciais do Raspberry pi (host / usuário / senha). A porta deve ser 22 e não se esqueça de verificar a senha para lembrar.

Volte para o General. O host deve ser localhost e o banco de dados deve ser project1. Preencha as credenciais de project1-admin e teste a conexão.

Se a conexão estiver OK, vá para a aba Schemas e certifique-se de que project1 esteja marcado.

Verifique se o banco de dados está correto

me @ my-rpi: ~ $ echo 'show tables;' | mysql project1 -t -u project1-admin -p Insira a senha: + --------------------------- + | Tables_in_project1 | + --------------------------- + | sensor | | usuários | + --------------------------- +

Arquivos de configuração

No diretório conf você encontrará 4 arquivos. Você deve alterar os nomes de usuário para o seu nome de usuário.

Systemd

Para iniciar tudo, você deve executar esses comandos.

me @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /

me @ my-rpi: ~ / project1 $ sudo systemctl daemon-reload me @ my-rpi: ~ / project1 $ sudo systemctl start project1- * me @ my-rpi: ~ / project1 $ sudo systemctl status project1- * ● project1- flask.service - instância uWSGI para servir a interface web project1 Carregado: carregado (/etc/systemd/system/project1-flask.service; desativado; predefinição do fornecedor: ativado) Ativo: ativo (em execução) desde Seg. 2018-04-06 13: 14:56 CEST; 1s atrás PID principal: 6618 (uwsgi) Tarefas: 6 (limite: 4915) CGroup: /system.slice/project1-flask.service ├─6618 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini ├─6620 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini ├─6622 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini └─6624 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini

04 de junho 13:14:56 my-rpi uwsgi [6618]: mapeado 383928 bytes (374 KB) para 5 núcleos 04 de junho 13:14:56 uwsgi my-rpi [6618]: *** MODO Operacional: pré-bifurcação ***

● project1-sensor.service - Serviço de sensor do Projeto 1 Carregado: carregado (/etc/systemd/system/project1-sensor.service; desativado; predefinição do fornecedor: ativado) Ativo: ativo (em execução) desde Seg. 06-04-2018 13: 16:49 CEST; 5s atrás PID principal: 6826 (python) Tarefas: 1 (limite: 4915) CGroup: /system.slice/project1-sensor.service └─6826 / home / me / project1 / env / bin / python / home / me / project1 /sensor/sensor.py

04 de junho 13:16:49 systemd my-rpi [1]: Serviço de sensor do Projeto 1 iniciado. 04 de junho 13:16:49 python my-rpi [6826]: DEBUG: _ main _: Sensor process_count salvo = b'217 / n 'no banco de dados 04 de junho 13:16:55 python my-rpi [6826]: DEBUG: _ main_: Sensor process_count = b'218 / n 'salvo no banco de dados

nginx

me @ my-rpi: ~ / project1 $ ls -l / etc / nginx / sites- *

/ etc / nginx / sites-available: total 4 -rw-r - r-- 1 root root 2416 12 de julho de 2017 padrão

/ etc / nginx / sites-enabled: total 0 lrwxrwxrwx 1 root 34 Jan 18 13:25 default -> / etc / nginx / sites-available / default

Para tornar tudo padrão, execute esses comandos.

me @ my-rpi: ~ / project1 $ sudo cp conf / nginx / etc / nginx / sites-available / project1me @ my-rpi: ~ / project1 $ sudo rm / etc / nginx / sites-enabled / default me @ my- rpi: ~ / project1 $ sudo ln -s / etc / nginx / sites-available / project1 / etc / nginx / sites-enabled / project1 me @ my-rpi: ~ / project1 $ sudo systemctl restart nginx.service

Começo automático

Vamos garantir que tudo comece automaticamente.

Vá para o diretório conf e execute esses comandos finais e pronto!

me @ my-rpi: ~ / project1 $ sudo systemctl enable project1- *

Se você reiniciar seu Pi, ele deve iniciar automaticamente.

Etapa 5: Etapa 5: fazer uma caixa

Etapa 5: Construindo uma Habitação
Etapa 5: Construindo uma Habitação
Etapa 5: Construindo uma Habitação
Etapa 5: Construindo uma Habitação
Etapa 5: Construindo uma Habitação
Etapa 5: Construindo uma Habitação
Etapa 5: Construindo uma Habitação
Etapa 5: Construindo uma Habitação

Reciclando

Para fazer minha casa, usei um armário antigo que minha mãe jogava fora.

base

Serrei 4 tábuas (34 cm x 26 cm). (então é um cubo de 34 x 34 x 26).

No fundo, acrescentei um pedaço fino de madeira como fundo.

Placa com led's

No meio, coloquei 2 pequenos pedaços de madeira de cada lado, ambos a 9 cm do topo. Isso mantém o tabuleiro onde os liderados estarão sentados.

A placa com os leds é uma pequena placa (32 cm x 32 cm).

Perfurei 9 buracos para os leds saírem.

divisão

Fiz a divisão com o mesmo material do bottom e o tabuleiro com led's.

4 peças cada uma com uma incisão de 10,3 cm (9 cm x 31 cm). Agora sou capaz de colocá-los juntos.

Botões e leitor RFID

Fiz um furo na base para colocar meu leitor RFID e os botões. Para o RFID, coloquei um pedaço fino de placa na frente para deixá-lo mais limpo.

Etapa 6: Etapa 6: Colocar tudo na caixa

Isso depende de como você deseja fazer isso. Eu pessoalmente usei muitos cabos sem soldar porque quero poder reutilizar meu Raspberry Pi.

Colei os leds no lugar e colei o leitor RFID e as placas de ensaio na caixa.

E é assim que você faz um Keysorter!

Recomendado: