No mundo, todos os dias, cada vez mais popular entre os limpadores robóticos. Graças a esses pequenos ajudantes, a casa fica muito mais limpa e muito menos esforço é feito na limpeza. Existem muitas modificações diferentes nos robôs, todas diferem em funcionalidade, tamanho e outros parâmetros.
Especificamente, este artigo considerará um exemplo de como 
faça você mesmo Você pode criar um robô simples, que por si só aspirará a sala quando necessário. O controlador é usado aqui como o "cérebro" 
Arduino.
Materiais e ferramentas para a fabricação do robô:- placa que controla o funcionamento dos motores (blindagem do motor Arduino);
- placa Arduino;
- dois motores com engrenagens (motores a 3 volts e velocidade de rotação de cerca de 100 rpm);
- rodas (podem ser feitas de latas de alumínio;
- um cooler de uma fonte de alimentação de computador (possível em 5V e 12V);
- Fonte de alimentação de 5V (bateria);
- fios e placas para instalação de elementos de rádio;
- para fazer o caso, você precisará de um recipiente de plástico;
- Outro pequeno recipiente para criar uma lixeira;
- cola quente;
- ímãs;
- papelão.

 O processo de fabricação do robô:
Primeiro passo Parte do software do robô e esboço:
O coração do robô é o controlador Arduino. Para programá-lo, você precisará de um computador e software especial. 


Para baixar o esboço no quadro, você precisará do programa IDE do Arduino. Abaixo, você pode pegar o código do programa do robô e ver o circuito principal. 
/*
Programa para controlar um robô com dois motores.
O robô gira quando os motores mudam de velocidade e direção.
Pára-choques dianteiros nos lados esquerdo e direito detectam obstáculos.
Os sonares ultrassônicos podem ser conectados a entradas analógicas (testadas no LV-MaxSonar-EZ1):
 - colocar pinos no array sonarPins na seguinte ordem: esquerda, direita, frente, outras.
   Exemplos: 
   1. apenas sonares esquerdo e direito conectados aos pinos 2 e 3: sonarPins [] = {2,3}
   2. sonares esquerdo, direito e dianteiro conectados aos pinos 2, 3 e 5: sonarPins [] = {2,3,5}
   3. somente sonar frontal conectado ao pino 5: sonarPins [] = {-1, -1,5}
   4. apenas o sonar esquerdo conectado ao pino 2: sonarPins [] = {2}
   5. único sonar direito conectado aos pinos 3: sonarPins [] = {-1,3}
   6.5 sonares conectados aos pinos 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
A blindagem do motor é usada para acionar motores.
*/
const int Baud = 9600; // velocidade da porta UART
// Propriedades do sonar
int sonarPins [] = {1, 2}; // Números de pinos analógicos no sensor de sonar Pinos AN
const long MinLeftDistance = 20; // Distância esquerda mínima permitida
const long MinRightDistance = 20; // Distância certa mínima permitida
const long MinFrontDistance = 15; // Distância frontal mínima permitida
const int SamplesAmount = 15; // mais amostras - medição mais suave e maior atraso
const int SonarDisplayFrequency = 10; // exibe apenas uma dessas linhas - nem todas
int sonarDisplayFrequencyCount = 0;
Fator const long = 2,54 / 2;
amostras longas [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// lado direito
const int pinRightMotorDirection = 4; // isso pode ser marcado na blindagem do motor como "DIR A"
const int pinRightMotorSpeed = 3; // isso pode ser marcado na blindagem do motor como "PWM A"
const int pinRightBumper = 2; // onde o pára-choque direito está conectado
// lado esquerdo
const int pinLeftMotorDirection = 7; // isso pode ser marcado na blindagem do motor como "DIR B"
const int pinLeftMotorSpeed = 6; // isso pode ser marcado na blindagem do motor como "PWM B"
const int pinLeftBumper = 8; // onde o pára-choque direito está conectado
// descomente as próximas 2 linhas se o Motor Shield estiver com quebras
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // isso pode ser marcado na blindagem do motor como "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // isso pode ser marcado na blindagem do motor como "BREAKE B"
// campos
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// define no contador quanto tempo um motor está funcionando de volta: N / 10 (em milissegundos)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Inicialização
configuração nula () {
  Serial.begin (Baud);
  initPins ();
// descomente as próximas 4 linhas se o Motor Shield estiver com quebras
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // desativar pausas
// digitalWrite (pinRightMotorBreak, LOW); // desativar pausas
  runRightMotorForward ();
  runLeftMotorForward ();
  startMotors ();
}
// loop principal
loop vazio () {
  verificaAndSetRightSide ();
  verificaAndSetLeftSide ();
  processRightSide ();
  processLeftSide ();
  delay (10); // repita a cada 10 milissegundos
}
//---------------------------------------------------
void initPins () {
  pinMode (pinRightMotorDirection, OUTPUT);
  pinMode (pinRightMotorSpeed, OUTPUT);
  pinMode (pinRightBumper, INPUT);
  pinMode (pinLeftMotorDirection, OUTPUT);
  pinMode (pinLeftMotorSpeed, OUTPUT);
  pinMode (pinLeftBumper, INPUT);
  for (int i = 0; i     pinMode (sonarPins [i], INPUT);
}
void startMotors () {
  setMotorSpeed (pinRightMotorSpeed, 255);
  setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
  while (checkBumperIsNotPressed (pinRightBumper)
        && checkBumperIsNotPressed (pinLeftBumper)) {
    delay (20); // verifica a cada 20 milissegundos
  }
}
void processRightSide () {
  if (countDownWhileMovingToRight MinFrontDistance) // verifica se a distância frontal mínima permitida não é atingida
    retornar
  if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // se o contador ainda não estiver em contagem regressiva
    runLeftMotorBackward (); // executa o motor direito para trás
  countDownWhileMovingToLeft = turnLeftTimeout; // define o contador para o valor máximo para iniciar a contagem regressiva
}
bool checkCounterIsNotSet (contador int) {
  contador de retorno = SamplesAmount)
    sampleIndex [pinIndex] = 0;
  amostras [pinIndex] [sampleIndex [pinIndex]] = valor;
  return true;
}
Long calculAvarageDistance (int pinIndex) {
  média longa = 0;
  for (int i = 0; i     média + = amostras [pinIndex] [i];
  média de retorno / SamplesAmount;
}
Etapa dois Preparação dos elementos básicos do robô
O cartão é usado como base para fixar todos os componentes do robô, incluindo a bateria, placas de controle e motores. 
A turbina deve ser colada adequadamente ou fixada de outro modo em um pequeno recipiente de plástico no qual é feito um orifício para a absorção de sujeira. Posteriormente, esse design é colado à base de papelão. Além disso, o recipiente deve ter um orifício adicional através do qual o ar sairá. Deve haver um filtro, o autor decidiu usar tecido sintético para esses fins.
No estágio seguinte, o refrigerador precisa ser colado com servos e, em seguida, esse design é instalado em uma base de papelão. 
Etapa três Fabricamos rodas para o robô
Para fazer as rodas, você precisa pegar latas de alumínio e cortar as partes superior e inferior delas. Então esses elementos são colados. Agora, resta apenas conectar as rodas adequadamente aos servomotores com adesivo hot melt. É importante entender que as rodas devem ser fixadas claramente no centro dos eixos dos servos. Caso contrário o robô vai dirigir torto e vai gastar energia.
Etapa quatro O processo final de montagem do robô
Depois que a bateria é instalada e todos os elementos do robô são conectados, resta colocar a estrutura em um estojo durável. Um grande recipiente de plástico é ótimo para esses fins. Antes de tudo, devem ser feitos orifícios no nariz do corpo do robô, através dos quais serão emitidos contatos que emitirão um sinal eletrônica quando o robô colide com um obstáculo. 
Para que o estojo seja removido rápida e facilmente, são usados ímãs para corrigi-lo; nesse caso, existem oito deles. Os ímãs são colados no interior do aspirador e no próprio recipiente, com 4 peças cada. 
Isso é tudo. Agora o robô está montado e pode ser experimentado na prática. Apesar do robô não conseguir recarregar sozinho e ter uma capacidade bastante limitada em termos de navegação, em meia hora poderá limpar o lixo na cozinha ou em uma pequena sala. As vantagens do robô é que todos os componentes podem ser facilmente encontrados e não são muito caros. Sem dúvida caseiro Você pode refinar adicionando novos sensores e outros elementos.