Texto retirado do meu TCC.
MCRoberts(2011, p.20) cita que desde que o projeto do
Arduino teve inicio em 2005, mais de 150.000 placas Arduino foram vendidas em
todo mundo. Somando com as placas-clones não oficiais o numero supera 500.000
placas Arduino e suas variantes vendidas em todo o mundo, pois se trata de um
projeto de fonte aberta.
De acordo com MCRoberts(2011, p.22-23) em termos
práticos o Arduino é um mini computador que podemos programar para processar
entradas e saídas entre os dispositivos e
os componentes externos conectados a ele (Figura 1, p.12) , é o que chamamos de
plataforma de computação física ou embarcada, ou seja, um sistema que pode
interagir com seu ambiente por meio de hardware e software.
Com ele podemos desenvolver objetos interativos e
independentes, ou podemos conecta-lo a um computador, a uma rede, ou até mesmo
a internet para recuperar e enviar dados do Arduino e atuar sobre eles. Em
outras palavras, ele pode enviar um conjunto de dados recebidos de alguns
sensores para um site, podendo ser exibidos em forma de gráficos em tempo real.
Em busca de conhecimento sobre Arduino encontrei na
internet um software chamado S4A, (Scratch for Arduino), onde instalamos um
firmware no Arduino e através de um cabo USB o software interage com a placa
Arduino e um computador. Montei um jogo simples que lê a temperatura e a
luminosidade através de dois sensores conectados à placa Arduino. O sensor de luminosidade
é o acelerador do “Arduininho” (Figura 2). No ambiente do jogo conforme a luminosidade
aumenta ou diminui a velocidade do personagem varia em direção ao ponteiro do
mouse, e mostra a temperatura em um balão, foi colocado também um botão
conectado ao Arduino que mostra um óculos no cacto quando pressionado e imite
um som através de um autofalante conectado também ao Arduino. Para baixar o software onde foi feito o jogo entre
no site http://s4a.cat/.
Acho de grande valia ter citado este software, pois é
de fácil utilização e interação com o Arduino, conduzindo as pessoas para o
mundo da logica de programação. Podendo até ser utilizado como ferramenta de
aprendizado.
Continuando o assunto, segundo MCRoberts(2011, p.23) o
Arduino pode ser conectado vários tipos de dispositivos: LEDS, botões , motores
sensores de temperatura, pressão, distancia, receptores GPS, módulos ethernet,
bluetooth e uma infinidade de dispositivos que emita dados e possa ser controlado.
O que fez do Arduino um sucesso é a sua facilidade de
uso em conjunto com seus Shields, que são placas de circuito impressas
normalmente fixadas no topo do aparelho através de uma conexão alimentada por
pinos-conectores. São expansões que disponibilizam várias funções específicas,
desde a manipulação de motores até sistemas de rede sem fio.
Para utilização destes Shields, além de conectarmos ao
Arduino temos que incluir a biblioteca do modulo no sketch na IDE do Arduino.
Veja abaixo alguns Shields e o um modulo Bluetooth e suas funções retirados do
site especializado em computação embarcada Arduino, www.robocore.net:
|
Figura 3 - Ethernet Shield
|
Figura 5 - Módulo Bluetooth
|
O Arduino Ethernet Shield (Figura 3) permite que uma
placa Arduino conecte-se a internet. É baseado no chip ethernet da Wiznet
W5100, fornecendo um IP utilizando os protocolos de rede TCP e UDP. Este shield
suporta até quatro comunicações de socket simultâneas. Use a biblioteca
Ethernet para escrever sketches que se conectarão a internet usando este
shield.
Vemos também o shield LCD (Figura 4) muito popular
para Arduino e semelhantes. Ele pode ser ligado diretamente à placa Arduino,
sem necessidade de soldas ou fios. No shield se encontra um display de LCD 16x2
HD44780 Branco no Azul. Juntamente a isto existem 5 botões ligados às entradas
analógicas e 1 botão de reset.
Temos uma variedade imensa de shilds oficiais ou não
para os mais variados projetos utilizando o Arduino, para saber mais basta
pesquisar na internet. Vamos finalizar o assunto sobre Shields, pois só este
assunto seria suficiente para um novo TCC.
Outro dispositivo que podemos utilizar em conjunto com
o Arduino são os módulos, será descrito o modulo que será utilizado neste
projeto para a comunicação entre o Arduino e o Smartfone Android. Este módulo
(Figura 5) com conexão wireless Bluetooth trabalha com comunicação serial
Rx/Tx. Qualquer comunicação com taxa entre 2400 e 115200bps pode ser usada para
enviar dados de um dispositivo a outro.
A placa pode ser alimentada de 3,3V a 6V, o que torna
fácil utilizar qualquer tipo de bateria ou pilha, ou mesmo um Arduino.
Tomando
como referencia e aproveitando as ilustrações do site http://robotizando.com.br/curso_arduino_intro_pg1.php,
daremos uma explicação sobre o hardware do Arduino, ele é muito simples e
eficiente. Acompanhe no esquema abaixo a arquitetura e funcionamento do Arduino
UNO.
Figura 6 - Arquitetura de
Hardware
A Fonte de
Alimentação Recebe energia externa, filtra e converte a entrada em duas tensões
reguladas e filtradas. A função do núcleo CPU, que é um computador minúsculo, mas
poderoso responsável por dar vida à placa vem completa, com diversos
"dispositivos" embutidos dentro do chip. Contamos também com pinos de
entradas e saídas alguns deles possuem hardware embutido, para funções
especiais, para o nosso Arduino funcionar, criamos programas e carregamos
dentro da CPU com nossas instruções de funcionamento para a placa, estes tipos
de software chamamos de Firmware.
Figura 7 – Bloco de Funções da
Placa
Vamos detalhar agora a função de cada bloco na Figura
7, tomando como base um manual(http://www.inf.ufes.br/~erus/arquivos/ERUS_minicurso%20arduino.pdf)
de Arduino básico da equipe ERUS, Equipe de Robótica da Universidade Federal do
Espírito Santo Tetracampeã latino americana de robótica na categoria IEEE SEK
nos anos 2008 a 2011, como mostra no site http://www.inf.ufes.br/~erus/conquistas.php,
e o confrontando as informações com o site oficial do Arduino http://arduino.cc.
1.1.2
Fonte de Alimentação Arduino UNO
Responsável pela alimentação de energia pode variar a
tensão de entrada (segundo o site: http://arduino.cc/en/Main/ArduinoBoardUno)
recomendada 7 a 12 Volts e limite de 6 a 20 Volts, onde é filtrada e regulada,
gerando tensões de saída de 3,3 e 5 Volts para alimentação da CPU e demais
circuitos.
1.1.3
CPU
CPU (Central Processing Unit) ou unidade central de
processamento é um micro controlador responsável por processar os dados na
placa Arduino. Um computador completo que possui memória RAM, memoria do
programa (ROM), ALU (Arithmetic Logic Unit) circuito digital que realiza
operações logicas e aritméticas e dispositivos de entrada e saída. Tudo em um
chip só fabricados pela empresa ATMEL, os chips utilizados são os da linha
ATMEGA, os mais utilizados são: ATMega8, ATMega162 e ATMega328p, eles diferem
na quantidade de memoria ROM, e nos módulos de entrada e saídas disponíveis.
Figura 8 - Micro Controlador
ATMEGA8
O chip da figura 8 possui 28 pinos, sendo 14 de cada
lado é através destes pinos que podemos acessar as funções da CPU, enviar dados
e controlar dispositivos externos. Este 28 pinos são divididos da seguinte
maneira:
·
14 pinos digitais de entrada ou saída
(programáveis)
·
6 pinos de entrada analógica ou entrada/saída
digital (programáveis)
·
5 pinos de alimentação (gnd, 5V, ref analógica)
·
1 pino de reset
·
2 pinos para conectar o cristal oscilador
Os dois itens da lista são os pinos que utilizamos na
programação, é através destes pinos que o Arduino é acoplado a dispositivos
externos. Os dois primeiros pinos 0 e 1 é utilizado pelo modulo de comunicação
serial USART, este modulo permite a
comunicação entre o computador e o chip, podemos conectar também um
modulo bluetooth por exemplo, que utilizaremos no projeto.
Os pinos são disponibilizados através de conectores
femeas, onde encaixamos conectores para construir circuito externo a placa do
Arduino, podendo ser utilizados pelo programador como entrada ou saída, digital
ou analógico dependendo do pino utilizado. Veja na tabela Abaixo as
características de uma placa Arduino UNO.
Microcontrolador
|
ATmega328P
|
Voltagem operacional
|
5V
|
Voltagem de alimentação
(recomendada)
|
7-12V
|
Voltagem de alimentação
(limites)
|
6-20V
|
Pinos I/O digitais
|
14 (dos quais 6 podem ser
saídas PWM)
|
Pinos de entrada analógica
|
6
|
Corrente contínua por pino
I/O
|
40 mA
|
Corrente contínua para o
pino 3.3V
|
50 mA
|
Memória flash
|
32 KB (2KB usados para o
bootloader)
|
SRAM
|
2 KB
|
EEPROM
|
1 KB
|
Velocidade de clock
|
16 MHz
|
Tabela 1 - Características Arduino Uno
1.1.4
Entradas Digitais
No Arduino uno podemos utilizar até 20 pinos como
entradas 14, já vêm como digitais e podemos ainda utilizar 6 entradas
analógicas como digitais. O pino trabalha apenas em dois estados Alto (5V) ou
Baixo (0V), configurado pelo programador como entrada (IMPUT). Para saber a quantidade de tensão no pino
usamos os pinos analógicos.
1.1.5
Entradas Analógicas
Como dito anteriormente, para saber a voltagem de um
pino usamos as entradas analógicas, é nestes pinos que conectamos sensores,
para obtermos algum tipo de grandeza física, como luminosidade, temperatura,
umidade e outros.
1.1.6
Saídas Digitais
Podemos utilizar a mesma quantidade de pinos de saída
que utilizamos como entrada a diferença e que enviamos um sinal ao invés de
recebê-lo, podemos utilizar então este modo (OUTPUT) para acender um led, ligar
um motor ou um relé e muitas outras coisas, podendo através de um pino
controlar outro bloco de pinos.
1.1.7
Pinos com Funções especiais
No Arduino temos alguns pinos, que configurados
adequadamente pelo programador podemos utiliza-los de maneira especiais. Veja
na tabela abaixo quem são eles e para que servem:
Nome
|
Pinos
|
Função
|
Exemplo de
utilização
|
PWM
|
3,5,6,9,10,11
|
Gerar
tensões controladas pelo programa.
|
Velocidade
de motores.
|
Porta
Serial USART
|
0 (RX),1
(TX)
|
Transmitir
e receber dados no formato serial assíncrono.
|
Conectar
modulo Bluetooth para receber e enviar dados.
|
Comparador
Analógico
|
6,7
|
comparar
duas tensões externas
|
Desligar
o carregador de bateria
|
Interrupção
Externa
|
2,3
|
avisar o
software sobre alguma mudança em seu estado
|
Acionamento
de um led através de um botão.
|
Porta SPI
|
Pinos 10
(SS), 11 (MOSI), 12 (MISO) e 13 (SCK).
|
É um
padrão de comunicação serial Síncrono, bem mais rápido que a USART
|
Conectamos
cartões de memória (SD).
|
1.1.8
Firmware
No caso do Arduino é o software que criamos no IDE e
depois fazemos o upload para dentro da memória do micro controlador mais um
software que fica que fica gravado memoria ROM (Read Only Memory).
1.1.9
Software
Segundo o site (Arduino.cc) o software do Arduino é
criado em uma IDE (Integrated Development Environment) open source, é um
ambiente de desenvolvimento integrado feito em Java e um compilador GCC (C e
C++), não é necessário dizer que a maquina virtual Java deve estar instalada no
seu sistema.
Antes de iniciarmos a programação temos que escolher a
placa do Arduino utilizada e a porta serial, exemplo no Windows COM3, se a
porta estiver habilitada e placa conectada ao computador na porta USB através
de um cabo. Podemos utilizar o botão UpLoad (figura 9) e enviar o software
criado na IDE e compilado para a placa Arduino
se quisermos podemos compilar e verificar erros clicando no botão
compila e verifica (figura 9).
A programação do Arduino é simples, podemos dividi-la
em duas partes a iniciação do programa , que esta dentro do bloco void setup ()
{ conteúdo aqui } e o bloco onde o programa roda em forma de loop como se fosse
um comando (while) até ser desligado ou quando apertamos o botão ou acionamos
reset da placa. O bloco de loop é escrito assim void loop () {conteúdo aqui},
podemos utilizar funções nativas ou de bibliotecas do Arduino e bibliotecas,
para isso basta colocar no inicio do programa, como fazemos em C, a linha
#include nomedabiblioteca.extensção. Exemplo #include sd.h, biblioteca para
utilização de módulos de cartão de memoria.
O código que
escrevemos na IDE do Arduino é chamado de sketch e segundo o site oficial do
Arduino pode ser dividido em três partes: estrutura, valores e funções. Veja na
tabela abaixo algumas opções básicas que usamos no código.
Estruturas
|
Variaveis
|
Funções
|
exemplo função
|
setup()
|
HIGH | LOW
|
pinMode()
|
pinMode(13,OUTPUT)
|
loop()
|
IMPUT | OUTPUT
|
digitalWrite()
|
digitalWrite(10,HIGH)
|
if
|
void()
|
digitalRead()
|
int leitor = digitalRead()
|
if...else
|
boolean
|
analogWrite()
|
analogWrite(pin,valor/4)
|
for
|
int
|
analogRead()
|
analogRead(analogPin)
|
switch case
|
long
|
tone()
|
tone(1000) em mili seg
|
while
|
float
|
delay()
|
delay(300) em mili seg
|
Para saber mais sobre como criar códigos visite o site
oficial http://arduino.cc/en/Reference/HomePage.
Veja um exemplo
de um programa que já vem com a IDE do Arduino, Blink.









Nenhum comentário:
Postar um comentário