Python + Arduino:produtividade ao extremo
Álvaro Justen aka Turicashttp://twitter.com/turicashttp://github.com/turicas
http://CursoDeArduino.com.br/
+
Álvaro Justen aka Turicas, prazer!
www.CursoDeArduino.com.br
http://www.PythOnRio.org/
http://ArduInRio.cc/
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/
Parte 1 – Resumão
http://tinyurl.com/palestra-online-python
História
Guido van Rossum
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”● ...
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
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! (?)
Onde é usada? Quem usa?
● YouTube● Google/Google App Engine● NASA● Industrial Light & Magic● Globo.com● ...
● GIMP● Blender● Ubuntu● ...
Onde roda?
● GNU/Linux● Mac OS● *nix● Windows● Android● Nokia S60● Microcontroladores● ...
Como instalar?
GNU/Linux e Mac OS: já tem!
Windows: www.python.org
Android: SL4A(Scripting Layer For Android)
iPython
● Debian/Ubuntu/derivados:
sudo aptitude install ipython
● Dica: no Ubuntu:
sudo apt-get install aptitude
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]}
Nada de parênteses,nada de chaves!
if expressao1:
comando1
if expressao2:
comando2
elif expressao3:
comando3
elif expressao4:
comando4
else:
comando5
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
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
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()
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
...
Navegando com Python
import urlliburl = 'http://www.CursoDeArduino.com.br/'pagina = urllib.urlopen(url)print pagina.read()
Eventos
23 y 24 de Septiembre de 2011Junín, Buenos Aires
Argentina
http://ar.pycon.org/
Onde aprender?
● 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/
Rio de Janeiro
● Python básico: outubro/2011● Python para sysadmins: em breve
Python com Arduino?
+
Python no ArduinoDá?
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!
Python no PC + Arduino
● Com fio● USB● Ethernet
● Sem fio● Bluetooth● Wi-Fi● ZigBee
Com fio – USB
pySerial - Instalação
● Debian/Ubuntu/derivados:
sudo aptitude install python-serial
● Dica – no Ubuntu:
sudo apt-get install aptitude
Comandando o Arduinocom Python
import serialporta = '/dev/ttyUSB0'baud_rate = 9600arduino = serial.Serial(porta, baud_rate)arduino.write('H')print arduino.read()arduino.close()
Com fio – Ethernet
urllib + Ethernet shield
Sem fio - Bluetooth
py-bluez + shield Bluetooth
No Debian/Ubuntu:sudo aptitude install python-bluetooth
Solução mais barata!
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
Sem fio - ZigBee
● Conversor serial/zigbee no PC (via USB)● Arduino + XBee
Projetos! \o/
Tomada Bluetoothhttp://www.amarino-toolkit.net/
Guitarrino
Python + Arduino + Frets on Fire
Turiquinhas v2.0http://justen.eng.br/Turiquinhas
tweetlampControlando eletrodomésticos pelo Twitter com Python e Arduino!
Twitter → [HTTP] → PythonPython → [USB] → Arduino
Arduino → [relé] → Eletrodoméstico
http://github.com/turicas/tweetlamp
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!
http://twitter.com/turicashttp://github.com/turicas
http://CursoDeArduino.com.br/http://blog.justen.eng.br/[email protected]
import this
Top Related