O chassi, ainda sem nome, está sendo projetado pela equipe da EE Elza Facca M. Bonilha. É um chassi de esteiras, feitas de corrente de bicicleta (fonte: http://lusorobotica.com/index.php?topic=2638.0), que usam rodas retiradas de roletes de impressora (fonte: http://lusorobotica.com/index.php/topic,1808.0.html). Os motores são motores de passo unipolares retirados de impressoras velhas controlados pelo CI ULN 2803, que pode controlar até 2 motores de passo ao mesmo tempo. Neste motores já estavam instaladas as roscas sem fim que foram conectadas a engrenagens retiradas de HP600. A base do chassi foi feito em acrílico, resto de box de banheiro, doado por uma empresa de Jundiaí.
A garra foi feita com base de prancheta de madeira e um motor de passo bipolar, também retirado de impressoras velhas (epson), que tem na sua base um servo motor de posição, reciclado, utilizado em antenas parabólicas.
Este chassi é multifunção: a garra se encaixa e ele se transforma num chassi de "Resgate de Alto Risco", retire a garra e ele pode ser usado para Sumô Categoria Large, pois ele tem 25x25 cm, Cabo de Guerra, Seguidor de Linha e outras funções.
Para leitura de linhas estamos estudando que sensores utilizar mas, para objetos e distãncia, utilizaremos o HC SR04.
Segue fotos abaixo:
O projeto Orion Montado
Novo projeto - Detalhes de montagem
Adaptação das rodas para esteira, acertando o ângulo para coletar objetos:
Em nossa pesquisa de uso de sensores de ultrassom não encontramos nenhuma referência de códigos para Arduíno que apresentasse a leitura de 2 sensores de ultrassom. Começamos a pesquisar um código fonte de exemplo ( o PING) e chegamos ao presente resultado, que apresenta um nível de resposta satisfatório:
Abaixo as fotos da montagem em Breadboard:
O código fonte utilizado:
/* Código adaptado do sensor PING */
// configura os pinos de sáida
const int emissor = 7;
const int receptor = 8;
long microsecondsToInches(long microseconds)
{
// According to Parallax's datasheet for the PING))), there are
// 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
// second). This gives the distance travelled by the ping, outbound
// and return, so we divide by 2 to get the distance of the obstacle.
// See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}
Abaixo o vídeo de resposta desta programação:
Nosso desafio foi adaptar este código a leitura de 2 sensores de ultrassom ao mesmo tempo. Usamos led´s diferentes pois o vermelho era de alto brilho e atrapalhava a visão. O código fonte segue abaixo:
/* Programa para uso de 2 Sensores de Ultrassom medindo distância em cm para robôs de combate - Projeto TITAN
Código adaptado do sensor PING
Grupo Pequenos Cientistas*/
// constante dos pinos
const int emissor = 7;
const int receptor = 8;
const int emissor2= 9;
const int receptor2= 10;
void setup() {
// Configuração de pinos como entrada e saída
pinMode(emissor, OUTPUT);
pinMode(receptor, INPUT);
pinMode(emissor2, OUTPUT);
pinMode(receptor2, INPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop()
{
// variáveis utilizadas para conversão do ping em centímetros
long duration, inches, cm;
long duration2,inches2, cm2;
// sensor 1
//desliga o emissor
digitalWrite(emissor, LOW);
delayMicroseconds(2);
// 2 microssegundos depois enivia um sinal que dura 5 microssegundos
digitalWrite(emissor, HIGH);
delayMicroseconds(5);
//desliga o emissor
digitalWrite(emissor, LOW);
// o receptor recebe o eco e envia um sinal digital HIGH - alto
duration = pulseIn(receptor, HIGH);
//converte os valor do sinal de microssegundos para centímetros, retornando a variável cm
cm = microsecondsToCentimeters(duration);
//condição de leitura da variável - comandos para motores
if (cm > 15){
digitalWrite (13, HIGH); // se a distância for maior que 15 cm acende o led
}
else{
digitalWrite(13, LOW); // se não, desliga o led
}
// Sensor 2
//desliga o emissor
digitalWrite(emissor2, LOW);
delayMicroseconds(2);
// 2 microssegundos depois enivia um sinal que dura 5 microssegundos
digitalWrite(emissor2, HIGH);
delayMicroseconds(5);
//desliga o emissor
digitalWrite(emissor2, LOW);
// o receptor recebe o eco e envia um sinal digital HIGH - alto
duration2 = pulseIn(receptor2, HIGH);
// converte a distância e retorna a variável cm
cm2= microsecondsToCentimeters(duration2);
//condição de leitura da variável - comandos para motores
if (cm2 > 15){
digitalWrite (12, HIGH);// se a distância for maior que 15 cm acende o led
}
else{
digitalWrite(12, LOW);// se não, desliga o led
}
}
// Variável de conversão de microssegundos para centímetros
long microsecondsToCentimeters(long microseconds)
{
// A velocidade do som é 340 m/s ou 29 microssegundos por centímetro. O ping vai e volta e, sua distância será metade do tempo de ida e volta.
return microseconds / 29 / 2;
}
Neste programa iniciamos fazendo os comenados fazerem a leitura de um sensor junto com o outro. O resultado foi desastroso lia o sensor 1 e não o 2. Depois separamos os sensores e inserimos, após a leitura dos dois, a condição de reação e resolvemos o problema.
O vídeo de 2 sensores fazendo a leitura de distância:
Aplicação
Instalação dos sensores nos robôs (parabéns pela ideia de usar os soquetes de led de computadores Paulo). No robô, instalamos 4 sensores e o resultado foi satisfatório:
Vídeo do robô em funcionamento utilizando os sensores de ultrassom para desviar dos obstáculos.
Nesta sexta-feira participamos, a convite do Prof. Idemar (Blog do Dema) do início de um projeto na Escola Adventista: eles planejam, no Ano Internacional da Energia Sustentável, elaborar uma Mostra de Ciências, sobre experimentos que utilizem energia sustentável, no caso, energia solar. A primeira etapa do trabalho foi cumprida: uma palestra de sensibilização dos alunos, apresentando algumas soluções que utilizamos. Neste dia participaram a aluna Elaine, Any Taissa e o aluno Jonathan (em breve as fotos).
Desta palestra surgiram as primeiras ideias de trabalho e a data de uma oficina que realizaremos com os alunos da escola: 11/10 no horário da tarde. Nesta oficina executaremos os primeiros projetos dos alunos.
Após a oficina, em 28/10 será realizada a Mostra.
Conforme combinamos segue uma lista de links interessantes para os alunos da Escola Adventista:
Já terminei a cotação da viagem para Fortaleza/CE para a Mostra Nacional de Robótica. Os valores abaixo referem-se ao custo individual e ao custo de uma equipe. Considero inviável uma equipe menor do que 5 pessoas dado que, são 5 dias de apresentação, o que tornaria estafante para poucas pessoas. Também considero inviável a participação sem patrocínio, dado os valores. Ir de ônibus está fora de questão, até por motivos de segurança. Não inclui o poster, que deve ficar entre R$ 120,00 para fazer. Mesmo assim o faremos para poder participar no dia 18/10 da Semana de Educação, Ciência e Tecnologia.
Segue abaixo:
Planejamento – Mostra Nacional de Robótica 2012 –
Fortaleza CE
Hospedagem:
Diárias a partir de R$ 130/pessoa (café da manhã, almoço
e jantar)
Segue a relação de convites oficiais e eventos que participaremos no período de 2012 a 2013. Pode ser que a relação aumente, dado a feiras e outros eventos que não temos condições ainda de participar (por falta de verba).
Evento
Local
Data Prevista
Oficina – Produção de Robôs Solares
Escola Adventista – Jundiaí / SP
11/10 às 13:00 hs
VI Semana de Educação Ciência e Tecnologia
Instituto Federal de Educação / SP
18/10 às 8:00 hs
Mostra Nacional de Robótica 2012
UNIFOR – Universidade de Fortaleza/CE
17 a 21/10/2012
Apresentação na Escola Adventista – Produção de Energia Sustentável