February 20, 2017 | Author: Rayane Aparecida Guimaraes | Category: N/A
Arduino – Módulo 1 COORDENADOR: Prof. Carlos Renato Borges dos Santos
Versão 3.0
ETAPAS DO CURSO COMPLETO Módulo 1 – Programando o Arduino 16 horas
Módulo 2 – Sistemas de Interface Mais de 20 horas
2
IFMG-Campus Formiga
26/08/2013
Contatos
[email protected]
[email protected] www.santoscrb.com
3
Arduino – Módulo 1
26/08/2013
Conteúdo programático Módulo 1 – Programando o Arduino
4
IFMG-Campus Formiga
26/08/2013
Ao final do curso, será capaz de: Desenvolver aplicações básicas com o Arduino e pequenos
5
acionamentos; Ler sinais de sensores que funcionam entre 0 e 5 V; Gravar dados na memória não-volátil; Desenvolver protocolos de comunicação sem verificações complexas dos dados; Controlar servomotores, motores de passo e motores de corrente contínua (apenas o controle, a parte de potência será ministrada no módulo 2); Entender o processo de interrupções; Conhecer alguns componentes eletrônicos.
IFMG-Campus Formiga
26/08/2013
Conteúdo programático Aula 1
O que é Arduino Tipos de Arduino A placa eletrônica Vantagens do Arduino Apresentação do programa Notas: Avaliação: 40% da nota Projetos: 60% da nota
Aula 2 Conceitos de bit, Byte, Word. Tipos de variáveis do Arduino. Manipulação de dados de diversos tipos em C
6
IFMG-Campus Formiga
26/08/2013
Conteúdo programático Aula 3 Revisão sobre programação em C. Declaração de variáveis e ponteiros Condicionais: If While For Do ...While Switch Struct Union
7
IFMG-Campus Formiga
26/08/2013
Conteúdo programático Aula 4 O IDE do Arduino. Verificação Compilação Pinos de IO Exemplo Pisca-Pisca Exemplo push button Alimentação do Arduino Cálculo de potência dos dispositivos Dimensionamento de corrente de LEDs Princípio de funcionamento de um motor de passo PROJETO 1 – ACIONAMENTO DE LEDS ATRAVÉS DE PUSH-BUTTONS PROJETO 2 – CONTROLE DE UM MOTOR DE PASSO EM 2 SENTIDOS 8
IFMG-Campus Formiga
26/08/2013
Conteúdo programático Aula 5 VERIFICAÇÃO DOS PROJETOS 1 E 2 Apresentação de vídeos e links interessantes
Aula 6 Conversão Analógico digital Exercícios
Aula 7 PWM
Aula 8 PROJETO 3 – CONTROLE DE VELOCIDADE DE UM MOTOR
CC ATRAVÉS DE UM POTENCIÔMETRO PROJETO 4 – SEGUIDOR SOLAR 9
IFMG-Campus Formiga
26/08/2013
Conteúdo programático Aula 9 Comunicação serial
Aula 10 Desenvolvimento de protocolos de comunicação serial
Aula 11 PROJETO 5 – CONTROLE DE UM MOTOR DE CC E DE
MOTOR DE PASSO POR MEIO DA SERIAL Aula 12 PROJETO 6 – ESTAÇÃO DE MEDIÇÃO COM ENVIO DE
DADOS PELA SERIAL 10
IFMG-Campus Formiga
26/08/2013
Conteúdo programático Aula 13 Memórias SRAM FLASH EEPROM
Aula 14 Gravando e recuperando dados na EEPROM
Aula 15 Servomotor PROJETO 7 – SEGUIDOR SOLAR COM ARMAZENAMENTO E
ENVIO DE DADOS DE POSIÇÃO PELA PORTA SERIAL
Aula 16 Avaliação do curso e avaliação teórica
11
IFMG-Campus Formiga
26/08/2013
Livros sobre Arduino
12
Arduino – Módulo 1
26/08/2013
Bibliografia 1- Site www.arduino.cc
2- McRoberts, Michael. Arduino básico. Editora NovaTec. 3- Ronald J. Tocci e Neal S. Widmer. Sistemas Digitais:
13
Princípios e Aplicações. 4- Banz, Massimo. Primeiros passos com o Arduino. 5- 30 Arduino Projects for the evil genius 6- Arduino CookBook, 2nd edition 7-http://renatoaloi.blogspot.com 8- Fábio Pereira. Microcontroladores PIC Programação em C. Editora Érica.
IFMG-Campus Formiga
26/08/2013
Motivações http://globotv.globo.com/rede-globo/jornal-
14
nacional/v/alunos-do-engenharia-do-rio-vencem-maiorcampeonato-de-robotica-do-mundo/2547531/ http://www.youtube.com/watch?v=UUbdSjEvsdw http://www.youtube.com/watch?v=fvsTzFnfgiI http://www.youtube.com/watch?v=5XDXyJTNFu4 http://www.youtube.com/watch?v=JWqFH0roIUI
Arduino – Módulo 1
26/08/2013
1-Apresentação Módulo 1 – Programando no Arduino
O que é Arduino
16
IFMG-Campus Formiga
26/08/2013
O que é Arduino É uma 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, na qual é essencialmente C/C++. O projeto iniciou-se na Itália, em 2005, com o intuito de interagir em projetos escolares.
17
IFMG-Campus Formiga
26/08/2013
O que é Arduino
18
IFMG-Campus Formiga
26/08/2013
O que é Arduino O Arduino IDE é uma aplicação multiplataforma
escrita em Java. Inclui um editor de código, compilador e carrega programas para a placa com um único clique. Com isso não há a necessidade de editar Makefiles ou rodar programas em ambientes de linha de comando.
19
IFMG-Campus Formiga
26/08/2013
O que é Arduino Linguagem do Arduino void setup() { //Comandos de //inicialização } void loop() { //Instruções repetidas //infinitamente } 20
Arduino – Módulo 1
Linguagem C void main() { //void setup while(1) { //void loop
}
} 26/08/2013
Tipos de Arduino
21
IFMG-Campus Formiga
26/08/2013
Tipos de Arduino
22
IFMG-Campus Formiga
26/08/2013
Tipos de Arduino
23
IFMG-Campus Formiga
26/08/2013
Tipos de Arduino
24
IFMG-Campus Formiga
26/08/2013
A placa eletrônica
25
IFMG-Campus Formiga
26/08/2013
A placa eletrônica
26
IFMG-Campus Formiga
26/08/2013
A placa eletrônica
27
IFMG-Campus Formiga
26/08/2013
Vantagens do Arduino
28
IFMG-Campus Formiga
26/08/2013
Vantagens do Arduino Vantagens Alimentação: Pode ser alimentado pela USB Total compatibilidade entre o IDE e a placa, não sendo necessárias configurações complexas Não precisa de alimentação externa Preço, se comparado a um kit com microcontrolador PIC, 8051 ou outro 29
IFMG-Campus Formiga
Desvantagens Não simula em
computador (ainda não encontrei) Nem todas as portas possuem um LED integrado à plataforma. Ao sair do estado de protótipo deve-se fazer adequações 26/08/2013
Kit PIC Kit PIC Alimentação externa
30
IFMG-Campus Formiga
(127/220V) Não inclui compilador (MikroC, CCS) Não inclui simulador (Proteus) Utiliza MPLAB Preço: R$ 600,00 26/08/2013
Comparação Arduino
PIC / 8051
Abrir software Arduino
Selecionar o Arduino
Abrir arquivo Cabo USB Plugar o Arduino Compilar
31
IFMG-Campus Formiga
Abrir software de edição em C Criar uma pasta e nomear o projeto Configurar fusíveis Abrir biblioteca de exemplos, copiar exemplo Configurar registradores dos periféricos Certificar se é o PIC, ex: 18F4550 Kit + Fonte de alimentação + cabo USB + gravador + cabo RJ Compilar Abrir o MPLAB para gravação Encontrar o arquivo .HEX Clicar em Play
26/08/2013
Apresentação do programa Notas: 50% - avaliação escrita 50% - projetos
32
IFMG-Campus Formiga
26/08/2013
2-Conceitos básicas Módulo 1 – Programando no Arduino
PARTE 1 – Noções de software Conceitos de bit, Byte, Word.
Códigos ASCII, Binário, BCD, Hexadecimal. Revisão sobre programação em C. Tipos de variáveis. O IDE do Arduino.
34
IFMG-Campus Formiga
26/08/2013
Conceitos de bit, Byte e Word
35
IFMG-Campus Formiga
26/08/2013
Conceitos de bit, byte e word Bit – É um registrador ou variável que armazena o valor 0 ou
1. Uma variável do tipo bit é usada para testes lógicos dos tipos: verdadeiro ou falso. Byte – É um conjunto de 8 bits. Usado para armazenar valores de 0 a 255 (sem sinal) ou de -128 a +127 (com sinal) Word – É um conjunto de 16 bits. Armazena valores de 0 a 65535 ou -32768 a 32767
36
IFMG-Campus Formiga
26/08/2013
Sistemas de codificação
37
IFMG-Campus Formiga
26/08/2013
ASCII – 0 a 127
38
IFMG-Campus Formiga
26/08/2013
ASCII – 128 a 255
39
IFMG-Campus Formiga
26/08/2013
Hexadecimal – binário - decimal
40
IFMG-Campus Formiga
26/08/2013
Codificação BCD
RTC DS1307 Usa codificação BCD
41
IFMG-Campus Formiga
26/08/2013
Sistemas de codificação Exercício 1 Represente os valores a seguir em registradores de 8
bits: A) 20 (decimal) -> B) 0 (ASCII) -> C) 45 (hexadecimal) ->
D) 10110 (binário) -> E) 7E (hexadecimal) -> F) 64 (bcd) -> 42
IFMG-Campus Formiga
26/08/2013
Sistemas de codificação Exercício 2 Dados os bits, o que eles representariam se estivessem
em: ASCII, hexadecimal, BCD e decimal: ( A) 10010100 -> B) 01010101 -> C) 11110000 ->
D) 10110111 -> E) 00111010 -> F) 1101010110101001 -> 43
IFMG-Campus Formiga
26/08/2013
Sistemas de codificação Exercício 3 O RTC 1307 armazena a seguinte data: 26/12/13. Como serão preenchidos os seguintes registradores: dia, mês, ano?
44
Arduino – Módulo 1
26/08/2013
Tipos de variáveis do Arduino
45
IFMG-Campus Formiga
26/08/2013
Tipos de variáveis do Arduino boolean char (-128 a 127) unsigned char (0 a 255) byte (0 a 255) int (-32.768 a 32.767) unsigned int (0 a 65535) word (0 a 65535) long [32 bits (4 bytes), de 2.147.483.648 a 2.147.483.647] unsigned long (0 a 4.294.967.295)
46
IFMG-Campus Formiga
Float (-3.4028235E+38 a
3.4028235E+38 stored as 32 bits) Double (On the Arduino Due, doubles have 8-byte (64 bit) precision) string - char array string - object array
http://arduino.cc/en/Refer
ence/HomePage
26/08/2013
Manipulação de dados de diversos tipos em C
47
IFMG-Campus Formiga
26/08/2013
Manipulação de dados de diversos tipos em C Dicas sobre o uso de variáveis Como o processador é de 8 bits, evite usar variáveis longas,
isso poupará memória e aumentará a velocidade de cálculo. Prefira usar variáveis inteiras de 8 e 16 bits, evitando variáveis com ponto flutuante.
48
IFMG-Campus Formiga
26/08/2013
Manipulação de dados de diversos tipos em C char Sinal (+) 0 (-) 1
unsigned char
49
IFMG-Campus Formiga
26/08/2013
Manipulação de dados de diversos tipos em C
50
IFMG-Campus Formiga
26/08/2013
Manipulação de dados de diversos tipos em C Registrador A (8 bits)
98 + 78 ----
Carry (operação anterior)
Carry (1 bit)
ULA
Resultado (8 bits)
Registrador B ( 8 bits) 51
IFMG-Campus Formiga
26/08/2013
Manipulação de dados de diversos tipos em C O que acontece com os valores armazenados
quando: Bit = byte ......Arduino? Bit = word ......Arduino? Byte = bit ......Arduino: recebe 0 ou 1 Byte = word ......Arduino: recebe-se o byte menos significativo word = bit ...... Arduino: recebe 0 ou 1 word = byte ....... Arduino: recebe o valor
52
IFMG-Campus Formiga
26/08/2013
Valores em decimal, hexa e binário X = 0x10; // x recebe o valor 10h (16 decimal)
Y = 10; // y recebe 10 decimal Z = 0b10; // z recebe 10b (2 decimal)
53
Arduino – Módulo 1
26/08/2013
Operações com variáveis Calcule o resultado das variáveis após as seguintes
operações:
unsigned int calc = 2000;
unsigned char x, y, z; x = calc; //x=208 y = 400; //y=144 z = x + y; //z = 96 Ver Exemplo1 54
Arduino – Módulo 1
26/08/2013
Ponteiros unsigned int x[5];
unsigned int *ponteiro; for(char i = 0;i2
Canal: 118
A0 A1 A2 A3 A4 A5
IFMG-Campus Formiga
26/08/2013
Exemplo de leitura AD
119
IFMG-Campus Formiga
26/08/2013
Exemplo: seguidor de linha
120
IFMG-Campus Formiga
26/08/2013
Links interessantes http://www.sucatapontotec.netai.net/projeto-003-robo-
arduino-seguidor-de-linha/ http://www.pessoal.utfpr.edu.br/msergio/Monog-09-2Seguidor-de-linha.pdf http://www.tur.eletrica.ufu.br/doc/regulamentoIITUR.pd f
121
Arduino – Módulo 1
26/08/2013
Cuidado! Nunca ligue diretamente algum dispositivo no canal AD que
tenha alguma possibilidade de atingir valores acima de 5V
122
Arduino – Módulo 1
26/08/2013
7-Hardware interno [2] Módulo 1 – Programando no Arduino
PWM (conversão digital-analógico)
124
IFMG-Campus Formiga
26/08/2013
PWM Usado para controle de tensão por chaveamento em alta
frequência. Dentre sua utilização, encontram-se: Controle de velocidade de motor DC;
Servomotores; Controle de iluminação.
125
IFMG-Campus Formiga
26/08/2013
PWM
126
IFMG-Campus Formiga
26/08/2013
PWM analogWrite(Porta, variável); Porta: configurada como saída. Variável: Valor 8 bits sem sinal (0 a 255).
127
IFMG-Campus Formiga
26/08/2013
PWM
128
IFMG-Campus Formiga
26/08/2013
Serial – Parte 1 Comandos básicos: Void setup() Serial.begin(9600); Void loop() Serial.print(“Texto”); Serial.print(x); Serial.println(x); Serial.write(‘a’); Serial.write(x);//x tipo char
129
Arduino – Módulo 1
26/08/2013
8-Projetos Módulo 1 – Programando no Arduino
PROJETO 3
131
IFMG-Campus Formiga
26/08/2013
Potenciômetro
132
Arduino – Módulo 1
26/08/2013
CONTROLE DE UM MOTOR CC ATRAVÉS DE UM POTENCIÔMETRO A) DESCRIÇÃO: Elaborar um algoritmo que leia um canal
AD e envie o sinal lido para o PWM. B) DESCRIÇÃO: Elaborar um algoritmo que leia um canal AD e varie lentamente o sinal PWM até atingir o valor configurado. Para isso, é necessário comparar o sinal lido no AD com o sinal do PWM.
133
IFMG-Campus Formiga
26/08/2013
PROJETO 4
134
IFMG-Campus Formiga
26/08/2013
LDR
135
Arduino – Módulo 1
26/08/2013
PROJETO DE UM SEGUIDOR SOLAR Construir um seguidor solar guiado por motor de passo e
LDR. O circuito deverá “varrer” um raio de 180 graus, armazenar o ângulo de maior intensidade luminosa e, quando terminar, ir em direção ao ponto de maior intensidade.
136
Arduino – Módulo 1
26/08/2013
9-Noções sobre a Serial Módulo 1 – Programando no Arduino
Comunicação serial
138
IFMG-Campus Formiga
26/08/2013
Comunicação serial O envio de dados
Taxas de transmissão Padrão TTL e RS-232 Enviando dados Recebendo dados Criando um protocolo de transmissão (byte a byte)
139
IFMG-Campus Formiga
26/08/2013
Comunicação serial
140
IFMG-Campus Formiga
26/08/2013
141
Arduino – Módulo 1
26/08/2013
142
Arduino – Módulo 1
26/08/2013
143
Arduino – Módulo 1
26/08/2013
Comunicação serial
144
IFMG-Campus Formiga
26/08/2013
145
Arduino – Módulo 1
26/08/2013
146
Arduino – Módulo 1
26/08/2013
147
Arduino – Módulo 1
26/08/2013
148
Arduino – Módulo 1
26/08/2013
149
Arduino – Módulo 1
26/08/2013
150
Arduino – Módulo 1
26/08/2013
151
Arduino – Módulo 1
26/08/2013
152
Arduino – Módulo 1
26/08/2013
153
Arduino – Módulo 1
26/08/2013
154
Arduino – Módulo 1
26/08/2013
Padrão TTL 1 – – – – – – ( 5V )
0 – – – – – – ( 0V )
A IDE do Arduino cria uma COM virtual a partir de uma
porta USB. 155
Arduino – Módulo 1
26/08/2013
Padrão TTL
156
Arduino – Módulo 1
26/08/2013
RS 232 1 – – – – – – ( -15V )
0 – – – – – – ( +15V )
Nunca ligue um microcontrolador ou Arduino diretamente à
porta serial! É preciso um conversor MAX 232 157
IFMG-Campus Formiga
26/08/2013
RS 232
158
Arduino – Módulo 1
26/08/2013
RS 232 RS 232 - RS 232
159
Arduino – Módulo 1
Conversor TTL - RS 232
26/08/2013
Interface serial RS232
160
IFMG-Campus Formiga
26/08/2013
baud rate
161
Arduino – Módulo 1
26/08/2013
Comunicação serial Comandos básicos: Serial.begin(taxa_de_transimissao);
Serial.available();
Serial.read(); Serial.write(byte);
162
IFMG-Campus Formiga
26/08/2013
Comunicação serial
Ver exemplo 6
163
IFMG-Campus Formiga
26/08/2013
10-Protocolos de comunicação Módulo 1 – Programando no Arduino
Desenvolvimento de protocolos de comunicação
165
IFMG-Campus Formiga
26/08/2013
Ver exemplo 7
166
IFMG-Campus Formiga
26/08/2013
11-Projeto Módulo 1 – Programando no Arduino
PROJETO 4
168
IFMG-Campus Formiga
26/08/2013
CONTROLE DE UM MOTOR DE CC E DE MOTOR DE PASSO POR MEIO DA SERIAL
DESCRIÇÃO: Desenvolver um algoritmo que receba um
comando que controle a velocidade de um motor de CC e comande também um motor de passo.
169
IFMG-Campus Formiga
26/08/2013
12-Projeto Módulo 1 – Programando no Arduino
PROJETO 4
171
IFMG-Campus Formiga
26/08/2013
13-Hardware interno [3] Módulo 1 – Programando no Arduino
Memórias
173
IFMG-Campus Formiga
26/08/2013
Memórias O arduino UNO: SRAM: 2kB EEPROM: 1 kB FLASH: 32 kB SRAM
Mega2560 SRAM: 8kB EEPROM: 4kB
FLASH
Processador
FLASH: 256 kB EEPROM
174
IFMG-Campus Formiga
26/08/2013
Memórias Fazer um algoritmo que grave um vetor de dados de
quantidade indeterminada (algo está sendo lido)
175
IFMG-Campus Formiga
26/08/2013
14-Mais sobre EEPROM Módulo 1 – Programando no Arduino
Gravando e recuperando dados na EEPROM
177
IFMG-Campus Formiga
26/08/2013
Gravando e recuperando dados de 8 e de 16 bits na EEPROM DESCRIÇÃO: Fazer um algoritmo que grave dados de 8 e de
16 bits na EEPROM. Ver exemplo 9
178
IFMG-Campus Formiga
26/08/2013
15-Servomotor Módulo 1 – Programando no Arduino
Servomotor
180
IFMG-Campus Formiga
26/08/2013
Servomotor Alimentação: de 4,5 a 6V Comando: #include Servo servo1; // Cria um objeto servo void setup() { servo1.attach(5); // Anexa o servo (físico), no pino 5, ao objeto servo (lógico) }
void loop() { int angle = analogRead(0); // Lê o valor do potenciômetro angle=map(angle, 0, 1023, 0, 180); // Mapeia os valores de 0 a 180 graus servo1.write(angle); // Escreve o ângulo para o servo delay(15); // Espera de 15ms, para permitir que o servo atinja a posição
} 181
Arduino – Módulo 1
26/08/2013
Ver exemplo 10
182
Arduino – Módulo 1
26/08/2013
PROJETO 7 SEGUIDOR SOLAR COM ENVIO DE DADOS DE POSIÇÃO PELA PORTA SERIAL
183
IFMG-Campus Formiga
26/08/2013
16-LCD
184
IFMG-Campus Formiga
26/08/2013
Liquid Crystal Display
185
Arduino – Módulo 1
26/08/2013
Pinos do LCD
186
Arduino – Módulo 1
26/08/2013
Conectando ao Arduino
187
Arduino – Módulo 1
26/08/2013
Ver exemplo 11
188
Arduino – Módulo 1
26/08/2013
17-Interrupções
189
IFMG-Campus Formiga
26/08/2013
Interrupções
190
IFMG-Campus Formiga
26/08/2013
Interrupção Usada quando necessita monitorar constantemente eventos
de curta duração A interrupção tem prioridade na execução do programa principal, parando-o para atender à interrupção Após a execução da interrupção, retoma-se o programa
191
Arduino – Módulo 1
26/08/2013
Pinos de interrupção
192
IFMG-Campus Formiga
26/08/2013
Esquema da Interrupção Evento externo
loop()
Interrupção
Programa principal
193
Arduino – Módulo 1
26/08/2013
Ligação no Arduino
194
Arduino – Módulo 1
26/08/2013
Comando e parâmetros
195
Arduino – Módulo 1
26/08/2013
Linha de tempo da interrupção
196
Arduino – Módulo 1
26/08/2013
Modos de operação
197
Arduino – Módulo 1
26/08/2013
Exemplo Ver Exemplo 12
198
Arduino – Módulo 1
26/08/2013
Nota:
199
Arduino – Módulo 1
26/08/2013
PROJETO 8 VERIFICAÇÃO DE NÍVEL DE TENSÃO DA BATERIA COM ENVIO DE DADOS PELA SERIAL
200
IFMG-Campus Formiga
26/08/2013
Projeto 8 100% - 12,72V
90% - 12,48V 80% 12,42V 70% - 12,30V
60% - 12,18V 50% - 12,06V 40% - 11,88V
30% - 11,76V 20% - 11,58V 10% - 11,34V 0% - 10,50V 201
IFMG-Campus Formiga
26/08/2013
17-Avaliação Módulo 1 – Programando no Arduino
AVALIAÇÃO
203
IFMG-Campus Formiga
26/08/2013
Fim do curso – Módulo 1 Coordenador: Carlos Renato Borges dos Santos Voluntário: Silas Martins Sousa
204
IFMG-Campus Formiga
26/08/2013