Rover: mudanças entre as edições

De Caninos Loucos
Ir para navegação Ir para pesquisar
Thalyson (discussão | contribs)
Sem resumo de edição
Sem resumo de edição
 
(7 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
[[Arquivo:tanque-labrador.jpeg|thumb|400px|Tanque de controle remoto]]
[[Arquivo:tanque-labrador.jpeg|thumb|400px|Tanque de controle remoto]]
Aqui será resumido o processo de desenvolvimento do tanque controlado remotamente usando a Labrador. De forma a simplificar o entendimento o processo completo será dividido nas seguintes partes:


- Montagem física - Apresenta uma breve explicação dos elementos utilizados na montagem do tanque e como eles foram ligados.
= Introdução =


- Controle GPIO - Controlando o tanque pelo teclado - Apresenta um exemplo simples de controle via input de teclado.
O projeto Rover consiste em uma prova de conceito para a viabilidade de um '''remote lab'''. De forma resumida, um '''remote lab''' consiste em conduzir e operar experimentos e equipamentos em um laboratório de maneira remota. Nesse sentido, foi desenvolvido o projeto Rover, que utiliza a placa labrador e pode ser controlado remotamente através de uma interface web.


- Configurando access point - Mostra como configurar um ponto de acesso para que o tanque seja controlado via Wifi sem depender de uma conexão externa
= Preparando o ambiente de desenvolvimento =


= Montagem Física =
== Tecnologias ==


A montagem do tanque é feita de maneira muito simples. O desenvolvedor possui liberdade para alterar o projeto de acordo com suas preferências.
*Python 3.8.10;
*Labrador 32 bits;
*Debian 10.


Para montar o Tanque Foram usadas as seguintes partes componentes:
== Componentes ==


- Chassi OSEPP Tank Kit
*Chassi OSEPP Tank Kit;
- Labrador
*Labrador;
- Ponte H L298
*Ponte H L298;
- Pilhas (6), cabos e conectores
*Bateria 9v, cabos e conectores.


== Chassi ==
== Bibliotecas ==
O Chassi utilizado já vem pronto para uso com motores e suporte de pilha instalados facilitando a montagem do Tanque. Outra vantagem do chassi utilizado é que ele possui inúmeros furos nos quais é possível fixar as placas de controle adicionais por meio de espaçadores.


== Labrador ==
*fastapi 0.103.0;
A Labrador é basicamente a central de comando do Tanque. Ela foi fixada utilizando espaçadores M3 presos ao chassi. Foram feitas as seguintes conexões à placa:
*uvicorn 0.22.0;
*python-socketio 5.9.0;
*gunicorn 21.2.0.


1. Alimentação: Ligada diretamente à saída do conjunto de pilhas
Recomenda-se o uso de um arquivo '''requirements.txt''' para as bibliotecas. Vale ressaltar que as aplicações desse projeto adotam o uso do arquivo '''requirements.txt'''.
2. Sinais de controle: É possível escolher pinos arbitrários de GPIO que são ligados às entradas de controle da ponte H
3. Sinal 5V: O pino de 5 volts é ligado à ponte H na porta de referência.


== Ponte H ==
= Código fonte =
A ponte H possui conexão a todos os elementos do sistema:


- Motores: Os motores são conectados um de cada lado da ponte H
Há duas bases de código para o Rover. Uma delas é uma aplicação web, que roda em um servidor (computador) e atua como uma interface entre o usuário e o Rover. A aplicação apresenta uma página web onde os usuários utilizam o teclado para emitir comandos de movimento para o Rover. Vale ressaltar que essa aplicação não movimenta o carrinho diretamente; ela apenas captura e emite eventos. A movimentação do carrinho ocorre através do interpretador de movimentos, que será apresentado a seguir.
- Alimentação
Trabalhando em conjunto com a aplicação web, há o interpretador de movimentos (script), que efetua o movimento do carrinho. O interpretador é executado no Rover e mantém uma conexão ativa e em tempo real com a aplicação web. Os comandos de movimento emitidos na interface da aplicação são processados por esse script, que então envia sinais de high ou low para movimentar ou parar o carrinho.
- Referência de tensão: Obtida da placa de controle (Labrador)
- Sinais de controle: responsáveis por controlar o estado do motor e, eventualmente, sua velocidade de rotação


== Alimentação ==
[https://github.com/inova-steam-lab/rover-api-socketio/tree/main Acesse o código fonte da aplicação web aqui] e [https://github.com/inova-steam-lab/rover-remote-control acesse o interpretador dos eventos aqui].
O chassi utilizado acompanha um suporte para 6 pilhas AA que foi utilizado, entretanto pode ser interessante substituí-las por baterias recarregáveis.


= Controle GPIO =
Em cada repositório há instruções de como rodar as aplicações, portanto basta seguir o passo a passo para executar os códigos.
Como citado na seção sobre a montagem foi utilizada uma ponte H L298 para controlar a rotação do motor. Alimentando as portas de controle da ponte H com a combinação correta fará com que o motor rotacione em determinada direção, freie ou fique em ponto morto. O L298 aind possui portas que controlam se o motor está habilitado ou não, essas portas podem ser utilizadas para aumentar ou diminuir a velocidade de rotação das esteiras por meio de um PWM.


== Controle Digital Simples ==
= Referências =
Um controle digital para o carrinho, ou seja, contendo apenas comandos para ir para frente/trás e rodar no lugar para a direita/esquerda. Nessa primeira abordagem não haverá controle de velocidade e o tanque terá de fazer paradas para mudar de direção.


== Programação GPIO ==
*https://www.reddit.com/r/FastAPI/comments/neds9c/integrate_socketio_with_fastapi/;
Informações relevantes para a programação GPIO podem ser encontradas na página [[Programação GPIO]]. Essas informações serão utilizadas para criar um Software de controle simples.
*https://python-socketio.readthedocs.io/en/latest/intro.html;
 
*https://fastapi.tiangolo.com/
== Programa em C ==
*https://stackoverflow.com/questions/73335010/how-to-set-fastapi-websocket-properly-with-nginx
 
*https://dylancastillo.co/fastapi-nginx-gunicorn/#tech-stack
=== Configurando a GPIO ===
*https://github.com/caninos-loucos
A primeira grande tarefa do algoritmo de controle é configurar o GPIO indicando as portas que serão usadas e se serão usadas como input ou como output.
 
=== Em construção ===

Edição atual tal como às 19h41min de 25 de junho de 2024

Tanque de controle remoto

Introdução

O projeto Rover consiste em uma prova de conceito para a viabilidade de um remote lab. De forma resumida, um remote lab consiste em conduzir e operar experimentos e equipamentos em um laboratório de maneira remota. Nesse sentido, foi desenvolvido o projeto Rover, que utiliza a placa labrador e pode ser controlado remotamente através de uma interface web.

Preparando o ambiente de desenvolvimento

Tecnologias

  • Python 3.8.10;
  • Labrador 32 bits;
  • Debian 10.

Componentes

  • Chassi OSEPP Tank Kit;
  • Labrador;
  • Ponte H L298;
  • Bateria 9v, cabos e conectores.

Bibliotecas

  • fastapi 0.103.0;
  • uvicorn 0.22.0;
  • python-socketio 5.9.0;
  • gunicorn 21.2.0.

Recomenda-se o uso de um arquivo requirements.txt para as bibliotecas. Vale ressaltar que as aplicações desse projeto adotam o uso do arquivo requirements.txt.

Código fonte

Há duas bases de código para o Rover. Uma delas é uma aplicação web, que roda em um servidor (computador) e atua como uma interface entre o usuário e o Rover. A aplicação apresenta uma página web onde os usuários utilizam o teclado para emitir comandos de movimento para o Rover. Vale ressaltar que essa aplicação não movimenta o carrinho diretamente; ela apenas captura e emite eventos. A movimentação do carrinho ocorre através do interpretador de movimentos, que será apresentado a seguir. Trabalhando em conjunto com a aplicação web, há o interpretador de movimentos (script), que efetua o movimento do carrinho. O interpretador é executado no Rover e mantém uma conexão ativa e em tempo real com a aplicação web. Os comandos de movimento emitidos na interface da aplicação são processados por esse script, que então envia sinais de high ou low para movimentar ou parar o carrinho.

Acesse o código fonte da aplicação web aqui e acesse o interpretador dos eventos aqui.

Em cada repositório há instruções de como rodar as aplicações, portanto basta seguir o passo a passo para executar os códigos.

Referências