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
● [Link]
● [Link]
● [Link]
● [Link]
git clone git@[Link]:cleitonbueno/[Link]
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: [Link]
git clone git@[Link]:cleitonbueno/[Link]
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 git@[Link]:cleitonbueno/[Link]
git clone git@[Link]:cleitonbueno/[Link]
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 git@[Link]:cleitonbueno/[Link]
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 git@[Link]:cleitonbueno/[Link]
Pingo
API em Python, para programar diversos devices entre
eles o Arduino, feito pelo Garoa Hacker Clube.
$ git clone [Link]
$ cd pingo-py
$ cat Makefile
$ pip install -r [Link]
$ sudo python [Link] install
$ [Link] pingo
git clone git@[Link]:cleitonbueno/[Link]
Hello World Arduino
Pisca Led!
import pingo
from time import sleep
board = [Link].get_board()
led_pin = [Link][13]
led_pin.mode = [Link]
while True:
led_pin.hi()
sleep(1)
led_pin.lo()
sleep(1)
git clone git@[Link]:cleitonbueno/[Link]
Lendo botões
Lendo status botão!
import pingo
from time import sleep
board = [Link].get_board()
botao_pin = [Link][12]
botao_pin.mode = [Link]
while True:
status_botao = botao_pin.state
if status_botao == "HIGH":
print "Botao pressionado!"
sleep(1)
git clone git@[Link]:cleitonbueno/[Link]
Interagindo com Web
Pisca Led!
import SimpleHTTPServer
import SocketServer
import pingo
from time import sleep
PORT = 80
class my_arduino():
...
class my_handler([Link]):
...
git clone git@[Link]:cleitonbueno/[Link]
Comunicação Serial
Codigo Arduino (código parcial!)
void loop(){
if ([Link]() > 0) {
unsigned char cmd_rx = [Link]();
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 git@[Link]:cleitonbueno/[Link]
Comunicação Serial
Codigo Python (código parcial!)
comport = [Link]('/dev/ttyACM0', 115200)
try:
while True:
print "Led ON"
[Link](LED_ON)
[Link](1)
print "Led OFF"
[Link](LED_OFF)
[Link](1)
git clone git@[Link]:cleitonbueno/[Link]
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 git@[Link]:cleitonbueno/[Link]
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 git@[Link]:cleitonbueno/[Link]
O que mais++
Avançado:
Interrupções no Arduino
SD-CARD
Programação baremetal
AVR-GCC
AVR Studio
git clone git@[Link]:cleitonbueno/[Link]
git clone git@[Link]:cleitonbueno/[Link]
Referências
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
git clone git@[Link]:cleitonbueno/[Link]
Fim