Como fazer o próprio Lunokhod

Se na infância você não tinha bicicleta e agora tem um Bentley,
mesmo assim, na sua infância você não teve uma bicicleta.

Aconteceu que na minha infância não havia Lunokhod . E então um bebê nasceu. Em geral, pensei e decidi fazer um brinquedo para nós dois.


Não queria criar uma cópia exata e não sei imprimir casos em casa, por isso decidi me limitar a recriar funcionalidades semelhantes. Além disso, me pareceu desumano entrar no “programa” de movimento da memória e não entender o que exatamente aconteceu ao entrar, então adicionei uma exibição.

Versão 1




Havia um chassi barato com o Ebay e o Arduino Uno.



Para controlar os motores, peguei o PWM Servo Shield e soldei o L293D + PCF8574 na placa de ensaio:



Para ler no teclado, peguei o PCF8574 e alguns diodos:



O próprio teclado foi transformado em uma placa de circuito impresso:



Para que o teclado não se desmoronasse nas minhas mãos, fixei a sobreposição na parte superior. Ela teve que pedir a "moagem" :)



Para exibir o programa, é usado um display convencional de 4 caracteres 20. Sim, também através do PCF8574;)

No começo, usei 4 baterias para energia, mas elas acabaram rápido demais e as substituí por um par de 18650:



Usei módulos TP4056 para carregar, que conectei às baterias através de um relé, embora não com muito sucesso.

A maneira mais rápida era escrever firmware. Infelizmente, a biblioteca LCD I2C possui uma licença GPL, e o código foi para o lixo. Na mesma época, percebi que o Arduino Uno não é a melhor opção e que um punhado de PCF8574 é muito inconveniente para a solda.

E eu decidi começar de novo.

Versão 2




Levei em conta a experiência anterior, que sugeria que existem vários problemas:

  • O chassi com o Ebay é feito de acrílico e é muito frágil (puxei o parafuso de montagem da caixa de engrenagens e a montagem quebrou).
  • Existem muitos orifícios de montagem no chassi, mas nenhum adequado.
  • Junto com o chassi estão as engrenagens 1:48, mas são muito rápidas.
  • Em geral, o chassi não é suficiente.
  • O Arduino Uno tem poucas pernas.
  • Não há módulo de som (e é necessário para o comando de incêndio).
  • Histórias de terror são escritas sobre Li-ion na Internet; não quero dar a uma criança um dispositivo potencialmente perigoso.

Como resultado, comprei:


Além disso:


Achtung! Atenção! Atenção! Esses links são fornecidos apenas para ilustrar e simplificar a busca adicional por detalhes. Não posso garantir que o vendedor repentinamente não mude o lote para outro, não mude o preço, a quantidade etc.

Ferro


Transferi o teclado para a placa de circuito (talvez esse seja o único elemento difícil de repetir). A sobreposição do teclado foi fresada no meu pedido.

A questão permaneceu: do que fabricar o chassi? Não havia plástico adequado, é difícil processar metal ... E se você usar compensado? “Mas isso não é esteticamente agradável!”, Pensei. Mas depois de meia hora que consegui um chassi normal, mudei de idéia. O chassi não era muito apresentável e foi para a cesta, mas gostei tanto da velocidade de processamento que decidi continuar a usar madeira compensada.

É verdade que comecei a serrar a segunda folha somente depois de desenhar um plano aproximado:



Para montar os motores, cortei um pedaço de canto de alumínio e perfurei:



Placas fixadas em prateleiras hexagonais e conectadas entre si por loops.


(aqui você pode ver um estabilizador de 5V e alguns contatos de potência).

Os fios de energia acabaram sendo um pouco demais, então eu criei uma placa de energia a partir do painel (detalhes aqui ). Suspeito que você possa usar uma blindagem normal do sensor, que possui muitos pinos de alimentação.



Como não havia mais expansores de E / S, o teclado teve que ser refeito ( fonte ). Transferi diodos e resistores de pull-up para ele:





Como sensor de velocidade, usei um acoplador óptico e uma engrenagem com fenda (pintei-o com um marcador permanente):



Como terceira roda, usei uma bola:



Inicialmente, havia um suporte em forma de roda na viga, que acompanha o chassi. No entanto, quando a direção do movimento mudou, a roda começou a girar no momento mais inesperado e jogou o carrinho para o lado.

Diagrama de fiação


É melhor olhar para os arquivos consts.he lcd.ino, pois eles contêm as informações mais relevantes. As conexões, como são agora, têm a seguinte aparência:

A imagem é clicável.

Firmware


Firmware , em essência, é um programa comum escrito no IDE do Arduino. Existem dois modos de operação: edição e execução. No processo de edição, o comando + número de repetições é aceito no teclado. Tudo isso é compactado em um valor de 16 bits e adicionado a uma matriz na RAM. Quando um programa é executado, os valores são removidos da matriz e executados. A execução de uma etapa (de uma forma muito simplificada) é semelhante a esta:

  ( )      ( >=  ),                    = *    
( ) ( >= ), = *

A distância percorrida é determinada pelo número de pulsos do acoplador óptico, que é verificado interrompendo o temporizador.

A única exceção é a reprodução de som. Se o comando "shot" for encontrado, o loop for mais simples é iniciado, que recolhe os valores do arquivo wav (ele pisca na mesma memória flash do programa) e os emite para o R-2R DAC. Quando os valores terminam, ele retorna ao processo normal de execução do programa.

Infelizmente, o mundo real é um pouco diferente do modelo de software para o qual o firmware foi projetado, então adicionei vários atrasos que permitem que a inércia do chassi seja levada em consideração.

Eu deliberadamente coloquei a licença do MIT. No meu entendimento, o firmware com essa licença pode ser usado livremente como você quiser, sem a necessidade de publicar outras alterações (não quero forçar ninguém a fazer nada).

Manual de operação;)


O teclado é um pouco diferente do Lunokhod "clássico":



  • À esquerda, há um bloco de comandos (verde - para onde ir, pausa - vermelha, saída - inferior, disparo, repetição).
  • No meio estão os números com o número de repetições.
  • À direita, existem 8 teclas de controle (preto - exclua o último comando, vermelho - exclua tudo, verde - inicie, amarelo - inicie o último comando, azul - teste, cinza - sobressalente).

Mais uma vez com um sinal:
Na fotoTraduçãoSignificado
FwdAvançar
BwdDirija de volta
EsquerdaVire à esquerda
DireitoVire à direita
PausarCongelar
ForaNão implementado, deixado para o futuroFiz como no Lunokhod
FogoFogoProduz o som de "pih!"
LoopCicloRepita vários comandos anteriores uma vez
0-9Número de etapasMáximo 20
BspExcluir último comando
DelExcluir programa inteiroÉ necessária confirmação!
T1, T2TesteExecute o programa de teste
VerifiqueDê o último passo
Vá!Conclua todas as etapas

O programa é iniciado pressionando alternadamente “Equipe” e “Número”. Em seguida, pressionamos o verde “Launch” e olhamos o resultado. A exclusão ocorre pressionando o botão vermelho, mas não imediatamente: você precisa confirmar sua decisão pressionando o botão verde "Iniciar". Quando a energia é desligada, o programa é excluído.

O comando Repetir contém um parâmetro: quantas etapas precisam ser repetidas [uma vez]. Exemplo: Fwd1, Pause1, Bwd1, Loop3; como resultado, os comandos Fwd1, Pause1, Bwd1 serão executados duas vezes. A primeira vez porque eles estão no programa, a segunda - porque é indicada no comando Ciclo.

Apenas no caso, a carga da bateria é monitorada. Se for muito pequeno, um aviso será exibido e o brinquedo não será montado.

GUI


Manter todo o programa em mente é difícil, então estraguei um indicador simples que duplica as informações de entrada.

Após o início, um prompt é exibido:



Quando você insere um comando, o ícone do comando e o número de repetições são exibidos no canto superior esquerdo:



Se mais de um comando for inserido, a lista abaixo será (de fato, o programa) e o comando que você digitar ainda será exibido na parte superior:



Por que isso aconteceu dessa maneira


O brinquedo foi criado a partir do que estava à mão ou fácil de obter. Eu também gostaria de dizer sobre o Arduino. É selecionado por vários motivos:

  • Ela tem um número adequado de conclusões e elas precisam de muito (43):
    • 6 para controlar motores;
    • 8 + 4 para o teclado;
    • 11 para LCD;
    • 3 para DAC;
    • 8 para sensores de ultrassom;
    • 2 para sensores de velocidade;
    • 1 para medir a voltagem da bateria.
  • Eu estou familiarizado com esta plataforma.
  • É costurado em um clique.
  • O microcontrolador não requer velocidades gigantescas ou volumes de memória.
  • E eficiência especial também não é necessária, porque 90% da corrente é consumida por motores.

O que pode ser melhorado


Chassis Com um início agudo, as rodas são "polidas" e o brinquedo se desvia. Você pode tentar fazer um chassi de seis rodas, ou mesmo um de esteira rolante (existe no Aliexpress, mas eu ainda não tentei).

GUI Agora, o indicador exibe apenas a quantidade mínima de informações, e isso é feito da maneira mais simples.

Código Definitivamente não vou receber um Pulitzer.

O som Existem leitores de mp3 baratos e muito pequenos. Você pode atirar com segurança o R-2R DAC e substituí-lo por um player pronto.

Botões de backup . Você pode gravar o programa finalizado na EEPROM para que não se perca quando a energia é desligada. A implementação pode ser como no rádio: com uma pressão longa, o programa é salvo, com uma pressão curta.

Botão de saída . Não implementado atualmente. Você pode parafusar algo como um relé / servo em um dos pinos do Arduino.

Agradecimentos


  • A criança que me motivou todo esse tempo.
  • Minha esposa, que esperou pacientemente enquanto eu tocava o suficiente, e ajudou no Corel Draw!
  • Sergey Dudnikov, que desenhou uma sobreposição de teclado.
  • Andrei Shishkov, que criou esse mesmo patch.
  • Anton, que me fez um ótimo mp3 com o som de "uau!".
  • hudbrog , pela idéia de implementar um controlador PID!
  • Chatik faça-você-mesmo que me apoiaram mentalmente e foram forçados a olhar para os resultados intermediários do trabalho;)

Duplicatas incorretas


Eu gosto de filmes com Jackie Chan, porque no final há um corte de tomadas sem sucesso. Eu não poderia ficar sem eles também. O que mais me surpreendeu foi o fato de uma broca redonda com duas ranhuras fornecer um furo triangular;)








Source: https://habr.com/ru/post/pt423409/


All Articles