Buscar

Curso de Robótica Educacional com Arduino

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
 
 
 
 
2 
 
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. 
Por isso, ler o material, compartilhar experiências no chat, 
interagir com o tutor online no chat, trazer exemplos, fazer os 
exercícios, e fazer pesquisas sobre os assuntos abordados e 
assistir vídeos em streaming de vídeos é de fundamental 
importância para o desenvolvimento do seu aprendizado. 
Desejo a você, bons estudos! 
 
 
 
 
3 
 
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 
 
1 Arduino UNO Rev.3 
1 LDR 
1 Resistor de 10kOhm 
8 resistores de 220 Ohm 
8 LEDs 
1 Buzzer 
 
 
 
 
 
4 
 
 
 
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); 
 
 
 
5 
 
 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); 
 
 
 
6 
 
 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(); 
 
 
 
7 
 
} 
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); 
 
 
 
8 
 
 digitalWrite(8,HIGH); 
 digitalWrite(9,HIGH); 
 player.play(note[1]); 
} 
 
 
 
 
 
 
 
 
 
 
 
9 
 
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 
 
Para fazer a leitura da temperatura, vamos utilizar um Termistor. 
Este é um tipo de resistência especial que altera seu valor razão 
da temperatura onde o componente é colocado. 
Existem dois tipos de Termistores os NTC e os PTC. 
 
 
 
 
10 
 
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. 
 
O valor nominal do termistor é dado normalmente a 25 ºCelsius 
e neste caso utilizaremos um termistor de 10K. Ele atua na faixa 
de -40 a +125. 
 
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 
 
 O método de Steinnhart- Hart é implementado por uma 
biblioteca que fizemos algumas modificações para mantermos a 
compatibilidade da mesma com a IDE do Arduino. 
 
A biblioteca pode ser baixada neste link: Thermistor.zip 
Realizamos alguns testes aqui com este sensor junto aos valores 
desta biblioteca e o termistor respondeu a valores muito 
próximos desejados (mesmo sem ter feito alterações nos valores 
dos coeficientes de temperatura). 
http://storage.ning.com/topology/rest/1.0/file/get/1798908730?profile=original
 
 
 
11 
 
Para este Circuito podemos utilizar e o Sketch exemplo com este 
circuito: 
 
Circuito para Método 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); 
} 
 
 
 
 
 
12 
 
Método do Fator Beta 
 
 Equação do fator Beta 
 
O método do fator beta pode ser implementado utilizando um 
código de exemplo usado pela Adafruit (fizemos uma pequena 
modificação, pois o Termistor que utilizamos é um NTC). 
O circuito deve ser montado segundo a função abaixo: 
 
 
 Circuito para Método do Fator Beta 
Segundo o manual do referido termistor, o fator beta do mesmo 
é 3977 e utilizamos ele no Sketch abaixo: 
 
// Pino onde o Termistor esta conectado 
#define PINOTERMISTOR A0 
// Valor do termistor na temperatura nominal#define TERMISTORNOMINAL 10000 
// Temp. nominal descrita no Manual 
#define TEMPERATURENOMINAL 25 
// Número de amostragens para 
 
 
 
13 
 
#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; 
 
 for (i=0; i< NUMAMOSTRAS; i++) 
 { 
 amostra[i] = analogRead(PINOTERMISTOR); 
 delay(10); 
 } 
 media = 0; 
 for (i=0; i< NUMAMOSTRAS; i++) 
{ 
 media += amostra[i]; 
 } 
 media /= NUMAMOSTRAS; 
 // Converte o valor da tensão em resistência 
 media = 1023 / media - 1; 
 media = SERIESRESISTOR / media; 
 
 //Faz o cálculo pela fórmula do Fator Beta 
 float temperatura; 
 
 
 
14 
 
 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); 
} 
} 
 
 
Sugestão de uso com estes sensores, eles são uma alternativa 
barata e simples de conseguir uma amostra da temperatura 
ambiente. 
 
 
 
 
15 
 
PROJETO 3: COMO USAR O ARDUINO BLUETOOTH HC-
05 EM MODO MESTRE 
 
Os módulos Arduino bluetooth são divididos em dois tipos: os 
que trabalham no modo escravo (slave), ou seja, apenas aceitam 
conexões de outros dispositivos, e os que trabalham tanto no 
modo escravo como no modo mestre (master), permitindo que 
se conectem à outros dispositivos Bluetooth. 
Como interligar 2 módulos Bluetooth: um Arduino Bluetooth HC-
05 em modo master, e um HC-06 em modo slave. Você pode 
utilizar também, se preferir, dois módulos HC-05, já que ele 
aceita tanto o modo mestre como o modo escravo. 
Os módulos em si são muito parecidos, o que muda é a versão do 
firmware, e geralmente os módulos Arduino Bluetooth HC-06 
possuem apenas 4 pinos, e o HC-05 tem 6 pinos. Na dúvida, 
consulte a documentação do módulo que você tem em mãos. 
 
Um dos pinos adicionais é o pino Status/Key, que vamos utilizar 
para programar o HC-05 em modo master, pareando-o com o 
HC-06. 
 
 
 
16 
 
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 
 
Antes de iniciarmos a ligação dos componentes, vamos prestar 
atenção que esses módulos trabalham com nível de sinal de 3.3v, 
o que significa que vamos precisar de um divisor de tensão para 
evitar a queima do módulo. 
O divisor de tensão é composto por dois resistores, e na página 
https://www.arduinoecia.com.br/p/calculador-divisor-de-
tensao-function.html encontra-se a calculadora para este fim.r a 
tensão 
Na página, digite 5 para a tensão de entrada (Input Voltage), 
digite os valores dos resistores (R1 e R2) que você possui, e 
pressione o botão Compute para verificar no campo Output 
Voltage qual será a tensão de saída, lembrando que por 
segurança esta deve ser, no máximo, de 3.3v. 
https://www.arduinoecia.com.br/p/calculador-divisor-de-tensao-function.html
https://www.arduinoecia.com.br/p/calculador-divisor-de-tensao-function.html
 
 
 
17 
 
Configurando Arduino Bluetooth HC-05 em modo 
mestre: 
 
Monte primeiro o circuito acima, que será usado para programar 
o HC-05 em modo master. Agora, carregue o seguinte programa 
no segundo Arduino antes de montar o circuito do módulo 
escravo: 
//Programa : Modulo Arduino Bluetooth HC-05 - Programacao 
//Autor : FILIPEFLOP 
 
//Carrega a biblioteca SoftwareSerial 
#include <SoftwareSerial.h> 
 
//Define os pinos para a serial 
SoftwareSerial mySerial(10, 11); // RX, TX 
String command = ""; // Stores response of bluetooth device 
 // which simply allows n between each 
 // response. 
 
void setup() 
 
 
 
18 
 
{ 
 //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 
 } 
 
 // Read user input if available. 
 if (Serial.available()) 
 { 
 delay(10); // The DELAY! 
 mySerial.write(Serial.read()); 
 } 
} 
 
 
 
 
19 
 
CONFIGURANDO ARDUINO BLUETOOTH HC-06 EM 
MODO ESCRAVO: 
 
Efetue a ligação dos componentes no segundo Arduino e utilize 
uma fonte externa para alimentação. Note que no primeiro 
circuito estamos utilizando os pinos 10 e 11 do Arduino como 
pinos RX e TX de uma porta serial. Isso é possível, pois vamos 
utilizar a biblioteca Software Serial. No Arduino desse circuito, 
carregue o seguinte programa: 
//Programa : Modulo Arduino Bluetooth HC-05 - Recepcao 
//Autor : FILIPEFLOP 
 //Armazena o caracter recebido 
char buf; 
 void setup() 
{ 
 //Define o pino 13 como saida 
 pinMode(13, OUTPUT); 
 Serial.begin(9600); 
} 
 
 
 
20 
 
 
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: 
 
 
 
21 
 
 
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: 
 
Digite agora os seguintes comandos na sequência. Cada um deles 
deve retornar “OK“, indicando que o comando foi aceito pelo 
módulo: 
AT+ORGL (Reseta o módulo para a configuração padrão) 
AT+RMAAD (remove dispositivos anteriormente pareados) 
AT+ROLE=1 (define o modo de operação do módulo como 
MASTER) 
 
 
 
22 
 
AT+RESET (Reset do módulo após a definição do modo de 
operação) 
AT+CMODE=1 (Permite a conexão a qualquer endereço) 
AT+INQM=0,5,10 (Modo de varredura : padrão, procura por 5 
dispositivos ou pára a varredura após 10 s) 
AT+PSWD=1234 (define a senha do módulo mestre, que deve ser 
a mesma do módulo slave/escravo) 
AT+INIT (inicializa o perfil para transmissão/recepção) 
AT+INQ (inicializa a varredura por dispositivos bluetooth) 
Essa varredura vai mostrar o endereço dos dispositivo bluetooth 
detectados. No nosso caso temos apenas um dispositivo escravo: 
 
A parte que nos interessa dessa tela é o endereço, que no nosso 
caso é 2013:7:183190. Vamos precisar dessa informação para 
efetuar o pareamento, trocando os símbolos de “dois pontos” 
por vírgulas, ficando assim: 2013,7,183190 
 
 
 
23 
 
Digite agora o comando AT+PAIR=<endereco>,<timeout>. No 
nosso caso, o comando ficaria assim : 
AT+PAIR=2013,7,183190, 10 
O serial monitor retornará “OK”. 
Por fim,digite o comando AT+LINK=<endereco>, que vai 
conectar os dois dispositivos. Nesse momento o led do módulo 
HC-05 em modo master deve piscar de forma mais lenta, 
indicando conexão ao módulo HC-06, cujo led deve parar de 
piscar. 
Essa série de comandos AT não precisa ser repetida a cada 
montagem. Uma vez configurado o módulo HC-05 em modo 
master, ele se conectará automaticamente ao módulo escravo 
todo vez que você energizar os módulos. 
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: 
//Programa : Modulo Arduino Bluetooth HC-05 - Envio 
//Autor : FILIPEFLOP 
//Carrega a biblioteca SoftwareSerial 
#include <SoftwareSerial.h> 
 
//Define os pinos para a serial 
SoftwareSerial mySerial(10, 11); // RX, TX 
 
void setup() 
{ 
 //Inicializa a serial nas portas 10 e 11 
 
 
 
24 
 
 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); 
} 
 
Esse programa envia os caracteres L (para acender o led) 
e D (para apagar o led) para a serial das portas 10 e 11, onde está 
ligado o HC-05 no primeiro Arduino. O segundo Arduino, com o 
HC-06, recebe esses caracteres, e acende o led ao receber o 
caracter L, e apaga o led ao receber o caracter D. 
 
 
 
 
25 
 
 
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: 
– Voltagem de Operação: 3,0 – 7,2v 
– Velocidade: 0,12 seg/60Graus (4,8v) sem carga 
– Torque: 1,2 kg.cm (4,8v) e 1,6 kg.cm (6,0v) 
– Temperatura de Operação.: -30C ~ +60C 
– Dimensões.: 32x30x12 mm 
– Tipo de Engrenagem: Nylon 
– Tamanho cabo: 245 mm 
– Peso: 9g 
 
 
 
 
26 
 
Componentes necessários: 
● Arduino Uno 
● Micro Servo 9g SG90 
● Kit Jumper Macho-Macho 
Conecte a alimentação do Micro Servo 9g ao Arduino. Fio 
Marrom com GND, Fio Vermelho com 5v e Fio Laranja na Porta 
Digital 6. 
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); 
 } 
} 
 
 
 
27 
 
 
PROJETO 4: MICRO SERVO MOTOR 9G SG90 COM 
ARDUINO UNO 
 
Vamos apresentar um projeto de um Robô seguidor de linha, 
por muito conhecido também por robô segue faixa. 
 
Segundo o fabricante deste shield, as portas utilizadas pelos 
motores são as seguintes : 
● Controle de motores DC : Pinos 11, 3, 5 e 6 
● Controle de motores de passo : Pinos 4, 7, 8 e 12 
● Controle de servo motores : Pinos 9 e 10 
Desta forma, as portas que podemos utilizar livremente são as 6 
portas analógicas, assim como as digitais 2 e 13, isso se 
estivermos falando de um Arduino Uno. Em um Arduino Mega, 
por exemplo, todas as demais portas também estarão 
disponíveis. 
 
 
 
28 
 
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: 
 
Chassi 2 Rodas Robô 
 
Chassi 4 Rodas Robô 
 
Esses kits já vem com motores, suporte de baterias, acessórios e 
você só precisa adicionar o Arduino (ou outra placa de sua 
preferência), os sensores e o circuito controlador de motores. 
Para o caso do Arduino, recomendamos a utilização do Motor 
Shield citado acima, já que ele se encaixa perfeitamente em um 
Arduino Uno economizando espaço na montagem do robô. 
 
 
 
29 
 
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. 
Projeto Robô Seguidor de Linha 
Para o nosso “carrinho” segue faixa, vamos utilizar 3 sensores 
ópticos ligados lado a lado. Conforme a linha for detectada (ou 
não), cada sensor enviará ao Arduino as informações sobre a 
intensidade do sinal infravermelho refletido, e o programa usará 
essas informações para calcular a velocidade de cada motor. A 
ilustração abaixo mostra, de forma resumida, como os sensores 
se comportam: 
Imagem : RobotC 
 
Transportando essa ideia para o nosso motor shield, vamos 
utilizar as portas A0, A1 e A2 para ligação dos sensores. O motor 
da esquerda será ligado ao conector M1, e o motor da direita ao 
conector M4, utilizando a própria alimentação do Arduino 
(mantenha o jumper PWR na placa). 
Demonstramos a ligação dos sensores em uma protoboard, 
utilizando resistores de 330 ohms para o led infravermelho 
(parte superior/azul do sensor), e resistores de 10 K na parte 
inferior (receptor) : 
 
 
 
30 
 
 
Shield Ponte H 
 
Protoboard com os componentes de infravermelho 
A maneira mais conveniente de ligar os sensores ao shield é 
utilizar uma barra de pinos (macho ou fêmea) soldada à placa, 
como na imagem abaixo : 
 
 
 
31 
 
 
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. 
//Programa : Motor shield com sensor TCRT5000 
//Adaptações : FILIPEFLOP 
//Baseado no programa original de Michael McRoberts 
 
#include <AFMotor.h> 
 
AF_DCMotor motor_esq(1); //Seleciona o motor 1 
AF_DCMotor motor_dir(4); //Seleciona o motor 4 
 
int SENSOR1, SENSOR2, SENSOR3; 
 
//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 
https://github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master
 
 
 
32 
 
int startSpeed = 70, rotate = 30; 
//limiar do sensor 
int threshold = 5; 
//velocidades iniciais dos motores esquerdo e direito 
int left = startSpeed, right = startSpeed; 
 
//Rotina de calibracao do sensor 
void calibrate() 
{ 
 for (int x=0; x<10; x++) // 10 vezes p/obter uma media 
 { 
 delay(100); 
 SENSOR1 = analogRead(0); 
 SENSOR2 = analogRead(1); 
 SENSOR3 = analogRead(2); 
 LeftOffset = leftOffset + SENSOR1; 
 centre = centre + SENSOR2; 
 rightOffset = rightOffset + SENSOR3; 
 delay(100); 
 } 
 //obtem a media para cada sensor 
 leftOffset = leftOffset /10; 
 rightOffset = rightOffset /10; 
 centre = centre / 10; 
 //calcula deslocamentos para os sensores esquerdo e 
direito 
 leftOffset = centre - leftOffset; 
 rightOffset = centre - rightOffset; 
} 
 
void setup() 
{ 
 calibrate(); 
 delay(3000); 
} 
 
 
 
33 
 
 
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; 
 } 
 
 //Se SENSOR3 for maior do que o sensor do centro + 
limiar, 
// vire para a esquerda 
 if (SENSOR3 > (SENSOR2+threshold)) 
 { 
 left = startSpeed - rotate; 
 right = startSpeed + rotate; 
 } 
 
 //Envia os valores de velocidade para os motores 
 motor_esq.setSpeed(left); 
 motor_esq.run(FORWARD); 
 motor_dir.setSpeed(right); 
 motor_dir.run(FORWARD); 
} 
Conforme o motor e chassi que for utilizar, você deve ajustar os 
parâmetros de velocidade (startSpeed) e deslocamento de 
 
 
 
34 
 
rotação (rotate), evitando que os motores girem muito rápido ou 
muito devagar. 
 
 
 
35 
 
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) 
 
 
 
 
 
 
36 
 
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 
 
 
 
 
 
https://www.eletrogate.com/motor-dc-3-6v-com-caixa-de-reducao-e-eixo-duplo
https://www.eletrogate.com/roda-68mm-para-chassi-robo-robotica
 
 
 
37 
 
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/>. 
___. Projeto de sensor de detecção de Luz com som. 
<http://labdegaragem.com/profiles/blogs/projeto-de-sensor-
de-detec-o-de-luz-com-som>. 
___. Tutorial: como utilizar o controle remoto IR com Arduino. 
Disponível em <http://labdegaragem.com/profiles/blogs/ 
tutorial-como-utilizar-o-controle-remoto-ir/>. 
THOMSEN, Adilson. Como usar o Arduino Bluetooth HC-05 em 
modo mestre. Disponível em <https://www.filipeflop.com 
/blog/tutorial-arduino-bluetooth-hc-05-mestre/>. 
___. Micro Servo Motor 9g SG90 com Arduino Uno. Disponível 
em <https://www.filipeflop.com/blog/micro-servo-motor-9g-
sg90-com-arduino-uno/>. 
MCROBERTS, Michael. Arduino Básico. São Paulo: Novatec, 
2015. 
 
 
https://novatec.com.br/autores/michaelmcroberts.php
 
 
 
38

Outros materiais