0% acharam este documento útil (0 voto)
19 visualizações19 páginas

Python-com-Arduino - Cleiton Bueno

Enviado por

edutobiaslopes
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
19 visualizações19 páginas

Python-com-Arduino - Cleiton Bueno

Enviado por

edutobiaslopes
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 19

Python com Arduino

Um mundo de possibilidades
Cleiton Bueno
Engenheiro e entusiasta open-source
Sistemas Embarcados | Firmwares | Linux | Linux Embedded | C |
Python | Shell Script | Tuning | Security | Hardening | Profiling

● http://www.cleitonbueno.com
● http://www.b2open.com
● http://www.linkedin.com/in/cleitonbueno
● http://www.embarcados.com.br/author/cleitonrbuenogmail-com/

git clone [email protected]:cleitonbueno/arduinoday.git


Compartilhar — copiar e redistribuir o material em qualquer suporte
ou formato
Adaptar — remixar, transformar, e criar a partir do material para
qualquer fim, mesmo que comercial.

Você deve dar o crédito apropriado, prover um link para a


licença e indicar se mudanças foram feitas.

Se você remixar, transformar, ou criar a partir do material, tem


de distribuir as suas contribuições sob a mesma licença que o
original.

Licença: http://creativecommons.org/licenses/by-sa/3.0/br/

git clone [email protected]:cleitonbueno/arduinoday.git


Arduino
Projeto de origem italiana, da ideiologia hardware-livre em uma única placa,
com fácil acesso para prototipar ideias e brincadeiras.

Disponibiliza uma IDE completa para programar em C/C++, compilar e gravar na


placa utilizando apenas um cabo USB conectado, para gravação e debug.

Atualmente com mais de 10 modelos no mercado, iremos abordar e comentar


sobre Arduino UNO, onde possui interfaces de IO(Entrada e Saida)
configuraveis, UART(interface serial), I2C, SPI, PWM entre outros modos.

Alimentação de 7V a 12V para não ter problemas e operação interna e IO's a


5V.

git clone [email protected]:cleitonbueno/arduinoday.git


git clone [email protected]:cleitonbueno/arduinoday.git
Python
Linguagem criada por Guido Van, interpretada, tipagem forte e dinamica,
orientada a objetos, prioridade da legibilidade do codigo sobre a velocidade.

Torna-se poderosa por suas bibliotecas nativas e modulos de terceiros, grande


uso em soluções Web utilizando Django, Flask, Tornado, Twisted, além de
grande presença em aplicações matematicas usando Numpy, SciPy e Mineração
de Dados e BigData com Scrapy, BeautifulSoap entre outros.

Com poucas linhas e recursos você realiza comunicação serial, server/client


TCP e UDP, MQTT entre outras formas de comunicações.

Aplicações multi-plataforma, com GUI ou CLI.

git clone [email protected]:cleitonbueno/arduinoday.git


Firmata
Protocolo genérico que permite a comunicação de um equipamento e um
microcontrolador via software.

O firmware estabelece um protocolo de comunicação via software, do


computador para o Arduino.

Na IDE do Arduino, clique em File > Examples > Firmata > StandardFirmata

Em seguida, Sketch > Verify / Compile ou [Ctrl+R] e depois gravar a aplicação


no Arduino File > Upload [Ctrl+U]

git clone [email protected]:cleitonbueno/arduinoday.git


Pingo
API em Python, para programar diversos devices entre
eles o Arduino, feito pelo Garoa Hacker Clube.

$ git clone https://github.com/pingo-io/pingo-py.git


$ cd pingo-py
$ cat Makefile
$ pip install -r requirements.txt
$ sudo python setup.py install
$ py.test pingo

git clone [email protected]:cleitonbueno/arduinoday.git


Hello World Arduino
Pisca Led!
import pingo
from time import sleep

board = pingo.detect.get_board()
led_pin = board.pins[13]
led_pin.mode = pingo.OUT

while True:
led_pin.hi()
sleep(1)
led_pin.lo()
sleep(1)

git clone [email protected]:cleitonbueno/arduinoday.git


Lendo botões
Lendo status botão!
import pingo
from time import sleep

board = pingo.detect.get_board()
botao_pin = board.pins[12]
botao_pin.mode = pingo.IN

while True:
status_botao = botao_pin.state
if status_botao == "HIGH":
print "Botao pressionado!"
sleep(1)

git clone [email protected]:cleitonbueno/arduinoday.git


Interagindo com Web
Pisca Led!
import SimpleHTTPServer
import SocketServer
import pingo
from time import sleep

PORT = 80

class my_arduino():
...

class my_handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
...

git clone [email protected]:cleitonbueno/arduinoday.git


Comunicação Serial
Codigo Arduino (código parcial!)
void loop(){
if (Serial.available() > 0) {
unsigned char cmd_rx = Serial.read();
if (cmd_rx == CMD_LIGA_LED) { // letra l -> LIGAR
digitalWrite(PINLED, HIGH);
}
else if (cmd_rx == CMD_DESLIGA_LED) { // letra d -> DESLIGAR
digitalWrite(PINLED, LOW);
}
}
}

git clone [email protected]:cleitonbueno/arduinoday.git


Comunicação Serial
Codigo Python (código parcial!)
comport = serial.Serial('/dev/ttyACM0', 115200)

try:
while True:
print "Led ON"
comport.write(LED_ON)
time.sleep(1)
print "Led OFF"
comport.write(LED_OFF)
time.sleep(1)

git clone [email protected]:cleitonbueno/arduinoday.git


O que mais
Arduino:
Comunicação Ethernet
Comunicação Wifi
Comunicação Bluetooth
Comunicação GPRS
GPS, RFID, Sensores Temperatura, Umidade, Acelerometro, Barometro,
Servomotor, motor de passo, LDR, RTC, Display LCD e muito mais

git clone [email protected]:cleitonbueno/arduinoday.git


O que mais++
Python:
Comunicação Ethernet
Comunicação Bluetooth
Armazenar em banco de dados
Integrar com API do Twitter
Integrar com API do Google
Integrar com Protocolo de Troca de Mensagens, Ex: MQTT
Middleware para computadores e outras placas como Beaglebone Black,
Raspberry PI entre outras com o Arduino
Envio de e-mails/mensagens XMPP
Webserver ...

git clone [email protected]:cleitonbueno/arduinoday.git


O que mais++
Avançado:
Interrupções no Arduino
SD-CARD
Programação baremetal
AVR-GCC
AVR Studio

git clone [email protected]:cleitonbueno/arduinoday.git


git clone [email protected]:cleitonbueno/arduinoday.git
Referências
http://www.embarcados.com.br/arduino-uno/
http://www.firmata.org/wiki/Main_Page
https://pypi.python.org/pypi/pyFirmata
http://www.nongnu.org/avr-libc/
https://www.crummy.com/software/BeautifulSoup/
http://scrapy.org/
http://www.numpy.org/
https://www.scipy.org/
https://github.com/pingo-io/pingo-py
http://cleitonbueno.com/python-webserver-em-um-minuto/
http://www.embarcados.com.br/python-e-arduino-comunicacao-serial/

git clone [email protected]:cleitonbueno/arduinoday.git


Fim

Você também pode gostar