Construa Sua Própria Réplica do Mars Perseverance Rover com Arduino – Guia Passo a Passo
Neste tutorial, mostrarei como construí uma réplica do Mars Perseverance Rover. Claro, inspirado no rover real que está explorando Marte atualmente, projetei este rover de forma que todos que amam esta tecnologia, estudantes, makers, entusiastas de mecatrônica ou robótica, e assim por diante, possam facilmente seguir as instruções neste vídeo e construir seu próprio Mars Rover.
Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo.
Visão Geral
Vamos ver os principais recursos deste rover. Ele emprega uma suspensão rocker-bogie que permite ao rover rodar suavemente em terreno irregular e subir obstáculos, como rochas, que são até o dobro do diâmetro da roda, mantendo todas as seis rodas em contato com o solo o tempo todo. Cada roda tem motor DC independente que impulsiona o rover para frente ou para trás.

As quatro rodas dos cantos têm motores servo de direção individuais. Para dirigir o rover eficientemente e evitar derrapagem dos pneus ao curvar, estamos implementando a geometria de direção Ackermann. Com esta geometria, podemos calcular a velocidade e o ângulo de cada roda dependendo do raio de curva.

Isso significa que, ao curvar, as rodas de direção internas terão um ângulo maior comparado às rodas externas. Ao mesmo tempo, as rodas internas terão velocidades menores comparadas às externas.

Para controlar o rover, estou usando um transmissor RC comercial barato que envia comandos ao rover. No rover, tenho um receptor RC adequado que recebe os comandos e os envia a uma placa Arduino. Sim, o cérebro deste Mars rover é na verdade uma placa Arduino MEGA e, para conectar tudo facilmente, fiz uma PCB personalizada que pode ser simplesmente anexada sobre a placa Arduino MEGA.

O rover também possui uma câmera FPV localizada na unidade de câmeras. Ela é controlada usando um motor de passo e um servo motor e estou recebendo o vídeo em tempo real em um smartphone.

Gostaria de notar aqui que muitas das peças na verdade não são funcionais, ou estão presentes apenas para combinar com a aparência do rover real. Além disso, o braço robótico está faltando, mas planejo fazer o braço e adicionar mais funções a este rover em vídeos futuros.

No entanto, agora deixe-me guiá-lo pelo processo de construí-lo, começando pelo design do rover, conexão dos componentes eletrônicos e programação da placa Arduino.
Modelo 3D do Mars Rover DIY
Projetei este Mars rover usando o 3D EXPERIENCE Solidworks, que são na verdade os patrocinadores deste vídeo.

O 3DEXPERIENCE Solidworks é uma versão do Solidworks com capacidades na nuvem que obtemos através da plataforma 3DEXPERIENCE. Aqui tudo funciona através da nuvem, então você ou qualquer pessoa da sua equipe pode ter acesso aos dados ou modelos a qualquer momento, de qualquer lugar do mundo. A plataforma 3DEXPERIENCE também inclui muitos apps úteis de produtividade e gerenciamento de dados.

Por exemplo, o app Project Planning é uma ótima maneira de organizar suas tarefas, definir prazos e acompanhar seu progresso. Com o app 3D Markup, você pode visualizar, explorar e fazer anotações nos modelos de qualquer dispositivo, como notebook, tablet ou até smartphone.
Também há um modelador 3D separado baseado na nuvem chamado SOLIDWORKS xDesign, que roda dentro do seu navegador. Pode ser usado em conjunto com o Solidworks ou por conta própria e é ótimo para modelagem, em qualquer lugar, a qualquer hora e em qualquer dispositivo.

No entanto, provavelmente a notícia mais empolgante para muitos de vocês é que a partir do segundo semestre deste ano, haverá uma versão maker do 3DEXPERIENCE Solidworks que você pode obter por apenas $99 por ano. Muito obrigado à Solidworks por patrocinar conteúdo educacional como este.
Se você gostaria de saber se o SOLIDWORKS e a plataforma 3DEXPERIENCE podem funcionar para você, confira os links abaixo.
Experimente 3DEXPERIENCE grátis com meu link especial: www.solidworks.com/HTMTryNow
Saiba mais sobre 3DEXPERIENCE SOLIDWORKS: www.solidworks.com/HTMLearnMore
3DEXPERIENCE SOLIDWORKS for Makers: www.solidworks.com/htm
Ok, vamos voltar ao modelo e explicar como projetei o rover. Meu objetivo era fazer este rover parecer o mais próximo possível do Mars Perseverance Rover real. No site oficial da NASA há um modelo 3D do Mars Perseverance Rover, então baixei e abri no Blender.

Tirei 3 fotos das vistas frontal, superior e lateral do rover e importei no Solidworks. Queria que o tamanho das rodas fosse 130 mm de diâmetro, então escalei as imagens de acordo com esta dimensão.

Daqui, tirei todas as dimensões principais, como largura, comprimento, altura, distância entre rodas, dimensões para a suspensão rocker-bogie e assim por diante.
Agora, de acordo com estas dimensões e os motores DC e servos que planejei usar, projetei as peças do rover de forma que pudessem ser facilmente impressas em 3D e montadas, tentando manter a aparência o mais próxima possível do original.

Para a suspensão rocker-bogie estou usando perfis de alumínio redondos de 20 mm, enquanto para a estrutura base uso perfis T-slot de alumínio de 20 mm.
Você pode encontrar e baixar este modelo 3D, bem como explorá-lo no seu navegador no Thangs.

E aqui estão os arquivos STL necessários para Impressão 3D:
Impressão 3D das Peças da Réplica do Mars Rover
Para impressão 3D das peças, usei minha velha Creality CR-10 e também a nova CR-10 V3. Se você quiser imprimir as rodas com material flexível, definitivamente precisará de uma impressora com extrusora direta, como a CR-10 V3.

Ambas as impressoras 3D fornecem ótima qualidade de impressão sendo relativamente acessíveis. Se você se interessar, aqui estão os links para conferi-las:
- Creality CR-10…… Amazon / Banggood
- Creality CR-10 V3…… Amazon / Banggood / AliExpress
Veja também: Melhores Osciloscópios Custo-Benefício para Iniciantes e Makers – Atualização 2021
Ao imprimir as peças em 3D, é importante usar o recurso Expansão Horizontal no seu software de fatiamento. Usei um valor de -0,1 mm. Este recurso compensa a expansão do filamento durante a impressão.

Se não usado, por exemplo, se a peça tem um furo com diâmetro de 20 mm, o furo da peça impressa será cerca de 19,8 mm e não conseguiremos montá-la.
No entanto, aqui estão todas as peças impressas em 3D.

Para ser honesto, é um pouco louco a quantidade de impressão, mas é a única maneira de obter a aparência única do rover. Porém, você pode cortar o tempo de impressão pela metade se optar por imprimir apenas as peças funcionais deste rover.
Lista de Peças para o Mars Rover DIY
Aqui está a lista de componentes necessários para montar este Mars Rover DIY. A lista de componentes eletrônicos pode ser encontrada abaixo na seção do diagrama de circuito do artigo.
- Perfis T-slot alumínio 20x20mm ………..Amazon / Banggood / AliExpress
- Suportes de canto para perfil T-slot ……………..… Amazon / Banggood / AliExpress
- Tubo Redondo Alumínio 20mm ………………. Amazon / AliExpress
- Terminal Rotular 8mm ………………………………….. Amazon / Banggood / AliExpress
- 8 x Rolamento 608RS – 8x22x7mm ……..…… Amazon / Banggood / AliExpress
- 8 x Rolamento 626RS – 6x19x6mm ………….… Amazon / Banggood / AliExpress
- 5 x Rolamento 625RS – 5x16x5mm …………… Amazon / Banggood / AliExpress
- Parafusos M3 vários comprimentos ………………………… Amazon / Banggood / AliExpress
- 4 x Chavetas de Servo …………………………………………. Amazon / Banggood / AliExpress
Também precisamos de vários comprimentos de parafusos M4, M5 e M6. Você pode conferir a lista completa de parafusos e porcas necessários abaixo.
Você também pode conseguir os parafusos e porcas na sua loja de ferragens local.
Montagem do Rover
Certo, agora podemos começar a montar o rover. Primeiro, precisamos preparar os perfis de alumínio. Usei uma serra manual para metal para cortá-los no tamanho.

Precisamos de 10 perfis T-slot para a base e 8 perfis redondos para a suspensão rocker-bogie com as seguintes dimensões.

Para montar a estrutura dos perfis T-slot, usamos suportes de canto T-slot adequados e alguns parafusos e porcas. Uma vez que temos a estrutura superior e inferior prontas, podemos completar a base inserindo as peças impressas em 3D da junta rocker nas laterais, e alguns suportes impressos na frente e atrás. Para fixá-los no lugar, precisamos de parafusos M3 e porcas T-slot.

Para as juntas rocker usei parafusos e porcas M5. A distância do perfil frontal para a junta rocker precisa ser 134 mm.
Montagem da Suspensão Rocker-bogie
Em seguida, podemos inserir os rolamentos principais da suspensão rocker-bogie no lugar. Então, temos o eixo da junta rocker que será anexado à base usando um parafuso M8.

O eixo tem um slot onde podemos inserir uma porca M8 usada para fixá-lo à base. O furo do eixo é 7,5 mm para que tenhamos uma conexão apertada entre o parafuso e o eixo. Dessa forma, na verdade reforçamos o eixo impresso em 3D, pois o próprio parafuso suportará parte do peso do rover. Esta é a parte mais tensionada de toda a montagem, pois todo o peso do rover é suportado pelo eixo rocker. A forma como imprimimos as peças é muito importante para sua resistência.

Inicialmente, imprimi este eixo da maneira mais fácil, onde não é necessário material de suporte, mas a impressão falhou.

Nesta orientação, a força de tensão principal atua nas camadas, que não são tão fortes, mas se imprimirmos a peça de lado, onde a força de tensão atuará nos contornos das paredes, a peça será muito mais forte e não falhará.

No entanto, agora continuaremos montando a suspensão rocker-bogie junto com as juntas das rodas e os suportes dos motores, e depois anexaremos este subconjunto aos eixos rocker.
Os furos das peças onde os perfis redondos de 20 mm vão são dimensionados para ter encaixe apertado, então em alguns casos precisamos usar uma lima ou lixa para fazê-los encaixar.

Agora, para montar essas peças corretamente, precisamos fazer furos nos perfis redondos em locais precisos. Para isso, primeiro marcaremos uma linha reta no perfil.

Em seguida, podemos inserir o perfil na peça impressa em 3D com a linha de marcação passando pelo furo da peça. Então, podemos marcar os locais onde precisamos furar o perfil em ambos os lados daquela peça.

No lado oposto do perfil, precisamos repetir o mesmo procedimento.
Furei os furos usando broca de 2,5 mm, e depois, usando um parafuso M3, fiz uma rosca no perfil que usaremos para apertar as peças.

O perfil de alumínio é mais macio que o parafuso, então é fácil fazer a rosca com o próprio parafuso. Seguir este método para furar os furos é muito importante para que, no final, todas as peças estejam posicionadas como devem estar relativas umas às outras.

Para a junta bogie também usamos dois rolamentos e um parafuso M8.

Uma vez completado o arranjo da suspensão rocker-bogie, podemos continuar com a montagem das juntas das rodas de direção. A peça da junta da roda de direção é composta de duas peças parafusadas juntas.

Para a junta real ou conexão entre a peça do suporte do servo e a peça do suporte do motor DC, usamos dois rolamentos e um parafuso M6.
No lado superior ou cabeça do parafuso, precisamos anexar uma chaveta de servo e fazemos isso com a ajuda deste acoplador impresso em 3D e alguns parafusos M3.

O acoplador tem um slot hexagonal através do qual o movimento do servo será transferido para o parafuso. No lado inferior, podemos rosquear a outra peça da junta.

Fixamos esta conexão com uma porca M6. Isso completa a junta da roda de direção, embora mais tarde perceba que na verdade precisamos adicionar outra porca M6 na parte inferior e apertá-la na outra porca.

Precisamos fazer isso porque o movimento do servo é transferido para a peça do suporte do motor DC usando a própria porca, e se não apertar com outra porca, toda a junta se desenroscará.
O mesmo procedimento vale para a outra junta de canto. Sabemos que conectamos tudo corretamente se colocarmos esta montagem em uma superfície plana e todos os três suportes de motor ficarem planos ou todos paralelos entre si.

Claro, usamos o mesmo método para montar o outro lado. No entanto, podemos notar aqui que, embora algumas peças pareçam idênticas, elas não são as mesmas peças, mas sim espelhadas.
Em seguida, precisamos inserir estes subconjuntos nos eixos das juntas rocker na estrutura base ou chassi. Antes de fazermos isso, porém, precisamos inserir alguns insertos roscados de latão no eixo.

Usando um ferro de solda, podemos inseri-los facilmente no lugar, e assim obtemos furos roscados bons e confiáveis para fixar o subconjunto da suspensão. Precisamos de quatro parafusos M4 para isso.

Uma vez instalados em ambos os lados, podemos notar que o chassi cai ou gira livremente. Então, na verdade estamos perdendo algo para a suspensão rocker-bogie funcionar corretamente, e isso é o diferencial.

Com o diferencial, os dois rockers são conectados entre si e ao chassi do rover. Com esta configuração, quando um lado gira, o outro gira na direção oposta, proporcionando contato de roda aproximadamente igual.

O chassi terá um ângulo de inclinação médio de ambos os rockers.
Aqui estão todas as peças necessárias para montar o diferencial.

Como a barra do diferencial é bastante longa, fiz ela em três peças parafusadas juntas para que possamos imprimi-las em 3D mesmo em impressoras menores. A barra do diferencial pivotará no meio do chassi com uma junta feita de dois rolamentos e um parafuso M8.

Para conectar o diferencial com o rocker, precisamos de uma junta rotular de haste. Estou usando junta rotular M8 e também precisamos de uma haste roscada M8 com 50 mm de comprimento. A haste roscada entra em uma peça impressa em 3D que tem uma porca M8 de um lado, e do outro lado entra na junta rotular.

Aqui precisamos ajustar a distância entre o link do diferencial impresso em 3D e a junta rotular, que precisa ser cerca de 20 mm para o chassi ficar horizontal. Para conectar o link do diferencial com a alavanca do rocker, usamos dois rolamentos e um parafuso M5.

Repetimos este procedimento para o outro lado também e com isso nossa suspensão rocker-bogie está completa. Quando um lado sobe, o outro desce e vice-versa.

Isso proporciona todas as rodas em contato com o solo o tempo todo. O chassi vai apenas metade do movimento da perna, ou o chassi tem um ângulo de inclinação médio de ambos os rockers.
Veja também: Braço Robô Arduino e Plataforma Rodas Mecanum Operação Automática
Montagem dos Motores para Mars Rover
Certo, então agora podemos passar à instalação dos motores DC. Os motores que uso têm 37 mm de diâmetro, operam a 12V e têm redutor com saída de 50 RPM.

Embora depois percebi que 50 RPM é um pouco demais para este rover, então sugiro escolher versões de 20 ou 10 RPM.
Para anexar as rodas aos motores, fiz estes acopladores de eixo.

Aqui precisamos instalar insertos roscados M3 que serão usados para fixar o acoplador ao eixo, e também porcas M4 para fixar a roda ao acoplador. Ao inserir as porcas, também devemos adicionar um pouco de cola para que fiquem firmes no lugar, ou usar insertos roscados.
Em seguida, podemos anexar as rodas. As rodas são compostas de duas partes. Uma é a roda que imprimi com filamento flexível, mas não precisa ser, e a outra é a borda impressa com PLA normal.

A borda tem slots que encaixam na roda e assim a potência do motor é transferida para a roda. Podemos adicionar algumas gotas de cola nos slots para ficarem mais seguros. Finalmente, podemos fixar as rodas aos acopladores de eixo ou aos motores DC usando 4 parafusos M4.

Certo, então agora podemos instalar os motores servo de direção. Estou usando servos digitais de alto torque com 25 kgcm de torque e tensão de operação de 4,8 a 6,8V. Para fixar os servos no lugar, usamos quatro parafusos M3 que vão nos insertos roscados M3 na peça do suporte do servo impressa em 3D.

Montagem da Unidade de Câmera
Em seguida, podemos montar a unidade de câmeras. Para o movimento panorâmico da câmera, decidi usar um motor de passo NEMA 17, mas você pode trocar e usar qualquer outro tipo de motor aqui.

O movimento do motor é transferido para a seção superior usando uma haste roscada M5 conectada ao motor com um acoplador de eixo impresso em 3D, e do outro lado usamos um rolamento e duas porcas para fixar a haste roscada ao elemento móvel. Para inclinar a câmera, uso um servo que é o mesmo que usamos para as rodas de direção.

Muitas das peças aqui na unidade de câmera não são funcionais e estão presentes apenas para combinar com a aparência do rover real. Para montar estas peças, precisamos de vários parafusos M3 e alguns insertos roscados.

No entanto, também instalarei uma câmera FPV real aqui. Fiz um suporte personalizado para ela para poder montá-la na carcaça da unidade de câmera. A câmera é facilmente acessível pela parte superior, que fechamos com uma tampa de encaixe. Aqui está a aparência final da unidade de câmera.

Montei todo este subconjunto da câmera no canto frontal direito do chassi.

Neste ponto, podemos continuar montando o resto das peças impressas em 3D, que na verdade não são funcionais, apenas para combinar com a aparência do rover real, ou conectar os componentes eletrônicos e fazer o rover funcionar. Decidi montar todas as peças impressas primeiro e depois fazer a eletrônica.
Montagem do Restante do Rover
Como disse, as seguintes peças são apenas para combinar com a aparência do rover, então não entrarei em detalhes de como montá-las. Você pode ver como tudo precisa ser conectado no modelo 3D.

Na verdade, coloquei muito esforço projetando estas peças, prestando atenção aos detalhes para que tudo ficasse bonito.

Estas peças também são bastante grandes e levam tempo para imprimir em 3D.

Aqui está uma visão rápida de como as instalei.
Os dois últimos painéis superiores no meio do rover são projetados para encaixe por pressão no rover.

Eles atuarão como um capô que pode ser facilmente removido, pois os componentes eletrônicos estarão localizados nesta área.

O suporte dos componentes eletrônicos é feito de duas peças impressas em 3D parafusadas juntas e vai na estrutura inferior do chassi.
Eletrônica
Certo, agora podemos continuar com a eletrônica. Primeiro, precisamos medir quanto fio precisamos para cada motor. Soldei os fios diretamente nos motores, pois não tinha conectores adequados. Usei tubo termorretrátil para isolar os conectores.

Com a ajuda de algumas abraçadeiras, podemos guiar e manter os fios organizados.

Para os motores servo, podemos usar fios de extensão de servo para estender os fios até o compartimento de eletrônica. A peça do suporte de eletrônica tem slots pelos quais podemos passar os fios para chegar ao meio do rover.

No geral, acho que a fiação ficou bem limpa com os fios passando atrás das peças visíveis.
Veja também: Robô SCARA | Como Construir Seu Próprio Robô Baseado em Arduino
Diagrama de Circuito do Mars Rover DIY
Vamos ver o diagrama de circuito deste rover agora e ver como tudo precisa ser conectado.

Você pode obter os componentes necessários para este projeto nos links abaixo:
- Motor DC 12V 37mm …….……………….…
- Servo Digital 25kg …………………………….
- Driver DC DRV8871 ……………….
- Motor de Passo – NEMA 17…………………
- Driver de Passo A4988………………..…..…
- Arduino MEGA…………………….…..………
- Conversor DC-DC Buck …………………….
- Bateria LiPo 3S ………………………..………..
- Conector XT60 ………………………………
- Transmissor RC FLYSKY …………………..
- Câmera FPV e Transmissor de Vídeo …. Amazon / Banggood / AliExpress
- Receptor FPV de sua escolha
Para acionar os seis motores DC, estamos usando seis drivers de motor DC DRV8871 que suportam controle PWM e até 3,6A de corrente de pico. Os motores DC operam a 12V, com corrente nominal de 1A e corrente de travamento de 3A. Para alimentar o rover, estou usando uma bateria LiPo 3S que fornece cerca de 12V.
Os servos, por outro lado, precisam de 4,8 a 6,8V, então precisamos de um conversor DC-DC que converta 12V para 6V. O conversor precisa aguentar cerca de 8A de corrente, pois os servos que estamos usando são bastante potentes e têm corrente de travamento de cerca de 2A. Para acionar o motor de passo da unidade de câmera, podemos usar um driver de passo A4988 ou DRV8825. Usando dois resistores, podemos fazer um divisor de tensão simples através do qual podemos monitorar a tensão da bateria.
O receptor RC é alimentado com os 6 volts vindos do conversor buck, e a câmera FPV e seu transmissor de vídeo são alimentados com 12V da bateria.
PCB Personalizada
Para manter os componentes eletrônicos organizados, projetei uma PCB personalizada para este Mars rover DIY.

Esta PCB atuará como um shield para Arduino MEGA, pois poderemos conectá-la diretamente sobre a placa Arduino MEGA. Além dos drivers de motor, incluí um regulador de tensão 3,3V e uma conexão dedicada NRF24L01 caso você queira controlar o rover usando esse módulo, bem como conexões para sensor DHT22, bússola, I2C, comunicação serial, 12V, 5V, 3,3V e GND. Na verdade, preparei esta PCB para futuras atualizações das funcionalidades do rover.
Encomendei a PCB na PCBWay. Aqui podemos simplesmente enviar o arquivo Gerber, escolher as propriedades da nossa PCB e encomendá-la a um preço razoável.

Não alterei nenhuma das propriedades padrão, exceto a cor da PCB, que escolhi azul para combinar com a placa Arduino. Você pode baixar o arquivo Gerber aqui abaixo, ou na comunidade de compartilhamento de projetos da PCBWay, através da qual também pode encomendar a PCB diretamente.

Aqui você pode baixar o arquivo Gerber para esta PCB do Mars Rover DIY:
No entanto, após alguns dias, a PCB chegou. A qualidade da PCB é ótima, e tudo é exatamente igual ao design.

Montar a PCB é bem direto, pois tudo está rotulado. Comecei soldando os headers de pinos na parte inferior da PCB, para a conexão do Arduino MEGA, e continuei com o lado superior. Na verdade, usei headers de pinos para todas as conexões, pois isso dá flexibilidade para fazer alterações se algo não funcionar corretamente. Não soldei o regulador de 3,3V nem alguns pinos livres do Arduino, pois não ia usá-los agora de qualquer forma.

Uma vez terminada a montagem da PCB, fixei a placa Arduino na peça do suporte de eletrônica usando dois parafusos e adicionei a PCB a ela.

Então, conectei cada motor aos seus drivers e os coloquei no lugar na PCB. Os servos vão nos pinos de servo apropriados, bem como o driver de passo para o qual usei um jumper para selecionar resolução de 1/8 de passo.

Para a comunicação de rádio, estou usando o transmissor e receptor RC FLYSKY, que são muito acessíveis e funcionam muito bem.

Para conectar o receptor ao Arduino, podemos usar cabos de extensão de servo, pois precisamos de três fios: VCC, GND e pino de Sinal. O receptor comunica com o Arduino através de I-BUS e porta serial. Se quisermos enviar dados de volta do receptor para o transmissor, no nosso caso para monitorar a tensão da bateria, também precisamos conectar o sensor I-BUS do receptor a outra porta serial do Arduino.
O conversor buck é fixado no lugar usando dois parafusos, e para fixar a bateria LiPo estou usando duas elásticas para poder remover a bateria facilmente para carregar.

O interruptor de energia vai no painel traseiro direito do rover. Usei fios 20 AWG para estas conexões, pois a corrente através deles pode chegar a vários amperes quando o rover está totalmente engajado. Certifique-se de verificar suas conexões com estes fios, porque se conectar algo errado, pode queimar coisas.
Por fim, podemos conectar a câmera FPV a uma fonte de 12V e conectar o fio de sinal de vídeo ao transmissor de vídeo, que também precisa ser alimentado com 12V. Com isso, terminamos a eletrônica.

Podemos colocar as tampas de volta no lugar e terminamos este Mars Rover DIY. Na verdade, quase terminamos, pois precisamos dar vida a esta máquina agora, ou programar o Arduino.
Programação do Mars Rover DIY – Código Arduino
Aqui você pode baixar o código Arduino para este projeto Mars Rover DIY:
Visão Geral do Código
Então, usando a biblioteca IBusBM, lemos os dados vindos do Transmissor RC.
// Leitura dos dados vindos do Transmissor RC IBus.loop(); ch0 = IBus.readChannel(0); ch1 = IBus.readChannel(1); ch2 = IBus.readChannel(2); ch3 = IBus.readChannel(3); ch6 = IBus.readChannel(6);
Então, convertemos estes valores em valor de raio de curva à direita, valor de raio de curva à esquerda e velocidade do rover de 0 a 100%.
// Convertendo os dados de entrada // Curva à direita if (ch0 > 1515) { r = map(ch0, 1515, 2000, 1400, 600); // raio de curva de 1400mm a 600mm } // Curva à esquerda else if (ch0 < 1485) { r = map(ch0, 1485, 1000, 1400, 600); // raio de curva de 600mm a 1400mm } // Velocidade do rover em % de 0 a 100 s = map(ch2, 1000, 2000, 0, 100); // velocidade do rover de 0% a 100%
Usamos o valor do raio de curva "r" para calcular os ângulos das rodas de direção, bem como a velocidade das rodas.
void calculateMotorsSpeed() { // se sem direção, todas as rodas mesma velocidade - movimento reto if (ch0 > 1485 && ch0 < 1515) { speed1 = speed2 = speed3 = s; } // quando dirigindo, velocidade das rodas depende do valor do raio de curva else { // Rodas externas, mais distantes do ponto de curva, têm velocidade máxima // Devido à geometria do rover, as três rodas externas devem girar quase com a mesma velocidade. Diferem apenas 1%, então assumimos que são iguais. speed1 = s; // Rodas internas frontal e traseira estão mais próximas do ponto de curva e têm velocidades menores comparadas às externas speed2 = s * sqrt(pow(d3, 2) + pow((r - d1), 2)) / (r + d4); // Roda interna do meio é a mais próxima do ponto de curva, tem a menor velocidade speed3 = s * (r - d4) / (r + d4); } // valor de velocidade de 0 a 100% para valor PWM de 0 a 255 speed1PWM = map(round(speed1), 0, 100, 0, 255); speed2PWM = map(round(speed2), 0, 100, 0, 255); speed3PWM = map(round(speed3), 0, 100, 0, 255); } void calculateServoAngle() { // Calcular o ângulo para cada servo para o raio de curva "r" thetaInnerFront = round((atan((d3 / (r + d1)))) * 180 / PI); thetaInnerBack = round((atan((d2 / (r + d1)))) * 180 / PI); thetaOuterFront = round((atan((d3 / (r - d1)))) * 180 / PI); thetaOuterBack = round((atan((d2 / (r - d1)))) * 180 / PI); }
Como mencionei anteriormente, estamos usando a geometria de direção Ackermann para calculá-los. Esses valores são então usados para controlar os servos usando a biblioteca ServoEasing, que proporciona movimentos de servo mais suaves.
// Motores servo servoW1.startEaseTo(97 - thetaOuterFront); servoW3.startEaseTo(97 + thetaOuterBack); servoW4.startEaseTo(94 - thetaInnerFront); servoW6.startEaseTo(96 + thetaInnerBack);
Para controlar os motores DC usando a função analogWrite(), que na verdade envia sinal PWM para os drivers de motor DC.
// Motor Roda 1 - Frontal Esquerda analogWrite(motorW1_IN1, speed2PWM); // valor PWM digitalWrite(motorW1_IN2, LOW); // Frente
No geral, o código não é tão complicado, pois o próprio rover não tem funções complicadas. No entanto, planejo em vídeos futuros adicionar mais funções a este rover, como navegação GPS, vários sensores, braço robótico, mecanismo de coleta de solo e assim por diante.
Espero que tenha gostado deste projeto e aprendido algo novo. Sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo e confira minha Coleção de Projetos Arduino.
Processo de manufatura
- Construa um Rover Windows IoT Core com Raspberry Pi 2 – Guia do Iniciante ao Avançado
- Detector de Frequência de Áudio com Arduino – Meça Picos de Som com Módulo de Alta Sensibilidade
- Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
- Construa um Voltímetro DIY com Arduino e Display Nokia 5110 – Guia Passo a Passo
- Construa um Temporizador Regressivo Confiável com Arduino e Display de 7 Segmentos SparkFun
- Construa Seu Próprio Carro RC Porsche com Arduino: Guia Passo a Passo
- Monitor Inteligente de Energia Confiável com Arduino UNO – Guia Completo
- Construa uma Fechadura de Porta RFID Portátil com Arduino – Guia Passo a Passo
- Detecção de Cores de Objetos com Arduino Nano e Sensor TCS3200
- Medidor de Altura DIY com Arduino – Preciso e Fácil de Construir