Tópicos editado

Olá.

Gostaria de contribuir com a comunidade, apresentando algumas partes de um projeto que venho desenvolvendo há alguns anos.

Sou curioso em robótica e projetos eletrônicos de IOT, sendo que desenvolvo meus projetos só para conhecer a tecnologia de software e hardware por trás das coisas.

Há cerca de 4 anos pensei em desenvolver um robô que faz um mapeamento de ambiente, podendo ser um labirinto, achando uma saída ou ponto pré-determinado.

O robô foi construído na plataforma Tamiya, chassi para o veículo com esteira e caixa de engrenagem com motor duplo. A placa foi utilizada no Garagino VER 1 Básico, com um Dual Motor Garagino, ambos descontinuados. 

Um dos módulos é o sensor de obstáculos. Utilizei o sensor ultrassônico ultra-sônico HC-SR04 movimentado por um Micro servo motor SG90.

Para fazer uma comunicação do robô com o celular, use o Módulo Bluetooth RS232 - HC-06.

Desenvolvi um Sketch Arduino para movimentar o radar e ler o sensor. Esse Sketch comunica com um App, desenvolvido para o App Inventor.

1- Montagem Do Hardware

Material:

1 - Protoboard;

1 - Arduino Uno ou genérico;

1 - Sensor ultra-sônico HC-SR04;

2 - Resistores de 10kΩ;

1 - Micro servo motor SG90;

1 - Módulo Bluetooth RS232 - HC06.

As portas TRIG e ECHO do SR04 vão conectadas os pinos A3 e A2 do Arduino, respectivamente.

As portas TX e RX do HC06 se conectam nos pinos D3 e D2 do Arduino, respectivamente.

Entre as portas D3 e RX existem 2 Resistores de 10kΩ ligados entre si e no pino GND do Arduino.

O SG90, se liga ao pino D9 do Arduino.

As portas GND e VCC são conectadas aos seus respectivos pontos.

2- Código Arduino

Agora vamos programar o Arduino de acordo com o fluxo abaixo.

Também segue uma cópia do arquivo ".ino" em anexo.

1º - Inclusão das bibliotecas;

2º - Definições dos pinos de acordo com a descrição da etapa anterior.

3º - Declaração de variáveis para enviar dados via bluetooth.

4º - Declaração de variáveis para o sensor de distancia.

5º - Declaração de variáveis do calculo de distância.

6º - Setup, definindo a saída para o Bluetooth e definindo o pino do servo motor.

7º - No Loop, colocar o servo para frente; fazer a leitura do bluetooth; receber um comando definido no App e ativa o sensor; parar o sensor.

8º - Criar um Void() para a leitura do sensor.

Esse Void() faz a varredura do sensor, dos ângulos 10º ao 170º, colhendo as distancias; estabelece 45 cm como a maior distancia a ser lida; organiza as variáveis diferentes para enviar para o App; gera as saídas formatadas, interpolando variáveis a uma string de formatação; especifica a utilização de buffer para armazenamento; faz a leitura a cada 50 milissegundos, mesma do temporizador do App.

9º - Criar um Void() para parar o sensor.

3 - Código App Inventor

Segue o arquivo ".aia" do App Inventor para análise, alterações e utilização.

No App Inventor vamos primeiro fazer o designer da tela.

Observações importantes:

- Na paleta Desenho e Animação, vamos utilizar a Pintura, com as seguintes propriedades: Cor De Fundo, preto; Imagem De Fundo, nenhum; Tamanho Da Fonte, 14.0; Altura, 150 pixels; Largura, 300 pixels; Largura Da Linha, 2.0; Cor De Pintura, Verde; Alinhamento Do Texto, centro : 1.

- Na paleta Sensores, vamos utilizar o Temporizador, com as propriedades de Disparos Contínuos, marcado; Ativado, marcado e Intervalo, 50 (que significa 50 milissegundos, em acordo com o Sketch do Arduino)

Nos blocos, temos 6 blocos com o controle "Quando" e 4 blocos com declaração de variáveis. 1 bloco trata da tela inicial; 2 blocos controlam a lista de pareados do bluetooth; 1 bloco cuida do temporizador; 1 bloco do botão RADAR e 1 bloco do botão PARAR O RADAR.

A maior dificuldade encontrada foi no desenho das linhas do radar, que deveriam seguir o sensor e apresentar as distâncias.

O robô ainda está em desenvolvimento.

Publicarei demais módulos a medida que forem sendo desenvolvidos.

Quem tiver interesse em participar nesse projeto estou à disposição para sugestões e compartilhamento de informações no desenvolvimento.

Abraços fraternos

Exibições: 1133

Anexos

Responder esta

Respostas a este tópico

Boa noite Armando. 

Parabéns pelo projeto. 

Acho que vai gostar desse projeto:

http://labdegaragem.com/profiles/blogs/tutorial-controlando-um-rob-...

Olá José Gustavo.

Obrigado e gostei bastante da dica. Vai ser de grande utilidade para um dos módulos do meu projeto, onde pretendo que o robô se conecte com um computador central e transmita informações pela Internet.
Valeu e abraços fraternos.

Amigo, tentei usar os codigos que forneceu e etc, mas o radar sempre para no meio, e ao terminar a primeira rodada, o sensor reseta pra posição inicial, como se eu tivesse mandado parar, poderia me ajudar com esses problemas?
Estou tentando fazer apenas a parte do radar

Olá Guilherme.

Se entendi seu questionamento, no código Arduino existe um comando para o servo girar o sensor até 170 Graus. Será que lá não está o valor até 80 Graus?

Se você puder passar o código como você implementou, posso verificar se encontro o problema.

Na vdd o código que usei foi o seu mesmo, sem alterações.

Fiz só algumas na interface do Mit msm

Ok.

Verifica os números da figura abaixo, no arquivo do MIT.

Esse bloco faz a leitura ao mesmo tempo do sensor.

Ta tudo 180

Sera que é porque to usando a placa logica arduino?

Vc usou uma diferente né?

estou usando o modulo HC 05, isso interfere na trasnferencia de dados?

Usei o Garagino.

Parece que o problema é no código do MIT.

Também usei o HC 05.

Eu já desmontei o robô. Vou monta-lo novamente e refazer o sistema. Assim vou verificar  os dois algoritmos linha por linha e tentar solucionar o problema.

Darei notícias.

Obrigado.

Agradeço demais cara

Olá Guilherme.

Rodei novamente o projeto e funcionou perfeitamente.

O erro de execução que aparece no App Inventor é porque houve um erro na leitura dos dados enviados pelo Bluetooth, por parte do aplicativo.

Não consegui corrigir, mas fica imperceptível na tela do celular.

São as rotinas abaixo:

No arquivo .aia

No arquivo .ino.

Percebi que o botão "Parar Radar" não estava funcionando.

Também corrigi.

O Bluetooth que usei é o HC-06.

Não entendo porque o seu projeto está dando o erro que falou.

Sugiro que você confira também o código arduino quanto a posição do sensor. Especifiquei de 10 a 170.

Seguem os arquivos corrigidos.

Abraços fraternos.

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço