Índice:
- Suprimentos
- Etapa 1: Preparando o Rasperry Pi
- Etapa 2: configurando o código do Visual Studio e o MySQL Workbench
- Etapa 3: Diagrama de Fritzing
- Etapa 4: codificar no Github
- Etapa 5: Estrutura de banco de dados normalizada
- Etapa 6: Caso para o Distribuidor do Cartão
- Etapa 7: Programa como serviço
Vídeo: Distribuidor automático de cartões: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Escolhi um distribuidor de cartões inteligentes como meu primeiro projeto porque gosto de jogar cartas. O que eu mais não gosto é de distribuir cartas. Você tem que lembrar, para cada jogo, quantas cartas cada pessoa recebe. Isso fica confuso quando você conhece muitos jogos de cartas. Meu projeto também ajudará pessoas que têm problemas com a distribuição de cartões, como idosos e pessoas que sofrem de Parkinson.
Suprimentos
- 1 Raspberry Pi (usei um Raspberry Pi 4)
- Cartão SD (16 GB recomendado)
- 1 pedaço de pão doce para Raspberry Pi (peça em T)
- 2 placas de ensaio
- 1 Módulo de fonte de alimentação para placa de ensaio, 5V e 3V3
- 1 display LCD
- 1 potenciômetro
- 1 MPU6050 (acelerômetro e giroscópio)
- 1 transistores NPN
- 1 expansor de E / S PCF8574N
- 1 motor de passo
- 1 placa breakout ULN2003 para controlar o motor de passo
- 1 sensor ultrassônico HC-SR04
- 1 motores 5V DC
- 1 diodo
- 6 resistores de 470 Ohm
- 4 resistores de 10K Ohm
- Fio elétrico para conectar tudo
Útil para ter ao fazer:
- Ferro de solda
- Solda
- Dremel ou serra circular (algo para cortar madeira e plástico abdominal)
Programas:
- Massa
- Bancada de trabalho MySQL
- Win32 Disk Imager
- Editor de código (eu recomendo Visual Studio Code)
- WinSCP
- Imagem de Raspbian
Etapa 1: Preparando o Rasperry Pi
Primeiro, precisamos preparar o Raspberry Pi antes de fazer qualquer outra coisa. Porque tudo estará rodando do Pi então esta é uma das peças mais importantes do distribuidor de cartões.
Instalação:
Baixe a imagem do Raspbian em
- Baixe o arquivo ZIP
- Extraia o arquivo ZIP onde você possa encontrá-lo facilmente
- Abra o Win32 Disk Imager e selecione a imagem extraída
- Selecione o cartão SD no menu suspenso e clique em escrever
- Assim que o processo de gravação estiver concluído, você pode fechar o Win32 Disk Imager
Agora precisamos fazer mais algumas coisas antes de nos conectarmos ao Pi
- Navegue até a pasta de inicialização no cartão SD
- Abra o arquivo cmdline.txt
- Adicione 'ip = 169.254.10.1' no final da linha separado por um espaço
- Salve e saia do arquivo
- Crie no mesmo diretório um arquivo chamado ssh e remova a extensão (isso habilitará o ssh na primeira inicialização para que possamos conectar ao Pi)
- Ejete o cartão SD com segurança e coloque-o no Pi
Agora podemos nos conectar ao Pi:
- Pegue um cabo Ethernet e insira uma extremidade no Pi e a outra extremidade no seu computador
- Open Putty
- Digite 169.254.10.1 no campo Nome do host
- Certifique-se de que SSH esteja selecionado e a porta seja 22
- Clique para abrir
- Se você receber um aviso, você pode simplesmente continuar e ignorá-lo
- O nome de usuário é pi e a senha é raspberry
Configuração e instalação do software:
Abra raspi-config com o seguinte comando:
sudo raspi-config
Selecione a 5ª opção: Opções de interface
Habilite SPI e I2C
Desative as seguintes coisas na 3ª opção: Opções de inicialização:
- Tela de abertura
- Escolha CLI para inicialização e não desktop
Configuração de wi-fi:
Wifi é útil para navegar facilmente no site. Certifique-se de ter suas credenciais de Wi-Fi fechadas.
Para configurar o wi-fi, precisamos de algumas coisas:
Adicione seu wi-fi usando este comando e altere o SSID e a SENHA para suas informações:
sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf
Execute este comando para reconfigurar seu wi-fi:
sudo wpa_cli
Selecione a interface correta:
interface wlan0
Reconfigure a interface:
reconfigurar
Verifique se a reconfiguração foi bem-sucedida com este comando:
ip a
Se você vir um endereço IP na interface wlan0, então tudo está configurado.
Atualizando sistema operacional
Atualize o sistema operacional com estes 2 comandos:
atualização do apt sudo
atualização completa do apt sudo
Configurando MariaDB:
Instalando o servidor da web Apache:
sudo apt install apache2 -y
Instalando o servidor MariaDB:
sudo apt install mariadb-server -y
Agora precisamos reiniciar:
sudo reboot
É recomendado para proteger a instalação do MariaDB. Você pode fazer isso executando este comando:
sudo mysql_secure_installation
Primeiro, será solicitada a senha root atual, mas a instalação padrão não tem uma, então pressione Enter.
Em seguida, você será perguntado se deseja definir uma senha de root, digite y. Certifique-se de que você se lembra da senha!
- Digite y para remover usuários anônimos
- Digite y para desativar o login de root remotamente
- Digite y para remover bancos de dados de teste e acesso a eles
- Digite y para recarregar privilégios
Sua instalação do MariaDB deve ser segura!
Agora podemos criar um novo usuário:
Insira o shell mysql com este comando:
sudo mysql
Crie um usuário com o nome de usuário mysql e uma senha (sua_senha) os seguintes comandos:
crie o usuário mysql @ localhost identificado por 'sua_senha';
concede todos os privilégios em *. * para mysql @ localhost;
PRIVILÉGIOS DE FLUSH;
Saia do shell mysql com este comando:
saída;
Pacotes Python:
O Python já deve estar instalado, a menos que você escolha a versão Lite:
sudo apt install python3-pip
Precisamos de uma boa quantidade de pacotes Python, você pode instalar todos eles com o seguinte comando:
pip3 instalar mysql-connector-python flask-socketio flask-cors gevent gevent-websocket
Agora precisamos reiniciar mais uma vez
sudo reboot
Etapa 2: configurando o código do Visual Studio e o MySQL Workbench
Conectando-se ao Pi com MySQL Workbench:
Open MySQL Workbench
Faça uma nova conexão com o Pi com as seguintes informações:
- Nome da conexão: Raspi
- Método de conexão: TCP / IP padrão sobre SSH
- Nome do host SSH: endereço IP do Pi
Você pode obter o endereço IP com este comando:
ip a
- Nome de usuário SSH: pi
- Nome do host MySQL: 127.0.0.1
- Porta do servidor MySQL: 3306
- Nome de usuário: mysql
Clique em ok e digite a senha do usuário pi e a seguir digite a senha do usuário mysql.
Configurando o código do Visual Studio:
Abra o código do Visual Studio
Instale estas 2 extensões:
- Remoto - SSH
- Remoto - SSH: Editando arquivos de configuração
Pressione no Visual Studio Code F1 e digite ssh
Escolha o SSH remoto: Adicionar novo host SSH
Preencha ssh pi @ endereço IP
Na próxima etapa, pressione Enter
A conexão agora é feita com o Pi. Você pode se conectar ao Pi pressionando F1 e selecionando conectar ao host remoto.
Digite a senha para que o Visual Studio Code tenha acesso ao Pi.
Mais uma coisa: instale a extensão Python na máquina remota para que você possa executar e depurar código facilmente.
Etapa 3: Diagrama de Fritzing
Nesta etapa irei explicar o circuito.
Os esquemas acima são feitos com Fritzing.
Motor DC:
Conecte o GPIO 18 à base do coletor, o pino do meio em um transistor npn. Conecte o terra do motor ao coletor do transistor e a potência do motor a 5V. Conecte o aterramento do transistor à linha de aterramento. Conecte o diodo na barreira sobre o motor para que ele bloqueie o fluxo direto para o transistor.
Motor de passo:
Conecte o motor de passo à placa de controle. Na placa de controle existem pinos em um lado para conectar 5V e aterramento. Os outros pinos são pinos de controle. Esses pinos controlam os ímãs dentro do motor para que ele possa girar. Conecte esses pinos ao GPIO 12, 16, 20 e 21 no Raspberry Pi.
HC-SR04 Ultrassônico:
Este sensor pode medir distâncias de cerca de 4,5 metros usando som.
Conecte o pino VCC ao 5V, o pino do gatilho ao GPIO 25, o pino de eco com um resistor de 470 Ohm ao GPIO 24 e o terra com um resistor de 470 Ohm ao terra.
MPU6050:
Conecte o pino VCC a 3V3, o aterramento ao aterramento, scl ao scl no Pi e o sda ao sda no Pi. Para este sensor eu uso I2C para controlá-lo. Você pode ler mais sobre isso aqui. Aqui está uma explicação básica: O Pi é o mestre e o MPU6050 é o escravo. Através da linha scl o Pi controla os tempos e a linha sda é usada para enviar dados do mestre para o escravo ou do escravo para o mestre. Apenas o mestre pode iniciar a transferência de dados.
Resistência dependente de luz:
Para obter leituras corretas do LDR, uso um chip MCP3008. Isso garante que as leituras do ldr sejam estáveis e corretas convertidas de sinais analógicos para digitais.
Conecte 3V3 a um lado do ldr com um resistor de 10K Ohm entre ele. Entre o ldr e o resistor conecte um fio ao canal 0 do MCP3008. Em seguida, conecte o outro lado do ldr ao solo.
Tela de LCD:
Você pode usar o display LCD sem um PCF8574, mas como os pinos GPIO no Pi são limitados, eu uso um PCF8574 para salvar alguns pinos GPIO. Você também pode usar um registrador de deslocamento, mas eu prefiro um PCF8574. Você pode controlar o PCF8574 com o protocolo SMbus, mas escrevi minha própria classe para controlá-lo. O potenciômetro controla o contraste.
Pinos do display LCD:
- VSS para aterrar
- VDD a 5V
- V0 para o pino variável do potenciômetro
- RS para GPIO 13
- R / W para aterrar porque eu só escrevo no display e não leio
- E para GPIO 19
- DB0 a P0 do PCF
- DB1 a P1
- DB2 para P2
- DB3 a P3
- DB4 a P4
- DB5 a P5
- DB6 a P6
- DB7 a P7
- LED + a 5V
- LED- para aterrar
Pinos PCF8574:
- A0 para aterrar
- A1 para aterrar
- A2 para aterrar
- Terra a terra
- VCC a 5V
- SDA para GPIO 27
- SCL para GPIO 22 com resistor de 330 Ohm
Você pode não ter LED + e LED- dependendo do tipo de display que você tem. LED + e LED- são para a luz de fundo.
Conecte o lado positivo do potenciômetro a 5 V e o aterramento ao aterramento.
Certifique-se de usar resistores pull-up!
Etapa 4: codificar no Github
Você pode encontrar todo o código necessário no meu Github.
Pasta projeto1:
Esta pasta contém todo o código do backend. Na pasta Klasses estão todas as classes para controlar o hardware.
Os repositórios de pastas contêm 2 arquivos: Database.py e DataRepository.py. Database.py mantém a conexão com o banco de dados e lida com as consultas. DataRepository.py contém todas as consultas necessárias para o site.
App.py é o arquivo principal do back-end. Este arquivo inicia automaticamente quando o Pi é inicializado.
Config.py contém algumas configurações para se conectar ao banco de dados. Certifique-se de preencher esses arquivos com suas próprias informações.
Você pode colocar essa pasta em qualquer lugar do seu diretório inicial.
Pasta html:
Esta pasta contém todos os arquivos do site, o frontend.
- A pasta contém os arquivos para o layout do site.
- Fontes contém as fontes usadas no site.
- O script contém todos os arquivos Javascript para tornar o site dinâmico
Esta pasta deve estar na pasta / var / www / html
Você pode copiar um arquivo ou pasta com este comando:
sudo mv / caminho / para / atual / diretório / caminho / para / destino / diretório
Para navegar até o site, digite em seu navegador o endereço IP exibido na tela LCD.
Etapa 5: Estrutura de banco de dados normalizada
Nesta etapa, vamos importar o banco de dados.
- Conecte-se ao seu Raspberry Pi com MySQL Workbench
- Clique em Servidor -> Importação de Dados
- Selecione Importar arquivo independente
- Na pasta Database-export from Github há um arquivo sql chamado dump_project1.sql
- Navegue até este arquivo e clique em iniciar importação
É isso. O Pi agora pode acessar o banco de dados se tiver as informações corretas.
Etapa 6: Caso para o Distribuidor do Cartão
Nesta etapa irei explicar o que usei para o case e como montei tudo.
Para o caso usei 2 caixas ABS:
- 265 x 185 x 95 mm
- 171 x 121 x 80 mm
Os furos que fiz nas caixas
Um orifício para o display LCD, 3 orifícios para os cabos de alimentação, um para os fios do motor de passo, o motor DC e o sensor ultrassônico.
Na menor caixa, fiz um orifício para os fios dos componentes e um orifício para a passagem dos cartões. No topo fiz o buraco maior para que você possa colocar cartas de jogo no dispositivo.
Montei o motor DC com um suporte e alguma fita dupla-face. Fiz uma tábua de madeira para colocar as cartas e um orifício para a roda atirar uma carta.
Escolhi o plástico ABS porque é leve, então o motor de passo pode girá-lo facilmente. A madeira pode ser muito pesada e o motor de passo pode ter problemas com isso. Para fazer os furos, usei uma broca com brocas projetadas para metal e uma Dremel. Cortar os orifícios maiores exigia muito mais trabalho e uma serra circular seria melhor.
Etapa 7: Programa como serviço
É muito útil ter o código iniciando depois que o Pi for inicializado. Para isso vamos fazer um serviço.
Crie um novo arquivo chamado smartcard.service com o seguinte comando:
sudo nano /etc/systemd/system/smartcard.service
Isso deve ir para o arquivo:
[Unidade]
Descrição = Back-end de cartão inteligente After = network.target [Service] ExecStart = / usr / bin / python3 -u app.py WorkingDirectory = / home / pi / project1 StandardOutput = herdar StandardError = herdar Reiniciar = sempre Usuário = pi [Instalar] WantedBy = multi-user.target WorkingDirectory é o caminho para a pasta onde o programa está localizado
Agora você tem seu próprio cartão inteligente!
Recomendado:
Distribuidor automático de desinfetante para as mãos faça você mesmo: 6 etapas
Distribuidor automático de desinfetante para as mãos DIY: Neste projeto, vamos construir um distribuidor automático de desinfetante para as mãos. Este projeto usará Arduino, sensor ultrassônico, bomba de água e desinfetante para as mãos. Um sensor ultrassônico é usado para verificar a presença de mãos abaixo da saída da máquina sanitizadora
Distribuidor automático de álcool em gel com Esp32: 9 etapas
Dispensador Automático de Álcool Gel com Esp32: No tutorial veremos como fazer um protótipo completo, para montar um dispensador automático de álcool gel com esp32, incluirá montagem passo a passo, circuito eletrônico e também o código fonte explicado passo a passo Passo
Distribuidor automático de medicamentos: 5 etapas
Dispensador Automático de Medicamentos: Este projeto é para uso na área médica, onde os pacientes idosos devem ter uma forma confiável de dosar e dispensar os medicamentos. Este dispositivo permite que o medicamento seja dosado com até 9 dias de antecedência, e automaticamente dispensado no desi
DISTRIBUIDOR AUTOMÁTICO DE ALIMENTOS PET: 9 etapas
DISPENSADOR AUTOMÁTICO DE ALIMENTOS PARA ANIMAIS DE ESTIMAÇÃO: Você já sentiu vontade de perder muito tempo alimentando seu animal de estimação? Você já teve que ligar para alguém para alimentar seus animais de estimação enquanto estava de férias? Tentei consertar esses dois problemas com meu projeto escolar atual: Petfeed
Alimentador de cartões para uma máquina de cartões comerciais: 10 etapas (com imagens)
Alimentador de cartas para uma máquina de cartas colecionáveis: Alimentador de cartas para uma máquina de cartas colecionáveisO Histórico Quando eu era jovem, colecionava toneladas de cartas comerciais, mas por alguns anos, a paixão por colecionar vem diminuindo. Nesse ínterim, tenho filhos e aos poucos, mas com certeza, eles também começam a ficar