Carregar apresentação
A apresentação está carregando. Por favor, espere
1
CURSO DE ARDUINO AUTOMAÇÃO & ROBÓTICA
2
CARACTERÍSTICAS E SIMPLICIDADE
Utiliza microcontrolador AtMEGA 8,168, 328,1280, 2560. RISC - Reduced Instruction Set Computer ou Computador com um Conjunto Reduzido de Instruções. 20 MIPS (milhões de instruções por segundo). Memória flash: 8kb,16kb, 32kb, 128kb, 256kb. 14 portas digitais 6 portas analógicas Oferece um IDE e bibliotecas de alto nível Hardware e Software Open-Source Programado em C/C++ Transferência de firmware via USB
3
TIPOS DE ARDUINO Arduino 2009 Arduino Mega Arduino UNO
Arduino ADK (Google ADK - Android) Arduino BT Arduino Nano LilyPad
4
TIPOS DE ARDUINO
5
CARACTERÍSTICAS DO ARDUINO UNO
Microcontrolador Atmega 328 Voltagem Operacional 5V Voltagem de entrada (recomendada) 7-12V Voltagem de entrada (limites) 6-20V Pinos E/S digitais 14 (dos quais 6 podem ser saídas PWM) Pinos de entrada analógica 6 Corrente CC por pino E/S 40 mA Corrente CC para o pino 3,3V 50 mA Flash Memory 32 KB (ATmega328) dos quais 0,5KB são utilizados pelo bootloader SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) Velocidade de Clock 16 MHz
6
ARDUINO UNO
7
RODANDO O PROGRAMA BLINK
INSTALANDO O ARDUINO E O SKETCH CONFIGURANDO O MODELO DO ARDUINO ESCOLHENDO A PORTA SERIAL RODANDO O PROGRAMA BLINK
8
INTERFACE DA IDE
9
PROTOBOARD
10
Esquema
11
PORTAS DIGITAIS Trabalha com 0 e 1 na lógica binária
- De 0 à 0,8 volts = 0 De 2 à 5 volts = 1
12
PORTAS ANALÓGICAS Valor lido é análogo à tensão 0 volts = 0
Conversor A/D de 10 bits: 0 à 1023
13
Porta PWM
14
Na prática Ligamos componentes em portas digitais comuns, pwm ou analógica. Fazemos leitura e escrita nestas portas a fim de obter um dado ou um determinado comportamento. Processamos os dados no microcontrolador.
15
Alguns exemplos de componentes
16
PROGRAMAÇÃO Dois métodos são obrigatórios: void setup(){ } void loop(){ setup() : será executado uma única vez ao ligar a placa loop() : será executado infinitamente
17
PROGRAMAÇÃO Comando pinMode() Comando digitalWrite()
Comando digitalRead() Comando analogRead() Comando analogWrite()
18
LED O diodo emissor de luz conhecido pela sigla LED (Light Emitting Diode). Sua funcionalidade básica é a emissão de luz
20
RESISTOR Função: limitar a quantidade de corrente elétrica.
Resistência elétrica é a oposição à passagem de uma corrente elétrica, medida em ohms. O valor da resistência de um resistor pode ser identificado de acordo com as cores apresentadas em sua cápsula.
21
RESISTOR
22
RESISTOR
23
EXPERIÊNCIA 1 PISCA LED Que resistor devemos utilizar? Arduino – saída: 5 volts Led vermelho: 1,6 volts Corrente do Led: aprox. 20 mA Aplicando a lei de Ohm: R – é a resistência elétrica medida em ohm (Ω) U – é a tensão medida em volt (V) i – é a corrente elétrica medida em ampère (A) U = R . i R = U / i R = (5,0 – 1,6) / 0,020 R = 3,4 / 0,020 R = 170 omhs Utilizar resistor 170 omhs
24
Materiais necessários:
Arduino Protoboard Fios de conexão LED Resistor de 220 ohms
25
Esquema
26
Exercícios Altere o programa anterior para 3 LEDs piscarem sequencialmente.
27
CLASSE SERIAL Permite a comunicação do Arduino com o computador através da porta serial (via USB). Instruções: Serial.begin(9600); // inicia a comunicação do Arduino com o computador utilizando a velocidade 9600 bits por segundo Serial.println(x); //--- envia o valor de x como decimal para o computador
28
LDR (Light Dependent Resistor)
Um LDR é um transdutor de entrada (sensor) que converte a luz em valores de resistência É feito de sulfeto de cádmio (CdS) ou seleneto de cádmio (CdSe). Sua resistência diminui quando a luz é muito alta, e quando a luz é baixa, a resistência no LDR aumenta.
29
EXPERIÊNCIA 2 – LUZ AMBIENTE
Materiais necessários: Arduino Protoboard Fios de conexão LDR Resistor de 10k
30
Esquema
31
Exercícios Acender o LED quando o ambiente estiver escuro e apagar o LED quando o ambiente estiver claro.
32
CHAVE TÁCTIL Também conhecida como Push Button ou Chave de Toque, fecha contato quando pressionada
33
EXPERIÊNCIA 3 ACENDER LED COM CHAVE TÁCTIL
Materiais necessários: Arduino Protoboard Fios de conexão Botão táctil Resistor de 10k LED Resistor de 220 ohm
35
Exercícios O LED devera ficar apagado quando clicar na chave táctil ele se acende após clicar novamente ele se apaga.
37
Os Símbolos usados na construção de funções são os seguintes: { } Dentro das chaves vão os procedimentos (statements) que a função deve executar; ; - O ponto-e-vírgula é usado para marcar o final de um Procedimento; // - comentário de uma linha: qualquer caracter depois das duas barras é ignorado pelo programa; /*...*/ - comentário em várias linhas: qualquer texto colocado entre esses símbolos também é ignorado pelo programa
38
Exemplo: /* Nesse código a função setup( ) ativa a porta serial em 9600 bits/s e a função loop( ) fica transmitindo a frase ‘Hello World!’ pela porta serial a cada 2 segundos. */ void setup( ){ Serial.begin(9600); // inicializa a porta serial } void loop( ){ Serial.println(“ Hello World! “); // transmite frase delay(2000);
39
CONSTANTES São valores predefinidos que nunca podem ser alterados. Na linguagem C do Arduino são 3 os grupos de constantes; os dois componentes de cada grupo sempre podem ser representados pelos números binários 1 e 0. TRUE/FALSE são constantes booleanas que definem estados lógicos. Verdadeiro é qualquer valor que não seja zero. Falso é sempre o valor zero. HIGH/LOW essas constantes definem as tensões nos pinos digitais do Arduino. Alto é uma tensão de 5 volts; baixo o terra (ou 0 volt). INPUT/OUPUT são constantes programadas pela função pinMode( ) para os pinos do Arduino; eles podem ser entradas (de sensores) ou podem ser saídas (de controle)
40
VARIÁVEIS São posições na memória de programa do Arduino marcadas com um nome e o tipo de informação que irão guardar. Essas posições podem estar vazias ou podem receber um valor inicial. Os valores das variáveis podem ser alterados pelo programa. Escopo da Variável Uma variável pode ser declarada em qualquer parte do programa. Se for declarada logo no início, antes da função setup( ), ela tem o escopo de Variável Global, e por isso ela pode ser usada por qualquer função no programa. Se declarada dentro de uma função ela tem o escopo de Variável Local, e só pode ser usada pela própria função Declaração da Variável como as funções, toda variável deve ser declarada antes de ser chamada. Essa declaração consiste em atribuir previamente um tipo e um nome à variável. Tipos de variáveis: byte - esse tipo armazena 8 bits (0-255); int - armazena números inteiros de até 16 bits; long - armazena números inteiros de até 32 bits; float - variáveis deste tipo podem armazenar números fracionários de até 32 bits
41
Exemplo: /* Esse programa escrito em C do Arduino aumenta e diminui gradativamente o brilho de um LED conectado no pino PWM 10 do Arduino. */ int i=0; // declaração da variável global inteira i iniciada com 0 void ledOn( ); // declaração da função criada ledOn do tipo void void setup( ) { pinMode(10,OUTPUT); // aqui 2 parâmetros são passados à função pinMode( ) } void loop( ){ for (i=0; i <= 255; i++) ledOn( ); // aumenta o brilho do led for (i=255; i >= 0; i--) ledOn( ); // diminui o brilho do led void ledOn( ){ // função que acende o led analogWrite (10, i); // o nº do pino e o valor de i são passados à função analogWrite( ) delay (10);
42
MATRIZES são coleções de variáveis do mesmo tipo, portanto são posições na memória de programa, com endereços que podem ser acessados por meio de um identificador, chamado de índice. A primeira posição de uma matriz é sempre a de índice 0. Declaração de uma Matriz 1 As matrizes, como as variáveis e as funções, devem ser declaradas com um tipo e um nome seguido de colchetes; e podem também ser inicializadas com os valores entre as chaves. Exemplo: int nomeMatriz [ ] = { 16,32,64,128, ... }; Declaração de uma Matriz 2 Pode-se também declarar somente o tipo, o nome e o tamanho da matriz, deixando para o programa o armazenamento de variáveis nas posições, ou índices, da matriz. int nomeMatriz [ 10 ] ; //nomeMatriz com dez 10 //posições para variáveis inteiras Escrever/Ler uma Matriz Para guardar o inteiro 16 na 4ª posição da matriz nomeMatriz, usa-se: nomeMatriz [3] = 16; Para atribuir o valor armazenado na 5ª posição de nomeMatriz à variável x: int x = nomeMatriz[4];
43
Operações Aritméticas e lógicas
as 4 operações aritméticas, divisão, multiplicação, adição e subtração, são representadas pelos símbolos: /, *, + e -. E são 3 os operadores lógicos na linguagem do Arduino que são usados para comparar duas expressões e retornar a constante TRUE/FALSE. Símbolos compostos são aqueles que combinam os símbolos aritméticos entre si e com o sinal de atribuição: x ++ // x=x+1 x -- // x=x-1 x += y // x=x+y x -= y // x=x-y x *= y // x=x*y x /= y // x=x/y Operadores de comparação comparam uma variável com uma constante, ou variáveis entre si. São usados para testar se uma condição é verdadeira. x == y // x é igual a y x != y // x não é igual a y x < y // x é menor que y x > y // x é maior que y x <= y // x é menor ou igual a y x >= y // x é maior ou igual a y Operadores lógicos são usados para comparar duas expressões, retornam 1 ou 0 (verdadeiro/falso). && AND porta lógica ‘E’ || OR porta lógica ‘OU’ ! NOT porta lógica NÃO
44
Função Exemplo Notas delay(ms) Essa função pausa o programa por um período em milissegundos indicado pelo parâmetro entre parênteses. delay(1000); Com esse parâmetro o programa vai pausar durante 1 segundo (1000 ms). Durante o período em que essa função está ativa qualquer outra função no programa é suspensa. Somente as interrupções de hardware podem parar essa função. delayMicroseconds(us) Essa função pausa o programa por um período em microssegundos indicado pelo parâmetro entre parênteses. delayMicroseconds(1000); Com esse parâmetro o programa vai pausar durante 1 ms (1000 us). As mesmas observações acima para a função delay(ms) são válidas aqui. millis( ) Retorna o número de milissegundos desde que o Arduino começou a executar o programa corrente. long total = millis( ); Aqui a variável inteira longa (de 32 bits) ‘total’ vai guardar o tempo em ms desde que o Arduino foi inicializado. Essa variável vai ser resetada depois de aproximadamente 9 horas.
45
random(min,max) Gera números pseudoaleatórios entre os limites min e max especificados como parâmetros. int valor = random(100,400); À variável ‘valor’ vai ser atribuido um número inteiro qualquer entre 100 e 400. O parâmetro min é opcional e se excluído o limite mínimo é 0. No exemplo variável ‘valor’ poderá ser qualquer número inteiro entre 0 e 400. abs(x) Retorna o módulo ou valor absoluto do número real passado como parâmetro. float valor = abs(-3.14); atribuído o número em ponto flutuante (e sem sinal) 3.14. map(valor,min1,max1,min2,max2) A função map( ) converte uma faixa de valores para outra faixa. O primeiro parâmetro ‘valor’ é a variável que será convertida; o segundo e o terceiro parâmetros são os valores mínimo e máximo dessa variável; o quarto e o quinto são os novos valores mínimo e máximo da variável ‘valor’. int valor = map(analog Read(A0),0,1023,0,255)); A variável ‘valor’ vai guardar a leitura do nível analógico no pino A0 convertida da faixa de para a faixa 0-255. Com essa função é possível reverter uma faixa de valores, exemplo: int valor = map(x,1,100,100,1);
46
if...else Ao se acrescentar mais um bloco de instruções no loop do comando if pode-se criar o comando i f...else , para fazer um teste novo quando o resultado da expressão for falsa. if (expressão) { bloco de instruções1; // se ‘expressão’ for verdadeira, ‘bloco de instruções1’ é executado } else { bloco de instruções2; // se ‘expressão’ for falsa, ‘bloco de instruções2’ é executado
47
if (expressão1) { bloco de comandos1; } else if (expressão2) { bloco de instruções2; else { bloco de comandos3;
48
switch (expressão) { case 1: bloco de instruções1; break; case 2: bloco de instruções2; case 3: bloco de instruções3; default: bloco de instruções4; }
49
while Uma das operações mais frequentes que os programas executam é repetir um grupo de instruções até que uma condição inicialmente verdadeira se torne falsa. É para isso que serve o comando while. A sua sintaxe é a seguinte: while (expressão) { bloco de instruções; } do...while Para que o bloco de instruções seja executado ao menos uma vez, ele é deslocado para a entrada da caixa de decisões, antes do teste de validade: do { }while (expressão)
50
for Inserindo-se no loop do comando while um contador que registre cada execução do bloco de instruções cria-se o comando . Esse contador deve ter uma variável de controle que deve ser previamente inicializada com um tipo e um valor. A sua sintaxe é a seguinte: for (variável; expressão;incremento) { bloco de instruções; }
51
O operador ternário ‘?’ É possível simplificar códigos com comandos if...else em C/ C++ com o operador condicional ‘?’, também chamado de operador ternário. Esse operador avalia uma expressão e se esta for verdadeira uma instrução é executada, se a expressão for falsa uma outra expressão é executada. A sua sintaxe é a seguinte: (expressão) ? instrução1 : instrução2; Note o uso e a posição entre as duas instruções de dois pontos na sintaxe desse operador. Exemplo: int x = 8; y = (x > 10) ? 15 : 20;
53
BUZZER É composta de 2 camadas de metal e uma camada interna de cristal piezoelétrico (como um sanduíche). Ao ser alimentado com uma fonte de sinal, vibra da mesma frequência recebida, funcionando como uma sirene ou alto-falante.
54
EXPERIÊNCIA 4 BUZINA Materiais necessários: Arduino Protoboard
Fios de conexão Botão táctil Resistor de 10k Buzzer
55
Esquema
56
Exercícios Monte um circuito com 1 LDR e 1 Buzzer, quando estiver escuro, tocar o Buzzer.
57
Tabela de Tons
58
Melodia com Buzzer NOTE_C4 262 NOTE_G3 196 NOTE_A3 220 NOTE_B3 247
59
LM35 – SENSOR DE TEMPERATURA
O LM35 é um sensor de temperatura linear, trabalha com temperaturas entre -55ºC e 150ºC
60
EXPERIÊNCIA 5 TERMÔMETRO
Materiais necessários: Arduino Protoboard Fios de conexão LM35 Formula (5 * temperatura * / 1024)
61
Esquema
62
Exercícios Monte um circuito com sensor de temperatura e um buzzer, quando a temperatura ultrapassar os 22 graus celsius apitar um alarme.
63
ENVIANDO DADOS DO COMPUTADOR PARA O ARDUINO
Em alguns exercícios anteriores, utilizamos a classe Serial para enviar dados do Arduino para o computador através da porta serial. A classe Serial também pode ser utilizada para receber dados enviados pelo computador ao Arduino, para isso, utilizaremos duas instruções: Serial.available() e Serial.read() Serial.available() - indica a quantidade de dados disponíveis para leitura Serial.read() - lê o próximo valor do buffer enviado pela serial, se retornar -1 não possui nenhum valor para ser lido no buffer.
64
EXPERIÊNCIA 6 CONTROLANDO LEDS PELO COMPUTADOR
Materiais necessários: Arduino Protoboard Fios de conexão 3 LEDs Resistor de 220 ohms
65
Esquena
66
Comunicação serial por fio entre 2 Arduino
Dois Arduinos, interconectados pelos pinos 0 e 1, respectivamente rx [pino de reçepção] e tx [pino de transmissão]. O pino TX de um deve estar ligado ao pino RX do outro - formando um X. Aplicação: No caso um arduino envia um byte; o outro arduino recebe este byte e testa; se for 1 liga o led do pino 13 se for 0 desliga. Nenhum protocolo foi especificado.
68
LED RGB LED RGB pode emitir 3 cores: vermelho, verde e azul (RGB), as cores podem ser emitidas isoladamente ou em conjunto. Utilizando a porta PWM, podemos controlar a intensidade de cada cor, as cores podem ser combinadas. O LED RGB possui 3 terminais:
69
EXPERIÊNCIA 7 LED RGB Materiais necessários: – Arduino – Protoboard – Fios de conexão – LED RGB – Resistor de 220 ohms
70
Esquena
71
Exercícios Altere o programa anterior para gerar outras cores RGB: – Amarelo: Vermelho + Verde – Magenta: Vermelho + Azul – Ciano: Verde + Azul
72
POTENCIÔMETRO É um dispositivo eletromecânico que possui um resistor de valor fixo sobre o qual se move um contato deslizante, fazendo a resistência variar. Normalmente possui 3 terminais: Vcc, Gnd e sinal (analógico).
73
Função MAP A função “map” do Arduino converte uma faixa de valores de entrada em uma faixa de valores de saída. Por exemplo: o potenciômetro gera valores de entrada entre 0 e 1023 (10bits) e desejamos converter em uma saída analógica entre 0 e 255 (8 bits). Sintaxe: map(entrada, in_min, in_max, out_min, out_max) Exemplo: int val = map(x, 0, 1023, 0, 255);
74
EXPERIÊNCIA 8 LENDO POTENCIÔMETRO
Materiais necessários: - Arduino - Protoboard - Fios de conexão - Potenciômetro 10k
75
Esquena
76
Exercícios Monte um circuito para regular a intensidade do Led com o potenciômetro Obs: Utilize uma porta PWM como entrada do Led Utilize a função “map” para converter os valores de entrada do potenciômetro nos valores de saída para o Led
77
DISPLAY DE 7 SEGMENTOS Um display de sete segmentos é composto de oito LEDs (Diodos emissores de luz), sete para formar o número que deverá ser apresentado e um para gerar o ponto decimal. Sua classificação pode ser ANODE (+) ou CATHODE (-). Os Displays LED de 7 segmentos podem ser utilizados para inúmeras tarefas em automação.
80
EXPERIÊNCIA 9 DISPLAY DE 7 SEGMENTOS
Materiais necessários: Arduino Protoboard Fios de conexão Display de 7 Segmentos Resistor 220 ohms
81
Conexões: Pino 13 – Led A Pino 12 – Led B Pino 11 – Led C Pino 10 – Led D Pino 9 – Led E Pino 8 – Led F Pino 7 – Led G Pino 6 – Led do Ponto Decimal
83
EXPERIÊNCIA 10 CONTAR DE 0 À 9
Número 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ponto, erro:
84
Relação Led – número (de 0 à 9 – “E”=Erro).
Led A – 0 – 3 –4 – – 7 - E Led B – 0 – 1 – 2 – 3 – 4 – 7 – 8 – 9 Led C – 0 – 1 – 3 – 4 – 5 – 6 – 7 – 8- 9 Led D - 0 – 2 – 3 – 5 – 6 – 8 – 9 - E Led E – 0 – 2 – 6 – 8 - E Led F – 0 – 4 – 5 – 6 – 8 – 9 - E Led G – 2 – 3 – 4 – 5 – 6 – 8 – 9 - E Led do Ponto Decimal
85
CONTROLE DE LÂMPADAS E TOMADAS
Não é possível ligar um fio 110 volts no Arduino. O Arduino trabalha com 5 volts – corrente contínua. A energia elétrica das residências (tomadas e lâmpadas) trabalham com 127 ou 220 volts – corrente alternada. A transmissão de corrente contínua para longas distâncias é inviável. Como fazer o Arduino controlar tomadas e lâmpadas.
86
USANDO UM RELÉ Um relé é um interruptor eletromagnético que quando conduzimos corrente o interruptor fecha um determinado contato. Esses contatos podem estar normalmente abertos (desconectados) ou normalmente fechados (conectados) Siglas NO e NC em inglês ou NA e NF em português.
87
RELÉ COM ARDUINO
88
Como ligar um Relé no Arduino??
O Arduino fornece no máximo 40mA em suas portas Para acionar o Relé, é preciso aproximadamente 70mA Por isso, devemos ligar um transistor entre o Arduino e o Relé
89
Tensão reversa É um fenômeno físico que acontece em todo mecanismo eletromagnético quando é desenergizado. Assim que tiramos a energia de um dispositivo eletromagnético recebemos de volta um “choque”, isso poderia queimar o transistor ou o Arduino. Para evitar esse fenômeno, usamos um diodo, que só permite a corrente passar em um único sentido. O diodo pode ser ligado em paralelo com o mecanismo.
91
EXPERIÊNCIA 11 CONTROLANDO LÂMPADA
Materiais necessários: Arduino Protoboard Fios de conexão Módulo Relé Lâmpada de 127 volts Tomada de 127 volts
93
Exercícios: Sensor de luminosidade - Monte um circuito para controlar a lâmpada quando escuro a lâmpada se acende e quando claro a lâmpada se apaga.
94
CONTROLANDO ARDUINO COM PHP EXPERIÊNCIA 12
Materiais necessários: Arduino Protoboard Fios de conexão 6 Leds Resistor 220r
97
INTERRUPTOR MAGNÉTICO
Ler um Interruptor Magnético utilizando o Arduino, e acionar um dispositivo a partir da leitura do interruptor magnético. São usados para acionar, magneticamente, dispositivos eletro-eletrônicos como alarmes, trancas elétricas, portas, circuitos eletrônicos de partida, etc.
98
EXPERIÊNCIA 13 ALARME DE PORTAS E JANELAS
Materiais necessários: Arduino Protoboard Fios de conexão 1 Interruptor magnético Resistor 1K
100
Exercícios: Sensor de Janela e Portas - Monte um circuito para verificar se o sensor está aberto ou fechado. Se circuito estiver aberto o buzzer deverá tocar.
101
MOTORES COM ARDUINO Funções:
Movimentar peças (braços, superfícies, etc) Locomover (rodas, esteiras, pernas, etc) Características: Velocidade de rotação / rpm Força Precisão Redutor – transforma rotação em força Motor DC/CC (velocidade) Servo motor (precisão e/ou força) Motor de passo (precisão e/ou força)
102
MOTOR DC Motor simples pode ter alta velocidade.
Não tem precisão angular. Podemos controlar a potência com PWM Assim como relé precisamos ligar em um transistor com diodo de proteção, para inverter a direção da rotação temos que inverter a polaridade.
103
SERVO MOTOR Motor com precisão angular, fácil comando.
Por padrão virar apenas de 0 a 180 graus. Servos fullrotation giram em 360 graus. Conexão super simples: GND, 5v e Sinal Digital
104
MOTORES DE PASSOS São dispositivos mecânicos eletro-magnético que podem ser controlados digitalmente através de um hardware específico ou através de softwares. Motores de passos são encontrados em aparelhos onde a precisão é um fator muito importante. São usados em larga escala em impressoras, plotters, scanners, drivers de disquetes, discos rígidos e muitos outros aparelhos.
105
TRANSISTOR O transistor funciona como um controlador de fluxo de corrente, é como uma torneira, possui 3 terminais chamados de “base”, “emissor” e “coletor”. A “base” tem a função da manopla da torneira ou seja, controlar o fluxo de corrente que irá fluir entre o “coletor” e o emissor (o que entra na torneira pela caixa d´água e o que sai na boca da torneira).
106
Analogia com uma torneira
107
EXPERIÊNCIA 16 CONTROLANDO UM MOTOR DC
Materiais necessários: Arduino Protoboard Fios de conexão Transistor Tip 122 (Pode ser TIP 120) NPN. Diodo IN4007 (Ou IN4004). Motor DC Resistor 1K
109
Transistor Tip 122 (Pode ser TIP 120) NPN. Diodo IN4007 (Ou IN4004).
Exercícios: Controlando um Motor DC com Potenciômetro Arduino Protoboard Fios de conexão Potenciômetro 10k Transistor Tip 122 (Pode ser TIP 120) NPN. Diodo IN4007 (Ou IN4004). Motor DC Resistor 1K
111
CLASSE SERVO MOTOR Utilizada para controlar Servos Motores. Presente na biblioteca: Servo.h Métodos: Servo.attach(porta) – conecta servo à uma porta digital Servo.write(val) – define ângulo do braço do servo (0 – 180º) Servo.detach() – desconecta servo de uma porta digital
112
EXPERIÊNCIA 17 SERVO MOTOR COM PONTECIÔMETRO
Materiais necessários: Arduino Protoboard Fios de conexão Potenciômetro 10k Servo motor
114
PONTE H EXPERIÊNCIA 18 MOTOR DC DUPLO SENTIDO
Materiais necessários: Arduino Uno Ci L293B (podem procurar similares L293 D) Protoboard Motor DC Fios de conexão
117
Exercícios: Controlar dois motores DC pelo PHP - Monte um circuito para controlar 2 motores DC para frente e para traz. Monte também um pagina php para controlar os motores DC, como na imagem abaixo.
118
MOTOR DE PASSO Um motor de passo é um tipo especial de motor que pode se mover em uma série de passo discretos. Eles são uma boa escolha para projetos que requerem movimento controlado e preciso. Projetos típicos incluem impressoras 3D, sistemas de posicionamento de telescópios e controle numérico computadorizado (CNC) de tornos e máquinas.
119
EXPERIÊNCIA 19 CONTROLANDO MOTOR DE PASSO
Materiais necessários: Arduino Uno Ci L293B (podem procurar similares L293 D) Protoboard Motor de Passo Fios de conexão Bateria de 6 ou 9 V
121
#include <Stepper.h>
const int numeroDeVoltas = 60; Stepper configurar(numeroDeVoltas, 8,9,10,11); void setup() { configurar.setSpeed(60); Serial.begin(9600); } void loop() { Serial.println("Sentido Horario"); configurar.step(60); delay(500);
122
SENSOR DE MOVIMENTO PIR
Como funciona? Detecta infravermelho emitido por objetos e pessoas Todas as pessoas e objetos emitem energia em forma de infravermelho PIR Sensor significa Sensor Infravermelho Passivo, pois sensor não emite campo de detecção, apenas faz a leitura dos campos emitidos pelos objetos/pessoas Cada detecção gera um pulso positivo no Pino OUT Características Filtro especial chamado lente Fresnel, que foca os sinais infravermelhos no objeto Detecta movimentos a uma distância de 6 metros Saída de bit simples Alimentação de 3,3V até 5V
123
EXPERIÊNCIA 14 SENSOR DE MOVIMENTO
Materiais necessários: Arduino Protoboard Fios de conexão 1 sensor de Movimento PIR
125
RECEPTOR INFRAVERMELHO
‘O TSOP382 é um receptor miniaturizado para sistemas de controle remoto por infravermelhos. Um diodo PIN e um pré amplificador são montados sobre um conector e o encapsulamento de epoxy funciona como um filtro de IR. O sinal de saída demodulado pode ser diretamente decodificado por um microprocessador. O TSOP382 é compatível com todos os formatos de dados do controles remostos mais comuns.
126
EXPERIÊNCIA 15 RECEPTOR INFRAVERMELHO
Arduino Protoboard Fios de conexão 1 Receptor infra-vermelho
128
#include <IRremote.h>
int recep = 2; IRrecv irrecv(recep); decode_results resultado; void setup(){ Serial.begin(9600); irrecv.enableIRIn(); } void loop(){ if(irrecv.decode(&resultado)){ Serial.println(resultado.value,HEX); irrecv.resume();
129
SENSOR DE DISTÂNCIA Sensor Ultrasônico HC-SR04
Emite um sinal ultrasônico para detectar obstáculos Faixa de medição: 2 cms à 4 mts Possui um emissor e um receptor ultrasônico Possui 4 conexões: 5V Supply (VCC) Tigger Pulse Input (Trig) Echo Pulse Output (Echo) 0V Ground (GND)
130
CLASSE ULTRASONIC Classe utilizada com o Sensor Ultrasônico padrão SR04 Método construtor: Ultrasonic(trigger_pin, echo_pin) Sistemas de medição: CM – medição em centímetros INC – medição em polegadas Método para efetuar a medição: Ultrasonic.Ranging(sist_med)
131
EXPERIÊNCIA 21 DETECTANDO OBSTÁCULO
Materiais necessários: Arduino Protoboard Fios de conexão Sensor HC-SR-04 Buzzer
133
#include <Ultrasonic.h>
Ultrasonic ultrasonic(8,9); void setup(){ Serial.begin(9600); pinMode(13,OUTPUT); } void loop(){ int distancia = ultrasonic.Ranging(CM); Serial.println(distancia); delay(200);
134
Acelerômetro
136
const int groundpin = 18; const int powerpin = 19; const int xpin = A3; const int ypin = A2; const int zpin = A1; void setup(){ Serial.begin(9600); pinMode(groundpin, OUTPUT); pinMode(powerpin, OUTPUT); digitalWrite(groundpin, LOW); digitalWrite(powerpin, HIGH); } void loop(){ Serial.print(analogRead(xpin)); Serial.print("\t"); Serial.print(analogRead(ypin)); Serial.print(analogRead(zpin)); Serial.println(); delay(500);
137
Módulo de Reconhecimento de Voz
138
Módulo de Reconhecimento de Voz
Características: – Se comunica através da porta serial (configurações e reconhecimento) – Pode ser utilizado para controlar Leds, Lâmpadas, Robos, etc – Armazena até 15 instruções de voz – divididas em 3 grupos de 5 instruções – Independente do locutor, mas precisa de um bom microfone – Voltagem: de 4.5 à 5.5 volts – Corrente: menos que 40 mA – Interface: Serial 5v TTL lever UART interface – Entrada para microfone de 3,5mm + pino
139
Módulo de Reconhecimento de Voz
Adaptador USB / TTL Deve ser utilizado para acoplar o Módulo de Rec. De Voz ao computador
140
Módulo de Reconhecimento de Voz
141
Configurações e Gravação das Instruções de Voz
Efetuar o download do driver do Adaptador USB/TTL Descompactar e Instalar – sem conectar o Adaptador ao computador Após a instalação, conectar a placa ao computador Verificar se a placa foi detectada
142
Configurações e Gravação das Instruções de Voz
143
Configurações e Gravação das Instruções de Voz
O AccessPort é um software de comunicação com a porta serial Poderia ser utilizado outro software Não é necessário a instalação Para executar, execute o arquivo: AccessPort.exe
144
Configurações e Gravação das Instruções de Voz
145
Configurações e Gravação das Instruções de Voz
– Clique no botão Configuration – Configurações: Port: COM3 (verificar sua porta) Baud rate: 9600 Parity bit:None Data bit: 8 Stop bit: 1 Buffer size: 8192 Send display: Hex Format Receive display: Char Format
146
Comandos do módulo de rec. De voz:
147
Comandos do módulo de rec. De voz:
148
Comandos do módulo de rec. De voz:
Para iniciar a gravação das instruções do grupo 1: – AA 11 grupo 2: – AA 12 E assim por diante
149
Comandos do módulo de rec. De voz:
Conecte o Adaptador USB/TTL com o Módulo de Reconhecimento de Voz Conecte o Adaptador ao computador
150
Comandos do módulo de rec. De voz:
É obrigatório a gravação de 5 instruções dentro de um grupo Não é necessário gravar instruções em todos os grupos Vamos gravar: Instrução 1: LIGA Instrução 2: DESLIGA Instrução 3: MAIS Instrução 4: MENOS Instrução 5: FIM
151
Comandos do módulo de rec. De voz:
Para testar o reconhecimento das instruções do Grupo 1: – AA 21 Do grupo 2, 3, 4: – AA 22, AA 23, AA 24 Ao reconhecer as instruções do Grupo 1 retorna: Result: 11 Result: 12 Result: 13 Result: 14 Result: 15 Do Grupo 2: 21, 22, 23, 24, 25
152
Controlando o Arduino por comandos de voz
153
Controlando o Arduino por comandos de voz
Programação – Comunicação pela porta Serial – É sugerido que as mensagens fiquem no modo reduzido (AA 37) – Para retornar ao modo normal (mensagens de texto), utilizar a instrução AA 36 – Quando a Instrução 1 do Grupo 1 é reconhecida – o valor 11 é recebido pela porta Serial – Instrução 2 do Grupo 1 – é recebido 12 – Instrução 3 do Grupo 1 – é recebido 13 – Instrução 4 do Grupo 1 – é recebido 14 – Instrução 5 do Grupo 1 – é recebido 15 – Do Grupo 2 – 21, 22, 23, 24, 25 – Do Grupo 3 – 31, 32, 33, 34, 35
154
Controlando o Arduino por comandos de voz
Programação – Para carregar instruções do Grupo 1: AA 21 – Para carregar instruções do Grupo 2: AA 22 – Para carregar instruções do Grupo 3: AA 23 – Para enviar instruções para o módulo usar: Serial.write – envia dados no formato binário/hexa – Exemplo – carregando instruções do Grupo 1 Serial.write(0xAA); Serial.write(0x21);
155
Controlando o Arduino por comandos de voz
int funcao = 0; int tempo = 1000; void setup(){ pinMode(13,OUTPUT); Serial.begin(9600); delay(2000); Serial.write(0xAA); Serial.write(0x37); Serial.write(0x21); }
156
Controlando o Arduino por comandos de voz
void loop(){ if(Serial.available()){ char c = Serial.read(); if(c == 0x11){ funcao = 1; } if(c == 0x12){ funcao = 0; if(c == 0x13){ funcao = 2; tempo = tempo - 100; if(tempo <= 0){ tempo = 10;
157
Controlando o Arduino por comandos de voz
if(c == 0x14){ funcao = 2; tempo = tempo + 100; } if(funcao == 1){ digitalWrite(13,HIGH); if(funcao == 0){ digitalWrite(13,LOW); if(funcao == 2){ delay(tempo);
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.