Buscar

Iot - UNIDADE III

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Iot (Wearables) - Programação com Arduino
UNIDADE 3
IDEs e programação de sistemas embarcados
Objetivos
Entender características específicas de software para sistemas embarcados.
TÓPICOS DE ESTUDO
Ambiente de Desenvolvimento Integrado – IDEs
O IDE, do inglês Integrated Development Environment, é um ambiente de desenvolvimento integrado que consiste em um editor de código, um compilador e um depurador. O editor de código é um editor de textos em que o código é escrito, o compilador transforma o código em uma linguagem de máquina que o microcontrolador é capaz de entender e o depurador identifica erros no código.
CARACTERÍSTICAS DO ARDUINO IDE
O software Arduino também é conhecido como Arduino IDE e pode ser adquirido gratuitamente em seu site oficial. Faça o download da última versão para Windows (“Windows ZIP file for non admin install”), conforme indicado na Figura 1.
Ao terminar, descompacte o arquivo. Se quiser você pode mover a pasta para outro local, porém sempre mantenha a estrutura de pastas e subpastas. Dentro dela, existe um arquivo chamado “arduino.exe”. Clique duas vezes nele para executar o programa.
// Sketch
Softwares escritos usando Arduino são chamados de “sketches”, e são escritos no editor de textos da IDE do Arduino e salvos com a extensão de arquivo “.ino”.
O editor tem funções comuns a todos os editores, como cortar, colar, buscar, substituir texto, etc. A área de mensagens exibe informações (feedback, erros, uso de recursos, etc.), e o canto direito inferior da janela exibe informações sobre a placa. Os botões da barra de ferramentas permitem que você verifique, carregue, crie, abra e salve sketches. Observe os ícones de cada função:
// Verificar
Verifica possíveis erros no código. 
// Carregar
Compila o código e carrega para o microcontrolador da placa Arduino. 
// Novo
Cria um novo sketch. 
// Abrir
Exibe um menu de todos os sketches existentes. 
// Salvar
Salva o sketch. 
// Configuração da placa Arduino
Em “Ferramentas”, selecione a placa, conforme indicado na Figura 3.
// Configuração da porta de comunicação
Feche o software Arduino e conecte o cabo USB na placa Arduino e na porta USB do computador ou notebook. O LED indicativo de alimentação da placa Arduino acenderá e o Windows detectará automaticamente o driver, criando uma nova porta de comunicação. Caso o Windows não consiga detectá-lo, dispense a ajuda do assistente e siga os passos abaixo:
1. Abra o painel de controle do Windows, navegue até Sistema e Segurança, selecione “Hardware” e depois clique em “Gerenciador de Dispositivos”.
2. Procure por Portas (COM & LPT), verifique a opção Arduino (COMxx).
3. Clique com o botão direito do mouse em Arduino (COMxx) e escolha a opção “Atualizar Driver”, instalando de uma lista ou local específico.
4. Finalmente navegue e escolha o driver “arduino.inf” localizado na pasta drivers do software do Arduino que você baixou no seu computador.
5. O Windows vai finalizar a instalação do driver a partir deste ponto.
Execute novamente o software Arduino e selecione a porta, como na Figura 4:
EXPLICANDO
Dependendo dos dispositivos em uso, as portas identificadas no seu computador podem ser diferentes das portas COM1, COM2 e COM3.
O software Arduino dispõe de vários arquivos de exemplo, e usaremos o “blink” (Arquivos, Exemplos, Basics, Blink) para testá-lo. Esse programa, quando carregado, fará o LED de testes que está ligado diretamente ao pino 13 da placa Arduino piscar a cada um segundo. Neste tópico, não vamos nos preocupar em entender o código, e sim a configuração da placa e do software Arduino (Figura 5).
Para finalizar, clique no botão "Carregar”, conforme indicado na Figura 6, e espere alguns segundos. Após o upload terminar, o LED da placa irá piscar a cada um segundo.
DICA
Para instalar o Arduino no Linux ou no MAC, consulte a documentação oficial que está disponível no site do produto. 
LINGUAGENS DE PROGRAMAÇÃO
Uma linguagem de programação é uma espécie de idioma artificial desenvolvido para expressar instruções e operações que podem ser executadas por máquinas. A linguagem tem uma sintaxe própria, que é formada por um conjunto de símbolos e regras que definem sua estrutura e o significado de seus elementos e expressões.
// Linguagem de máquina (baixo nível)
São códigos diretamente interpretados pelo microprocessador de um computador ou um microcontrolador como o Arduino. A linguagem de máquina trabalha com dois níveis de tensão. Tais níveis, por abstração, são simbolizados pelo zero (0) e pelo um (1), também conhecido como sistema binário.
// Linguagem de alto nível
Linguagem de alto nível é como conhecemos as linguagens de programação, que estão longe da linguagem de máquina e mais próximas da linguagem humana. Desse modo, as linguagens de alto nível não estão diretamente relacionadas à arquitetura do computador, e o programador desse tipo de linguagem não precisa conhecer características da unidade central de processamento, como instruções e registradores, por exemplo, para desenvolver os programas. Essas características são abstraídas na linguagem de alto nível.
// Compilar
Os programas são compilados para serem executados diretamente pelo microcontrolador do sistema embarcado. Compilar significa traduzir uma linguagem que o ser humano consegue compreender para uma linguagem que a máquina entenda e consiga executar.
Programação de sistemas embarcados
Para programar um sistema embarcado, normalmente usamos linguagens de programação de uso geral, por exemplo:
· Assembly;
· Linguagem C / C++;
· Python;
· Java.
Alguns fabricantes podem usar linguagens específicas para programar um sistema embarcado, como por exemplo a empresa LEGO, que usa a linguagem visual NXT-G para programação do kit de robótica LEGO Mindstorms (Figura 7).
// Linguagem de programação Arduino
A linguagem de programação Arduino é baseada em C/C++, e seus principais elementos são:
· Sketch;
· Variáveis;
· Operadores;
· Estruturas de controle;
· Funções.
SKETCH
No software Arduino, nós podemos separar o sketch (código) em quatro seções, de acordo com a Figura 8.
EXPLICANDO
As estruturas “setup()” e “loop()” (segunda e terceira seções) devem estar presentes em todos os programas Arduino.
VARIÁVEIS
Na programação, utilizamos as variáveis para armazenar dados na memória. Estes dados podem ser alterados de acordo com o tempo, como por exemplo o armazenamento do valor de um sensor de temperatura.
DICA
Boas práticas para nomear variáveis nas linguagens de programação:
// Todos os nomes diferenciam letras maiúsculas de minúsculas;
// O nome deve começar com uma letra minúscula;
// Não usar caracteres especiais nem deixar espaços;
// Não usar palavras-chave ou exclusivas da linguagem de programação;
// Definir nomes que descrevam o tipo de informação que as variáveis irão armazenar;
Se o nome da variável for composto por mais de uma palavra, use uma letra maiúscula no início da segunda. Isso é conhecido como camel case, ou notação do camelo. Exemplo:
“sensorCalor” em vez de “sensor de calor”.
// Tipos de dados
Basicamente temos três tipos de dados que podem ser armazenados nas variáveis:
1. String (consiste em letras e outros caracteres);2
2. Numérico (lida com números inteiros e reais);3
3. Booleano (verdadeiro ou falso).
OPERADORES
Os operadores são usados junto com as variáveis para processar as informações, e podem ser lógicos, de comparação e aritméticos.
// Operadores lógicos
O tipo de dado lógico é chamado de booleano, e só pode assumir dois valores: verdadeiro (true) ou falso (false).
Na programação, dispomos de três operadores lógicos:
· 1 AND;
· 2 OR;
· 3 NOT.
// Operador lógico AND
No operador lógico AND, que na linguagem Arduino é representado por “&&”, a saída só será verdadeira se todas as condições de entrada também forem. A Tabela 1 ilustra esse operador:
// Operador lógico OR
No operador lógico OR, que na linguagem Arduino é representado por “||”, a saída será verdadeira se uma das condições de entrada for verdadeira, como ilustra a Tabela 2:
// Operador lógico NOTNo operador lógico NOT, que na linguagem Arduino é representado por “!”, a saída será contrária a entrada, como ilustrado pela Tabela 3:
// Operadores de comparação
São usados para comparar valores dentro de uma estrutura (Tabela 4).
// Operadores aritméticos
Aplicam-se no uso das variáveis (Tabela 5).
// Tipos de dados do software Arduino
No Arduino, devemos atribuir o tipo de variável de acordo com os valores que serão armazenados.
// Tipo “int”
Para armazenar valores inteiros, utilizamos o tipo “int”, com a qual conseguimos armazenar números dentre -32.768 a 32.767. Existem várias maneiras de iniciar uma variável no Arduino. A Figura 9 mostra alguns deles:
// Tipo “float”
// Tipo “char”
O tipo “char” é utilizado para armazenar um caractere, e com ele podemos armazenar símbolos do teclado segundo a tabela ASCII (Figura 11).
// Tipo “bool”
Variáveis do tipo booleanas (Figura 12) têm apenas duas condições (true ou false).
// Array
Array ou vetor é uma forma especial de trabalhar com as variáveis, na qual criamos uma lista indexada para armazenar os dados, e pode ser simples ou multidimensional (também conhecido como matriz). A Figura 13 exibe um exemplo de array simples e um exemplo de array multidimensional.
ESTRUTURAS DE CONTROLE
Estruturas de controle são blocos de programação que analisam os tipos de dados armazenados nas variáveis, a partir de uma direção baseada nos parâmetros pré-definidos. As estruturas de controle são processos básicos de tomada de decisões das máquinas.
Existem dois tipos de estruturas de controle:
· Estruturas de Controle Condicional;
· Estruturas de Repetições.
Estruturas de Controle Condicional utilizam...
// if…else
O comando “if” checa uma condição e executa o comando a seguir ou um bloco de comandos delimitados por chaves, se a condição for verdadeira. Usando o comando “else” junto com o comando “if”, se a condição for falsa, ele executará o comando ou comandos delimitados por chaves dentro do “else”. O “else” também pode proceder outro teste “if”, de forma que vários testes podem ser executados ao mesmo tempo. Nesse caso, cada teste procederá para o próximo até que um teste que resulte em verdadeiro seja encontrado, e, nesse caso, a estrutura é finalizada ignorando as demais condições. Caso nenhum teste resulte em verdadeiro, o comando “else” final é executado, se estiver presente. Um bloco “else if” pode ser usado com ou sem um comando “else” no final, e um número praticamente ilimitado de blocos “else if” encadeados é permitido.
// Sintaxe “if”
if (condição) {
//comando(s) (condição verdadeira)
}
// Sintaxe “if…else”
if (condição) {
//comando(s) (condição verdadeira)
} else {
//comando(s) (condição falsa)
}
// Sintaxe “else if”
if (condição 1) {
//comando(s) (condição 1 verdadeira)
} else if (condição 2) {
//comando(s) (condição 2 verdadeira)
} else if (condição 3) {
//comando(s) (condição 2 verdadeira)
} else {
//comando(s) (caso nenhuma condição seja verdadeira)
}
// Switch…case
Da mesma forma que o comando “if”, o comando “switch case” controla o fluxo do programa permitindo ao programador especificar um código diferente para ser executado em várias condições. O comando “switch” compara o valor de um dado de uma variável aos valores especificados nos comandos “case”. Quando um comando case é encontrado cujo valor é igual ao da variável, o código para esse comando “case” é executado. A palavra-chave “break” interrompe o comando “switch”, e é tipicamente usada no final de cada “case”. O comando “default” é executado se nenhum caso for igual ao da variável. Na sintaxe descrita abaixo ‘var’ é uma variável do tipo inteiro que será comparada aos vários casos. Os tipos permitidos são “int”‘e “char”.
// Sintaxe: “switch…case”
switch (var) {
case 1:
//comando(s)
break;
case 2:
//comando(s)
break;
default:
//comando(s)
break;
}
// Estruturas de repetições
As estruturas de repetições, que também são conhecidas como laços, são utilizadas para executar ações repetidamente enquanto uma determinada condição for verdadeira. Utilizamos os comandos “for”, “while” e “do while” para criar os laços de repetições.
// for
O comando “for” é uma estrutura de repetição usada para repetir um bloco de código envolvido por chaves, e um contador de incremento ou decremento é utilizado para terminar o loop. A inicialização ocorre primeiro e apenas uma vez, e, a cada repetição do loop, a condição é testada. Quando for verdadeira, o bloco de comandos e o incremento ou decremento são executados, enquanto que, quando for falsa, o loop termina.
// Sintaxe “for”
for (inicialização; condição; incremento) {
//comando(s)
}
// while
O comando “while” se repetirá infinitamente enquanto a condição dentro dos parênteses () for verdadeira. Algo deve mudar a condição, ou o loop formado pelo comando “while” nunca se encerrará.
// Sintaxe “while”
while (condição) {
//comando(s)
}
// do…while
O comando “do…while” funciona da mesma forma que o comando “while”, com a exceção de a condição ser testada no final do loop.
// Sintaxe “do…while”
do {
//comando(s)
} while (condição);
FUNÇÕES
Funções são blocos de código que podem ser reutilizados. Na linguagem Arduino, temos funções para controle da placa, funções temporizadoras, funções matemáticas e também podemos criar funções personalizadas (Figura 20).
ENTRADAS E SAÍDAS DIGITAIS
No Arduino, os pinos digitais podem ser usados como entradas ou saídas. Para configurar estes pinos usamos as funções “pinMode()”, “digitalWrite()” e “digitalRead()”.
// pinMode()
Configura o pino especificado para funcionar como uma entrada ou saída.
// Sintaxe “pinMode()”
pinMode(pino, modo);
// digitalWrite()
Envia um valor HIGH ou LOW em um pino digital.
// Sintaxe “digitalWrite()”
digitalWrite(pino, valor);
// digitalRead()
Faz a leitura de um pino digital (“HIGH” ou “LOW”).
// Sintaxe “digitalRead()”
digitalRead(pino);
// Analógicas
No Arduino, temos a possibilidade de usar alguns pinos digitais identificados como PWM para “escrever” valores analógicos, além de seis pinos de entrada analógica. Usamos as funções “analogRead()” e “analogWrite()” para ler e escrever valores analógicos no Arduino.
// analogRead()
Faz a leitura dos pinos analógicos do Arduino usando uma tensão de referência (AREF). Por padrão, os valores de leitura variam de 0 a 1023.
// Sintaxe “analogRead()”
analogRead(pino);
// analogWrite()
Adiciona PWM (do inglês Pulse Width Modulation) a um pino digital. PWM cria uma onda quadrada alternando os ciclos (HIGH e LOW) em uma determinada frequência. Podemos, por exemplo, usar PWM para controlar a velocidade de um motor de corrente contínua sem perder o torque. Os valores variam de 0 a 255.
// Sintaxe “analogWrite()”
analogWrite(pino, valor);
BIBLIOTECAS
O software Arduino pode ser estendido através da utilização de bibliotecas, que são códigos prontos que fornecem funcionalidades extras para uso em sketches. Por exemplo, podemos usar bibliotecas para trabalhar com sensores, servo motor, etc. Junto com a IDE Arduino, temos algumas bibliotecas pré-instaladas, mas você também pode fazer download de uma biblioteca específica ou ainda criar a sua própria.
Para usar uma biblioteca específica em um sketch, selecione no menu principal “sketch”, em seguida selecione a opção “Incluir Biblioteca” e depois a opção “Gerenciador de bibliotecas” (Figura 25).
Dentro da programação, você inclui as funcionalidades de uma biblioteca a partir do comando:
· include <Biblioteca.h>
// Hello World Arduino
Quando você está iniciando no mundo da programação, o primeiro código que você escreve exibe o texto “Hello World” na tela do computador. No Arduino, esse código consiste em fazer piscar o LED conectado ao pino 13 da sua placa.
DICA
Para exibir os números das linhas na IDE Arduino, selecione no menu principal “Arquivo”, depois “Preferências” e marque a caixa “Mostrar número de linhas”, clicando depois no botão “OK”.
// Análise do código “Hello World” 
Confira a Figura 27 a seguir e a descrição do que cada linha representa nela.
· Linhas1 a 4: Na linguagem Arduino, /* */ e // são utilizados para acrescentar comentários no código, sendo muito útil para documentar o projeto, explicar um pedaço do código, etc. Um comentário não é compilado pelo software Arduino.
· Linha 7: Dentro da estrutura “setup()”, a linha 7 configura o pino 13 da placa Arduino como saída através da função “pinMode()”.
· Linhas 11 a 14: Dentro da estrutura “loop()”, o LED é aceso e apagado usando a função “digitalWrite()”. Entre acender e apagar o LED, é necessário gerar um tempo de espera suficiente para que uma pessoa consiga ver o LED piscar. A função delay() informa ao Arduino para “esperar” 1000 milissegundos entre acender e apagar o LED, que, no final, irá piscar a cada segundo, infinitamente.
DICA
Quando você está programando com o software Arduino, muitas das palavras que você escreve são reservadas para a linguagem. A IDE destaca estas palavras com uma cor diferente, e é uma dica para verificar se estão escritas de forma correta.
Interaja com a dinâmica abaixo:
SINTETIZANDO
Nesta unidade, nós estudamos as características específicas do software para o desenvolvimento de sistemas embarcados usando a plataforma Arduino. O software Arduino é baseado na linguagem C/C++, onde é necessário especificar os tipos de dados que serão armazenados nas variáveis.
Aprendemos também que as estruturas de controle são usadas em tomadas de decisões, além de termos estudado as funções e bibliotecas.
Os detalhes vistos nesta unidade com relação à programação formam uma base sólida para o desenvolvimento de projetos de sistemas embarcados usando a plataforma Arduino.

Continue navegando