SlideShare uma empresa Scribd logo
Python e Arduino
Python e Arduino: Analisando dados em tempo real.
Dr. Eduardo S. Pereira.
@duducosmos/ pereira.somoza@gmail.com
https://github.com/duducosmos
01/04/2017
Dr. E. S. Pereira 1
Python e Arduino
Sum´ario
1 Introduc¸ ˜ao
2 Medida de Temperatura com LM35
3 Comunicac¸ ˜ao Serial - python-serial
4 Gerador de Gr´aficos em tempo Real
5 Suavizac¸ ˜ao de Dados Coletados
6 Resultados
Dr. E. S. Pereira 2
Python e Arduino
Introduc¸ ˜ao
Introduc¸ ˜ao
Dr. E. S. Pereira 3
Python e Arduino
Introduc¸ ˜ao
A linguagem Python
A linguagem Python
Python ´e uma linguagem interpretada desenvolvida por Guido
Van Rossum em 1991;
´E multiparadigma, por´em tudo em python ´e objeto;
´E livre, aberta e com baterias inclu´ıdas;
Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados -
E que provavelmente n˜ao ser˜ao em python 2.X);
Dr. E. S. Pereira 4
Python e Arduino
Introduc¸ ˜ao
A linguagem Python
A linguagem Python
Python ´e uma linguagem interpretada desenvolvida por Guido
Van Rossum em 1991;
´E multiparadigma, por´em tudo em python ´e objeto;
´E livre, aberta e com baterias inclu´ıdas;
Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados -
E que provavelmente n˜ao ser˜ao em python 2.X);
Dr. E. S. Pereira 5
Python e Arduino
Introduc¸ ˜ao
A linguagem Python
A linguagem Python
Python ´e uma linguagem interpretada desenvolvida por Guido
Van Rossum em 1991;
´E multiparadigma, por´em tudo em python ´e objeto;
´E livre, aberta e com baterias inclu´ıdas;
Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados -
E que provavelmente n˜ao ser˜ao em python 2.X);
Dr. E. S. Pereira 6
Python e Arduino
Introduc¸ ˜ao
A linguagem Python
A linguagem Python
Python ´e uma linguagem interpretada desenvolvida por Guido
Van Rossum em 1991;
´E multiparadigma, por´em tudo em python ´e objeto;
´E livre, aberta e com baterias inclu´ıdas;
Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados -
E que provavelmente n˜ao ser˜ao em python 2.X);
Dr. E. S. Pereira 7
Python e Arduino
Medida de Temperatura com LM35
Medida de Temperatura com LM35
Dr. E. S. Pereira 8
Python e Arduino
Medida de Temperatura com LM35
O experimento
Evoluc¸ ˜ao da temperatura com o tempo
LM35 - Sensor que apresenta sa´ıda de tens˜ao linear proporcional
`a temperatura em que o mesmo se encontra, tendo em sua sa´ıda
um sinal de 10mV para cada Grau C´elsius de temperatura;
Opera na faixa de [−50o,1500]C.
Dr. E. S. Pereira 9
Python e Arduino
Medida de Temperatura com LM35
O experimento
Evoluc¸ ˜ao da temperatura com o tempo
A sa´ıda do LM35 ser´a conectada a porta anal´ogica A0; O valor
do sinal de A0 ir´a variar entre 0 a 1023, com 0 correspondendo a
0 Volts e 1023 correspondendo a 5 Volts.
Como para cada variac¸ ˜ao de 1oC o sensor registra uma
mudanc¸a de 10mV, ent˜ao:
VA0 = (Vlido ∗(5/1023)); (1)
T = VA0/0.01; (2)
com VA0 a voltagem da sa´ıda do sensor, Vlido ´e o valor lido na
porta anal´ogica A0 e T ´e a temperatura em graus C´elsius;
Dr. E. S. Pereira 10
Python e Arduino
Medida de Temperatura com LM35
O experimento
Evoluc¸ ˜ao da temperatura com o tempo
A sa´ıda do LM35 ser´a conectada a porta anal´ogica A0; O valor
do sinal de A0 ir´a variar entre 0 a 1023, com 0 correspondendo a
0 Volts e 1023 correspondendo a 5 Volts.
Como para cada variac¸ ˜ao de 1oC o sensor registra uma
mudanc¸a de 10mV, ent˜ao:
VA0 = (Vlido ∗(5/1023)); (1)
T = VA0/0.01; (2)
com VA0 a voltagem da sa´ıda do sensor, Vlido ´e o valor lido na
porta anal´ogica A0 e T ´e a temperatura em graus C´elsius;
Dr. E. S. Pereira 11
Python e Arduino
Medida de Temperatura com LM35
O experimento
Conex˜ao com Arduino
Dr. E. S. Pereira 12
Python e Arduino
Medida de Temperatura com LM35
O c´odigo
LM35 v0.1
#include "Arduino.h"
const int LM35 = A0;
float temperatura;
unsigned long t0 = millis();
unsigned long t1 = t0;
void setup(){
Serial.begin (9600);
}
void loop(){
temperatura = (float(analogRead(LM35)) * 5 / 1023) / 0.01;
if(millis() - t1 >= 1000) {
t1 = millis();
unsigned long t2 = (t1 - t0) / 1000;
Serial.print(t2, DEC);
Serial.print(’,’);
Serial.println(temperatura ,DEC);
}
}
Dr. E. S. Pereira 13
Python e Arduino
Comunicac¸ ˜ao Serial - python-serial
Comunicac¸ ˜ao Serial - python-serial
Dr. E. S. Pereira 14
Python e Arduino
Comunicac¸ ˜ao Serial - python-serial
Comunicac¸ ˜ao Serial
Comunicac¸ ˜ao Serial
Para a comunicac¸ ˜ao serial ´e preciso instalar a biblioteca pyserial
Para usu´arios de sistemas tipo debian: sudo apt-get install
python-serial
Dr. E. S. Pereira 15
Python e Arduino
Comunicac¸ ˜ao Serial - python-serial
Comunicac¸ ˜ao Serial
Comunicac¸ ˜ao Serial
Para a comunicac¸ ˜ao serial ´e preciso instalar a biblioteca pyserial
Para usu´arios de sistemas tipo debian: sudo apt-get install
python-serial
Dr. E. S. Pereira 16
Python e Arduino
Comunicac¸ ˜ao Serial - python-serial
O c´odigo
pyserial
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
’ ’ ’
Sistema de comunicacao via porta s e r i a l com arduino .
’ ’ ’
_author = "E. S. Pereira"
_date = "31/03/2017"
_version= "0.0.1"
import serial
ser = serial.Serial("/dev/ttyUSB0", 9600)
ser.write(’5’)
print ser.read()
Dr. E. S. Pereira 17
Python e Arduino
Gerador de Gr´aficos em tempo Real
Gerador de Gr´aficos em tempo Real
Dr. E. S. Pereira 18
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -1
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
’ ’ ’
Sistema de comunicacao via porta s e r i a l com arduino .
’ ’ ’
_author = "E. S. Pereira"
_date = "31/03/2017"
_version= "0.0.1"
import serial
import matplotlib.pyplot as plt
plt.ion()
ser = serial.Serial("/dev/ttyUSB0", 9600)
ser.read()
Dr. E. S. Pereira 19
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -2
def serOut(ser):
tmp = ser.read()
a = tmp
while(tmp != ’n’):
tmp = ser.read()
a += tmp
b = a.split(’r’)[0]
b = b.split(’,’)
return b[0], b[1]
Dr. E. S. Pereira 20
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -3
class DynamicUpdate ():
# Suppose we know the x range
min_x = 0
max_x = 20
def on_launch(self):
# Set up p l o t
self.figure , self.ax = plt.subplots(
# subplot kw=d i c t ( p r o j e c t i o n =’ polar ’)
)
self.lines , = self.ax.plot([], [], ’o’)
# Autoscale on unknown a x i s and known lims on the other
self.ax.set_autoscaley_on(True)
# s e l f . ax . s e t x l i m ( s e l f . min x , s e l f . max x )
# s e l f . ax . s e t y l i m ( s e l f . min x , s e l f . max x )
# Other s t u f f
self.ax.grid()
Dr. E. S. Pereira 21
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -4
def on_running(self , xdata , ydata):
# Update data ( with the new and the old p o i n t s )
self.lines.set_xdata(xdata)
self.lines.set_ydata(ydata)
# Need both of t h e s e in order to r e s c a l e
self.ax.relim()
self.ax.autoscale_view()
# We need to draw ∗and∗ f l u s h
self.figure.canvas.draw()
self.figure.canvas.flush_events()
Dr. E. S. Pereira 22
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte -5
def __call__(self):
import numpy as np
import time
self.on_launch()
xdata = []
ydata = []
i = 0
for x in np.arange(0, 100000, 1):
x0, y0 = serOut(ser)
if(len(x0) <= 6):
if(y0 != ’’ and x0 != ’’):
print(x0, y0)
xdata.append(float(x0))
ydata.append(float(y0))
self.on_running(xdata , ydata)
return xdata , ydata
Dr. E. S. Pereira 23
Python e Arduino
Gerador de Gr´aficos em tempo Real
O c´odigo
Gerador de Gr´aficos Parte - 6
if(__name__ == "__main__):
d = DynamicUpdate()
d()
Dr. E. S. Pereira 24
Python e Arduino
Gerador de Gr´aficos em tempo Real
C´odigo Dispon´ıvel GitHub
C´odigo Dispon´ıvel GitHub
https://github.com/duducosmos/arduinoday2017
Dr. E. S. Pereira 25
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
Suavizac¸ ˜ao de Dados Coletados
Dr. E. S. Pereira 26
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
Suavizac¸ ˜ao de Dados de sensores
Suavizac¸ ˜ao de Dados de sensores
Ao inv´es de coletar o dado direto, iremos passar o valor m´edio
dos ´ultimos N dados coletados;
Lembrando que o valor m´edio representa o valor esperado, ou o
valor mais prov´avel de ser o correto;
Dr. E. S. Pereira 27
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
Suavizac¸ ˜ao de Dados de sensores
Suavizac¸ ˜ao de Dados de sensores
Ao inv´es de coletar o dado direto, iremos passar o valor m´edio
dos ´ultimos N dados coletados;
Lembrando que o valor m´edio representa o valor esperado, ou o
valor mais prov´avel de ser o correto;
Dr. E. S. Pereira 28
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
O c´odigo
LM35 v0.1 - Parte 1
#include "Arduino.h"
const int LM35 = A0;
float temperatura;
unsigned long t0 = millis();
unsigned long t1 = t0;
/ / Smooth Temp Data
const int readsSize = 30;
unsigned int readIndex = 0;
unsigned int reads[readsSize];
unsigned int totalReads;
unsigned int averageReads;
Dr. E. S. Pereira 29
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
O c´odigo
LM35 v0.1 - Parte 2
void smoothTemp(){
totalReads = totalReads - reads[readIndex];
reads[readIndex] = analogRead(LM35);
totalReads = totalReads + reads[readIndex];
readIndex += 1;
if(readIndex >= readsSize) {
readIndex = 0;
}
averageReads = totalReads / readsSize;
}
Dr. E. S. Pereira 30
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
O c´odigo
LM35 v0.1 - Parte 3
void setup(){
Serial.begin (9600);
for(int i = 0; i < readsSize; i++ ) {
reads[i] = 0;
}
}
Dr. E. S. Pereira 31
Python e Arduino
Suavizac¸ ˜ao de Dados Coletados
O c´odigo
LM35 v0.1 - Parte 3
void loop(){
/ / temperatura = ( f l o a t ( analogRead (LM35 ) ) ∗ 5 / 1023) / 0 . 0 1 ;
smoothTemp();
temperatura = (float(averageReads) * 5 / 1023) / 0.01;
if(millis() - t1 >= 1000) {
t1 = millis();
unsigned long t2 = (t1 - t0) / 1000;
Serial.print(t2, DEC);
Serial.print(’,’);
Serial.println(temperatura ,DEC);
}
}
Dr. E. S. Pereira 32
Python e Arduino
Resultados
Resultados
Dr. E. S. Pereira 33
Python e Arduino
Resultados
Leitura de Dados N˜ao Suavizados
Comunicac¸ ˜ao Serial
Dr. E. S. Pereira 34
Python e Arduino
Resultados
Leitura de Dados Suavizados
Comunicac¸ ˜ao Serial
Dr. E. S. Pereira 35
Python e Arduino
Resultados
FIM
FIM
MUITO OBRIGADO.
Dr. E. S. Pereira 36

Mais conteúdo relacionado

Mais procurados

Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadores
Flavio Oliveira Rodrigues
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
Danilo J. S. Bellini
 
Prova 2012 2_p4_gabarito
Prova 2012 2_p4_gabaritoProva 2012 2_p4_gabarito
Prova 2012 2_p4_gabarito
Amélia Moreira
 
Pic slides
Pic slidesPic slides
Pic slides
Rodrigo Martins
 
Introdução ao Processamento Paralelo (4.2)
Introdução ao Processamento Paralelo (4.2)Introdução ao Processamento Paralelo (4.2)
Introdução ao Processamento Paralelo (4.2)
Grupo de Geofísica Computacional, UNICAMP
 
Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?
Embarcados
 
Introdução ao Processamento Paralelo (2)
Introdução ao Processamento Paralelo (2)Introdução ao Processamento Paralelo (2)
Introdução ao Processamento Paralelo (2)
Grupo de Geofísica Computacional, UNICAMP
 
Microcontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisMicrocontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas Digitais
Fabio Souza
 
Pic18xx
Pic18xxPic18xx
Pic18xx
moschen
 
Apostila de comandos 8051
Apostila de comandos 8051Apostila de comandos 8051
Apostila de comandos 8051
Paulo Cerqueira
 
Alocação dinâmica em C
Alocação dinâmica em CAlocação dinâmica em C
Alocação dinâmica em C
Bruno Oliveira
 

Mais procurados (11)

Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadores
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
 
Prova 2012 2_p4_gabarito
Prova 2012 2_p4_gabaritoProva 2012 2_p4_gabarito
Prova 2012 2_p4_gabarito
 
Pic slides
Pic slidesPic slides
Pic slides
 
Introdução ao Processamento Paralelo (4.2)
Introdução ao Processamento Paralelo (4.2)Introdução ao Processamento Paralelo (4.2)
Introdução ao Processamento Paralelo (4.2)
 
Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?
 
Introdução ao Processamento Paralelo (2)
Introdução ao Processamento Paralelo (2)Introdução ao Processamento Paralelo (2)
Introdução ao Processamento Paralelo (2)
 
Microcontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisMicrocontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas Digitais
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Apostila de comandos 8051
Apostila de comandos 8051Apostila de comandos 8051
Apostila de comandos 8051
 
Alocação dinâmica em C
Alocação dinâmica em CAlocação dinâmica em C
Alocação dinâmica em C
 

Destaque

2017 ITRC Databreach Summary Report 03282017
2017 ITRC Databreach Summary Report 032820172017 ITRC Databreach Summary Report 03282017
2017 ITRC Databreach Summary Report 03282017
CRUZ CERDA
 
良いアイデアを出すための方法
良いアイデアを出すための方法良いアイデアを出すための方法
良いアイデアを出すための方法
nishio
 
Marketing Emocional y Experiencial. Congreso #DSM17
Marketing Emocional y Experiencial. Congreso #DSM17Marketing Emocional y Experiencial. Congreso #DSM17
Marketing Emocional y Experiencial. Congreso #DSM17
Elia Guardiola
 
5 Estrategias para aumentar x4 tu tráfico web
5 Estrategias para aumentar x4 tu tráfico web5 Estrategias para aumentar x4 tu tráfico web
5 Estrategias para aumentar x4 tu tráfico web
Miguel Florido
 
La percée de Mélenchon
La percée de MélenchonLa percée de Mélenchon
La percée de Mélenchon
LE TERRAIN
 
FrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech françaiseFrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb.fr
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
Jonas Bonér
 
Hoofdzaken App
Hoofdzaken AppHoofdzaken App
Hoofdzaken App
Michael Milo
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
Good Funnel
 
Head and shoulders
Head and shouldersHead and shoulders
Head and shoulders
Laura Kerrigan
 
How to apply for an ABS licence
How to apply for an ABS licenceHow to apply for an ABS licence
How to apply for an ABS licence
Jonathon Bray
 
Od codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacjiOd codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacji
Michał Bartyzel
 
Visualizations with Empathy
Visualizations with EmpathyVisualizations with Empathy
Visualizations with Empathy
Amanda Makulec
 
Administração Cientifica | Questões Corrigidas
Administração Cientifica | Questões CorrigidasAdministração Cientifica | Questões Corrigidas
Administração Cientifica | Questões Corrigidas
Danilo Mota
 
Turn complex to epic - Zelda goals planning
Turn complex to epic - Zelda goals planningTurn complex to epic - Zelda goals planning
Turn complex to epic - Zelda goals planning
Alexandre Quach
 
C4 Logistics Services
C4 Logistics ServicesC4 Logistics Services
C4 Logistics Services
Sebastien Barth
 
Prekat. La Psicologia del Bienestar
Prekat. La Psicologia del BienestarPrekat. La Psicologia del Bienestar
Prekat. La Psicologia del Bienestar
Dr.Jose A Santos. +4500 contactos
 
How to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure CodeHow to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure Code
Achim D. Brucker
 
Rock art and IFRAO color card
Rock art and IFRAO color cardRock art and IFRAO color card
Rock art and IFRAO color card
Victor Reijs
 
Les actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Les actualités de la Roumanie pour le Mois de Mars 2017 de EastrategiesLes actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Les actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Eastrategies - Bucarest, Roumanie
 

Destaque (20)

2017 ITRC Databreach Summary Report 03282017
2017 ITRC Databreach Summary Report 032820172017 ITRC Databreach Summary Report 03282017
2017 ITRC Databreach Summary Report 03282017
 
良いアイデアを出すための方法
良いアイデアを出すための方法良いアイデアを出すための方法
良いアイデアを出すための方法
 
Marketing Emocional y Experiencial. Congreso #DSM17
Marketing Emocional y Experiencial. Congreso #DSM17Marketing Emocional y Experiencial. Congreso #DSM17
Marketing Emocional y Experiencial. Congreso #DSM17
 
5 Estrategias para aumentar x4 tu tráfico web
5 Estrategias para aumentar x4 tu tráfico web5 Estrategias para aumentar x4 tu tráfico web
5 Estrategias para aumentar x4 tu tráfico web
 
La percée de Mélenchon
La percée de MélenchonLa percée de Mélenchon
La percée de Mélenchon
 
FrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech françaiseFrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech française
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Hoofdzaken App
Hoofdzaken AppHoofdzaken App
Hoofdzaken App
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
 
Head and shoulders
Head and shouldersHead and shoulders
Head and shoulders
 
How to apply for an ABS licence
How to apply for an ABS licenceHow to apply for an ABS licence
How to apply for an ABS licence
 
Od codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacjiOd codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacji
 
Visualizations with Empathy
Visualizations with EmpathyVisualizations with Empathy
Visualizations with Empathy
 
Administração Cientifica | Questões Corrigidas
Administração Cientifica | Questões CorrigidasAdministração Cientifica | Questões Corrigidas
Administração Cientifica | Questões Corrigidas
 
Turn complex to epic - Zelda goals planning
Turn complex to epic - Zelda goals planningTurn complex to epic - Zelda goals planning
Turn complex to epic - Zelda goals planning
 
C4 Logistics Services
C4 Logistics ServicesC4 Logistics Services
C4 Logistics Services
 
Prekat. La Psicologia del Bienestar
Prekat. La Psicologia del BienestarPrekat. La Psicologia del Bienestar
Prekat. La Psicologia del Bienestar
 
How to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure CodeHow to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure Code
 
Rock art and IFRAO color card
Rock art and IFRAO color cardRock art and IFRAO color card
Rock art and IFRAO color card
 
Les actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Les actualités de la Roumanie pour le Mois de Mars 2017 de EastrategiesLes actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
Les actualités de la Roumanie pour le Mois de Mars 2017 de Eastrategies
 

Semelhante a Arduino Day 2017 - Python + Arduino

Tutorial do KIT - Para analisar a qualidade da água
Tutorial do KIT - Para analisar a qualidade da água Tutorial do KIT - Para analisar a qualidade da água
Tutorial do KIT - Para analisar a qualidade da água
Projetos AEB
 
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraMinicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
PotiLivre Sobrenome
 
Técnicas de Prototipação II - Physical Computing - Aula 01
Técnicas de Prototipação II - Physical Computing - Aula 01Técnicas de Prototipação II - Physical Computing - Aula 01
Técnicas de Prototipação II - Physical Computing - Aula 01
Tiago Barros
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino Completo
Tiago Barros
 
3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino
Centro Universitário Católica de Quixadá
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
Bruno Nascimento
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Carlos Carvalho
 
Mini Curso Introdutório ao Arduino
Mini Curso Introdutório ao ArduinoMini Curso Introdutório ao Arduino
Mini Curso Introdutório ao Arduino
Crescencio Rodrigues Lima Neto
 
ARDUINO PRIMEIROS PASSOS
ARDUINO  PRIMEIROS PASSOSARDUINO  PRIMEIROS PASSOS
ARDUINO PRIMEIROS PASSOS
DomingosRodrigues16
 
Circuito com arduino e optoacopladores
Circuito com arduino e optoacopladoresCircuito com arduino e optoacopladores
Circuito com arduino e optoacopladores
Nando Mathias
 
Guia AC mod 5
Guia AC mod 5Guia AC mod 5
Guia AC mod 5
alunosepbjc
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
Globalcode
 
Oficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.orgOficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.org
Guilherme Kruger Araujo
 
Arduino - iniciação à linguagem C (entradas analógica)
Arduino - iniciação à linguagem C (entradas analógica)Arduino - iniciação à linguagem C (entradas analógica)
Arduino - iniciação à linguagem C (entradas analógica)
Ana Carneirinho
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino
Edgley Xavier
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
fmtpereira
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
Francisco Fambrini
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Cláudio Alves
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
Danilo Morais Pagano
 
C.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoC.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao Arduino
Tiago Barros
 

Semelhante a Arduino Day 2017 - Python + Arduino (20)

Tutorial do KIT - Para analisar a qualidade da água
Tutorial do KIT - Para analisar a qualidade da água Tutorial do KIT - Para analisar a qualidade da água
Tutorial do KIT - Para analisar a qualidade da água
 
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio OliveiraMinicurso Arduino com Projetos Praticos - Jotacisio Oliveira
Minicurso Arduino com Projetos Praticos - Jotacisio Oliveira
 
Técnicas de Prototipação II - Physical Computing - Aula 01
Técnicas de Prototipação II - Physical Computing - Aula 01Técnicas de Prototipação II - Physical Computing - Aula 01
Técnicas de Prototipação II - Physical Computing - Aula 01
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino Completo
 
3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
 
Mini Curso Introdutório ao Arduino
Mini Curso Introdutório ao ArduinoMini Curso Introdutório ao Arduino
Mini Curso Introdutório ao Arduino
 
ARDUINO PRIMEIROS PASSOS
ARDUINO  PRIMEIROS PASSOSARDUINO  PRIMEIROS PASSOS
ARDUINO PRIMEIROS PASSOS
 
Circuito com arduino e optoacopladores
Circuito com arduino e optoacopladoresCircuito com arduino e optoacopladores
Circuito com arduino e optoacopladores
 
Guia AC mod 5
Guia AC mod 5Guia AC mod 5
Guia AC mod 5
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Oficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.orgOficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.org
 
Arduino - iniciação à linguagem C (entradas analógica)
Arduino - iniciação à linguagem C (entradas analógica)Arduino - iniciação à linguagem C (entradas analógica)
Arduino - iniciação à linguagem C (entradas analógica)
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
C.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao ArduinoC.E.S.A.R Introducao ao Arduino
C.E.S.A.R Introducao ao Arduino
 

Mais de Eduardo S. Pereira

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Eduardo S. Pereira
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e Estatística
Eduardo S. Pereira
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca Revisão
Eduardo S. Pereira
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e Estatística
Eduardo S. Pereira
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1
Eduardo S. Pereira
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de Frequência
Eduardo S. Pereira
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística Boxplot
Eduardo S. Pereira
 
Aula 11 Modelagem de Dados
Aula 11 Modelagem de DadosAula 11 Modelagem de Dados
Aula 11 Modelagem de Dados
Eduardo S. Pereira
 
Aula 10 Modelagem de Dados
Aula 10 Modelagem de DadosAula 10 Modelagem de Dados
Aula 10 Modelagem de Dados
Eduardo S. Pereira
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
Eduardo S. Pereira
 
Aula 7 Modelagem de Dados
Aula 7 Modelagem de DadosAula 7 Modelagem de Dados
Aula 7 Modelagem de Dados
Eduardo S. Pereira
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
Eduardo S. Pereira
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de Dados
Eduardo S. Pereira
 
Aula 06 Modelagem de Dados
Aula 06 Modelagem de DadosAula 06 Modelagem de Dados
Aula 06 Modelagem de Dados
Eduardo S. Pereira
 
Aula05
Aula05Aula05
Aula04
Aula04Aula04
Aula03
Aula03Aula03
Aula02
Aula02Aula02
Aula01
Aula01Aula01
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de Dados
Eduardo S. Pereira
 

Mais de Eduardo S. Pereira (20)

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e Estatística
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca Revisão
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e Estatística
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de Frequência
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística Boxplot
 
Aula 11 Modelagem de Dados
Aula 11 Modelagem de DadosAula 11 Modelagem de Dados
Aula 11 Modelagem de Dados
 
Aula 10 Modelagem de Dados
Aula 10 Modelagem de DadosAula 10 Modelagem de Dados
Aula 10 Modelagem de Dados
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
 
Aula 7 Modelagem de Dados
Aula 7 Modelagem de DadosAula 7 Modelagem de Dados
Aula 7 Modelagem de Dados
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de Dados
 
Aula 06 Modelagem de Dados
Aula 06 Modelagem de DadosAula 06 Modelagem de Dados
Aula 06 Modelagem de Dados
 
Aula05
Aula05Aula05
Aula05
 
Aula04
Aula04Aula04
Aula04
 
Aula03
Aula03Aula03
Aula03
 
Aula02
Aula02Aula02
Aula02
 
Aula01
Aula01Aula01
Aula01
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de Dados
 

Arduino Day 2017 - Python + Arduino

  • 1. Python e Arduino Python e Arduino: Analisando dados em tempo real. Dr. Eduardo S. Pereira. @duducosmos/ pereira.somoza@gmail.com https://github.com/duducosmos 01/04/2017 Dr. E. S. Pereira 1
  • 2. Python e Arduino Sum´ario 1 Introduc¸ ˜ao 2 Medida de Temperatura com LM35 3 Comunicac¸ ˜ao Serial - python-serial 4 Gerador de Gr´aficos em tempo Real 5 Suavizac¸ ˜ao de Dados Coletados 6 Resultados Dr. E. S. Pereira 2
  • 3. Python e Arduino Introduc¸ ˜ao Introduc¸ ˜ao Dr. E. S. Pereira 3
  • 4. Python e Arduino Introduc¸ ˜ao A linguagem Python A linguagem Python Python ´e uma linguagem interpretada desenvolvida por Guido Van Rossum em 1991; ´E multiparadigma, por´em tudo em python ´e objeto; ´E livre, aberta e com baterias inclu´ıdas; Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados - E que provavelmente n˜ao ser˜ao em python 2.X); Dr. E. S. Pereira 4
  • 5. Python e Arduino Introduc¸ ˜ao A linguagem Python A linguagem Python Python ´e uma linguagem interpretada desenvolvida por Guido Van Rossum em 1991; ´E multiparadigma, por´em tudo em python ´e objeto; ´E livre, aberta e com baterias inclu´ıdas; Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados - E que provavelmente n˜ao ser˜ao em python 2.X); Dr. E. S. Pereira 5
  • 6. Python e Arduino Introduc¸ ˜ao A linguagem Python A linguagem Python Python ´e uma linguagem interpretada desenvolvida por Guido Van Rossum em 1991; ´E multiparadigma, por´em tudo em python ´e objeto; ´E livre, aberta e com baterias inclu´ıdas; Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados - E que provavelmente n˜ao ser˜ao em python 2.X); Dr. E. S. Pereira 6
  • 7. Python e Arduino Introduc¸ ˜ao A linguagem Python A linguagem Python Python ´e uma linguagem interpretada desenvolvida por Guido Van Rossum em 1991; ´E multiparadigma, por´em tudo em python ´e objeto; ´E livre, aberta e com baterias inclu´ıdas; Vers˜oes 2.7.X e 3.X; (Existem projetos que n˜ao foram migrados - E que provavelmente n˜ao ser˜ao em python 2.X); Dr. E. S. Pereira 7
  • 8. Python e Arduino Medida de Temperatura com LM35 Medida de Temperatura com LM35 Dr. E. S. Pereira 8
  • 9. Python e Arduino Medida de Temperatura com LM35 O experimento Evoluc¸ ˜ao da temperatura com o tempo LM35 - Sensor que apresenta sa´ıda de tens˜ao linear proporcional `a temperatura em que o mesmo se encontra, tendo em sua sa´ıda um sinal de 10mV para cada Grau C´elsius de temperatura; Opera na faixa de [−50o,1500]C. Dr. E. S. Pereira 9
  • 10. Python e Arduino Medida de Temperatura com LM35 O experimento Evoluc¸ ˜ao da temperatura com o tempo A sa´ıda do LM35 ser´a conectada a porta anal´ogica A0; O valor do sinal de A0 ir´a variar entre 0 a 1023, com 0 correspondendo a 0 Volts e 1023 correspondendo a 5 Volts. Como para cada variac¸ ˜ao de 1oC o sensor registra uma mudanc¸a de 10mV, ent˜ao: VA0 = (Vlido ∗(5/1023)); (1) T = VA0/0.01; (2) com VA0 a voltagem da sa´ıda do sensor, Vlido ´e o valor lido na porta anal´ogica A0 e T ´e a temperatura em graus C´elsius; Dr. E. S. Pereira 10
  • 11. Python e Arduino Medida de Temperatura com LM35 O experimento Evoluc¸ ˜ao da temperatura com o tempo A sa´ıda do LM35 ser´a conectada a porta anal´ogica A0; O valor do sinal de A0 ir´a variar entre 0 a 1023, com 0 correspondendo a 0 Volts e 1023 correspondendo a 5 Volts. Como para cada variac¸ ˜ao de 1oC o sensor registra uma mudanc¸a de 10mV, ent˜ao: VA0 = (Vlido ∗(5/1023)); (1) T = VA0/0.01; (2) com VA0 a voltagem da sa´ıda do sensor, Vlido ´e o valor lido na porta anal´ogica A0 e T ´e a temperatura em graus C´elsius; Dr. E. S. Pereira 11
  • 12. Python e Arduino Medida de Temperatura com LM35 O experimento Conex˜ao com Arduino Dr. E. S. Pereira 12
  • 13. Python e Arduino Medida de Temperatura com LM35 O c´odigo LM35 v0.1 #include "Arduino.h" const int LM35 = A0; float temperatura; unsigned long t0 = millis(); unsigned long t1 = t0; void setup(){ Serial.begin (9600); } void loop(){ temperatura = (float(analogRead(LM35)) * 5 / 1023) / 0.01; if(millis() - t1 >= 1000) { t1 = millis(); unsigned long t2 = (t1 - t0) / 1000; Serial.print(t2, DEC); Serial.print(’,’); Serial.println(temperatura ,DEC); } } Dr. E. S. Pereira 13
  • 14. Python e Arduino Comunicac¸ ˜ao Serial - python-serial Comunicac¸ ˜ao Serial - python-serial Dr. E. S. Pereira 14
  • 15. Python e Arduino Comunicac¸ ˜ao Serial - python-serial Comunicac¸ ˜ao Serial Comunicac¸ ˜ao Serial Para a comunicac¸ ˜ao serial ´e preciso instalar a biblioteca pyserial Para usu´arios de sistemas tipo debian: sudo apt-get install python-serial Dr. E. S. Pereira 15
  • 16. Python e Arduino Comunicac¸ ˜ao Serial - python-serial Comunicac¸ ˜ao Serial Comunicac¸ ˜ao Serial Para a comunicac¸ ˜ao serial ´e preciso instalar a biblioteca pyserial Para usu´arios de sistemas tipo debian: sudo apt-get install python-serial Dr. E. S. Pereira 16
  • 17. Python e Arduino Comunicac¸ ˜ao Serial - python-serial O c´odigo pyserial # / usr / bin / env python #−∗− coding : UTF−8 −∗− ’ ’ ’ Sistema de comunicacao via porta s e r i a l com arduino . ’ ’ ’ _author = "E. S. Pereira" _date = "31/03/2017" _version= "0.0.1" import serial ser = serial.Serial("/dev/ttyUSB0", 9600) ser.write(’5’) print ser.read() Dr. E. S. Pereira 17
  • 18. Python e Arduino Gerador de Gr´aficos em tempo Real Gerador de Gr´aficos em tempo Real Dr. E. S. Pereira 18
  • 19. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -1 # / usr / bin / env python #−∗− coding : UTF−8 −∗− ’ ’ ’ Sistema de comunicacao via porta s e r i a l com arduino . ’ ’ ’ _author = "E. S. Pereira" _date = "31/03/2017" _version= "0.0.1" import serial import matplotlib.pyplot as plt plt.ion() ser = serial.Serial("/dev/ttyUSB0", 9600) ser.read() Dr. E. S. Pereira 19
  • 20. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -2 def serOut(ser): tmp = ser.read() a = tmp while(tmp != ’n’): tmp = ser.read() a += tmp b = a.split(’r’)[0] b = b.split(’,’) return b[0], b[1] Dr. E. S. Pereira 20
  • 21. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -3 class DynamicUpdate (): # Suppose we know the x range min_x = 0 max_x = 20 def on_launch(self): # Set up p l o t self.figure , self.ax = plt.subplots( # subplot kw=d i c t ( p r o j e c t i o n =’ polar ’) ) self.lines , = self.ax.plot([], [], ’o’) # Autoscale on unknown a x i s and known lims on the other self.ax.set_autoscaley_on(True) # s e l f . ax . s e t x l i m ( s e l f . min x , s e l f . max x ) # s e l f . ax . s e t y l i m ( s e l f . min x , s e l f . max x ) # Other s t u f f self.ax.grid() Dr. E. S. Pereira 21
  • 22. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -4 def on_running(self , xdata , ydata): # Update data ( with the new and the old p o i n t s ) self.lines.set_xdata(xdata) self.lines.set_ydata(ydata) # Need both of t h e s e in order to r e s c a l e self.ax.relim() self.ax.autoscale_view() # We need to draw ∗and∗ f l u s h self.figure.canvas.draw() self.figure.canvas.flush_events() Dr. E. S. Pereira 22
  • 23. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte -5 def __call__(self): import numpy as np import time self.on_launch() xdata = [] ydata = [] i = 0 for x in np.arange(0, 100000, 1): x0, y0 = serOut(ser) if(len(x0) <= 6): if(y0 != ’’ and x0 != ’’): print(x0, y0) xdata.append(float(x0)) ydata.append(float(y0)) self.on_running(xdata , ydata) return xdata , ydata Dr. E. S. Pereira 23
  • 24. Python e Arduino Gerador de Gr´aficos em tempo Real O c´odigo Gerador de Gr´aficos Parte - 6 if(__name__ == "__main__): d = DynamicUpdate() d() Dr. E. S. Pereira 24
  • 25. Python e Arduino Gerador de Gr´aficos em tempo Real C´odigo Dispon´ıvel GitHub C´odigo Dispon´ıvel GitHub https://github.com/duducosmos/arduinoday2017 Dr. E. S. Pereira 25
  • 26. Python e Arduino Suavizac¸ ˜ao de Dados Coletados Suavizac¸ ˜ao de Dados Coletados Dr. E. S. Pereira 26
  • 27. Python e Arduino Suavizac¸ ˜ao de Dados Coletados Suavizac¸ ˜ao de Dados de sensores Suavizac¸ ˜ao de Dados de sensores Ao inv´es de coletar o dado direto, iremos passar o valor m´edio dos ´ultimos N dados coletados; Lembrando que o valor m´edio representa o valor esperado, ou o valor mais prov´avel de ser o correto; Dr. E. S. Pereira 27
  • 28. Python e Arduino Suavizac¸ ˜ao de Dados Coletados Suavizac¸ ˜ao de Dados de sensores Suavizac¸ ˜ao de Dados de sensores Ao inv´es de coletar o dado direto, iremos passar o valor m´edio dos ´ultimos N dados coletados; Lembrando que o valor m´edio representa o valor esperado, ou o valor mais prov´avel de ser o correto; Dr. E. S. Pereira 28
  • 29. Python e Arduino Suavizac¸ ˜ao de Dados Coletados O c´odigo LM35 v0.1 - Parte 1 #include "Arduino.h" const int LM35 = A0; float temperatura; unsigned long t0 = millis(); unsigned long t1 = t0; / / Smooth Temp Data const int readsSize = 30; unsigned int readIndex = 0; unsigned int reads[readsSize]; unsigned int totalReads; unsigned int averageReads; Dr. E. S. Pereira 29
  • 30. Python e Arduino Suavizac¸ ˜ao de Dados Coletados O c´odigo LM35 v0.1 - Parte 2 void smoothTemp(){ totalReads = totalReads - reads[readIndex]; reads[readIndex] = analogRead(LM35); totalReads = totalReads + reads[readIndex]; readIndex += 1; if(readIndex >= readsSize) { readIndex = 0; } averageReads = totalReads / readsSize; } Dr. E. S. Pereira 30
  • 31. Python e Arduino Suavizac¸ ˜ao de Dados Coletados O c´odigo LM35 v0.1 - Parte 3 void setup(){ Serial.begin (9600); for(int i = 0; i < readsSize; i++ ) { reads[i] = 0; } } Dr. E. S. Pereira 31
  • 32. Python e Arduino Suavizac¸ ˜ao de Dados Coletados O c´odigo LM35 v0.1 - Parte 3 void loop(){ / / temperatura = ( f l o a t ( analogRead (LM35 ) ) ∗ 5 / 1023) / 0 . 0 1 ; smoothTemp(); temperatura = (float(averageReads) * 5 / 1023) / 0.01; if(millis() - t1 >= 1000) { t1 = millis(); unsigned long t2 = (t1 - t0) / 1000; Serial.print(t2, DEC); Serial.print(’,’); Serial.println(temperatura ,DEC); } } Dr. E. S. Pereira 32
  • 34. Python e Arduino Resultados Leitura de Dados N˜ao Suavizados Comunicac¸ ˜ao Serial Dr. E. S. Pereira 34
  • 35. Python e Arduino Resultados Leitura de Dados Suavizados Comunicac¸ ˜ao Serial Dr. E. S. Pereira 35
  • 36. Python e Arduino Resultados FIM FIM MUITO OBRIGADO. Dr. E. S. Pereira 36