Arduino + Python: produtividade ao extremo

26,193 views

Published on

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.

Published in: Technology
  • Be the first to comment

Arduino + Python: produtividade ao extremo

  1. 1. Python + Arduino:produtividade ao extremo + Álvaro Justen aka Turicas http://twitter.com/turicas http://github.com/turicashttp://CursoDeArduino.com.br/
  2. 2. Álvaro Justen aka Turicas, prazer! www.CursoDeArduino.com.br @turicasalvaro@CursoDeArduino.com.br
  3. 3. http://www.PythOnRio.org/
  4. 4. http://ArduInRio.cc/
  5. 5. 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/
  6. 6. Parte 1 – Resumãohttp://tinyurl.com/palestra-online-python
  7. 7. HistóriaGuido van Rossum
  8. 8. 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”● ...
  9. 9. 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
  10. 10. Por que Python?● Fácil de aprender● Poderosa● Alta produtividade● Estruturas de dados de alto nível● Blocos de código são delimitados porindentação! (?)
  11. 11. Onde é usada? Quem● YouTube usa?● Google/Google App Engine● NASA● Industrial Light & Magic● Globo.com● ...● GIMP● Blender● Ubuntu● ...
  12. 12. Onde roda?● GNU/Linux● Mac OS● *nix● Windows● Android● Nokia S60● Microcontroladores● ...
  13. 13. Como instalar?GNU/Linux e Mac OS: já tem! Windows: www.python.org Android: SL4A(Scripting Layer For Android)
  14. 14. iPython● Debian/Ubuntu/derivados: sudo aptitude install ipython● Dica: no Ubuntu: sudo apt-get install aptitude
  15. 15. 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]}
  16. 16. Nada de parênteses, nada de chaves!if expressao1: comando1 if expressao2: comando2 elif expressao3: comando3elif expressao4: comando4else: comando5
  17. 17. Listas, strings e slicesIn [1]: l = [1, 3, 4, LdG, Arduino]In [2]: print l[1]3In [3]: print l[1:4][3, 4, LdG]In [4]: for elemento in l: ....: print elemento ....: ....:134LdGArduino
  18. 18. Listas, strings e slices (2)In [5]: virus = nome-do-virus.exeIn [6]: print virus[-3:]exeIn [7]: print virus[5:]do-virus.exeIn [8]: print virus.split(.)[nome-do-virus, exe]In [9]: novo_virus = nome.do.virus.exeIn [10]: print novo_virus.split(.)[nome, do, virus, exe]In [11]: print novo_virus.split(.)[-1]exeIn [12]: print nome.do.virus.pl.split(.)[-1]pl
  19. 19. Trabalhando com arquivosarquivo = open(nome.txt)for linha in arquivo: print linhaarquivo_2 = open(nome-2.txt, w)arquivo_2.write(Python rules!)arquivo_2.close()
  20. 20. 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 ...
  21. 21. Navegando com Pythonimport urlliburl = http://www.CursoDeArduino.com.br/pagina = urllib.urlopen(url)print pagina.read()
  22. 22. Eventos
  23. 23. São Paulo 29/setembro a 1º/outubrohttp://www.pythonbrasil.org.br/
  24. 24. 23 y 24 de Septiembre de 2011 Junín, Buenos Aires Argentina http://ar.pycon.org/
  25. 25. http://www.HackNRio.org/ Dezembro/2011 na Cidade maravilhosa! o/
  26. 26. Onde aprender?
  27. 27. ● 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/
  28. 28. Rio de Janeiro● Python básico: outubro/2011● Python para sysadmins: em breve Python@CursoDeArduino.com.br
  29. 29. Python com Arduino? +
  30. 30. Python no Arduino Dá?
  31. 31. 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!
  32. 32. Python no PC + Arduino● Com fio ● USB ● Ethernet● Sem fio ● Bluetooth ● Wi-Fi ● ZigBee
  33. 33. Com fio – USB
  34. 34. pySerial - Instalação● Debian/Ubuntu/derivados: sudo aptitude install python-serial● Dica – no Ubuntu: sudo apt-get install aptitude
  35. 35. Comandando o Arduino com Pythonimport serialporta = /dev/ttyUSB0baud_rate = 9600arduino = serial.Serial(porta, baud_rate)arduino.write(H)print arduino.read()arduino.close()
  36. 36. Com fio – Etherneturllib + Ethernet shield
  37. 37. Sem fio - Bluetooth py-bluez + shield Bluetooth No Debian/Ubuntu:sudo aptitude install python-bluetooth Solução mais barata!
  38. 38. 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
  39. 39. Sem fio - ZigBee● Conversor serial/zigbee no PC (via USB)● Arduino + XBee
  40. 40. Projetos! o/
  41. 41. Semáforo Coding DojoRiohttp://justen.eng.br/semaforo/
  42. 42. Tomada Bluetoothhttp://www.amarino-toolkit.net/
  43. 43. GuitarrinoPython + Arduino + Frets on Fire
  44. 44. Turiquinhas v2.0http://justen.eng.br/Turiquinhas
  45. 45. tweetlampControlando eletrodomésticos pelo Twitter com Python e Arduino! Twitter → [HTTP] → Python Python → [USB] → Arduino Arduino → [relé] → Eletrodoméstico http://github.com/turicas/tweetlamp
  46. 46. Ficou interessado?● 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://CursoDeArduino.com.br/pesquisa Python@CursoDeArduino.com.br
  47. 47. import this http://twitter.com/turicas http://github.com/turicashttp://CursoDeArduino.com.br/ http://blog.justen.eng.br/ alvaro@CursoDeArduino.com.br

×