Índice:
- Suprimentos
- Etapa 1: programe a câmera ESP32
- Etapa 2: construir o robô
- Etapa 3: HEY! Espere um segundo! Por que preciso de um Arduino Nano?
- Etapa 4: conecte o joystick USB (opcional)
- Etapa 5: VAMOS VAMOS
- Etapa 6: detalhes de como modificar o código HTML / Javascript para o servidor da web
Vídeo: Robô de câmera ESP32 - FPV: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
O módulo ESP32 Camera é um PLC barato e poderoso. Inclui até reconhecimento facial!
Vamos construir um robô com ponto de vista de primeira pessoa que você dirige por meio de uma interface da web integrada!
Este projeto usa o módulo Geekcreit ESP32 com câmera OV2640. É baseado no módulo AIThinker.
Existem muitos clones de câmeras ESP32 diferentes por aí. Alguns funcionam, outros não. Sugiro que você use o mesmo módulo que usei para ter uma boa oportunidade de sucesso.
O robô funciona da seguinte maneira.
O ESP32 transmite um URL da web para sua rede que apresenta a transmissão de vídeo ao vivo com algumas caixas de seleção para operar algumas funções da câmera. Ele também recebe pressionamentos de teclas enviados para a página da web a partir do teclado que são comandos direcionais para o robô. Você pode querer construir o escudo do joystick USB para que possa dirigir o robô com o joystick em vez de digitar comandos no teclado.
Quando o ESP32 recebe pressionamentos de teclas, ele encaminha esses bytes para o Arduino Nano, que aciona os motores para fazer o robô se mover.
Este projeto é de dificuldade moderada-alta. Por favor, tome seu tempo.
Vamos começar!
Suprimentos
- Módulo de câmera ESP-32 com câmera OV2640 - Eu recomendo o produto Geekcreit
- Antena de encaixe externa para o ESP-32 para maximizar a força do sinal
- Arduino Nano
- Arduino Leonardo para o módulo Joystick (precisamos emulação de teclado USB fornecida pelo Leonardo)
- Módulo Joystick Genérico
- Chip L293D Quad H-bridge
- DC-DC Buck Coverter com saída de 5 V para alimentar o ESP32
- Adaptador Serial FTDI para programação do ESP32
- Um chassi de robô genérico com dois motoredutores - qualquer chassi funcionará. Motores de 3 a 6 V são recomendados
- 2 baterias LiPo de 7,4 V 1300 mAh (ou semelhante) para alimentar o ESP32 e os motores
- 1 bateria de 9V para alimentar o Arduino Nano
Etapa 1: programe a câmera ESP32
Usando uma placa de ensaio, conecte sua câmera ESP32 ao adaptador FTDI da seguinte maneira:
FTDI ESP32
3,3 V ----------- 3,3 V
GND ----------- GND
TX ----------- U0R
Rx ----------- U0T
Além disso, conecte o pino IO0 ("olho-zero") ao GND. Você precisa fazer isso para colocar o ESP32 no modo de programação.
Descompacte o arquivo esp32CameraWebRobotforInstructable.zip.
Existem 4 arquivos neste projeto:
esp32CameraWebRobotforInstructable.ino é o esboço do Arduino.
ap_httpd.cpp é o código que gerencia o servidor da web e trata da configuração dos recursos da câmera na página da web e do recebimento de pressionamentos de tecla na página da web.
camera_index.h contém o código HTML / JavaScript para o aplicativo da web como matrizes de bytes. Modificar o aplicativo da web está muito além do escopo deste projeto. Incluirei um link para saber como modificar o HTML / JavaScript posteriormente.
camera_pins.h é o arquivo de cabeçalho pertencente à configuração de pinos da câmera ESP32.
Para colocar o ESP32 no modo de programação, você deve conectar IO0 ("eye-oh-zero") ao aterramento.
Inicie o seu Arduino IDE e vá para Tools / Boards / Boards Manager. Pesquise esp32 e instale a biblioteca esp32.
Abra o projeto em seu IDE Arduino.
Coloque a ID de rede do SEU roteador e a SUA senha nas linhas destacadas na imagem acima. Salve o projeto.
Vá ao menu Ferramentas e faça as seleções conforme mostrado na imagem acima.
Placa: ESP32 Wrover
Velocidade de upload: 115200
Esquema de partição: "APP enorme (3 MB sem OTA)"
e escolha a porta à qual seu adaptador FTDI está conectado.
Clique no botão "Upload".
Agora, às vezes, o ESP32 não inicia o upload. Portanto, esteja pronto para pressionar o botão RESET na parte de trás do ESP32 quando começar a ver os… ---… caracteres aparecerem no console durante o upload. Em seguida, ele começará a carregar.
Quando você vir 'pressione RST' no console, o upload estará concluído.
DESCONECTE IO0 do solo. Desconecte a linha de 3,3 V entre o adaptador FTDI e o ESP32.
A câmera ESP32 requer muita corrente para funcionar bem. Conecte um adaptador de energia 5V 2A aos pinos 5V e GND no ESP32.
Abra o Serial Monitor, defina a taxa de transmissão para 115200 e observe a reinicialização do ESP32. Eventualmente, você verá o URL do servidor.
Vá para o seu navegador e digite o URL. Quando o site carregar, clique no botão 'Iniciar transmissão' e a transmissão de vídeo ao vivo deve começar. Se você clicar na caixa de seleção 'Floodlight', o LED do flash integrado deve acender. Atenção! É BRILHANTE!
Etapa 2: construir o robô
Você precisa de um chassi de robô de duas rodas. Qualquer um serve. Monte o chassi de acordo com as instruções do fabricante.
Em seguida, conecte o robô de acordo com o diagrama. Deixe as conexões da bateria por enquanto.
O L293D é usado para controlar os motores. Observe que a metade do entalhe no chip é PARA O ESP32.
Normalmente, 6 pinos são necessários no Arduino para controlar dois motores.
Este robô requer apenas 4 pinos e ainda funciona totalmente.
Os pinos 1 e 9 são conectados à fonte de 5 V do Arduino, portanto, estão permanentemente ALTOS. Conectar o robô dessa forma significa que precisamos de dois pinos a menos no Arduino para controlar os motores.
Nas direções para a frente, os pinos de ENTRADA são ajustados para BAIXO e os pinos de modulação de onda de pulso do motor são ajustados para valores entre 0 e 255, com 0 significando OFF e 255 significando velocidade máxima.
Em direções reversas, os pinos de INPUT são definidos como HIGH e os valores de PWM são invertidos. 0 significa velocidade máxima e 255 significa desligado.
Descompacte e carregue o esboço do ArduinoMotorControl para o Arduino Nano.
Etapa 3: HEY! Espere um segundo! Por que preciso de um Arduino Nano?
Você provavelmente está pensando: "Ei! Existem pelo menos 4 pinos IO disponíveis na câmera ESP32. Por que não posso usá-los para controlar os motores?"
Bem, é verdade, existem pinos no ESP32 da seguinte maneira:
IO0 - necessário para colocar o ESP32 no modo de programação
IO2 - disponível
IO4 - o LED Flash
IO12, IO13, IO14, IO15, IO16 - pinos GPIO adicionais.
Se você apenas carregar um esboço básico no ESP32 para controlar os pinos com comandos PWM, eles funcionam.
NO ENTANTO, depois de ativar as bibliotecas de CÂMERA em seus esboços, esses pinos não estarão mais disponíveis.
Portanto, a coisa mais fácil a fazer é apenas usar um Nano para controlar os motores via PWM e enviar os comandos do ESP32 por comunicação serial através de um fio (ESP32 U0T para Arduino Rx0) e GND. Muito simples.
Etapa 4: conecte o joystick USB (opcional)
Você pode conduzir o robô enviando pressionamentos de tecla para a página da web da seguinte forma:
8 - Avançar
9 - Avançar à direita
7 - Avançar à Esquerda
4 - Girar para a esquerda
5 - Pare
1 - Inverter à esquerda
2 - Reverso
3 - Reverter à direita.
O esboço do joystick USB traduz as entradas do joystick em pressionamentos de teclas e os envia para a interface da web que os encaminha para o Arduino para conduzir o robô.
Conecte o joystick ao Arduino LEONARDO da seguinte maneira:
Leonardo Joystick
5V ---------- VCC
GND ---------- GND
A0 ---------- VRx
A1 ---------- VRy
Abra o esboço usbJoyStick, selecione Arduino Leonardo como a placa e carregue-o no Leonardo.
Se quiser testá-lo, basta abrir um editor de texto em seu computador, clicar com o mouse na janela e começar a mover o joystick. Você deve ver os valores de 1 a 9 exibidos na janela
Etapa 5: VAMOS VAMOS
Reserve algum tempo e examine sua fiação para ter certeza de que está tudo correto.
Em seguida, conecte as baterias da seguinte maneira.
1. Ligue a câmera ESP32. São necessários alguns segundos para iniciar o servidor da web.
2. Ligue o Arduino Nano.
3. Ligue os motores.
Abra seu navegador e acesse o URL do ESP32.
Clique no botão Iniciar transmissão.
Clique com o mouse em algum lugar da tela do navegador para que a tela agora seja o foco.
Comece a dirigir seu robô com o joystick (ou teclado).
Descobri que o tamanho do quadro padrão funciona bem para transmitir o vídeo ao vivo de forma razoavelmente responsiva por WiFi. No entanto, conforme você aumenta o tamanho do quadro, o fluxo se torna mais entrecortado porque você está tentando transmitir imagens maiores.
Este é um projeto desafiador que lhe dá a oportunidade de começar a trabalhar com streaming de vídeo ao vivo e dirigir um robô por WiFi. Espero que você tenha achado divertido!
AGORA VAI FAZER ALGO MARAVILHOSO!
Atualização de janeiro de 2020 - As últimas fotos mostram a versão final do robô, fortemente soldada e montada com segurança no chassi.
Os três interruptores montados na frente são os seguintes:
Esquerda - bateria de energia do motor
Center - bateria Arduino
Direita - Bateria de câmera ESP32
Eu poderia usar uma bateria grande com alguns transformadores buck-boost (eu uso um para o ESP32 - está no canto inferior direito da foto frontal), mas por uma questão de simplicidade, estou apenas mantendo as 3 baterias.
Robot agora no Access Point
Acho complicado demonstrar esse robô fora de casa porque a rede corporativa da minha escola não permite que eu conecte o servidor web do robô a ele. Como solução, pesquisei o uso do recurso Access Point do servidor web ESP32. Demora algum trabalho, mas requer mudanças mínimas no esboço do robô principal para fazer o ESP32 transmitir seu próprio endereço IP. Não é tão poderoso quanto um hub de wi-fi de alta velocidade dedicado (às vezes trava se você se mover muito rápido), mas funciona muito bem e agora posso demonstrar o robô em qualquer lugar que quiser sem ter que conectá-lo a uma rede! Depois de fazer o robô funcionar, tente convertê-lo em Ponto de Acesso você mesmo!
Etapa 6: detalhes de como modificar o código HTML / Javascript para o servidor da web
Isso não é necessário, mas recebi alguns pedidos.
Forneci a este documento do Google detalhes sobre como usar o CyberChef para converter entre HTML / Javascript e as representações de matriz de bytes no arquivo camera_index.h.
Recomendado:
Arduino - Robô de solução de labirinto (MicroMouse) Robô que segue a parede: 6 etapas (com imagens)
Arduino | Maze Solving Robot (MicroMouse) Wall seguindo Robot: Bem-vindo, sou Isaac e este é meu primeiro robô " Striker v1.0 ". Este robô foi projetado para resolver um labirinto simples. Na competição, tivemos dois labirintos e o robô foi capaz de identificá-los. Quaisquer outras mudanças no labirinto podem exigir uma mudança no
Robô Arduino com distância, direção e grau de rotação (leste, oeste, norte, sul) controlado por voz usando o módulo Bluetooth e movimento autônomo do robô: 6 etapas
Robô Arduino com distância, direção e grau de rotação (leste, oeste, norte, sul) controlado por voz usando o módulo Bluetooth e movimento autônomo do robô .: Este Instructable explica como fazer o robô Arduino que pode ser movido na direção necessária (para frente, para trás , Esquerda, Direita, Leste, Oeste, Norte, Sul) Distância necessária em centímetros usando o comando de voz. O robô também pode ser movido de forma autônoma
Robô de equilíbrio / Robô de 3 rodas / Robô STEM: 8 etapas
Robô de balanceamento / Robô de 3 rodas / Robô STEM: Construímos um robô de balanceamento combinado e de 3 rodas para uso educacional em escolas e programas educacionais após as aulas. O robô é baseado em um Arduino Uno, um escudo personalizado (todos os detalhes de construção fornecidos), um pacote de bateria Li Ion (todos constr
Como fazer o menor robô seguidor de linha do mundo (robo Rizeh): 7 etapas (com fotos)
Como fazer o menor robô seguidor de linha do mundo (robo Rizeh): Como fazer o menor robô seguidor de linha do mundo (vibrobot) " roboRizeh " peso: 5gr tamanho: 19x16x10 mm por: Naghi Sotoudeh A palavra " Rizeh " é uma palavra persa que significa " minúsculo ". Rizeh é uma vibração baseada em ro
COMO MONTAR UM BRAÇO DE ROBÔ DE MADEIRA IMPRESSIONANTE (PARTE 2: ROBÔ PARA Evitar Obstáculos) - COM BASE NO MICRO: BIT: 3 etapas
COMO MONTAR UM ARM DE ROBÔ DE MADEIRA IMPRESSIONANTE (PARTE 2: ROBÔ PARA Evitar Obstáculos) - COM BASE NO MICRO: BIT: Anteriormente, introduzimos o Armbit no modo de rastreamento de linha. A seguir, apresentamos como instalar o Armbit evitando o modo de obstáculo