Índice:
- Etapa 1: O que você precisa …
- Etapa 2: soldando a placa
- Etapa 3: Configurando o Arduino
- Etapa 4: Configurando Python
- Etapa 5: onde a mágica acontece
Vídeo: Servodriver-Board com Python-GUI e Arduino: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Ao fazer protótipos ou construir modelos de aviões, muitas vezes você se depara com o problema de verificar o curso do servo ou colocá-los na posição intermediária.
No caso de você não querer construir todo o seu sistema RC ou testar, o quão longe você pode empurrar o servo ou onde está a posição intermediária, então esta placa é para você! Ele permite que você mova o servo para posições especificadas ou viajemos de um lado para o outro.
Funciona surpreendentemente bem, mesmo com 6 servos que correm de uma posição para outra no loop.
Além disso, é um bom projeto para aprender sobre a comunicação entre Python-GUI e Arduino usando Serial.
Etapa 1: O que você precisa …
Para este projeto, você precisará do seguinte:
Hardware
- Arduino nano com cabo. Eu usei um clone, e o código Python realmente espera um chip CH340 de um clone
- Uma placa de prototipagem. 7x5cm é o suficiente
- Alguns cabeçalhos e pinos de 2, 54 mm
- 1-6 servos
- Fonte de alimentação para os servos (usei uma bateria com 4 baterias)
Programas
- Python 3:
- Um driver USB para os chips CH340: basta pesquisar no Google os drivers para os drivers CH340
- Arduino IDE:
Etapa 2: soldando a placa
A soldagem é realmente direta de acordo com Fritzing na foto. Apenas certifique-se de que você pode conectar os servos facilmente às linhas de 3 pinos.
- As linhas de 3 pinos são conectadas aos pinos digitais 3, 5, 6, 9, 10 e 11 do Arduino nano.
- O fio vermelho é conectado ao pino de 5 V do Arduino
- O fio preto é conectado ao pino GND do Arduino
- O par de pinos abaixo das fileiras de 3 pinos destina-se a conectar uma fonte de alimentação de receptor RC típica, você pode adicionar conectores como desejar, como terminais de aparafusar, conectores XT, JST ou … ou …
Pessoalmente, gosto de linhas de cabeçalhos femininos para colocar o Arduino, mas isso é com você.
Observe que os conectores fêmeas em curto são um jumper, que permite fornecer o servo usando a fonte de 5 V do Arduino para fins de teste. Se você forçar demais, o Arduino irá reiniciar e perder o ritmo certo. Eles DEVEM ser removidos antes de conectar outra fonte de alimentação.
Etapa 3: Configurando o Arduino
Instale o IDE do Arduino e atualize o Arduino nano com o esboço em anexo.
Etapa 4: Configurando Python
Instale o Python 3 após baixá-lo. Certifique-se de marcar a opção para criar uma variável "PATH".
Você precisa instalar mais dois pacotes usando pip. Para isso, pressione a tecla "Windows", digite "cmd" e pressione "enter". No prompt de comando, digite os seguintes comandos:
- pip install serial
- piip install pyserial
- pip install tkinter
Como você pode ver, eu preciso dos módulos seriais além do pyserial, o que provavelmente não é o mais eficiente, já que o pyserial deve substituir o serial. Mesmo assim funciona e estou apenas começando a aprender;).
Abra o Python-Script no IDE e execute-o ou execute-o diretamente do terminal.
No menu suspenso, você pode escolher entre dois modos, "Go Straight" e "Ping Pong":
- Vá direto: insira uma posição servo em microssegundos na primeira coluna e clique em "Iniciar" para fazer o servo se mover para a posição especificada.
- Ping Pong: Insira um limite inferior e um limite superior na segunda e terceira colunas. Essas são as posições inferior e superior, entre as quais o servo vai e volta. Na coluna "Tempo de Ping Pong" você pode especificar um tempo em milissegundos que o servo irá esperar quando atingir a posição superior ou inferior. Pressione "Iniciar" e o servo começará a se mover para trás e para frente, pressione "Parar" e o servo irá parar.
Etapa 5: onde a mágica acontece
Por último, mas não menos importante, quero apontar alguns dos detalhes do código para aqueles que desejam entrar um pouco na comunicação serial entre Python e Arduino.
Agora, o que acontece no programa Python?
Em primeiro lugar, o programa verifica o que está anexado às portas COM nesta linha e salva em uma lista:
self. COMPortsList = list (serial.tools.list_ports.comports ())
Em seguida, ele percorre a lista até encontrar um famoso chip CH340, salva-o e estabelece uma conexão serial após o loop for. Observe que o loop for é interrompido assim que o primeiro CH340 é encontrado.
for p in self. COMPortsList: if "CH340" in p [1]: # Procurando um clone do Arduino self. COMPort = p [0] break else: pass self. Ser = serial. Serial (self. COMPort, 57600)
A conexão serial é estabelecida com a porta COM com uma taxa de transmissão de 57600.
E o que o código do Arduino faz? Bem, como o Arduino tem apenas uma porta COM, a conexão serial é apenas uma linha:
Serial.begin (57600);
Agora, podemos usar as duas portas para nos comunicarmos. Nesse caso, apenas mensagens do Python para o Arduino. As mensagens são enviadas aqui do Python. A conexão serial transmite bytes como padrão. Essa também é a maneira mais rápida de enviar dados e, pelo que eu sei, ainda é bastante difundida. Portanto, os ints para o número do servo (para que o Arduino saiba qual servo mover) e a posição em microssegundos são transformados em um byte.
Command = struct.pack ('> B', self. Place) # A variável int "self. Place" é transformada em um byte
self. Ser.write (Command) # Escrevendo o byte no Serial-Port Command = int (self. ServoPos.get ()) // 10 # Lendo a entrada do campo e transformando int Command = struct.pack (' > B ', Comando) # Transformando o int em um byte self. Ser.write (Command) # Escrevendo o byte na Porta Serial
Além disso, a análise de dados leva tempo (por exemplo, interpretar quatro bytes "1", "2", "3" e "0" como o int 1230, não como quatro caracteres diferentes) e é melhor fazer isso não no Arduino.
No lado do Arduino, as informações enviadas são coletadas da seguinte forma:
if (Serial.available ()> 1) {// Se os dados seriais estiverem disponíveis, o loop será inserido c = Serial.read (); // O primeiro byte (número de servo) é salvo em uma variável Micros = Serial.read (); // A posição do servo é salva aqui Micros = Micros * 10; }
Recomendado:
MIDI Drum Kit em Python e Arduino: 5 etapas (com imagens)
Kit de bateria MIDI em Python e Arduino: Sempre quis comprar um kit de bateria desde que era criança. Naquela época, todo o equipamento musical não tinha todos os aplicativos digitais como temos hoje em dia, por isso os preços junto com as expectativas eram muito altos. Recentemente, decidi comprar um c
Reconhecimento e identificação facial - Arduino Face ID usando OpenCV Python e Arduino: 6 etapas
Reconhecimento e identificação facial | Arduino Face ID usando OpenCV Python e Arduino .: O reconhecimento facial AKA Face ID é um dos recursos mais importantes em telefones celulares hoje em dia. Então, eu tinha uma pergunta " posso ter um ID de rosto para meu projeto Arduino? e a resposta é sim … Minha jornada começou da seguinte maneira: Etapa 1: Acesso a nós
Um jogo de adivinhação simples - Python + XBees + Arduino: 10 etapas
Um jogo de adivinhação simples - Python + XBees + Arduino: é assim que o jogo funciona: você tem 4 tentativas para adivinhar uma letra entre ‘a’ - ‘h’ - > Adivinhe a letra certa: Você venceu! ? - > Adivinhe a letra errada: Fim do jogo? - > Adivinhe algum outro caractere fora de 'a' - 'h': Fim do jogo? Seu Arduino permitirá que você
Visualize seu ganho e perda de bitcoin com Arduino e Python: 6 etapas
Visualize seu ganho e perda de bitcoin com Arduino e Python: ideia básicaPessoalmente, sou um investidor de criptomoeda. Mas também tenho um monte de trabalho para fazer. Portanto, não consigo acompanhar o preço do bitcoin 10 vezes por minuto. No entanto, ainda quero saber se estou ganhando ou perdendo dinheiro. Assim
Plotagem de intensidade de luz usando Arduino e a biblioteca mestre de Arduino do Python: 5 etapas
Plotagem de intensidade de luz usando Arduino e a biblioteca mestre de Arduino do Python: Arduino sendo uma ferramenta econômica, mas altamente eficiente e funcional, programá-lo em Embedded C torna o processo de criação de projetos tedioso! O módulo Arduino_Master do Python simplifica isso e nos permite realizar cálculos, remover valores de lixo