curso de arduino automaÇÃo & robÓtica

Post on 23-Feb-2016

102 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

DESCRIPTION

CURSO DE ARDUINO AUTOMAÇÃO & ROBÓTICA. 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). - PowerPoint PPT Presentation

TRANSCRIPT

CURSO DE ARDUINOAUTOMAÇÃO & ROBÓTICA

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

TIPOS DE ARDUINO

Arduino 2009Arduino MegaArduino UNOArduino ADK (Google ADK - Android)Arduino BTArduino NanoLilyPad

TIPOS DE ARDUINO

CARACTERÍSTICAS DO ARDUINO UNOMicrocontrolador Atmega 328Voltagem 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 6Corrente CC por pino E/S 40 mACorrente 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

ARDUINO UNO

RODANDO O PROGRAMA BLINK

INSTALANDO O ARDUINO E O SKETCH

CONFIGURANDO O MODELO DO ARDUINO

ESCOLHENDO A PORTA SERIAL

INTERFACE DA IDE

PROTOBOARD

Esquema

PORTAS DIGITAIS

Trabalha com 0 e 1 na lógica binária- De 0 à 0,8 volts = 0– De 2 à 5 volts = 1

PORTAS ANALÓGICAS

• Valor lido é análogo à tensão• 0 volts = 0• 2,5 volts = 512• 5 volts = 1023• Conversor A/D de 10 bits: 0 à 1023

Porta PWM

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.

Alguns exemplos de componentes

PROGRAMAÇÃO

Dois métodos são obrigatórios:void setup(){}

 void loop(){}

 setup() : será executado uma única vez ao ligar a placaloop() : será executado infinitamente

PROGRAMAÇÃO

• Comando pinMode()

• Comando digitalWrite()

• Comando digitalRead()

• Comando analogRead()

• Comando analogWrite()

LED• O diodo emissor de luz conhecido pela sigla LED (Light Emitting Diode).• Sua funcionalidade básica é a emissão de luz

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.

RESISTOR

RESISTOR

EXPERIÊNCIA 1 PISCA LEDQue resistor devemos utilizar?

Arduino – saída: 5 voltsLed vermelho: 1,6 voltsCorrente 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 . iR = U / iR = (5,0 – 1,6) / 0,020R = 3,4 / 0,020R = 170 omhsUtilizar resistor 170 omhs

Materiais necessários:

• Arduino• Protoboard• Fios de conexão• LED• Resistor de 220 ohms

Esquema

Exercícios

• Altere o programa anterior para 3 LEDs piscarem sequencialmente.

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

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.

EXPERIÊNCIA 2 – LUZ AMBIENTE• Materiais necessários:• Arduino• Protoboard• Fios de conexão• LDR• Resistor de 10k

Esquema

ExercíciosAcender o LED quando o ambiente estiver escuro e

apagar o LED quando o ambiente estiver claro.

CHAVE TÁCTIL

• Também conhecida como Push Button ou Chave de Toque, fecha contato quando pressionada

EXPERIÊNCIA 3 ACENDER LED COM CHAVE TÁCTIL

Materiais necessários:ArduinoProtoboardFios de conexãoBotão táctilResistor de 10kLEDResistor de 220 ohm

Exercícios

O LED devera ficar apagado quando clicar na chave táctil ele se acende após clicar novamente ele se apaga.

Os Símbolosusados 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

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 frasedelay(2000);

}

CONSTANTESSã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)

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çãoDeclaração da Variável como as funções, toda variável deve serdeclarada 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

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 0void ledOn( ); // declaração da função criada ledOn do tipo voidvoid 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 ledfor (i=255; i >= 0; i--) ledOn( ); // diminui o brilho do led}void ledOn( ){ // função que acende o ledanalogWrite (10, i);// o nº do pino e o valor de i são passados à função analogWrite( )delay (10); }

MATRIZESsã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 1As 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 2Pode-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 inteirasEscrever/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];

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-1x += y // x=x+yx -= y // x=x-yx *= y // x=x*yx /= y // x=x/yOperadores 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 yx != y // x não é igual a yx < y // x é menor que y x > y // x é maior que yx <= y // x é menor ou igual a yx >= y // x é maior ou igual a yOperadores 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

Função Exemplo Notasdelay(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.

random(min,max)Gera números pseudoaleatórios entre os limites min e maxespecificados 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);À variável ‘valor’ vai ser 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 0-1023 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);

if...elseAo se acrescentar mais um bloco de instruções no loop do

comando ifpode-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

}

if (expressão1) {bloco de comandos1;

}else if (expressão2) {

bloco de instruções2;}else {

bloco de comandos3;}

switch (expressão) {case 1:

bloco de instruções1; break;

case 2: bloco de instruções2; break;

case 3: bloco de instruções3; break;

default: bloco de instruções4;

}

whileUma 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...whilePara 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 {

bloco de instruções;}while (expressão)

forInserindo-se no loop do comando while um contador que registre cada execução do bloco de instruções cria-se o comando for. 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;}

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;

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.

EXPERIÊNCIA 4 BUZINA

Materiais necessários:ArduinoProtoboardFios de conexãoBotão táctilResistor de 10kBuzzer

Esquema

Exercícios

Monte um circuito com 1 LDR e 1 Buzzer, quando estiver escuro, tocar o Buzzer.

Tabela de Tons

Melodia com Buzzer

NOTE_C4 262NOTE_G3 196NOTE_G3 196 NOTE_A3 220 NOTE_G3 1960NOTE_B3 247NOTE_C4 262

LM35 – SENSOR DE TEMPERATURA

• O LM35 é um sensor de temperatura linear, trabalha com temperaturas entre -55ºC e 150ºC

EXPERIÊNCIA 5 TERMÔMETRO

Materiais necessários:ArduinoProtoboardFios de conexãoLM35Formula (5 * temperatura * 100.0 / 1024)

Esquema

ExercíciosMonte um circuito com sensor de temperatura e um buzzer, quando a temperatura ultrapassar os 22 graus celsius apitar um alarme.

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.

EXPERIÊNCIA 6 CONTROLANDO LEDS PELO COMPUTADOR

Materiais necessários:ArduinoProtoboardFios de conexão3 LEDsResistor de 220 ohms

Esquena

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.

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:

EXPERIÊNCIA 7 LED RGB

Materiais necessários: – Arduino– Protoboard– Fios de conexão– LED RGB– Resistor de 220 ohms

Esquena

ExercíciosAltere o programa anterior para gerar outras cores RGB:– Amarelo: Vermelho + Verde– Magenta: Vermelho + Azul– Ciano: Verde + Azul

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).

Função MAPA 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);

EXPERIÊNCIA 8 LENDO POTENCIÔMETRO

Materiais necessários:- Arduino- Protoboard- Fios de conexão- Potenciômetro 10k

Esquena

ExercíciosMonte um circuito para regular a intensidade do Led com o

potenciômetro Obs:Utilize uma porta PWM como entrada do LedUtilize a função “map” para converter os valores de entrada do potenciômetro nos valores

de saída para o Led

DISPLAY DE 7 SEGMENTOSUm 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.

EXPERIÊNCIA 9 DISPLAY DE 7 SEGMENTOS

Materiais necessários:• Arduino• Protoboard• Fios de conexão• Display de 7 Segmentos• Resistor 220 ohms

• 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

EXPERIÊNCIA 10 CONTAR DE 0 À 9

Número 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ponto, erro:

• Relação Led – número (de 0 à 9 – “E”=Erro).• Led A – 0 – 3 –4 – 5 -- 6 – 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

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.

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.

RELÉ COM ARDUINO

• 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é

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.

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

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.

CONTROLANDO ARDUINO COM PHP EXPERIÊNCIA 12

• Materiais necessários:• Arduino• Protoboard• Fios de conexão• 6 Leds• Resistor 220r

INTERRUPTOR MAGNÉTICOLer 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.

EXPERIÊNCIA 13 ALARME DE PORTAS E JANELAS

Materiais necessários:• Arduino• Protoboard• Fios de conexão• 1 Interruptor magnético• Resistor 1K

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.

MOTORES COM ARDUINOFunções:• Movimentar peças (braços, superfícies, etc)• Locomover (rodas, esteiras, pernas, etc)Características:• Velocidade de rotação / rpm• Força• PrecisãoRedutor – 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)

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.

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

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.

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).

Analogia com uma torneira

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

• 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

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

EXPERIÊNCIA 17 SERVO MOTOR COM PONTECIÔMETRO

• Materiais necessários:• Arduino• Protoboard• Fios de conexão• Potenciômetro 10k• Servo motor

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

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.

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.

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

#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);}

SENSOR DE MOVIMENTO PIRComo 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 OUTCaracterí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

EXPERIÊNCIA 14 SENSOR DE MOVIMENTO

• Materiais necessários:• Arduino• Protoboard• Fios de conexão• 1 sensor de Movimento PIR

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.

EXPERIÊNCIA 15 RECEPTOR INFRAVERMELHO

• Arduino• Protoboard• Fios de conexão• 1 Receptor infra-vermelho

#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(); } }

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)

CLASSE ULTRASONIC

Classe utilizada com o Sensor Ultrasônico padrão SR04Mé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)

EXPERIÊNCIA 21 DETECTANDO OBSTÁCULO

Materiais necessários:•Arduino•Protoboard•Fios de conexão•Sensor HC-SR-04•Buzzer

#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); }

Acelerômetro

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("\t"); Serial.print(analogRead(zpin)); Serial.println();

delay(500);}

Módulo de Reconhecimento de Voz

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

Módulo de Reconhecimento de Voz

• Adaptador USB / TTL• Deve ser utilizado para acoplar o Módulo de Rec. De

Voz ao computador

Módulo de Reconhecimento de Voz

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

Configurações e Gravação das Instruções de Voz

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

Configurações e Gravação das Instruções de Voz

Configurações e Gravação das Instruções de Voz

Configurações:– 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

Comandos do módulo de rec. De voz:

Comandos do módulo de rec. De voz:

Comandos do módulo de rec. De voz:

• Para iniciar a gravação das instruções do• grupo 1:– AA 11• Para iniciar a gravação das instruções do • grupo 2:– AA 12• E assim por diante

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

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 gruposVamos gravar:• Instrução 1: LIGA• Instrução 2: DESLIGA• Instrução 3: MAIS• Instrução 4: MENOS• Instrução 5: FIM

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 24Ao reconhecer as instruções do Grupo 1 retorna:• Result: 11• Result: 12• Result: 13• Result: 14• Result: 15Do Grupo 2: 21, 22, 23, 24, 25

Controlando o Arduino porcomandos de voz

Controlando o Arduino porcomandos 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

Controlando o Arduino porcomandos 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);

Controlando o Arduino porcomandos de voz

int funcao = 0;int tempo = 1000;void setup(){

pinMode(13,OUTPUT);Serial.begin(9600);delay(2000);Serial.write(0xAA);Serial.write(0x37);delay(2000);Serial.write(0xAA);Serial.write(0x21);delay(2000);

}

Controlando o Arduino porcomandos 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; } }

Controlando o Arduino porcomandos 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){ digitalWrite(13,HIGH); delay(tempo); digitalWrite(13,LOW); delay(tempo); }}

top related