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
Tags:
Boa noite Armando.
Parabéns pelo projeto.
Acho que vai gostar desse projeto:
http://labdegaragem.com/profiles/blogs/tutorial-controlando-um-rob-...
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
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por