Índice:
- Etapa 1: algumas informações sobre App.remoteme.org
- Etapa 2: O que é necessário:
- Etapa 3: conexões
- Etapa 4: PCB
- Etapa 5: saídas de PCB
- Etapa 6: Como vai funcionar
- Etapa 7: Montagem do Carro - Rodas
- Etapa 8: Opção 1/2 de alimentação (baterias AA de recarga)
- Etapa 9: Opção 2/2 de alimentação (baterias Li-Po de 7,2 V)
- Etapa 10: Solda
- Etapa 11: Câmera
- Etapa 12: juntando as peças dos carros
- Etapa 13: configuração de App.remoteme.org
- Etapa 14: configuração do RasbperryPi
- Etapa 15: Verificando as conexões
- Etapa 16: Adicionando Python Script
- Etapa 17: Verificar se o script Python foi adicionado com sucesso
- Etapa 18: Adicionando página da Web ao Control Car
- Etapa 19: Configurar o dispositivo WebPage para controlar o carro 1/2
- Etapa 20: Configurar o dispositivo WebPage para controlar o carro 2/2
- Etapa 21: Abra o Centro de Controle do Carro
- Etapa 22: Configuração da câmera 1/2
- Etapa 23: configuração da câmera 2/2
- Etapa 24: Condução 1/2
- Etapa 25: Condução 2/2
- Etapa 26: Como está funcionando
- Etapa 27: tablet, direção móvel
- Etapa 28: Abra a página no celular
- Etapa 29: Adicionar Turn Server
- Etapa 30: direção móvel
- Etapa 31: Resumo
Vídeo: Carro RasbperryPi com câmera FPV. Controle por navegador da web: 31 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
Vamos construir um carro 4x4 - a direção será semelhante a um tanque - para virar um lado das rodas vai girar com velocidade diferente do outro. No carro será colocada a câmera em um suporte especial onde podemos mudar a posição da câmera. O robô será controlado pelo navegador da web (chrome ou firefox no desktop, ou firefox no celular), no navegador, obteremos o vídeo da câmera (com latência de apenas 200ms), e do navegador poderemos controlar os movimentos do carro e posição da câmera. Para tornar a comunicação mais fácil, usei o sistema app.remoteme.org, também funciona o controle imediato desse tipo de carro, então você não precisa escrever seu próprio código, mas é claro, pode modificar scripts adicionar novas possibilidades etc.
Antes de conectar a energia ao seu PCB, verifique novamente todas as conexões
Etapa 1: algumas informações sobre App.remoteme.org
O sistema tem três partes
- aplicativo da web - quando você hospeda suas páginas da web de controle e vincula todas as comunicações
- programa rasbperryPi - programa que envia vídeo, gerencia seus scripts python
- bibliotecas onde você encontra definições de classes e funções
Remoteme.org é o sistema rápido Você conecta todos os seus dispositivos, você pode hospedar lá Suas páginas da web, ver seus dispositivos conectados. O sistema Remoteme.org foi feito para ajudá-lo a começar a fazer seus projetos, sem se preocupar com comunicações de protocolo, a ideia principal é enviar mensagens binárias entre vários dispositivos como páginas da web, RasbeprryPI, arduino e scripts.
Por outro lado, Remoteme.org dá a Você controle total de seus arquivos, Você pode facilmente modificá-lo escrevendo sua própria funcionalidade
Neste tutorial, mostrarei como fazer alguns projetos incríveis, quase sem escrever nenhum código.
No final deste tutorial, coloquei links úteis que ajudarão você a entender o sistema remoteme.org.
Etapa 2: O que é necessário:
- Framboesa PI Zero W
- Câmera dedicada
- PWM / Servo Driver Adafruit de 16 canais e 12 bits - interface I2C - PCA9685 ou seu clone
- Dois servo mecanismos compatíveis com o suporte da câmera
- Porta-câmera
- Baterias - No tutorial duas possibilidades de conexão
- Ponte H TB6612FNG, para controlar a roda de controle
- Arquivos águia PCB É fácil torná-lo método de transferência térmica DC-DC
- Módulo Conversor Redutor DC
- Mala de robô
Etapa 3: conexões
O servomecanismo de controle Raspberry pi através do módulo PWM e a velocidade do motor pela ponte H que está conectada aos pinos RasbperryPi, a entrada PWM para a ponte H é gerada pelo mesmo módulo que usei para servos (cujas partes menciono acima não são necessários conversores lógicos)
Etapa 4: PCB
Você pode baixar os arquivos de águia do PCB aqui. Os caminhos são grandes, então é fácil fazê-lo pelo método de transferência térmica
Etapa 5: saídas de PCB
- A entrada PWM para motores de acionamento deve ser conectada aos pinos 15 e 16 do módulo PWM (verifique o retângulo verde na imagem do módulo PWM)
- Entrada de energia para motores de acionamento (verifique com qual tensão máxima seus motores podem trabalhar)
- Power for RasbperryPi e módulo PWM - tem que ser exatamente
- Saídas do motor de acionamento (há duas saídas porque iremos emparelhar os motores de acionamento)
- Potência dos servomecanismos - também você deve verificar qual voltagem é boa para eles
- Jumper sua energia atual da 5ª entrada irá alimentar os motores, então não há necessidade de conectar nada à entrada 2
- O jumper, se presente, RasbperryPi será a energia da 3ª entrada - antes de colocar o jumper aqui, verifique se as conexões estão OK - Você não quer queimar seu RPi
- Vamos soldar aqui os cabos, já que não precisamos de conversores lógicos
Etapa 6: Como vai funcionar
No RasbperryPi existe um script python que usa duas bibliotecas
- importar RPi. GPIO como GPIO - para pinos 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (notação BCM) que estão conectados à ponte H
- import Adafruit_PCA9685 para o módulo PWM
Os pinos Rpi são conectados como segue 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) e modo de controle da ponte H (para frente, para trás, parada, pausa curta). A ponte H também precisa de dois sinais PWM para que possamos controlar a velocidade ou a rotação do motor. Porque no projeto já temos o controlador PWM (usado para servo) vamos usá-lo também para gerar PWM para a ponte H.
O módulo PWM usa o protocolo de comunicação I2C. Eu usei o trabalho fora da caixa Adafruit_PCA9685. biblioteca
Etapa 7: Montagem do Carro - Rodas
Começaremos conectando os motores de acionamento à caixa do carro. Os motores do lado esquerdo / lateral conectam-se juntos e ambos emparelham, conectam-se a algum cabo de alimentação que mais tarde será conectado ao PCB. Nota importante ao conectar as rodas dos motores em cada lado tem que girar na mesma direção.
Etapa 8: Opção 1/2 de alimentação (baterias AA de recarga)
Vou escrever duas possibilidades de poder do carro, a primeira é de baterias de recarga 10xAA. Na última imagem desenhei por jumpers vermelhos que devem ser colocados.
Etapa 9: Opção 2/2 de alimentação (baterias Li-Po de 7,2 V)
E a segunda opção é a bateria 7,2 LI-PO. Neste caso temos 3 tensões - 5v para Rpi e módulo, 6V para servos e diretamente de baterias 7,2 volts para motores de acionamento. Tive que usar dois módulos step down
A opção 2 com LI-PO é melhor:
- As baterias têm maior capacidade - o carro vai dirigir por mais tempo
- Tensão maior para motores de tração - o carro vai dirigir mais rápido
- Menos probabilidade de que depois que os motores de acionamento comecem a localizar, possamos ter uma grande queda de tensão e reinicialização do RPI.
Etapa 10: Solda
Coloquei no PCB alguns espaçadores para o módulo PWM. Não há nada para escrever, basta verificar as imagens de como soldar tudo junto
Etapa 11: Câmera
conectamos a câmera, aqui está escrito como centralizar os servo mecanismos antes de montar no suporte da câmera, mas o caminho mais curto é verificar manualmente a posição de rotação máxima e definir os servos na posição central. Colocamos esses servo-mecanismos centralizados no suporte da câmera na posição central (a câmera está apontando para frente, como na foto)
Etapa 12: juntando as peças dos carros
Para PCB eu fiz uma pequena mesa de plexiglass
Etapa 13: configuração de App.remoteme.org
Usei o sistema app.remoteme.org gratuito que ajuda você a fazer conexões e já tem scripts de que precisamos
Neste instrutível, vou apenas mostrar passo a passo o que deve ser feito para tornar a condução de automóveis (aqui você encontrará mais detalhes)
- Inscreva-se em https://app.remoteme.org depois de se inscrever Você será automaticamente conectado
- abra a guia Token à esquerda, clique em “novo token” forneça algum nome e clique em OK, Acabamos de criar um novo token (imagem na tela)
- neste exemplo, o valor do token é: ~ 1_ & p @ + BNnZ @ A + x8 (o seu será diferente;))
Etapa 14: configuração do RasbperryPi
no console do putty (aqui, como configurar nosso RPi, ligue a comunicação I2c da câmera)
git clone git: //github.com/remoteme/remoteme.git
cd remoto
python3.5 install.py
- O Instalator irá nos fazer algumas perguntas para todas as nossas respostas [Sim] e confirmar com [enter]
- quando a instalação solicitará o token, colamos (shift + insert) o token copiado do aplicativo e Enter
- o nome por exemplo Rpi
- deviceId 1 Enter
- após a instalação - execute o programa
./runme.sh
Etapa 15: Verificando as conexões
Vamos voltar para
Na guia de dispositivos, veremos nosso RPi conectado (o ícone de link verde significa que RPi está conectado agora)
Etapa 16: Adicionando Python Script
Agora vamos adicionar o script python, ele já está nos modelos, então não temos que programar nada.
Na guia de dispositivos, abra o menu RasbperryPi e escolha "Adicionar script externo".
Quando uma nova janela aparecer, forneça informações como na imagem acima
Não se esqueça de escolher o modelo "car4wd". Após essas etapas, remoteme.org adicionará script python ao nosso RasbperryPi e o reiniciará
Etapa 17: Verificar se o script Python foi adicionado com sucesso
Na guia de dispositivos, um novo dispositivo de script python deve ser adicionado, e seu deviceId é 2. A página da Web de identificação deste dispositivo enviará mensagens para o carro de controle
Etapa 18: Adicionando página da Web ao Control Car
na guia de dispositivos, clique em "Novo" e depois em "Página da Web". Acabamos de adicionar outro dispositivo - página da web que usaremos para controlar nosso carro. E porque usamos o template "car4wdDesktop" na página da web já estão arquivos quase prontos para serem usados
Etapa 19: Configurar o dispositivo WebPage para controlar o carro 1/2
Expanda a página da web na guia do dispositivo e clique em index.html e em Abrir
Etapa 20: Configurar o dispositivo WebPage para controlar o carro 2/2
A janela aparece, então precisamos fornecer deviceId de nosso script python em nosso caso deviceId é 2. Vamos mudar o lugar mostrado na imagem
Etapa 21: Abra o Centro de Controle do Carro
Agora é a hora de abrir nossa página e ver como está funcionando. Na guia do dispositivo, clique em index.html e em "Abrir em uma nova guia" Para obter a visualização do vídeo Você deve usar o navegador Chrome ou Firefox. Outros navegadores não suportam totalmente o webRTC
Etapa 22: Configuração da câmera 1/2
Quando movemos o mouse na área de vídeo, a câmera deve mudar de posição e deve funcionar exatamente como nos jogos FPS. Provavelmente não se moverá corretamente
Etapa 23: configuração da câmera 2/2
Abra o script.js (a guia de dispositivos expande a página da web, clique em script.js e abra) e encontre o lugar que mostrei na tela
no meu caso, a posição central é 560 e 430 e a amplitude de movimentos é para ambos os eixos 200
Você tem que experimentar esses números para obter a posição da câmera no centro e movimentos suaves, se você usou este tutorial apenas copie os valores dados colados
Etapa 24: Condução 1/2
Se você pressionou a seta para cima no teclado, os medidores devem mudar de posição e o carro deve dirigir. Se você pressionar a seta “para cima” e o carro estiver girando, você terá que adicionar / remover menos em lugares na tela.
Após esta operação, após acertar o carro com seta para cima, o carro com seta para cima deve dirigir para frente e o carro com seta para baixo deve dirigir para trás.
Etapa 25: Condução 2/2
Agora virando - aperte a seta para a esquerda se o carro estiver virando para a direita. Você tem que virar os cabos (verifique a imagem acima)
Se você soldar estes cabos, você pode alterá-lo em script.js apenas altere a ordem de envio da velocidade dos motores, antes:
pos = putByte (ret, pos, carController.getMotorMode (carController.getRightSideSpeed ())); pos = putByte (ret, pos, Math.abs (carController.getRightSideSpeed () * 255));
pos = putByte (ret, pos, carController.getMotorMode (-carController.getLeftSideSpeed ()));
pos = putByte (ret, pos, Math.abs (carController.getLeftSideSpeed () * 255));
depois de:
pos = putByte (ret, pos, carController.getMotorMode (-carController.getLeftSideSpeed ()));
pos = putByte (ret, pos, Math.abs (carController.getLeftSideSpeed () * 255));
pos = putByte (ret, pos, carController.getMotorMode (carController.getRightSideSpeed ()));
pos = putByte (ret, pos, Math.abs (carController.getRightSideSpeed () * 255));
e agora você tem que brincar com os pontos negativos como um passo antes para fazê-lo funcionar corretamente;). Como você provavelmente notou depois de acertar a seta para cima, o carro não está dirigindo a toda velocidade para fazer o carro se mover mais rápido, apenas solte rapidamente a seta para cima quando estiver na posição máxima e pressione e segure novamente
Etapa 26: Como está funcionando
A página da web está enviando mensagens de mensagem de 9 bytes para o script Python no formato:
- 1 byte um byte valor inteiro 1
- 2 bytes inteiros X posição da câmera
- 2 bytes inteiros posição da câmera Y
- Modo motor esquerdo inteiro de 1 byte (3 = para trás, 1 = para frente, 2 = parar)
- Velocidade do motor esquerdo inteiro de 1 byte
- Modo motor direito inteiro de 1 byte (3 = para trás, 1 = para frente, 2 = parar)
- Velocidade do motor direito inteiro de 1 byte
o envio da mensagem é feito no arquivo script.js na função "sendNow ()"
em RasbperryPi python.py está recebendo esta mensagem na função "onUserMessage"
Você pode dar uma olhada e brincar um pouco para saber o que está acontecendo.
descrição das funções de classe aqui
Etapa 27: tablet, direção móvel
Adicionamos uma nova página da web exatamente como fizemos antes, mas agora escolhemos o modelo "car4wdMobile"
Em seguida, configuramos tudo em script.js como fizemos para a página da web de controle da área de trabalho. O formato da mensagem é exatamente o mesmo, então não precisamos alterar o script python.py.
Etapa 28: Abra a página no celular
Em vez de fazer login na sua conta do celular, basta digitalizar o URL do QR anymous.
detalhes do QR aqui
Se o seu controle móvel funciona quando RPi e o celular estão no mesmo wi-fi, mas não funciona se você usa internet móvel, então você tem que adicionar o servidor de turno, como fazer isso eu escrevi aqui
Etapa 29: Adicionar Turn Server
Às vezes (quando você está atrás de NAT ou algumas configurações de firewall), você não pode conectar seu robô de outra rede, então Seu robô está conectado. Não é um grande problema e então você tem que adicionar o servidor turn.
Eu testei o servidor da empresa XIRSYS (é gratuito para o desenvolvedor) e mostrarei como configurar o servidor de turno usando o sistema XIRSYS
registro:
global.xirsys.net/dashboard/signup
em seguida, clique em "mais" para adicionar o aplicativo
à direita, em "credenciais de curva estática", você tem todos os dados de que precisa. Copie-o para o arquivo webrtc_streamer.conf para fazer isso vá para
expandir os dispositivos RaspberryPi
clique no arquivo webrtc_streamer.conf
clique para abrir
e adicionar informações
turn_server = turn_username =
turn_credential =
após terminar a edição Você deve ter algo parecido com a tela.
em seguida, clique em Salvar e reiniciar seu Rpi, clicando no menu no dispositivo RasbperryPi e escolha reiniciar
Depois que o programa RPi for reiniciado, você poderá ver a visualização do vídeo em seu telefone celular, mesmo se estiver usando a Internet móvel.
Etapa 30: direção móvel
no círculo 1 colocamos o polegar esquerdo, no 2 direito - não precisa estar exatamente nesses pontos - a página da web definirá a posição zero logo após você tocar a tela e, ao mover seus polegares (direção esquerda, posição direita da câmera), você pode controlar seu carro
Etapa 31: Resumo
Espero que você tenha gostado deste tutorial, como eu escrevi antes neste tutorial, há mais detalhes sobre como ele funciona nos bastidores.
alguns links:
remoteme.org - página inicial do remoteme.org lá Você encontra documentações e tutoriais
FB fanpage - mais novas informações da fanpage do Facebook sobre remoteme.org
Youtube - alguns vídeos do projeto, tutoriais
Saúde, Maciek
Recomendado:
Controle remoto baseado em navegador Arduino (linux): 9 etapas (com imagens)
Arduino Browser Based Remote Control (linux): Temos filhos. Gosto muito deles, mas eles ficam escondendo o controle remoto do satélite e da TV quando colocam os canais infantis. Depois que isso aconteceu diariamente por vários anos, e depois que minha querida esposa me permitiu ter um
Transformando qualquer carro R / C em um carro R / C de controle de aplicativo Bluetooth: 9 etapas
Transformando qualquer carro R / C em um carro R / C de controle de aplicativo Bluetooth: Este projeto mostra as etapas para transformar um carro de controle remoto comum em um carro de controle Bluetooth (BLE) com placa de robótica Wombatics SAM01, Blynk App e MIT App Inventor. muitos carros RC de baixo custo com muitos recursos, como faróis de LED e
Robô Roomba controlado por navegador com o Raspberry Pi Model 3 A +: 6 etapas (com imagens)
Robô Roomba controlado por navegador com o Raspberry Pi Model 3 A +: OverviewThis Instructable incidirá sobre como dar a um Roomba morto um novo cérebro (Raspberry Pi), olhos (webcam) e uma maneira de controlar tudo a partir de um navegador da web. Existem muitos hacks do Roomba que permitem o controle por meio da interface serial. Eu não tenho
ESP8266-NODEMCU $ 3 Módulo WiFi nº 2 - Controle de pinos sem fio por meio da PÁGINA DA WEB: 9 etapas (com imagens)
ESP8266-NODEMCU Módulo 2 WiFi de $ 3 - Controle de pinos sem fio por meio da página da web: Um novo mundo desses micro-computadores chegou e essa coisa é o ESP8266 NODEMCU. Esta é a primeira parte que mostra como você pode instalar o ambiente do esp8266 em seu IDE arduino por meio do vídeo de introdução e como as partes em
Controlando o carro RC por meio de uma interface da Web: 6 etapas (com imagens)
Controlando o carro RC por meio de uma interface da web: Olá amigos, Neste instrutível, vou ensiná-los a fazer um carro RC por meio de uma interface da web. Vamos controlá-lo sem fio por meio de um servidor nosso. Usando o método que mostrarei a você, não precisaremos usar um receptor RC. Para hospedar a web