1 
OOuuttlliinnee 
1. Introdução 
1.Computação Física 
2.Computação Pervasiva 
3.Microcontroladores 
2. Plataforma Arduino 
1.Conceitos Básicos 
2.Programação 
3.Projetos
2 
AArrdduuiinnoo
3 
AArrdduuiinnoo 
Placa + Microcontrolador + USB 
+ Sockets 
Pode ser conectado a uma 
grande variedade de dispositivos: 
Sensores: Luz, temperatura, 
presença, etc. 
Displays: LCD, touchscreen 
Motores e servos 
GPS 
Comunicação sem fio: 802.15.4, 
Zigbee, Bluetooth 
Ethernet 
Alimentação: Bateria de 9V ou 
por meio da USB
4 
AArrdduuiinnoo 
Da página oficial (www.arduino.org): 
Arduino is an open-source electronics prototyping platform based on 
flexible, easy-to-use hardware and software. It’s intended for artists, 
designers, hobbyists, and anyone interested in creating interactive objects 
or environments. 
Arduino can sense the environment by receiving input from a variety of 
sensors and can affect its surroundings by controlling lights, motors, and 
other actuators. The microcontroller on the board is programmed using 
the Arduino programming language (based on Wiring) and the Arduino 
development environment (based on Processing). Arduino projects can be 
stand-alone or they can communicate with software on running on a 
computer (e.g. Flash, Processing,MaxMSP). ”
5 
AArrdduuiinnoo 
Criado na Itália (em 2005) pelo Mássimo Banzi, no 
Interaction Design Ivrea 
Baixo custo de produção e alta aplicabilidade 
Computação física e redes de sensores 
Permite que os programas (ou sketches) sejam 
escritos em uma linguagem de alto nível chamada 
Processing 
Processing é um ambiente e linguagem de 
programação para criar imagens, animação e 
interação 
http://processing.org/
6 
VVeerrssõõeess ddoo AArrdduuiinnoo 
Arduino Uno
7 
VVeerrssõõeess ddoo AArrdduuiinnoo 
Arduino Nano
8 
VVeerrssõõeess ddoo AArrdduuiinnoo 
Arduino Mega
9 
VVeerrssõõeess ddoo AArrdduuiinnoo 
Arduino Lilypad
10 
AArrqquuiitteettuurraa 
Fonte: Minicurso Arduino – Equipe de Robótica UFES 2012
11 
CCaarraacctteerrííssttiiccaass ddoo AArrdduuiinnoo UUnnoo 
Microcontrolador ATmega328P 
Tensão Operacional 5 V 
Tensão de Alimentação 7-12 V 
Pinos de I/O digitais 14 (dos quais 6 podem ser saídas PWM) 
Pinos de entrada analógica 6 
Corrente contínua por pino de I/O 40 mA 
Corrente contínua para o pino de 3.3 V 50 mA 
Memória Flash 2KB 
EEPROM 1K 
Frequência de clock 16 MHz
12 
AArrdduuiinnoo DDiieecciimmiillaa//UUnnoo
13
14 
OOkk...... bbuutt ffiirrsstt,, lleett''ss ggoo 
sshhooppppiinngg
15 
KKiitt PPaarraa IInniicciiaannttee
16 
OOuuttrrooss CCoommppoonneenntteess
17 
SSeennssoorreess
18 
““HHeelllloo WWoorrlldd””
19 
AAmmbbiieennttee ddee DDeesseennvvoollvviimmeennttoo 
O ambiente de desenvolvimento pode ser 
baixado em: 
● http://arduino.cc/en/Main/Software 
● A última versão é a 1.0.5 
O arquivo compactado deve ser extraído em 
qualquer diretório do sistema 
Será criado um diretório arduino-XXXX, onde 
XXXX é a versão baixado (por exemplo: 
arduino-0022).
20 
AAmmbbiieennttee ddee DDeesseennvvoollvviimmeennttoo 
Executar o arquivo 'arduino'
21 
AAmmbbiieennttee ddee DDeesseennvvoollvviimmeennttoo
22 
CCoonnffiigguurraannddoo oo AAmmbbiieennttee 
Linux 
Conecte o Arduino ao seu computador, por meio da porta USB e 
espere alguns segundos até que o sistema recoheça o dispositivo 
Para confirmar se o dispositivo foi reconhecido, abra um terminal 
e execute o comando abaixo: 
$ dmesg 
Procure, nas últimas linhas, por uma linha mais ou menos 
parecida com a de baixo: 
[56999.967291] usb 5-2: FTDI USB Serial Device 
converter now attached to ttyUSB0 
Essa mensagem indica que o kernel reconheceu um novo 
dispositivo conectado na porta /dev/ttyUSB0. 
O sistema nem sempre reconhece como /dev/ttyUSB0, mas em 
geral é /dev/tty<alguma_coisa>
23 
CCoonnffiigguurraannddoo oo AAmmbbiieennttee 
Windows: 
http://arduino.cc/en/Guide/Windows 
Mac OSX: 
http://arduino.cc/en/Guide/MacOSX
24 
CCoonnffiigguurraannddoo oo AAmmbbiieennttee 
Configurar o ambiente de desenvolvimento para 
utilizar a porta detectado pelo sistema: 
“Tools” → “Serial Port” 
Configurar a placa utilizada: 
“Tools” → “Board” e escolher a opção “Arduino Uno”
25 
““HHeelllloo WWoorrlldd”” 
O primeiro projeto será o equivalente “Hello 
World” para dispositivos embarcados 
Como não há um terminal, iremos fazer piscar 
(blink) um LED. 
A placa do Arduino vem com um LED embutido, 
conectado ao pin digital 13 
Esta conexão faz com que o pin 13 seja 
sempre de saída, mas como o LED usa pouca 
corrente, ainda é possível conectar outras 
coisas na saída
26 
““HHeelllloo WWoorrlldd”” 
Código: 
int ledPin = 13; 
void setup() { 
// initialize the digital pin as an output. 
// Pin 13 has an LED connected on most Arduino 
boards: 
pinMode(ledPin, OUTPUT); 
} 
void loop() { 
digitalWrite(ledPin, HIGH); // set the LED on 
delay(1000); // wait for a second 
digitalWrite(ledPin, LOW); // set the LED off 
delay(1000); // wait for a second 
}
27 
““HHeelllloo WWoorrlldd”” 
Para fazer o upload para a placa, deve-se clicar 
no botão específico:
28 
EExxpplliiccaannddoo oo ccóóddiiggoo 
Um sketch Arduino possui, no mínimo duas 
funções: 
setup(): 
Executada apenas uma vez, durante a inicialização 
loop(): 
Função principal
29 
EExxpplliiccaannddoo oo ccóóddiiggoo 
setup() 
pinMode(ledPin, OUTPUT); 
A função pinMode define o modo de operação do 
pino. Neste caso, definimos que o pino 13 (ledPin) 
será de saída
30 
EExxpplliiccaannddoo oo ccóóddiiggoo 
loop() 
digitalWrite(ledPin, HIGH); 
Permite ligar (5V) ou desligar (0V) um pino digital 
Neste código especifico, estamos ligando (constante 
HIGH) o pino 13 (ledPin) 
Por meio da constante LOW, podemos desligar o pino 
delay(200) 
A função delay() faz com que o processado fique X 
milisegundos em espera
31 
PPrroojjeettoo 000011:: 
LLEEDD FFllaasshheerr
32 
LLEEDD FFllaasshheerr 
Componentes:
33 
LLEEDD FFllaasshheerr 
Conexão:
34 
LLEEDD FFllaasshheerr
35 
LLEEDD FFllaasshheerr 
Código: 
int ledPin = 10; 
void setup() { 
pinMode(ledPin, OUTPUT); 
} 
void loop() { 
digitalWrite(ledPin, HIGH); 
delay(1000); 
digitalWrite(ledPin, LOW); 
delay(1000); 
}
36 
PPrroojjeettoo 000022:: 
TTeemmppeerraattuurree SSeennssoorr
37 
LLMM3355//LLMM3366 –– TTPPMM3355//TTPPMM3366 
Sensor de temperatura 
analógico 
Estado-sólido (não usa 
mércurio) 
A medida que a 
temperatura muda, a 
tensão que atravessa um 
diodo cresce a uma taxa 
conhecida 
Não precisa ser calibrado 
Barato e fácil de usar
38 
LLMM3355//LLMM3366 –– TTPPMM3355//TTPPMM3366 
a) LM35 
b) LM36 
Fonte: http://www.ladyada.net/learn/sensors/tmp36.html
39 
LLMM3355//LLMM3366 –– TTPPMM3355//TTPPMM3366 
Para converter a tensão em temperatura: 
LM35: 
Temp in ºC: (V in mV) / 10 
LM36: 
– Temp in ºC: [(V in mV - 500)] / 10
40 
LLeennddoo aa TTeemmppeerraattuurraa
41 
LLeennddoo aa TTeemmppeerraattuurraa 
Devemos conectar o pino do saída do sensor 
diretamente em uma porta analógica do 
Arduino 
A tensão de saída do sensor será de 0 a 1.75 
(aproximadamente) 
O tensão lida pelo Arduino é convertido em um 
valor binário pelo Conversor Analógico Digital 
Assim, para descobrirmos a temperatura, 
devemos fazer uma conversão:
42 
LLeennddoo aa TTeemmppeerraattuurraa 
Voltage at pin in milliVolts = (reading from ADC) * 
(5000/1024) 
This formula converts the number 0-1023 from the 
ADC into 0-5000mV (= 5V) 
Voltage at pin in milliVolts = (reading from ADC) * 
(3300/1024) 
This formula converts the number 0-1023 from the 
ADC into 0-3300mV (= 3.3V) 
Para converter a tensão em temperatura, basta 
utilizarmos a fórmulas definidas anteriormente...
43 
LLeennddoo aa TTeemmppeerraattuurraa 
int temperaturaPin = 0; 
int ledPin = 12; 
float vIn = 5.0; //Tensao de entrada 
void setup() 
{ 
pinMode(ledPin, OUTPUT); 
Serial.begin(9600); 
} 
void loop() 
{ 
digitalWrite(ledPin, HIGH); 
//ler o valor do sensor 
float leitura = analogRead(temperaturaPin); 
float voltagem = (leitura * vIn) / 1023.0; 
//Imprimir a tensão 
Serial.print(voltagem); 
Serial.println(" volts"); 
//Converter tensao para temperatura 
float temperaturaC = voltagem * 100.0; 
delay(1000); 
Serial.print(temperaturaC); 
Serial.println(" graus em C"); 
Serial.println(" "); 
digitalWrite(ledPin, LOW); 
delay(1000); 
}
44 
PPrroobblleemmss yyoouu mmaayy eennccoouunntteerr 
wwiitthh mmuullttiippllee sseennssoorrss...... 
If, when adding more sensors, you find that the 
temperature is inconsistant, this indicates that 
the sensors are interfering with each other when 
switching the analog reading circuit from one pin 
to the other. You can fix this by doing two 
delayed readings and tossing out the first one
45 
PPrroojjeettoo 000033:: 
SSeennssiinngg LLiigghhtt
46 
SSeennssiinngg LLiigghhtt 
Uma forma bastante prática de medir a 
intensidade da luz é usando um LDR 
LDR = Light-Dependent Resistor 
Podem ser chamados de Photoresistores 
Quanto maior a intensidade da luz, menor a 
resistência 
20MΩ = Ambiente “muito escuro” 
20KΩ = Ambiente “muito iluminado”
47 
SSeennssiinngg LLiigghhtt
48 
LLDDRR aass aa VVoollttaaggee DDiivviiddeerr 
A voltage divider is just two resistors in series 
connected between a voltage supply and ground. If 
R1 is connected to the voltage supply and R2 is 
connected to ground then the voltage at the junction 
between the two resistors is: 
V =V cc∗ 
R2 
R1+R2
49 
LLDDRR aass aa VVoollttaaggee DDiivviiddeerr 
A voltage divider is just two resistors in series 
connected between a voltage supply and ground. If 
R1 is connected to the voltage supply and R2 is 
connected to ground then the voltage at the junction 
between the two resistors is: 
V =V cc∗ 
R2 
R1+R2
50 
LLDDRR aass aa VVoollttaaggee DDiivviiddeerrcc 
If R1 is the photoresistor, the 
voltage will increase with 
increasing light intensity. If R2 
is the photoresistor, the voltage 
will decrease with increasing 
light intensity. 
V =V cc∗ 
R2 
R1+R2
51 
int ledPin = 13; 
int sensorPin = 1; 
int period = 400; 
int limit = 1000; 
int acesso = 0; 
void setup() 
{ 
SSeennssiinngg LLiigghhtt 
pinMode(ledPin, OUTPUT); 
Serial.begin(9600); 
} 
void loop() 
{ 
int rawValue = 
analogRead(sensorPin); 
if (rawValue < limit){ 
digitalWrite(ledPin, LOW); 
if (acesso != 1){ 
acesso = 1; 
Serial.println("ligado"); 
} 
} 
else{ 
digitalWrite(ledPin, HIGH); 
Serial.println(rawValue); 
if (acesso != 0){ 
acesso = 0; 
Serial.println("apagado"); 
} 
} 
delay(period); 
}
52 
PPrroojjeettoo 000044:: 
EEnnvviiaannddoo IInnffoorrmmaaççõõeess 
ppaarraa oo AArrdduuiinnoo vviiaa SSeerriiaall
53 
EEnnvviiaannddoo IInnffoorrmmaaççõõeess VViiaa SSeerriiaall 
int ledPin = 13; 
int tempoEspera = 500; 
void setup(){ 
pinMode(ledPin, OUTPUT); 
Serial.begin(9600); 
} 
void loop(){ 
char ch; 
if (Serial.available()){ 
ch = Serial.read(); 
if (ch == '0'){ 
digitalWrite(ledPin, LOW); 
}else{ 
digitalWrite(ledPin, HIGH); 
} 
} 
delay(tempoEspera); 
}
54 
EEnnvviiaannddoo IInnffoorrmmaaççõõeess VViiaa SSeerriiaall
55 
PPrroojjeettoo 000055:: 
PPyySSeerriiaall
56 
apt-get install python-serial -y
57 
PPyySSeerriiaall 
from serial import Serial 
porta = '/dev/ttyACM1' 
ser=Serial(porta, 19200, timeout=10) 
ser.readline() #descartar a primeira leitura 
info=ser.readline() 
ser.close() 
print info
58 
FFuunnççããoo UUttiilliittáárriiaa:: 
EEnnvviiaarr EE--MMaaiill 
import sys 
import smtplib 
from email.MIMEText import MIMEText 
to = 'marvin.lemos@tce.pi.gov.br' 
user = 'marvinlemos@gmail.com' 
password = 'senhaaqui' 
def mandar_email(mensagem): 
msg = MIMEText(mensagem) 
msg['Subject'] = 'Teste' 
msg['From'] = "Marvin Lemos" 
msg['Reply-to'] = "Marvin Lemos " 
msg['To'] = to 
smtpserver = 
smtplib.SMTP("smtp.gmail.com",587) 
smtpserver.ehlo() 
smtpserver.starttls() 
smtpserver.ehlo 
smtpserver.login(user, password) 
try: 
smtpserver.sendmail(user,to, 
msg.as_string()) 
print "e-mail encaminhado" 
except: 
print "falha ao transmitir e-mail" 
print sys.exc_info() 
smtpserver.close()
59 
AAllgguunnss PPrroojjeettooss RReeaaiiss
60 
MMoonniittoorraammeennttoo ddee AAbbeellhhaass 
● Parceria Opala (Uespi) / Empraba Meio/Norte 
● Estudar o problema da “enxameação” das 
abelhas
61 
MMoonniittoorraammeennttoo ddee AAbbeellhhaass
62 
MMoonniittoorraammeennttoo ddee AAbbeellhhaass
63 
MMoonniittoorraammeennttoo ddee AAbbeellhhaass
64 
MMoonniittoorraammeennttoo AAmmbbiieennttaall
65 
AAuuttoommaaççããoo RReessiiddeenncciiaall
66 
LLuuvvaa UUllttrraassssôônniiccaa 
● Desenvolvido pelo Labiras (http://labiras.cc) 
● Visa substituir bengala para cegos 
Fonte: http://comradio.com.br/cidadania/?p=701
67 
RReeffeerrêênncciiaass 
Arduino Starter Kit Manual: A Complete 
Beginners Guide To The Arduino 
http://www.ladyada.net/learn/arduino/ 
http://blog.justen.eng.br/

Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II

  • 1.
    1 OOuuttlliinnee 1.Introdução 1.Computação Física 2.Computação Pervasiva 3.Microcontroladores 2. Plataforma Arduino 1.Conceitos Básicos 2.Programação 3.Projetos
  • 2.
  • 3.
    3 AArrdduuiinnoo Placa+ Microcontrolador + USB + Sockets Pode ser conectado a uma grande variedade de dispositivos: Sensores: Luz, temperatura, presença, etc. Displays: LCD, touchscreen Motores e servos GPS Comunicação sem fio: 802.15.4, Zigbee, Bluetooth Ethernet Alimentação: Bateria de 9V ou por meio da USB
  • 4.
    4 AArrdduuiinnoo Dapágina oficial (www.arduino.org): Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It’s intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. Arduino can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors, and other actuators. The microcontroller on the board is programmed using the Arduino programming language (based on Wiring) and the Arduino development environment (based on Processing). Arduino projects can be stand-alone or they can communicate with software on running on a computer (e.g. Flash, Processing,MaxMSP). ”
  • 5.
    5 AArrdduuiinnoo Criadona Itália (em 2005) pelo Mássimo Banzi, no Interaction Design Ivrea Baixo custo de produção e alta aplicabilidade Computação física e redes de sensores Permite que os programas (ou sketches) sejam escritos em uma linguagem de alto nível chamada Processing Processing é um ambiente e linguagem de programação para criar imagens, animação e interação http://processing.org/
  • 6.
    6 VVeerrssõõeess ddooAArrdduuiinnoo Arduino Uno
  • 7.
    7 VVeerrssõõeess ddooAArrdduuiinnoo Arduino Nano
  • 8.
    8 VVeerrssõõeess ddooAArrdduuiinnoo Arduino Mega
  • 9.
    9 VVeerrssõõeess ddooAArrdduuiinnoo Arduino Lilypad
  • 10.
    10 AArrqquuiitteettuurraa Fonte:Minicurso Arduino – Equipe de Robótica UFES 2012
  • 11.
    11 CCaarraacctteerrííssttiiccaass ddooAArrdduuiinnoo UUnnoo Microcontrolador ATmega328P Tensão Operacional 5 V Tensão de Alimentação 7-12 V Pinos de I/O digitais 14 (dos quais 6 podem ser saídas PWM) Pinos de entrada analógica 6 Corrente contínua por pino de I/O 40 mA Corrente contínua para o pino de 3.3 V 50 mA Memória Flash 2KB EEPROM 1K Frequência de clock 16 MHz
  • 12.
  • 13.
  • 14.
    14 OOkk...... bbuuttffiirrsstt,, lleett''ss ggoo sshhooppppiinngg
  • 15.
    15 KKiitt PPaarraaIInniicciiaannttee
  • 16.
  • 17.
  • 18.
  • 19.
    19 AAmmbbiieennttee ddeeDDeesseennvvoollvviimmeennttoo O ambiente de desenvolvimento pode ser baixado em: ● http://arduino.cc/en/Main/Software ● A última versão é a 1.0.5 O arquivo compactado deve ser extraído em qualquer diretório do sistema Será criado um diretório arduino-XXXX, onde XXXX é a versão baixado (por exemplo: arduino-0022).
  • 20.
    20 AAmmbbiieennttee ddeeDDeesseennvvoollvviimmeennttoo Executar o arquivo 'arduino'
  • 21.
    21 AAmmbbiieennttee ddeeDDeesseennvvoollvviimmeennttoo
  • 22.
    22 CCoonnffiigguurraannddoo ooAAmmbbiieennttee Linux Conecte o Arduino ao seu computador, por meio da porta USB e espere alguns segundos até que o sistema recoheça o dispositivo Para confirmar se o dispositivo foi reconhecido, abra um terminal e execute o comando abaixo: $ dmesg Procure, nas últimas linhas, por uma linha mais ou menos parecida com a de baixo: [56999.967291] usb 5-2: FTDI USB Serial Device converter now attached to ttyUSB0 Essa mensagem indica que o kernel reconheceu um novo dispositivo conectado na porta /dev/ttyUSB0. O sistema nem sempre reconhece como /dev/ttyUSB0, mas em geral é /dev/tty<alguma_coisa>
  • 23.
    23 CCoonnffiigguurraannddoo ooAAmmbbiieennttee Windows: http://arduino.cc/en/Guide/Windows Mac OSX: http://arduino.cc/en/Guide/MacOSX
  • 24.
    24 CCoonnffiigguurraannddoo ooAAmmbbiieennttee Configurar o ambiente de desenvolvimento para utilizar a porta detectado pelo sistema: “Tools” → “Serial Port” Configurar a placa utilizada: “Tools” → “Board” e escolher a opção “Arduino Uno”
  • 25.
    25 ““HHeelllloo WWoorrlldd”” O primeiro projeto será o equivalente “Hello World” para dispositivos embarcados Como não há um terminal, iremos fazer piscar (blink) um LED. A placa do Arduino vem com um LED embutido, conectado ao pin digital 13 Esta conexão faz com que o pin 13 seja sempre de saída, mas como o LED usa pouca corrente, ainda é possível conectar outras coisas na saída
  • 26.
    26 ““HHeelllloo WWoorrlldd”” Código: int ledPin = 13; void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(ledPin, LOW); // set the LED off delay(1000); // wait for a second }
  • 27.
    27 ““HHeelllloo WWoorrlldd”” Para fazer o upload para a placa, deve-se clicar no botão específico:
  • 28.
    28 EExxpplliiccaannddoo ooccóóddiiggoo Um sketch Arduino possui, no mínimo duas funções: setup(): Executada apenas uma vez, durante a inicialização loop(): Função principal
  • 29.
    29 EExxpplliiccaannddoo ooccóóddiiggoo setup() pinMode(ledPin, OUTPUT); A função pinMode define o modo de operação do pino. Neste caso, definimos que o pino 13 (ledPin) será de saída
  • 30.
    30 EExxpplliiccaannddoo ooccóóddiiggoo loop() digitalWrite(ledPin, HIGH); Permite ligar (5V) ou desligar (0V) um pino digital Neste código especifico, estamos ligando (constante HIGH) o pino 13 (ledPin) Por meio da constante LOW, podemos desligar o pino delay(200) A função delay() faz com que o processado fique X milisegundos em espera
  • 31.
    31 PPrroojjeettoo 000011:: LLEEDD FFllaasshheerr
  • 32.
  • 33.
  • 34.
  • 35.
    35 LLEEDD FFllaasshheerr Código: int ledPin = 10; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }
  • 36.
    36 PPrroojjeettoo 000022:: TTeemmppeerraattuurree SSeennssoorr
  • 37.
    37 LLMM3355//LLMM3366 ––TTPPMM3355//TTPPMM3366 Sensor de temperatura analógico Estado-sólido (não usa mércurio) A medida que a temperatura muda, a tensão que atravessa um diodo cresce a uma taxa conhecida Não precisa ser calibrado Barato e fácil de usar
  • 38.
    38 LLMM3355//LLMM3366 ––TTPPMM3355//TTPPMM3366 a) LM35 b) LM36 Fonte: http://www.ladyada.net/learn/sensors/tmp36.html
  • 39.
    39 LLMM3355//LLMM3366 ––TTPPMM3355//TTPPMM3366 Para converter a tensão em temperatura: LM35: Temp in ºC: (V in mV) / 10 LM36: – Temp in ºC: [(V in mV - 500)] / 10
  • 40.
    40 LLeennddoo aaTTeemmppeerraattuurraa
  • 41.
    41 LLeennddoo aaTTeemmppeerraattuurraa Devemos conectar o pino do saída do sensor diretamente em uma porta analógica do Arduino A tensão de saída do sensor será de 0 a 1.75 (aproximadamente) O tensão lida pelo Arduino é convertido em um valor binário pelo Conversor Analógico Digital Assim, para descobrirmos a temperatura, devemos fazer uma conversão:
  • 42.
    42 LLeennddoo aaTTeemmppeerraattuurraa Voltage at pin in milliVolts = (reading from ADC) * (5000/1024) This formula converts the number 0-1023 from the ADC into 0-5000mV (= 5V) Voltage at pin in milliVolts = (reading from ADC) * (3300/1024) This formula converts the number 0-1023 from the ADC into 0-3300mV (= 3.3V) Para converter a tensão em temperatura, basta utilizarmos a fórmulas definidas anteriormente...
  • 43.
    43 LLeennddoo aaTTeemmppeerraattuurraa int temperaturaPin = 0; int ledPin = 12; float vIn = 5.0; //Tensao de entrada void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(ledPin, HIGH); //ler o valor do sensor float leitura = analogRead(temperaturaPin); float voltagem = (leitura * vIn) / 1023.0; //Imprimir a tensão Serial.print(voltagem); Serial.println(" volts"); //Converter tensao para temperatura float temperaturaC = voltagem * 100.0; delay(1000); Serial.print(temperaturaC); Serial.println(" graus em C"); Serial.println(" "); digitalWrite(ledPin, LOW); delay(1000); }
  • 44.
    44 PPrroobblleemmss yyoouummaayy eennccoouunntteerr wwiitthh mmuullttiippllee sseennssoorrss...... If, when adding more sensors, you find that the temperature is inconsistant, this indicates that the sensors are interfering with each other when switching the analog reading circuit from one pin to the other. You can fix this by doing two delayed readings and tossing out the first one
  • 45.
    45 PPrroojjeettoo 000033:: SSeennssiinngg LLiigghhtt
  • 46.
    46 SSeennssiinngg LLiigghhtt Uma forma bastante prática de medir a intensidade da luz é usando um LDR LDR = Light-Dependent Resistor Podem ser chamados de Photoresistores Quanto maior a intensidade da luz, menor a resistência 20MΩ = Ambiente “muito escuro” 20KΩ = Ambiente “muito iluminado”
  • 47.
  • 48.
    48 LLDDRR aassaa VVoollttaaggee DDiivviiddeerr A voltage divider is just two resistors in series connected between a voltage supply and ground. If R1 is connected to the voltage supply and R2 is connected to ground then the voltage at the junction between the two resistors is: V =V cc∗ R2 R1+R2
  • 49.
    49 LLDDRR aassaa VVoollttaaggee DDiivviiddeerr A voltage divider is just two resistors in series connected between a voltage supply and ground. If R1 is connected to the voltage supply and R2 is connected to ground then the voltage at the junction between the two resistors is: V =V cc∗ R2 R1+R2
  • 50.
    50 LLDDRR aassaa VVoollttaaggee DDiivviiddeerrcc If R1 is the photoresistor, the voltage will increase with increasing light intensity. If R2 is the photoresistor, the voltage will decrease with increasing light intensity. V =V cc∗ R2 R1+R2
  • 51.
    51 int ledPin= 13; int sensorPin = 1; int period = 400; int limit = 1000; int acesso = 0; void setup() { SSeennssiinngg LLiigghhtt pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { int rawValue = analogRead(sensorPin); if (rawValue < limit){ digitalWrite(ledPin, LOW); if (acesso != 1){ acesso = 1; Serial.println("ligado"); } } else{ digitalWrite(ledPin, HIGH); Serial.println(rawValue); if (acesso != 0){ acesso = 0; Serial.println("apagado"); } } delay(period); }
  • 52.
    52 PPrroojjeettoo 000044:: EEnnvviiaannddoo IInnffoorrmmaaççõõeess ppaarraa oo AArrdduuiinnoo vviiaa SSeerriiaall
  • 53.
    53 EEnnvviiaannddoo IInnffoorrmmaaççõõeessVViiaa SSeerriiaall int ledPin = 13; int tempoEspera = 500; void setup(){ pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop(){ char ch; if (Serial.available()){ ch = Serial.read(); if (ch == '0'){ digitalWrite(ledPin, LOW); }else{ digitalWrite(ledPin, HIGH); } } delay(tempoEspera); }
  • 54.
  • 55.
    55 PPrroojjeettoo 000055:: PPyySSeerriiaall
  • 56.
    56 apt-get installpython-serial -y
  • 57.
    57 PPyySSeerriiaall fromserial import Serial porta = '/dev/ttyACM1' ser=Serial(porta, 19200, timeout=10) ser.readline() #descartar a primeira leitura info=ser.readline() ser.close() print info
  • 58.
    58 FFuunnççããoo UUttiilliittáárriiaa:: EEnnvviiaarr EE--MMaaiill import sys import smtplib from email.MIMEText import MIMEText to = 'marvin.lemos@tce.pi.gov.br' user = 'marvinlemos@gmail.com' password = 'senhaaqui' def mandar_email(mensagem): msg = MIMEText(mensagem) msg['Subject'] = 'Teste' msg['From'] = "Marvin Lemos" msg['Reply-to'] = "Marvin Lemos " msg['To'] = to smtpserver = smtplib.SMTP("smtp.gmail.com",587) smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(user, password) try: smtpserver.sendmail(user,to, msg.as_string()) print "e-mail encaminhado" except: print "falha ao transmitir e-mail" print sys.exc_info() smtpserver.close()
  • 59.
  • 60.
    60 MMoonniittoorraammeennttoo ddeeAAbbeellhhaass ● Parceria Opala (Uespi) / Empraba Meio/Norte ● Estudar o problema da “enxameação” das abelhas
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
    66 LLuuvvaa UUllttrraassssôônniiccaa ● Desenvolvido pelo Labiras (http://labiras.cc) ● Visa substituir bengala para cegos Fonte: http://comradio.com.br/cidadania/?p=701
  • 67.
    67 RReeffeerrêênncciiaass ArduinoStarter Kit Manual: A Complete Beginners Guide To The Arduino http://www.ladyada.net/learn/arduino/ http://blog.justen.eng.br/