Apostila Robotica Educacional 4
Apostila Robotica Educacional 4
Apostila Robotica Educacional 4
APRESENTAÇÃO
Olá cursista!
Bem-vindo ao Curso Robótica Educacional!
A SECTI - Secretaria da Ciência, Tecnologia, Inovação e Educação
Profissional por meio do Projeto Qualificar ES oferta cursos de
qualificação profissional, possibilitando ao cidadão que procura
aperfeiçoar seu conhecimento, com vistas na melhor qualidade
de vida.
O curso é destinado aos profissionais que trabalham como
docentes e aficcionados por automação e robótica, e auxiliará
como ferramenta fundamental para iniciantes neste universo
dos autômatos.
O mercado de trabalho está em expansão, há oportunidades de
trabalho em empresas de diversos ramos de atuação, desde o
comércio, prestação de serviços e instituições públicas.
Nesse curso você aprenderá técnicas de arquivamento, entre
outros.
Ao final deste curso você estará apto para:
● Atuar profissionalmente no desenvolvimento de projetos
robóticos;
● Implementar projetos de forma otimizada.
2
PROJETOS
PROJETO 1: PROJETO DE SENSOR DE DETECÇÃO DE LUZ
COM SOM
Este é um projeto que mostra a variação da intensidade da luz
utilizando uma fotocélula com Arduino. De acordo com a
variação da intensidade da luz, os LEDs acendem ou apagam e se
não houver luz nenhuma, um buzzer apita.
Lista de Materiais
3
A fotocélula é um resistor que varia de acordo com a intensidade
da luz. Quanto maior a luminosidade, maior a resistência da
fotocélula. Na figura acima, mostra um divisor de tensão com a
fotocélula e um resistor de 10kOhm. Essa divisão é necessária
para que a porta analógica A0 do Arduino possa detectar a sua
variação. Assim se caso haja muita luminosidade, apenas 1 Led
acenderá, se houver pouca luminosidade, alguns Leds acenderão
e se houver nenhuma luminosidade, todos os leds acenderão e o
buzzer tocará.
Sketch
#include <Tone.h>
int LDRpin=A0;
int LDRval=0;
Tone player;
int note[]={NOTE_A3,NOTE_G4};
void setup() //Setup the output pins and play the buzzer
{
pinMode(2,OUTPUT);
4
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
player.begin(10);
Serial.begin(9600);
}
void loop()
{
LDRval=analogRead(LDRpin);
if(Serial.available()>0)
{
Serial.println(LDRval);
}
delay(100);
if(LDRval>850)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>800 && LDRval<850)
{
digitalWrite(2,HIGH);
5
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>750 && LDRval<800)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>700 && LDRval<750)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
6
}
if(LDRval>650 && LDRval<700)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>600 && LDRval<650)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval<600)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
7
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
player.play(note[1]);
}
8
PROJETO 2: COMO UTILIZAR TERMISTOR NTC COM
ARDUINO
Neste tutorial vamos utilizar o Termistor NTC de 10K junto com o
Arduino e a biblioteca Thermistor para obtermos os valores em
graus Celsius. Esta biblioteca utiliza a equação de Steinhart-Hart
para converter o valor da resistência em valores de temperatura
e em uma segunda montagem, mostramos como fazer o mesmo
só que agora utilizando o método do Fator Beta (exemplo
baseado em um exemplo da Adafruit).
Lista de Materiais
1 x Arduino Uno Rev 3
1 x Termistor NTC de 10KΩ
1 x Resistor de 10KΩ
1 x Protoboard Mini
Alguns jumpers
O Termistor
9
Termistor PTC (Positive Temperature Coefficient): Este tipo de
Termistor tem o coeficiente de temperatura positivo, ou seja, a
resistência aumenta com o aumento da temperatura.
Termistor NTC (Negative Temperature Coefficient): Já este é o
inverso do anterior e seu coeficiente de temperatura é negativo.
Com isto sua resistência diminui com o aumento da temperatura.
Determinação da temperatura
Para determinar a temperatura do existe dois métodos um
utilizando a interpolação pela fórmula de Steinhart-Hart ou ainda
podemos utilizar a equação do fator Beta.
Abaixo você vê dois métodos para aquisição da temperatura:
Método Steinhart-Hart
Equação Steinhart-Hart
Sketch
#include <Thermistor.h>
Thermistor temp(0);
void setup()
{
Serial.begin(9600);
}
void loop()
{
int temperature = temp.getTemp();
Serial.print("Temperatura no Sensor eh: ");
Serial.print(temperature);
Serial.println("*C");
delay(1000);
}
11
Método do Fator Beta
12
#define NUMAMOSTRAS 5
// Beta do nosso Termistor
#define BCOEFFICIENT 3977
// valor do resistor em série
#define SERIESRESISTOR 10000
int amostra[NUMAMOSTRAS];
int i;
void setup(void)
{
Serial.begin(9600);
analogReference(EXTERNAL);
}
void loop(void)
{
float media;
13
temperatura = media / TERMISTORNOMINAL; // (R/Ro)
temperatura = log(temperatura); // ln(R/Ro)
temperatura /= BCOEFFICIENT; // 1/B * ln(R/Ro)
temperatura += 1.0 / (TEMPERATURENOMINAL + 273.15);
temperatura = 1.0 / temperatura; // Inverte o valor
temperatura -= 273.15; // Converte para Celsius
Serial.print("Temperatura no Sensor eh: ");
Serial.print(temperatura);
Serial.println(" *C");
delay(1000);
}
}
14
PROJETO 3: COMO USAR O ARDUINO BLUETOOTH HC-
05 EM MODO MESTRE
15
O processo é um pouco extenso e recomendamos não pular
nenhum passo, pois cada etapa depende da correta execução da
etapa anterior.
Lista de Materiais
2 Arduino Uno (podem ser utilizadas outras placas)
1 módulo Arduino Bluetooth HC-05
1 módulo Arduino Bluetooth HC-06
4 resistores para montagem do divisor de tensão
1 led de qualquer cor
1 resistor limitador de corrente para o led
16
Configurando Arduino Bluetooth HC-05 em modo
mestre:
void setup()
17
{
//Inicia a serial
Serial.begin(115200);
Serial.println("Digite os comandos AT :");
//Inicia a serial configurada nas portas 10 e 11
mySerial.begin(38400);
}
void loop()
{
// Read device output if available.
if (mySerial.available())
{
while(mySerial.available())
{ // While there is more to be read, keep reading.
command += (char)mySerial.read();
}
Serial.println(command);
command = ""; // No repeats
}
18
CONFIGURANDO ARDUINO BLUETOOTH HC-06 EM
MODO ESCRAVO:
19
void loop()
{
while(Serial.available() > 0)
{
buf = Serial.read();
//Caso seja recebido o caracter L, acende o led
if (buf == 'L')
{
digitalWrite(13, HIGH);
}
//Caso seja recebido o caracter D, apaga o led
if (buf == 'D')
{
digitalWrite(13, LOW);
}
}
}
Comandos AT:
Entre no serial monitor e selecione a velocidade de 115200 na
parte inferior (destaque em vermelho), assim como o comando
de fim de linha para Ambos NL & CR (destaque em azul). A
mensagem “Digite os comandos AT :” será exibida:
20
Digite o comando AT, que deve retornar com a mensagem “OK”
indicando que o módulo está respondendo aos comandos.
Digite AT+VERSION para exibir a versão do firmware, que pode
ser diferente da imagem abaixo:
21
AT+RESET (Reset do módulo após a definição do modo de
operação)
22
Digite agora o comando AT+PAIR=<endereco>,<timeout>. No
nosso caso, o comando ficaria assim :
AT+PAIR=2013,7,183190, 10
Programando o Arduino:
Para finalizar, desconecte o pino Key do HC-05 do pino 3.3v do
Arduino, e carregue o seguinte programa no Arduino:
void setup()
{
//Inicializa a serial nas portas 10 e 11
23
mySerial.begin(38400);
}
void loop()
{
//Envia pela serial o caracter L
mySerial.print("L");
delay(3000);
//Envia pela serial o caracter D
mySerial.print("D");
delay(3000);
}
24
PROJETO 4: MICRO SERVO MOTOR 9G SG90 COM
ARDUINO UNO
O Micro Servo TowerPro 9g SG90 é um servo de alta qualidade e
excelente para as suas necessidades seja em aeromodelismo ou
em projetos mecatrônicos. Pensando nisso bolamos um post
simples para fazer os primeiros movimentos com o seu Micro
Servo 9g SG90 e um Arduino Uno.
Especificações:
25
Componentes necessários:
● Arduino Uno
● Micro Servo 9g SG90
● Kit Jumper Macho-Macho
Programando:
#include <Servo.h>
#define SERVO 6 // Porta Digital 6 PWM
Servo s; // Variável Servo
int pos; // Posição Servo
void setup ()
{
s.attach(SERVO);
Serial.begin(9600);
s.write(0); // Inicia motor posição zero
}
void loop()
{
for(pos = 0; pos < 90; pos++)
{
s.write(pos);
delay(15);
}
delay(1000);
for(pos = 90; pos >= 0; pos--)
{
s.write(pos);
delay(15);
}
}
26
PROJETO 4: MICRO SERVO MOTOR 9G SG90 COM
ARDUINO UNO
27
Montando um Robô Seguidor de Linha:
Um bom exemplo de utilização deste Arduino motor shield é em
aplicações de robótica, como por exemplo na montagem de um
robô seguidor de linha. Para facilitar sua vida existem Kits de
chassi para robôs com 2 ou 4 rodas:
28
Podemos utilizar como sensor os LDR´s (resistores dependentes
de luz), ou então sensores ópticos reflexivos, como o TCRT5000,
que terão a função de “enxergar” a linha e transmitir essa
informação para o Arduino.
Imagem : RobotC
29
Shield Ponte H
30
Controle do Robô Seguidor de Linha com Arduino:
Para acionar o circuito vamos utilizar, com algumas adaptações,
o programa criado por Michael McRoberts e disponível no
livro Arduíno Básico. Adicionamos as funções da biblioteca
AFMotor, responsável por comandar o motor shield. A biblioteca
AFMotor pode ser encontrada nesse link. Descompacte a pasta,
renomeie para AFMotor, e coloque essa pasta dentro da
pasta LIBRARIES do programa (IDE) do seu Arduino. Não esqueça
de sair e carregar a IDE novamente para que a biblioteca seja
reconhecida pelo programa.
#include <AFMotor.h>
//deslocamentos de calibracao
int leftOffset = 0, rightOffset = 0, centre = 0;
//pinos para a velocidade e direcao do motor
int speed1 = 3, speed2 = 11, direction1 = 12, direction2 = 13;
//velocidade inicial e deslocamento de rotacao
31
int startSpeed = 70, rotate = 30;
//limiar do sensor
int threshold = 5;
//velocidades iniciais dos motores esquerdo e direito
int left = startSpeed, right = startSpeed;
void setup()
{
calibrate();
delay(3000);
}
32
void loop()
{
//utiliza a mesma velocidade em ambos os motores
left = startSpeed;
right = startSpeed;
//le os sensores e adiciona os deslocamentos
SENSOR1 = analogRead(0) + leftOffset;
SENSOR2 = analogRead(1);
SENSOR3 = analogRead(2) + rightOffset;
//Se SENSOR1 > sensor do centro + limiar,
// vire para a direita
if (SENSOR1 > SENSOR2+threshold)
{
left = startSpeed + rotate;
right = startSpeed - rotate;
}
33
rotação (rotate), evitando que os motores girem muito rápido ou
muito devagar.
34
Sugestão de Kits
KIT ARDUINO MAKER
01 - Placa Uno R3
01 - Cabo USB 30cm
01 - Adaptador Bateria 9v para Arduino
01 - Display LCD 16x2 (com conectores
soldados)
02 - Display de 7 segmentos com 1 digito
01 - Sensor de Distância Ultrassônico
01 - Controle Remoto Ir
01 - Receptor Universal Ir
01 - Real Time Clock DS1307
01 - Módulo Leitor RFID-RC522
01 - Cartão Padrão S50 em branco
01 - Tag (tipo chaveiro) Padrão S50
01 - Módulo Sensor de Chuva
01 - Sensor de Umidade do Solo
01 - Placa de controle para Sensor de Solo
01 - Teclado Matricial De Membrana
01 - Sensor De Umidade e Temperatura Dht11
01 - Protoboard 830 Pontos
30 - Jumper Macho-Macho variados
20 - Jumper Macho-Femea
01 - Módulo Relé 2 Canais
01 - Motor DC
01 - Micro Servo 9g SG90 TowerPro
01 - Sensor de Temperatura NTC
01 - Sensor de Luz LDR
01 - Buzzer Ativo 5V
05 - LED Vermelho
05 - LED Amarelo
05 - LED Verde
15 - Resistor 330Ω
05 - Resistor 1KΩ
05 - Resistor 10KΩ
04 - Diodo 1N4007
01 - Potenciômetro 10KΩ
01 - Potenciômetro Trimpot 10KΩ
04 - Capacitor Cerâmico 10nF
04 - Capacitor Cerâmico 100nF
02 - Capacitor Eletrolítico 10uF
02 - Capacitor Eletrolítico 100uF
05 - Chave Tactil (Push-Button)
35
KIT CHASSI 4WD ROBÔ PARA ARDUINO
02 - Chassi em acrílico
04 - Motores DC (3-6v)
04 - Rodas de Borracha
06 - Espaçadores
01 - Jogo de Parafusos e Porcas
36
REFERÊNCIAS
LDG. Tutorial: Como utilizar Termistor NTC com Arduino.
Disponível em <http://labdegaragem.com/profiles/blogs/
tutorial-como-utilizar-o-termistor-ntc-com-arduino/>.
37
38