oficina uso da plataforma arduinono ensino de...
TRANSCRIPT
Astrogildo JunqueiraDocente Física/IFSP
Lucas D´AmásioDavid Larronda
Licenciandos/IFSP
Apoio Financeiro:Prodocência / Capes
OFICINA
Uso da plataforma Arduino no Ensino de Ciências
Wikipedia: plataforma de prototipagem eletrônica de hardware livre, projetada com um microcontrolador Atmel AVR de placa única, com suporte de
entrada/saída embutido, uma linguagem de programação padrão essencialmente em C / C++.
Entrada USB
Pinos E/S Digitais
Pinos E/S Analógicas
CONHECENDO A PLATAFORMA ARDUINO
MicrocontroladorAtmel AVR
LED
Conexão ao computador por cabo
USB
Indica se o arduíno estáligado a uma fonte; conectado ao pino 13.
“cérebro” do arduíno. Marca Atmega, com 10bits e 32KB de memória.
14 portas de entrada/saída digitais (sinal elétrico de “0” ou de “1”)
6 portas de entrada/saída analógica (sinais “contínuos”).
IDE: Ambiente de Desenvolvimento Integrado(Integrated Development Environment)
O IDE pode ser baixado gratuitamente de: www.arduino.cc
IDE: PROGRAMANDO O ARDUÍNO
Nesta área serão escritos os comandos para o arduíno
PROTOBOARD: MONTANDO PROJETOS ARDUINO
Placa de plástico em que os orifícios são conectados internamente por trilhas metálicas. Os oríficiosservem para a inserção de terminais de componentes e fios de conexão.
sentidos das trilhas no protoboard
Fios de conexão (ou “jumpers”) entre o arduíno e o protoboard
Sensor para temperatura:
SENSORES E SHIELDS PARA ARDUÍNO
Sensor de distância por US:
Acelerômetro de três eixos
Bússola digital três eixos
Shield Bluetooth:
Shield Ethernet:
Sensor LDR
EXPERIMENTOS COM ARDUÍNO NO ENSINO DE FÍSICA
Irradiação Térmica: Sensor de temperatura (LM35)
Duas latinhas, branca e preta, iluminadas por uma lâmpada, com um sensor em cada uma. Variação da temperatura com o tempo
Fonte: Atividades realizadas na disciplina de Termodinâmica da Licenciatura em Física/IFSP
Fonte: A placa Arduino: opção de baixo custo para experiências de Física por Souza et al., RBEF, vol. 33(1), 2011.
Oscilação de uma régua: Sensor de luz (LDR)
EXPERIMENTOS COM ARDUÍNO NO ENSINO DE FÍSICA
Pêndulo vertical: sensor de ultrasom
EXPERIMENTOS COM ARDUÍNO NO ENSINO DE FÍSICA
Movimento Oscilatório Vertical com Arduíno
40
50
60
70
80
100 150 200 250 300 350 400
Tempo (ua)
Po
siç
ão
(u
a)
Fonte: Atividade realizada para o teste do sensor LV-MaxSonar para essa oficina
ARDUINO: NOSSO PRIMEIRO PROJETOAcendendo e Apagando LED
Os primeiros componentes
LED (Light Emitting Diode): Diodo EmissordeLuz: diodo semicondutor que ao ser energizado emite luz visível. Possui polaridade, portanto, a perna maior deve ser ligada à tensão de alimentação e a perna menor à terra (GND da placa).
Resistor: dispositivo que dificulta a passagem da corrente elétrica e transforma a energia elétrica em energia térmica. Não possui polaridade.
CIRCUITO COM UM RESISTOR E UM LED EM SÉRIE
MATERIAIS:
• 1 LED
• 1 RESISTOR
• PROTOBOARD
• FIOS CONECTORES
• PLACA ARDUINO
ARDUINO: NOSSO PRIMEIRO PROJETOAcendendo e Apagando LED
Montando o circuito:
Após realizada as conexões dos componentes, são escritos os códigos de comandos no IDE e salvos na memória do arduíno. Os comandos que usaremos são indicados abaixo.
void setup() { pinMode(13, OUTPUT); // define a porta digital 13
// para sinal de saida para o LED
}
void loop() {digitalWrite(13, HIGH); // acende o LED
delay(1000); // aguarda por um segundo
digitalWrite(13, LOW); // apaga o LED
delay(1000); // aguarda por um segundo
}
Porém, antes de iniciarmos, vamos conversar um pouco sobre circuitos elétricos, algumas leis básicas e a lógica dos comandos aqui usados.
ARDUINO: NOSSO PRIMEIRO PROJETOAcendendo e Apagando LED
ARDUINO: NOSSO PRIMEIRO PROJETOAntes, um pouco de eletrônica
Lei de Ohm
Conceitos fundamentais para entendermos os circuitos elétricos são os de corrente (i) e tensão (V) elétricas e o de resistência (R).A relação entre eles é dado pela Lei de Ohm: V = R.i.
V = R.i i = V/R = 9/90 = 0,1 A
Se conectarmos uma lâmpada com resistência de 90 a uma bateria de 9 V, a corrente elétrica fluindo pelo circuito será dada pela Lei de Ohm:
Podemos ligar dois ou mais componentes resistivos (lâmpada, resistor, etc.) basicamente de duas maneiras: série e paralelo.
Ligação em série: a mesma corrente passa pelos dois componentes resistivos
Ligação em paralelo: a mesma tensão elétrica éaplicado aos dois componentes resistivos
Ligações Série e Paralelo
ARDUINO: NOSSO PRIMEIRO PROJETOAntes, um pouco de eletrônica
Para não queimarmos um LED, ele é ligado em série com resistor R. O valor mínimo desta resistência édada pela Lei de Ohm.Suponha que o LED suporte até 2 V de tensão e corrente de 10 mA = 0,010 A e está ligado junto com a resistência a uma fonte de V = 5 V.
Se ele suporta apenas 2 V, então 3 V da fonte devem ir para o resistor R.
Vres = R.i R = Vres/i = 3/0,01 = 300
Vres + VLED = 5 V Vres = 5 V - 2 V = 3 V
Pela Lei de Ohm, o valor mínimo da resistência deve ser:
Programação: códigos de comando
void setup() { // initialize the digital pin as an output.// Pin 13 has an LED connected on most Arduino boards:pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Porta de saída
Definições
Saída para LED (HIGH = 5 V)
Espera 1000 ms
Saída para LED (LOW = 0 V)
Espera 1000 ms
Laço: Repete indefinidamente
Observação: o que estiver escrito após “//” não é lido pelo arduíno, apenas observações do programador.
ARDUINO: NOSSO PRIMEIRO PROJETOAcendendo e Apagando LED
Conferindo (compilando) a programação
Depois de escrever os comandos, pressione o botão . O IDE irá verificar se há algum erro de lógica na programação.
Montando o circuito
Conforme discutido, e com o arduíno desconectado, conecte, usando os fios e o protoboard, os componentes do circuito: Arduino-LED-resistor.
Escrevendo o sketch
Escreva a programação no IDE, com o Arduino desconectado
ARDUINO: NOSSO PRIMEIRO PROJETOMontando o projeto
Porta de comunicação com o Arduino
Conecte o computador com o Arduino via cabo USB. Após isso, vá em “Ferramentas”, depois em “porta”. Escolha uma porta de comunicação com o Arduíno.
Gravando na memória do Arduino
Estabelecida a comunicação, pressione o botão . O IDE irá gravar na memória do Arduíno os comandos.
Se tudo der certo, você verá o arduíno piscando e em seguida o LED no protoboard acendendo e apagando conforme os comandos.
EXERCÍCIO: PROJETO COM 3 LEDS
Levando em consideração a discussão realizada até aqui, tente montar um projeto com 3 LEDs ligados ao arduíno, acendendo e apagando alternadamente os LEDS.
void setup() { pinMode(11, OUTPUT);pinMode(12, OUTPUT);pinMode(13, OUTPUT);
}
void loop() {digitalWrite(11, HIGH); delay(1000); digitalWrite(11, LOW); digitalWrite(12, HIGH); delay(1000); digitalWrite(12, LOW); digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW);
}
PROJETO: LED COM PWM
Pinos PWM: nesse projeto vamos usar os pinos 3, 5 e 6, que também são pinos PWM (Pulse withModulation). Esse pinos são indicados pelo sinal ~ (til). Com ele, podemos fornecer valores de tensão fracionários entre HIGH (5 V) e LOW (0 V), com passos de tensão de V = 5 V / 256 ~ 0,0195 V, permitindo uma variação gradual da tensão entre 0 V e 5 V.
AnalogWrite(pino, valor): Com esse comando, podemos enviar um valor fracionário (de 0 a 255) para o pino PWM. Para o estado 255, associamos o valor 5V e para o estado 0, associamos o valor 0 V
AnalogWrite(3, 0)Pino 3
Valor 0 (mínimo)
AnalogWrite(3, 255)Pino 3
Valor 255 (máximo)
Vamos montar um projeto simples com apenas um LED e verificar como funciona o pino PWV.
void setup() { pinMode(3, OUTPUT);
}
void loop() {analogWrite(3, 255);
}
PROJETO: LED COM PWM
ESPECTRO ELETROMAGNÉTICO E AS CORES
A luz é aquilo que chamamos em Física de Ondas Eletromagnéticas. Além das ondas que enxergamos (a luz), temos outros tipos de ondas EM para os quais nossos olhos não são sensíveis. O que caracteriza as regiões do chamado espectro eletromagnético são as freqüências de oscilações das ondas EM (ou seja, quantas oscilações numa unidade de tempo).
https://pt.wikipedia.org/wiki/Espectro_eletromagnetico
CORES: REGIÃO DO VÍSIVEL.
A região do visível, que é composta das frequências que enxergamos, pode ser dividida (arbitrariamente) em sub-regiões que associamos as cores.
Fonte: “Esclarecendo o significado de cor em física” por Silva, Revista Física na Escola vol. 8(1), 2007
f
c
CORES: MISTURA ADITIVAS DE CORES
O que acontece quando misturamos luzes de cores diferentes? Vamos obter o chamado sistema cromático aditivo. Esse sistema é formado pela adição das três cores primárias da luz: azul, vermelho e verde (RGB)
https://gerenciamentodecor.wordpress.com/2016/02/20/cores-sistema-aditivo-e-substrativo/
PROJETO: LED RGB
Vamos continuar nossa exploração do Arduíno, usando agora outro tipo de LED: LED RGB. Ele écomposto por três LED de cores diferentes, chamado simplesmente LED RGB. Nele, temos embutido três LEDs de cores vermelho (R), verde (G) e azul (B): a perna maior é o ânodo e as outras são os cátodos.
Para fazermos a conexão desse LED com o arduíno, montamos o circuito abaixo, usando três saídas digitais do arduíno (R,G e B) e o GND (ânodo). Ao lado, a programação.
void setup() { pinMode(3, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT);
}
void loop() {analogWrite(3, 255);analogWrite(5, 255);analogWrite(6, 255);
}
PROJETO: BUZZER FAZENDO BARULHO
Vamos agora fazer um pouco de barulho! Nesse projeto iremos usar um dispositivo que produz som. O Buzzer é um transdutor piezoelétrico feito com uma membrana vibratória que ao ser excitada por impulso vibra e produz um tom.
O nosso projeto com o buzzer é mostrado abaixo, juntamente com um exemplo de programação.
void setup() { pinMode(9, OUTPUT);
}
void loop() {digitalWrite(9, HIGH); delay(150); digitalWrite(9, LOW); delay(1000);
}
SONS E MÚSICA
fT
1
Os fenômenos oscilatórios podem ser caracterizados principalmente por sua frequencia (f) ou período (T).
Período (T): tempo de repetição de uma oscilação completa (s)
Frequencia (f): número de oscilações numa unidade de tempo (Hz)
As ondas sonoras são perturbações nas posições das moléculas do ar que vibram para lá e para cá, na direção da onda (longitudinais), produzindo regiões de baixa e alta pressões (vales e cristas). O ser humano é capaz de identificar sons de 20 Hz até 20 kHz
f
vsom
SONS E MÚSICA
A música ocidental é baseada principalmente na chamada escala temperada. Basicamente, um som (tom) de uma dada freqüência (f0) e junto com uma outra, chamada de oitava (2xf0). Dividimos esse intervalo de uma oitava em 12 intervalos chamados semi-tons, de tal forma que cada semitom vizinho é separado pela relação entre as frequencias:
059,12 12/1
1
n
n
f
f
Desta forma podemos criar uma escala temperada da seguinte forma (usando o dócomo tom da escala):
Desta forma, segue-se aproximadamente as distâncias (intervalos) entre notas na escala natural, como os exemplos abaixo:
PROJETO BUZZERFAZENDO MELODIA
Vamos estudar mais alguns recursos da programação do arduíno num projeto para produzir uma pequena melodia. Para isso, usaremos novamente o buzzer, conforme indicado na figura. Veja que a programação, agora um pouco mais longa, tem alguns elementos novos.
int C = 262, D = 294, E = 330, F = 349, G = 392, A = 440, B = 523;
int P = 0;
int i;
int ode[ ] = {
E,E,F,G,G,F,E,D,C,C,D,E,E,D,P,D,P, E,E,F,G,G,F,
E,D,C,C,D,E,D,C,P,C,P, D,D,E,C,D,E,P,F,E,
C,D,E,P,F,E,D,C,D,P, E,E,D,G,G,F,E,D,C,C,D,E,D,C,P,C };
int tempo[ ] = {
1,1,1,1,1,1,1,1,1,1,1,1,1.5,1,.5,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1.5,1,.5,1,1,
1,1,1,1,1,1,.5,1,1,1,1,1,.5,1,1.5,1,.5,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1.5,.125,1,1 };
void setup() {
pinMode(3,OUTPUT);
}
void loop() {
for (i=0; i<sizeof(ode)/2; i++) {
if (ode[i] != 0) tone(3,ode[i]); else noTone(3);
delay(tempo[i] * 500);
noTone(3);
}
noTone(3);
delay(10000);
}
Variáveis: as variáveis reservam espaço na memória do arduíno para armazenar valores de determinados parâmetros a serem usado na programação do arduíno.
Tipos de dados: as variáveis podem armazenar valores inteiros, fracionários, etc. Para isso, é necessário especificar o tipo de dado que ela irá armazenar. Dependendo do tipo de dado, a variável irá consumir mais ou menos da memória do arduíno.
int: armazena números inteiros de -32.768 a 32.768 (ocupa 2 bytes no arduíno UNO).
long: armazena números inteiros de -2.147.483.648 a 2.147.483.648 (ocupa 2 bytes no arduíno UNO).
float: armazena números fracionários de -3,4028235.10+38 a 3,4028235.10+38 (ocupa 4 bytes no arduíno UNO). Precisão de 6 ou 7 dígitos depois da vírgula.
array: conhecido como vetor unidimensional (vetor) ou multidimensional (matriz).
int vetor [8]; // indica um vetor de 8 posiçõesint matriz [3][3]; // indica matriz de 3 linhas e 3 colunas
PROJETO ALTO FALANTECONHECENDO MAIS RECURSO
Escopo das variáveis: as variáveis podem ser declaradas dentro da função void( ) ou loop( ) – nesse caso serão chamadas de variáveis locais; ou podem ser declaradas antes de void( ), nesse caso será chamada de variável global.
tone(pino, frequencia, duração): função que gera um sinal de onda quadrada com frequencia específica
sizeof(variável): operador que retorna o número de bytes ocupado na memória por uma variável ou array
PROJETO ALTO FALANTECONHECENDO MAIS RECURSO
Estrutura de repetição “for”: faz o bloco de comandos seja repetido conforme a condição e o incremento especificado. Ela possui três parâmetros: a inicialização da variável de controle, uma condição e um incremento.
for(inicialização; condição; incremento)
for (int x = 1; x <= 10; x++)
Exemplos:
Inicializa com x valendo 1
Incremento de 1 unidade na variável x
Repete até o valor de x = 10
for (int x = 2; x <= 100; x+=2)
Inicializa com x valendo 2
Incremento de 2 unidades na variável x
Repete até o valor de x = 100
PROJETO ALTO FALANTECONHECENDO MAIS RECURSO
Estrutura de seleção “if.....else”: realiza um desvio de fluxo de funcionamento do programa, dependendo da condição especificada ser verdadeira ou falsa.
If (condição) {bloco de comando 1
} else {
bloco de comando 2}
Exemplo:
If (a != 10) {// realiza esse bloco de comando se a diferente de 10
else {// realiza esse bloco de comando se a igual 10
}
ENTENDENDO MELHOR O PROJETO BUZZER
Objetivo da Programação: usando FOR e IF/ELSE tocar as notas ode[ ] em seqüência durante os tempos correspondentes tempo[ ]*500 ms, ou seja:
Toca a primeira nota ode[0] = E por tempo[0]*500 = 500 ms; Toca a segunda nota ode[1] = E por tempo[1]* 500 = 500msetc.
IFCondição: ode[ i ] 0Satisfeita: Toca nota ode[ i ] Não satisfeita: faz pausa
FOR:Realiza a tarefa de i = 0 até i = número máximo de notas - 1 (*)
exemplo esquemático:
(*) Cada ode[ ] ocupa 2 bytes de memória, então:Número máximo de notas = sizeof ( ode[] ) / 2
Lembre que P = 0