Índice:
- Etapa 1: Etapa 1: O que vou precisar?
- Etapa 2: Etapa 2: Fazendo um esquema do banco de dados
- Etapa 3: Etapa 3: codificação
- Etapa 4: Etapa 4: Colocando o código de Al no meu Raspberry Pi
- Etapa 5: Etapa 5: fazer uma caixa
- Etapa 6: Etapa 6: Colocar tudo na caixa
Vídeo: Keysorter: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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?
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
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
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
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:
Como fazer uma antena dupla BiQuade 4G LTE Etapas fáceis: 3 etapas
Como Fazer Antena Dupla BiQuade 4G LTE Etapas fáceis: Na maioria das vezes que enfrentei, não tenho uma boa intensidade de sinal para meus trabalhos do dia-a-dia. Então. Procuro e tento diferentes tipos de antena, mas não funciona. Depois de perder tempo, encontrei uma antena que espero fazer e testar, porque não é um princípio de construção
Design de jogo no Flick em 5 etapas: 5 etapas
Design de jogos no Flick em 5 etapas: o Flick é uma maneira realmente simples de fazer um jogo, especialmente algo como um quebra-cabeça, romance visual ou jogo de aventura
Detecção de rosto no Raspberry Pi 4B em 3 etapas: 3 etapas
Detecção de rosto no Raspberry Pi 4B em 3 etapas: Neste Instructable, vamos realizar a detecção de rosto no Raspberry Pi 4 com Shunya O / S usando a Biblioteca Shunyaface. Shunyaface é uma biblioteca de reconhecimento / detecção de rosto. O projeto visa alcançar a detecção mais rápida e velocidade de reconhecimento com
Espelho de cortesia DIY em etapas fáceis (usando luzes de tira LED): 4 etapas
Espelho de toucador DIY em etapas fáceis (usando tiras de LED): Neste post, fiz um espelho de toucador DIY com a ajuda de tiras de LED. É muito legal e você deve experimentá-los também
Arduino Halloween Edition - Tela pop-out de zumbis (etapas com imagens): 6 etapas
Arduino Halloween Edition - Tela pop-out de zumbis (etapas com imagens): Quer assustar seus amigos e fazer barulho no Halloween? Ou apenas quer fazer uma boa pegadinha? Esta tela pop-out de zumbis pode fazer isso! Neste Instructable, vou ensiná-lo a criar facilmente zumbis usando o Arduino. O HC-SR0