Índice:
- Suprimentos
- Etapa 1: carro robô móvel
- Etapa 2: Carro Robô Móvel - Diagrama de Circuito
- Etapa 3: Carro robô móvel - Montagem (motores)
- Etapa 4: Carro robô móvel - Montagem (sensor de distância)
- Etapa 5: Carro Robô Móvel - Montagem (ESP32 CAM)
- Etapa 6: Carro Robô Móvel - Montagem (Distribuidor de Chip)
- Etapa 7: Carro robô móvel - Montagem (cookies!)
- Etapa 8: Carro Robô Móvel - Código Arduino
- Etapa 9: Carro Robô Móvel - Código ESP32
- Etapa 10: Distribuidor de Chip
- Etapa 11: Joystick
- Etapa 12: Joystick - Diagrama de circuito
- Etapa 13: Joystick - Emulador de teclado
- Etapa 14: Comunicação de rede
- Etapa 15: juntando tudo
Vídeo: Robô de Presença Virtual: 15 Passos
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:34
Este robô móvel interage com seu entorno físico, representando a "presença virtual" da pessoa que o controla remotamente. Ele pode ser acessado por qualquer pessoa, em qualquer lugar do mundo, para dispensar guloseimas e brincar com você.
O trabalho aqui é desenvolvido por duas pessoas (uma na Alemanha e outra nos Estados Unidos) como uma tentativa de ir além dos meios tradicionais de comunicação baseada na internet, criando uma interface física para interação remota. Como COVID-19 continua a afetar o mundo, e todos são responsáveis por limitar nossa exposição física às pessoas, tentamos trazer de volta a conexão tangível que faz parte da interação física.
É baseado no ESP32-Camera-Robot-FPV-Teacher-Entry Instructable e modificado para incluir sensor de distância, dispensador de guloseimas e capacidade de "controle de qualquer lugar do mundo", desde que você tenha uma conexão de Internet estável.
Suprimentos
O projeto tem 4 partes principais - um carro robô móvel, um dispensador de chip, um joystick e uma configuração de comunicação de rede.
Carro Robô Móvel
- Tábua de pão
- Kit de motor de tração de 2 rodas e robô de chassi (inclui rodas, motores DC, placa de montagem e parafusos)
- Arduino Mega 2560 (se você construir sem o sensor de distância ou o Dispensador de Chip, um Uno terá pinos suficientes)
- (3) Baterias de 9V (tenha mais algumas, pois você as drenará durante a depuração)
- Módulo de fonte de alimentação LM2596 DC / DC Regulador Buck 3A (ou similar)
- Módulo ESP32-CAM Wifi
- FT232RL FTDI USB para conversor serial TTL (para programação do ESP32-CAM)
- Sensor de distância ultrassônico HC-SR04
- Motorista L298N
- (3) LEDS (qualquer cor)
- (3) Resistores de 220 Ohm
Dispensador de Chip
- (2) Servos SG90
- Papelão / Papelão
Controle de video game
- Arduino Uno
- Módulo Joystick
- Mini placa de ensaio, (1) LED, (1) resistor de 220 Ohm (opcional)
De outros
Muitos fios de jumper de tábua de pãoExtra Cardboard / PaperboardTapeScissorsRuler / Measuring TapeSmall Philips ScrewdriverSmall Flathead Screwdriver
Paciência =)
Etapa 1: carro robô móvel
O chassi do Robot Car serve como uma plataforma móvel, com um Arduino MEGA como o microcontrolador principal que aciona os motores, lê os valores dos sensores e aciona os servos. A maioria das ações é realizada fazendo com que o Arduino MEGA receba comandos via comunicação serial, enviados do ESP32-CAM. Enquanto o ESP32 fornece transmissão ao vivo da câmera para controlar o robô, sua outra função é gerenciar uma conexão sem fio entre o robô e o servidor, permitindo que os usuários o controlem de qualquer lugar do mundo. O ESP32 recebe comandos da página da web por meio do pressionamento de tecla e os envia para o Arduino MEGA como valores char. Com base no valor recebido, o carro irá para a frente, para trás etc. Como o controle remoto via internet depende de muitos fatores externos, incluindo alta latência, baixa qualidade de transmissão e até mesmo desconexões, um sensor de distância é incorporado para evitar que o robô bata em objetos. * Devido aos altos e flutuantes requisitos de energia do chip ESP32, um Regulador de Fonte de Alimentação é recomendado para uso com energia de bateria (consulte o diagrama de fiação).
Etapa 2: Carro Robô Móvel - Diagrama de Circuito
Iremos orientá-lo na montagem passo a passo.
Etapa 3: Carro robô móvel - Montagem (motores)
Depois de montar o chassi 2WD, começamos conectando os motores e a bateria ao Arduino MEGA por meio do driver L298N.
Etapa 4: Carro robô móvel - Montagem (sensor de distância)
Como existem alguns componentes para conectar, vamos adicionar uma placa de ensaio, para que possamos conectar a alimentação e o aterramento compartilhado com mais facilidade. Depois de reorganizarmos os fios, conecte o sensor de distância e fixe-o na frente do robô.
Etapa 5: Carro Robô Móvel - Montagem (ESP32 CAM)
Em seguida, conecte o módulo ESP32-CAM e fixe-o próximo ao sensor de distância próximo à frente do robô. Lembre-se de que este componente que consome muita energia requer sua própria bateria e um regulador CC.
Etapa 6: Carro Robô Móvel - Montagem (Distribuidor de Chip)
Agora, vamos adicionar o dispensador de chips (mais sobre isso na seção "Dispensador de chips"). Conecte os dois servos de acordo com o diagrama de Fritzing e fixe o dispensador na cauda do robô.
Etapa 7: Carro robô móvel - Montagem (cookies!)
Finalmente, adicionamos guloseimas ao dispensador!
Etapa 8: Carro Robô Móvel - Código Arduino
RobotCar_Code é o código que você precisará carregar no Arduino Mega.
Funciona assim: o Arduino escuta os bytes enviados do ESP32 por meio de comunicação serial na banda 115200. Com base no byte recebido, o carro se moverá para frente, para trás, esquerda, direita etc. enviando uma tensão ALTA ou BAIXA aos motores para controlar a direção, bem como uma variável PWM entre 0-255 para controlar a velocidade. Para evitar colisões, este código também lê os valores vindos do sensor de distância e se a distância for menor que um limite especificado, o robô não se moverá para frente. Por último, se o Arduino receber um comando para dispensar uma guloseima, ele ativará os servos no Dispensador de Chip.
Etapa 9: Carro Robô Móvel - Código ESP32
O ESP32 permite a comunicação entre o servidor e o Arduino via Wifi. Ele é programado separadamente do Arduino e possui seu próprio código:
- ESP32_Code.ino é o código do ESP32 para enviar informações ao Arduino
- app_httpd.cpp é o código necessário para o servidor da web ESP32 padrão e define a função para escutar os pressionamentos de tecla. Bom para depurar e testar em wi-fi local. Não é usado para comunicação fora da rede local.
- camera_index.h é o código html para o aplicativo da web padrão
- camera_pins.h define os pinos dependendo do modelo ESP32
O código ESP32 usa a biblioteca Wifi, bem como o complemento ESP32, que pode ser instalado no IDE do Arduino seguindo estas etapas:
- No IDE do Arduino, vá para Arquivo> Preferências
- Em seguida, na guia Configurações em URL do gerenciador de placas adicionais, digite o seguinte "https://dl.espressif.com/dl/package_esp32_index.json"
- Agora abra o Board Manager e vá em Tools> Board> Boards Manager e procure o ESP32 digitando "ESP32"
- Você deverá ver "esp32 da Espressif Systems". Clique em Instalar.
- Agora, o add-on ESP32 deve ser instalado. Para verificar, volte para o IDE do Arduino e vá para Ferramentas> Placa e selecione "ESP32 Wrover Module".
- Mais uma vez, vá para Ferramentas> Velocidade de upload e defina para "115200".
- Por último, vá para Ferramentas> Esquema de partição e defina-o como "APP enorme (3 MB sem OTA / 1 MB SPIFFS)
- Depois de ter concluído isso, eu recomendo seguir este tutorial por RandomNerdTutorials que explica em detalhes como finalizar a configuração do ESP32 e fazer o upload do código com o programador FTDI. Programação do ESP32
Etapa 10: Distribuidor de Chip
O Chip Dispenser é uma adição barata ao robô móvel, permitindo que ele afete o ambiente local e interaja com pessoas / animais deixando uma guloseima saborosa. Consiste em uma caixa externa de papelão com 2 servos montados dentro, bem como um cartucho interno de papelão que contém itens (como doces ou guloseimas para cachorro) para dispensar. Um servo atua como um portão enquanto o outro empurra o item para fora.
*Todas as dimensões são em milímetros
Etapa 11: Joystick
Embora possa ser divertido controlar um robô com o teclado, é ainda mais divertido e intuitivo usar um joystick, onde o robô reage diretamente com base na direção que você empurra. Como esse robô é acionado por meio de pressionamentos de teclas gravados na página da Web, precisamos do nosso joystick para emular um teclado. Dessa forma, os usuários sem joystick ainda podem controlar o robô diretamente de um teclado, mas outros podem usar o joystick.
Para isso, só tínhamos um Arduino Uno que não tem a capacidade de usar a biblioteca, então o programamos diretamente usando um protocolo USB conhecido como Device Firmware Update (DFU) que permite que o arduino seja atualizado com um firmware de teclado USB HID genérico. Em outras palavras, quando o arduino é conectado ao usb, ele não é mais reconhecido como um arduino, mas como um teclado!
Etapa 12: Joystick - Diagrama de circuito
Aqui está como conectamos o joystick.
Etapa 13: Joystick - Emulador de teclado
Para que seu Arduino Uno emule um teclado, você precisa programar diretamente o chip Atmega16u2 no Arduino por meio de uma atualização manual do firmware do dispositivo (DFU). As etapas a seguir irão descrever o processo para uma máquina Windows e, esperamos, ajudá-lo a evitar alguns dos problemas que encontramos.
A primeira etapa é escrever manualmente o driver USB Atmel no Arduino para que seja reconhecido como um USB e não um Arduino, o que permite que ele seja atualizado com o programador FLIP.
- Baixe o programador FLIP da Atmel aqui
- Conecte seu Arduino Uno
- Vá para o Gerenciador de Dispositivos e encontre o Arduino. Estará em COM ou Dispositivo desconhecido. Conecte-o e desconecte-o para garantir que este seja o dispositivo correto.
- Depois de encontrar o Arduino Uno no gerenciador de dispositivos, clique com o botão direito nele e selecione propriedades> Driver> Atualizar driver> Procurar software de driver em meu computador> Deixe-me escolher em uma lista de drivers disponíveis em meu computador> Com disco> Navegar até o arquivo "atmel_usb_dfu.inf" e selecione-o. Ele deve estar na pasta onde o seu programador Atmel FLIP foi instalado. No meu computador, ele está aqui: C: / Arquivos de programas (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
- Instale o driver
- Agora volte para o Gerenciador de Dispositivos, você deve ver um "Dispositivos USB Atmel" com o Arduino Uno agora rotulado como um ATmega16u2!
Agora que o computador reconhece o Arduino Uno como um dispositivo USB, podemos usar o programador FLIP para atualizá-lo com 3 arquivos separados e transformá-lo em um teclado.
Se você desconectou seu Arduino Uno após a primeira parte, conecte-o novamente.
- Abra o FLIP
- Reinicialize o Arduino Uno conectando brevemente a alimentação ao aterramento.
- Clique em Seleção de dispositivo (ícone como um microchip) e selecione ATmega16U2
- Clique em Selecionar um meio de comunicação (ícone como um cabo USB) e selecione USB. Se você completou a primeira parte corretamente, os outros botões acinzentados devem se tornar utilizáveis.
- Vá para Arquivo> Carregar arquivo hexadecimal> e carregue o arquivo Arduino-usbserial-uno.hex
- Na janela FLIP, você deve ver três seções: Fluxo de operações, Informações do buffer FLASH e ATmega16U2. No Fluxo de Operações, marque as caixas para Apagar, Programa e Verificar e clique em Executar.
- Quando o processo for concluído, clique em Iniciar aplicativo na seção ATmega16U2.
- Conecte o ciclo do arduino desconectando-o do computador e conectando-o novamente.
- Reinicialize o Arduino Uno conectando brevemente a alimentação ao aterramento.
- Abra o IDE do Arduino e carregue o arquivo JoyStickControl_Code.ino para a placa.
- Conecte o ciclo do arduino desconectando-o do computador e conectando-o novamente.
- Reinicialize o arduino conectando brevemente a alimentação ao aterramento.
- Volte para o FLIP, certifique-se de que a Seleção de dispositivo diz Atmega16U2
- Clique em Selecionar um meio de comunicação e selecione USB.
- Vá para Arquivo> Carregar arquivo hexadecimal> e carregue o arquivo Arduino-keyboard-0.3.hex
- Na janela FLIP, você deve ver três seções: Fluxo de operações, Informações do buffer FLASH e ATmega16U2. No Fluxo de Operações, marque as caixas para Apagar, Programa e Verificar e clique em Executar.
- Quando o processo for concluído, clique em Iniciar aplicativo na seção ATmega16U2.
- Conecte o ciclo do arduino desconectando-o do computador e conectando-o novamente.
- Agora, quando você vai para o Gerenciador de dispositivos, deve haver um novo dispositivo de teclado HID em Teclados.
- Abra um bloco de notas ou qualquer editor de texto e comece a mover o joystick. Você deve ver os números sendo digitados!
Se você quiser alterar o código no esboço do Arduino, por exemplo, escrevendo novos comandos para o joystick, você precisará atualizá-lo com todos os 3 arquivos de cada vez.
Alguns links úteis: Arduino DFUAtLibUsbDfu.dll não encontrado
Este emulador de teclado é baseado neste tutorial de Michael em 24 de junho de 2012.
Etapa 14: Comunicação de rede
Para receber stream de vídeo e enviar comandos ao robô de qualquer lugar do mundo, precisamos de uma forma de obter dados de e para o ESP32-CAM. Isso é feito em duas partes, um manipulador de conexão em sua rede local e um servidor público. Baixe os três arquivos para conseguir isso:
- Handlers.py: retransmite informações do ESP32-CAM e do servidor público (testado em Python 3.8)
- Flask_app.py: define como seu aplicativo responde às solicitações de entrada.
- Robot_stream.html: renderiza vídeo em seu navegador e ouve comandos por meio do teclado / joystick (testado no Chrome)
Manipulador de conexãoVocê pode codificar isso diretamente em app_httpd.cpp, mas para facilitar a depuração, usamos um script Python em execução em um PC conectado à mesma rede. Abra handlers.py e atualize o endereço IP e o nome de usuário para os seus e você está pronto para começar. O stream começará quando você executar este arquivo.
Servidor público Para acessar tudo na internet, você pode iniciar um servidor com um PaaS de sua escolha. Em pythonanywhere (PA), a configuração leva menos de 5 minutos:
- Cadastre-se para uma conta e faça login
- Vá para a guia “Web” e clique em “Adicionar um novo aplicativo da Web”, escolha Flask e Python 3.6
- Copie flask_app.py para o diretório / mysite
- Copie robot_stream.html para o diretório / mysite / templates
- Clique em “Recarregar”
E … está tudo pronto!
Isenção de responsabilidade: esse fluxo de trabalho de rede é rápido e simples, mas está longe de ser o ideal. RTMP ou soquetes seriam mais apropriados para streaming, mas não são suportados no PA e requerem alguma experiência com rede e configuração de servidor. Também é recomendável adicionar algum mecanismo de segurança para controlar o acesso.
Etapa 15: juntando tudo
Agora, ligue seu robô, execute handlers.py em um computador (conectado à mesma rede que o robô) e você pode controlar o robô de um navegador com base no url que você definiu de qualquer lugar que desejar. (por exemplo,
Recomendado:
Detector de presença de cama Zigbee: 8 etapas
Zigbee Bed Presence Detector: Há algum tempo, eu estava procurando uma maneira de detectar quando estamos na cama. Isso para usar essas informações no Homeassistant. Com essas informações eu poderia fazer automações para desligar luzes à noite ou, por exemplo, ativar um sistema de alarmes em minha casa
Sensor de presença: 12 etapas
Sensor de presença: os wearables são geralmente dispositivos habilitados para BLE. É comum que eles anunciem periodicamente alguns dados ao longo de seu endereço MAC. Usamos um ESP para escanear esses dados e acionar um evento pela internet quando encontra um endereço MAC específico. Este particular
Simulador de presença residencial e dispositivo de controle de segurança: 6 etapas (com imagens)
Simulador de Presença Doméstica e Dispositivo de Controle de Segurança: Este projeto nos permite simular presença e detectar movimentos em nossa casa. Podemos configurar uma rede de dispositivos instalados em diferentes cômodos de nossa casa todos eles controlados por um dispositivo principal. Este projeto combina estes recursos em um único d
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
Sensor de presença de cama com SONOFF: 8 etapas (com fotos)
Sensor de presença de cama com SONOFF: Bem-vindo a este tutorial! Pré-requisitos Este howto exige que você tenha algum conhecimento de sonoff e tasmota. Se você nunca projetou um sonoff com tasmota, você deve primeiro aprender a fazê-lo e só então você será capaz de construí-lo