55
Python + Arduino: produtividade ao extremo Álvaro Justen aka Turicas http://twitter.com/turicas http://github.com/turicas http://CursoDeArduino.com.br/ +

Arduino + Python: produtividade ao extremo

Embed Size (px)

DESCRIPTION

Slides da palestra que ministrei online no dia 06/09/2011 às 20h no LabDeGaragem.com, onde abordei introdução à linguagem Python, integração de Python com Arduino com e sem fio (através de USB, Ethernet, Bluetooth, Wi-Fi e ZigBee) e exemplifiquei essa integração com a apresentação de alguns projetos.

Citation preview

Page 1: Arduino + Python: produtividade ao extremo

Python + Arduino:produtividade ao extremo

Álvaro Justen aka Turicashttp://twitter.com/turicashttp://github.com/turicas

http://CursoDeArduino.com.br/

+

Page 2: Arduino + Python: produtividade ao extremo

Álvaro Justen aka Turicas, prazer!

@[email protected]

www.CursoDeArduino.com.br

Page 3: Arduino + Python: produtividade ao extremo

http://www.PythOnRio.org/

Page 4: Arduino + Python: produtividade ao extremo

http://ArduInRio.cc/

Page 5: Arduino + Python: produtividade ao extremo
Page 6: Arduino + Python: produtividade ao extremo
Page 7: Arduino + Python: produtividade ao extremo

Roteiro

● Python, a linguagem – revisão● Python com Arduino:

● Python no Arduino● Por que não?

● Python no PC + Arduino● Com fio● Sem fio

● Projetos! \o/

Page 8: Arduino + Python: produtividade ao extremo

Parte 1 – Resumão

http://tinyurl.com/palestra-online-python

Page 9: Arduino + Python: produtividade ao extremo

História

Guido van Rossum

Page 10: Arduino + Python: produtividade ao extremo
Page 11: Arduino + Python: produtividade ao extremo

Aplicações● Shell scripts● Administração de sistemas/redes● Aplicações científicas● Computação gráfica● Jogos● Interfaces com o usuário/GUI● Aplicações Web● Robótica● “glue-language”● ...

Page 12: Arduino + Python: produtividade ao extremo

Principais características

● Uso geral● Interpretada, VHLL● Criada por Guido van Rossum em 1989● Multiplataforma● OO, Procedural e funcional● Software livre● Baterias incluídas!● Sintaxe elegante, simples e clara● Tipagem dinâmica e forte

Page 13: Arduino + Python: produtividade ao extremo

Por que Python?

● Fácil de aprender● Poderosa● Alta produtividade● Estruturas de dados de alto nível● Blocos de código são delimitados por indentação! (?)

Page 14: Arduino + Python: produtividade ao extremo

Onde é usada? Quem usa?

● YouTube● Google/Google App Engine● NASA● Industrial Light & Magic● Globo.com● ...

● GIMP● Blender● Ubuntu● ...

Page 15: Arduino + Python: produtividade ao extremo

Onde roda?

● GNU/Linux● Mac OS● *nix● Windows● Android● Nokia S60● Microcontroladores● ...

Page 16: Arduino + Python: produtividade ao extremo

Como instalar?

GNU/Linux e Mac OS: já tem!

Windows: www.python.org

Android: SL4A(Scripting Layer For Android)

Page 17: Arduino + Python: produtividade ao extremo
Page 18: Arduino + Python: produtividade ao extremo
Page 19: Arduino + Python: produtividade ao extremo

iPython

● Debian/Ubuntu/derivados:

sudo aptitude install ipython

● Dica: no Ubuntu:

sudo apt-get install aptitude

Page 20: Arduino + Python: produtividade ao extremo

Tipos básicos● Inteiro: 42● Ponto flutuante: 3.14● Complexo (!): 1.5 + 5.3j● String: “””minha string”””● Tuplas: (1, “aaa”)● Listas:

[1, 2.3, “abc”, [1, “b”]]● Dicionários:

{'a': 1, 2: 'b', [1, 2]: [3, 4]}

Page 21: Arduino + Python: produtividade ao extremo

Nada de parênteses,nada de chaves!

if expressao1:

comando1

if expressao2:

comando2

elif expressao3:

comando3

elif expressao4:

comando4

else:

comando5

Page 22: Arduino + Python: produtividade ao extremo

Listas, strings e slices

In [1]: l = [1, 3, 4, 'LdG', 'Arduino']

In [2]: print l[1]3

In [3]: print l[1:4][3, 4, 'LdG']

In [4]: for elemento in l: ....: print elemento ....: ....:134LdGArduino

Page 23: Arduino + Python: produtividade ao extremo

Listas, strings e slices (2)

In [5]: virus = 'nome-do-virus.exe' In [6]: print virus[-3:]exe In [7]: print virus[5:]do-virus.exe In [8]: print virus.split('.')['nome-do-virus', 'exe'] In [9]: novo_virus = 'nome.do.virus.exe' In [10]: print novo_virus.split('.')['nome', 'do', 'virus', 'exe'] In [11]: print novo_virus.split('.')[-1]exe In [12]: print 'nome.do.virus.pl'.split('.')[-1]pl

Page 24: Arduino + Python: produtividade ao extremo

Trabalhando com arquivos

arquivo = open('nome.txt')for linha in arquivo: print linha

arquivo_2 = open('nome-2.txt', 'w')arquivo_2.write('Python rules!')arquivo_2.close()

Page 25: Arduino + Python: produtividade ao extremo

Baterias incluídas! sys, os, re, string, zlib

socket, urrlib, httplib, imaplib

time, datetime, math, random

doctest, unittest, xml, xmlrpclib

struct, pickle, cPickle, threading

logging, decimal

...

Page 26: Arduino + Python: produtividade ao extremo

Navegando com Python

import urlliburl = 'http://www.CursoDeArduino.com.br/'pagina = urllib.urlopen(url)print pagina.read()

Page 27: Arduino + Python: produtividade ao extremo

Eventos

Page 28: Arduino + Python: produtividade ao extremo

http://www.pythonbrasil.org.br/

São Paulo29/setembro a 1º/outubro

Page 29: Arduino + Python: produtividade ao extremo

23 y 24 de Septiembre de 2011Junín, Buenos Aires

Argentina

http://ar.pycon.org/

Page 30: Arduino + Python: produtividade ao extremo

http://www.HackNRio.org/Dezembro/2011

naCidade maravilhosa! \o/

Page 31: Arduino + Python: produtividade ao extremo

Onde aprender?

Page 32: Arduino + Python: produtividade ao extremo

● Tutoriais:http://www.python.org.br/

http://docs.python.org/tutorial“Google Python Class”

● Lista Python-Brasil e locais

● #python-br @ irc.freenode.net

● Eventos:http://www.PythOnCampus.org/

http://www.PythonBrasil.org.br/

● Cursos:http://www.WelcomeToTheDjango.com.br/

http://www.CursoDePython.com.br/

Page 33: Arduino + Python: produtividade ao extremo

Rio de Janeiro

● Python básico: outubro/2011● Python para sysadmins: em breve

[email protected]

Page 34: Arduino + Python: produtividade ao extremo

Python com Arduino?

+

Page 35: Arduino + Python: produtividade ao extremo

Python no ArduinoDá?

Page 36: Arduino + Python: produtividade ao extremo

Python no microcontrolador

● PyMite:● http://wiki.python.org/moin/PyMite● http://code.google.com/p/python-on-a-chip/

● Por que não?● Só roda no Mega● Só tem a sintaxe: nada de baterias!

Page 37: Arduino + Python: produtividade ao extremo

Python no PC + Arduino

● Com fio● USB● Ethernet

● Sem fio● Bluetooth● Wi-Fi● ZigBee

Page 38: Arduino + Python: produtividade ao extremo

Com fio – USB

Page 39: Arduino + Python: produtividade ao extremo

pySerial - Instalação

● Debian/Ubuntu/derivados:

sudo aptitude install python-serial

● Dica – no Ubuntu:

sudo apt-get install aptitude

Page 40: Arduino + Python: produtividade ao extremo

Comandando o Arduinocom Python

import serialporta = '/dev/ttyUSB0'baud_rate = 9600arduino = serial.Serial(porta, baud_rate)arduino.write('H')print arduino.read()arduino.close()

Page 41: Arduino + Python: produtividade ao extremo

Com fio – Ethernet

urllib + Ethernet shield

Page 42: Arduino + Python: produtividade ao extremo

Sem fio - Bluetooth

py-bluez + shield Bluetooth

No Debian/Ubuntu:sudo aptitude install python-bluetooth

Solução mais barata!

Page 43: Arduino + Python: produtividade ao extremo

Sem fio – Wi-Fi

● Opções:● Shield Wi-Fi + roteador Wi-Fi● Shield Ethernet + roteador Wi-Fi

● Clientes:● Smartphones● Notebooks● Outros Arduinos!

● Roteador Wi-Fi:● Internet + Dynamic DNS + port foward

#FTW

Page 44: Arduino + Python: produtividade ao extremo

Sem fio - ZigBee

● Conversor serial/zigbee no PC (via USB)● Arduino + XBee

Page 45: Arduino + Python: produtividade ao extremo

Projetos! \o/

Page 46: Arduino + Python: produtividade ao extremo

Semáforo Coding DojoRio

http://justen.eng.br/semaforo/

Page 47: Arduino + Python: produtividade ao extremo

Tomada Bluetoothhttp://www.amarino-toolkit.net/

Page 48: Arduino + Python: produtividade ao extremo

Guitarrino

Python + Arduino + Frets on Fire

Page 49: Arduino + Python: produtividade ao extremo
Page 50: Arduino + Python: produtividade ao extremo
Page 51: Arduino + Python: produtividade ao extremo

Turiquinhas v2.0http://justen.eng.br/Turiquinhas

Page 52: Arduino + Python: produtividade ao extremo
Page 53: Arduino + Python: produtividade ao extremo

tweetlampControlando eletrodomésticos pelo Twitter com Python e Arduino!

Twitter → [HTTP] → PythonPython → [USB] → Arduino

Arduino → [relé] → Eletrodoméstico

http://github.com/turicas/tweetlamp

Page 54: Arduino + Python: produtividade ao extremo

Ficou interessado?

http://CursoDeArduino.com.br/[email protected]

● Ourinhos/SP – outubro/2011● Belo Horizonte/MG – novembro/2011● João Monlevade/MG – novembro/2011● São Paulo/SP – dezembro/2011● Rio de Janeiro/RJ – dezembro/2011● Online – em breve!

Page 55: Arduino + Python: produtividade ao extremo

http://twitter.com/turicashttp://github.com/turicas

http://CursoDeArduino.com.br/http://blog.justen.eng.br/[email protected]

import this