You are on page 1of 10

Arduino e Python: Do It Yourself

Jefferson Jardem Izaias de Souza1, Luis Bruno Pereira do Nascimento1, Paulo Rodrigues dos Santos Filho2
1

Alunos Bacharelandos em Cincias da Computao pela Universidade Estadual do Piau (UESPI) Av. NS de Ftima - Parnaba - PI, 64202-22001-970.

Bacharel em Cincias da Computao pela Universidade Estadual do Piau (UESPI) Av. NS de Ftima - Parnaba - PI, 64202-22001-970.
{jeffersonjardem,luisbrunu,paulofilhosantiago}@gmail.com

Abstract. In this article encourages the use of free technologies, where the user materialize their own ideas using open hardware platforms to make it materialize. This is due to the large growth of the free movement of hardware, where it tries to be a free alternative for engineers and professionals to develop their projects and provide the dissemination of knowledge. Arduino projects are free as part of this movement and gained some focus in order for all to contribute to a quality hardware, using free tools such as Python is expected to create a mature hardware as well as in the free software movement. Resumo. Neste artigo incentiva-se o usos de tecnologias livres, onde o prprio usurio concretize suas ideias usando plataformas de hardware livre para materializ-la. Isso deve-se ao grande crescimento do movimento livre do hardware, onde o mesmo tenta ser uma alternativa livre para engenheiros e profissionais da rea desenvolverem seus projetos e proporcionar a disseminao do conhecimento. Projetos livres como Arduino so parte desse movimento e ganharam certo enfoque, afim de todos os possam contribuir para um hardware de qualidade, com o uso de ferramentas livres como Python espera-se criar um hardware amadurecido assim como acontece no movimento de software livre.

1. Introduo
As redes evoluram bastante desde o seu surgimento e a necessidade do homem tem sido o combustvel para essa evoluo. [TENEBAUM 2003] define uma rede de computadores como sendo um conjunto de computadores autnomos interconectados por recursos tecnolgicos, possibilitando assim a troca de informaes entre si. Partindo deste conceito conclui-se que a primeira rede de computadores propriamente dita foi a ARPANET (Advanced Research Project Agency Network) criada no final da dcada de 60 proposta pelo Defense Advanced Research Projects Agency (DARPA), sendo ela um ancestral da internet da qual conhecemos hoje, interligando quatro grandes centros de pesquisas da poca, que eram Stanford Research Institute (SRI), University of California, Los Angeles (UCLA), University of California,

Santa Barbara (UCSB) e University of Utah, todas localizadas no Estados Unidos da Amrica (EUA), no seguindo sua proposta inicial que era compartilhar recursos computacionais entre os fornecedores do governo [MENDES 2007] a ARPANET passou a ser utilizada para fins de pesquisas e colaborao entre as entidades de pesquisas conectadas, permitindo que os laboratrios trocassem informaes entre si. Os valores agregados na comunicao a tornam importante uma vez que mantm ativo o fluxo de informaes que necessrio para o desenvolvimento de qualquer organizao. Atualmente o maior exemplo de rede que mantm este fluxo, a internet, onde a mesma faz uso de protocolos para estabelecer conexes de comunicao e assim envia ou recebe informaes. Essa rede estabelecida utilizando os mais diversos dispositivos, seja ele, um computador, o que j estamos habituados a ver, ou uma torradeira [BBC 2001]. primeira vista pode parecer estranho ver uma torradeira conectada internet, mas esse apenas uma das muitas possibilidades agregadas a evoluo das redes.

2. Hardware Livre
Devido ao sucesso do software livre, no fim da dcada de 90, engenheiros inspirados pelo movimento de liberdade provocado pelo software, vem buscando maneiras de formalizar estes conceitos, antes utilizados somente no software, tambm no hardware. Porm em se tratando de hardware existe algumas peculiaridades inerentes a sua liberao, pois simples duplicar um software e criar inmeras cpias do mesmo, porm com hardware no bem assim, logo que o equipamento utilizado adquirido atravs de meios financeiros, ento existe um custo, e este por possuir essas peculiaridades ainda no possui uma distino fixa a respeito de Hardware Aberto e Hardware Livre, estando isso ainda em discusso [OSIER-MIXON 2011].

Figura 1. Logotipo do movimento do Open Hardware 1.

Pelo fato de ser um pouco diferente, em certo sentido, hardware no verdadeiramente livre, conforme foi dito tem um certo custo e algum ter que pagar por esse material slido adquirido, o hardware em si, que um produto e que devem obedecer a fsica dura dos tomos, no dos bits [ANDERSON 2006], porm um equipamento eletrnico nada mais do que a materializao de uma ideia. Dessa forma este conceito de liberdade encaixa perfeitamente aos diagramas, esquemas e demais documentos utilizados, por exemplo o cdigo fonte que executado no hardware pode ser de cdigo aberto e disponvel, o uso desses documentos de construo do hardware mais complicado pelo fato de que uma ideia real acionada ao hardware normalmente
1 http://www.openhardware.org/

tem uma patente, e que em muitos casos bem genrica, o que torna ainda mais difcil o desenvolvimento de algo livre coberto por essa patente. Aos poucos os projetos de hardware livre vem ganhando espao e os mais diversos tipos de colaboradores, sejam eles desenvolvedores, engenheiros e hobistas, adeptos da filosofia Do It Yourself (DIY) do ingls, Faa Voc Mesmo, tendo simpatizantes do movimento livre espalhados pelo mundo inteiro, onde criam e participam de inmeras comunidades virtuais ajudando na disseminao e criao de ideias formadas no mbito da liberdade do conhecimento. 2.1. Projetos de Hardware Livre Atualmente existem vrios projetos de hardware livre que esto dando certo e dentre os mais variados tipos destacam-se os projetos da gigante IBM com o Power Architecture2, um projeto de hardware, agora aberto, no qual a IBM colocou-o a disposio das instituies acadmicas e de pesquisas de forma gratuita, afim de incentivar o crescimento do mesmo. A Sun Microsystems outro gigante do mercado tecnolgico seguindo a onda da IBM, disponibilizou o OpenSPARC3, que um projeto de microprocessadores baseados em Reduced Instruction Set Computer (RISC), sob a licena GNU Public Licence (GPL). Outro projeto bem sucedido o Arduino, relacionado a criao de um microcontrolador aberto acessvel a todos os pblicos, que se popularizou devido ao fcil manuseio e ao grande nmero de dispositivos fabricados por terceiros visando o seu complemento, como placas adicionais e sensores. Atualmente existem inmeros projetos baseados no Arduino, inclusive no brasil temos uma verso tupiniquim denominado Brasuino4.

3. Plataforma Arduino
O Arduino uma plataforma de hardware livre destinada para desenvolvimento de prottipos eletrnicos capazes de interagir com o ambiente, usando ferramentas acessveis, de baixo custo e usabilidade simples, ao alcance de profissionais de reas no ligadas diretamente eletrnica como computao, engenharia mecnica e etc. Essa plataforma pode ser dividida em duas partes: O hardware, que representado por uma pequena placa de circuitos eletrnicos e o software, representado por uma IDE, juntamente com sua linguagem de programao prpria, que servem para construir um sketch (cdigo), o qual dir o que a placa deve fazer [ARDUINO 2011]. 3.1. O Hardware O Arduino uma placa de circuitos, baseada em um microcontrolador Atmel AVR de 8 bits, a qual resume-se a um modesto computador. Tomando por base o Arduino UNO, uma verso mais recente do projeto original, ele possui 14 pinos digitais de entrada e sada, dentre os quais 6 podem ser usados como sadas PWM (podem ser usados atravs de programao como pinos analgicos, os mesmo sendo digitais); 6 pinos de entrada
2 https://www.power.org/ 3 http://www.opensparc.net/ 4 http://brasuino.holoscopio.com/

analgica. Para alimentao possui: 3 pinos de GND (terra); 1 pino de sada para a alimentao de 3.3V e um de 5v; Possui um pino denominado Vin que serve de alimentao para quando estiver utilizando uma placa externa [BANZI 2008], [SANTOS 2008]. O Arduino UNO um ATmega328, possuindo 32K de memoria flash para armazenar cdigo, sendo 0,5 utilizado pelo bootloader (Pequeno software gravado no chip que permite fazer o upload dos cdigos sem utilizar um outro hardware externo), possui 2KB de SRAN e 1KB de EEPRON[MULTILOGICA 2011]. A placa pode ser alimentada atravs da sua conexo USB ou atravs de outras fontes externas. Na alimentao externa pode ser usado baterias ou fontes. Existe um conector de alimentao no Arduino no qual pode conectar os cabos da fonte ou da bateria nele, ou ento colocando o fio positivo da bateria no pino Vin (entrada de voltagem), e o negativo no Gnd (terra) do conector[SANTOS 2008], [MULTILOGICA 2011]. A placa pode trabalhar com uma alimentao externa de 6 a 20 volts, mas se for maior de 12V, o regulador de voltagem da placa pode superaquecer causando a danificao do Arduino, por isso recomendado trabalhar na faixa de 7 a 12 volts [MULTILOGICA 2011].

Figura 2. Figura do Arduino UNO

3.2 O Software Da mesma forma que a placa foi projetada de uma maneira que facilite o aprendizado de pessoas no familiarizadas com a eletrnica, a programao tambm bem simples de entender, compatvel para iniciantes ou no-desenvolvedores. Essa parte do Arduino que trata do software, corresponde ao ambiente de desenvolvimento, o Arduino IDE. Ele foi baseado no Processing5. Tem sua distribuio livre (open-source), escrito em linguagem Java e multiplataforma, sendo possvel sua instalao e utilizao em Windows, MAC e Linux [ARDUINO 2001],[REAS e FRY 2011]. Possui linguagem de programao bem simples, semelhante linguagens como C e C++ com inmeras bibliotecas para facilitar na criao dos sketchs. Depois do cdigo est pronto, deve-se compil-lo e envi-lo placa. Isso feito atravs do prprio Arduino IDE pelos comandos Verify/Compile e Upload to I/O Board respectivamente. O programa compilado enviado para a placa via USB, onde assim que o Arduino ligado, o bootloader ativado e intende que o contedo que est vindo
5 http://processing.org

atravs da porta USB ser armazenado dentro de si. Assim que termina a atualizao do cdigo na placa, ele j passa a ser executado, e essa execuo ser repetida enquanto o Arduino estiver ligado e alimentado.

Figura 3. Tela do Software Arduino IDE na verso 0022

3.3 Verses oficiais e clones do Arduino Atualmente existem alguns variaes oficiais de Arduino (Arduino UNO, Arduino Mini, LilyPad Arduino, Diacemila, etc.), os quais so fabricados pela empresa Smart Projects6, mas devido sua poltica de hardware livre que possibilita a construo de placas baseadas nas verses oficiais, vieram surgindo outros modelos que atendiam aos critrios bsicos de um Arduino, como j previsto, e ainda so adicionados a ele novas funcionalidades, como por exemplo no Seeeduino Stalker, projeto derivado do Seeeduino, por sua vez projetado a partir do esquema do Diacemila, completamente compatvel com o Arduino, em relao ao software, shields, IDE's, e que tem como adicional a possibilidade de conectar um carto SD para armazenar informaes, trabalhar facilmente com redes de sensores sem fio, etc.

(a)

(b)

(c)

Figura 4.a Arduino Fio7, 4.b Arduino LilyPad7 e 4.c Seeeduino Stalker8 6 http://www.smartprj.com/catalog/index.php 7 Exemplo de verses oficiais e distintas do Arduino. http://arduino.cc/en/Main/Hardware 8 Das figuras, a nica no oficial, mas baseada numa verso oficial.

3.4. Arduino Shield's Shields so placas de circuito impresso que podem ser conectadas ao corpo Arduino atravs de seus pinos, afim de estender seus limites de trabalho. Existem inmeros tipos de shields para as mais diversas funcionalidades [ARDUINO 2011]. 3.4.1. Ethernet Shield O Arduino Ethernet Shield permite que a placa Arduino seja conectada rede, utilizando padres de conectores RJ-45. Atravs dele possvel que o Arduino se conecte a outros hosts atravs da internet. Sua usabilidade extremamente vasta e dependendo da sua funo no sistema, ele pode se comportar como um servidor ou um cliente, de acordo com a programao do Arduino, sendo muito utilizado nas redes de sensores [ARDUINO 2011]. 3.4.2. Xbee Shield O Arduino XBee Shield possibilita que uma placa Arduino possa fazer uma comunicao sem fio com outros hosts da rede utilizando o protocolo ZigBee. Ele baseado no mdulo XBee da Maxstream9, onde pode-se conect-lo ao PCB XBee Shield, e com algumas configuraes no mdulo, se torna possvel a comunicao wireless. Essa tecnologia muito usada nas RSSF (Redes de Sensores sem Fio) [ARDUINO 2011].

4 Sensores
Sensor um dispositivo capaz de detectar (perceber) quaisquer tipo de alteraes no meio fsico, transformando num tipo de resposta mensurvel e tratada normalmente por outros equipamentos que fazem uso dessa informao para uma certa funo [XXI SIMPSIO BRASILEIRO DE REDES DE COMPUTADORES 2003]. Dependendo de seu tipo, os sensores podem captar mudanas na temperatura do ambiente em que est empregado, na umidade, na luminosidade e entre muitos outros, que na sua grande maioria, trabalham transformando esses valores obtidos em um sinal eltrico [KILIAN 2006]. 4.1 Sensor de temperatura LM35 O LM35 um sensor de temperatura de preciso em que sua sada de tenso linear no calibrada em Kelvin como normalmente acontece, mas em Celsius [NATIONAL 2011]. Sua tenso de sada proporcional a temperatura em Celsius, sendo que para cada sinal de 10mV em sua sada, tem-se um grau Celsius [NATIONAL 2011]. Possui um manuseio muito simples, sendo necessrio apenas o uso do prprio sensor e uma interface que leia a sada do sensor e a interprete, podendo ser usado o Arduino, que recebe o sinal eltrico referente temperatura capitada, e de acordo com a programao, os dados podem ser tratados e usados de acordo com a ideia do projeto [NATIONAL 2011].
9 www.maxstream.net

4.2 Sensor de luminosidade LDR O LDR (Light Dependent Resistor) um tipo de resistor que ao ser incidido uma quantidade de luz sobre ele, sua resistncia diminui, isto , enquanto um feixe de luz estiver incidindo, ele retorna uma resistncia muito baixa, ou seja, sua resistncia eltrica inversamente proporcional quantidade de energia luminosa incidida sobre ele [ALVES e COTTS e JEN e BRITO 2011]. Podemos citar um uso muito comum desse sensor, que seria os postes de energia. Quando anoitece, o sensor encontrado recebe uma menor incidncia da luz solar, e em certo ponto a lgica do sistema faz com que a lampada acenda. Da mesma forma ao amanhecer, a luz solar vai incidindo ao sensor, consequentemente a lampada apaga. Ele possui um uso muito simples, bastando apenas uma interface para receber sua sada, interpretar e utilizar de acordo com a ideia. A interface citada seria o Arduino, que dependendo da programao, pode ter inmeros modos de sadas, como acender um LED ao sessar a incidncia de luz ao sensor, ou apenas mostrar em um display a tacha de incidncia de energia luminosa.

5. Linguagem Python
Existem vrias linguagens que podem fazer a comunicao entre Arduino e o computador, no entanto uma das mais simples, devido a sua simplicidade e ao seu alto nvel de programao a linguagem Python, que alm do mais uma linguagem livre. Na sua atual situao Python cabe como uma luva para apoiar esta comunicao entre eles. Para isso preciso haver uma interface entre eles, algo que torne possvel computador e microcontrolador se comunicarem de maneira amigvel. Dessa forma o Arduino disponibilizou uma comunicao serial RS232. Nas placas mais recentes, essa comunicao passou a ser atravs da porta USB. Dentre as vrias bibliotecas que podem ser utilizadas para esse fim, existe uma que mais se destaca pela sua facilidade de manuseio, pySerial 10, onde informa-se apenas os parmetros para criar uma comunicao, onde atravs dessa comunicao o Python poder ler ou enviar dados pelo computador.

6. Arduino na Prtica
Diante de todos esses conceitos postados anteriormente, podemos mostrar os seguintes exemplos utilizando em conjunto o uso dos sensores, plataforma Arduino, a linguagem de programao Python. 6.1. Obtendo a temperatura do ambiente Pequeno exemplo de cdigo adaptado de uma postagem no blog pscmpf 11 onde mostra formas de usar o sensor LM35 juntamente com o Arduino. Nesse sketch o Arduino recebe o valor enviado pelo sensor, e o joga dentro do computador pela porta Serial, onde pode ser utilizado por outros softwares.
10 http://pyserial.sourceforge.net/ 11 http://pscmpf.blogspot.com/2008/12/arduino-lm35-sensor.html

float tempC; int tempPin = 0; void setup(){ Serial.begin(9600); } void loop(){ tempC = analogRead(tempPin); //L o valor do sensor tempC = (5.0 * tempC * 100.0)/1024.0; /*Converte o dado analgico para a temperatura*/ Serial.print((byte)tempC); /* Envia o dado para o computador atravs da porta serial */ delay(1000); //espera um segundo } /* Abre a porta serial e seta a taxa de dados para 9600 bps */

Figura 5. Arduino trabalhando com o sensor de LM35

6.1.1. Cdigo em Python O script abaixo escrito em Python, l os dados que esto sendo enviados pela porta serial e os escreve no console de forma bem rstica, mas ilustrando a unio entre as duas tecnologias.
import serial ser = serial.Serial('/dev/ttyUSB', 9600) print('Temp: ', serial.readline()) ser.close() #Abre a porta serial #Exibe a temperatura na tela #Fecha a porta

6.2. Acendendo um LED de acordo com a luminosidade O sketch a seguir foi adquirido a partir de um artigo do site ladyada.net12. Ele descreve passos para se adquirir uma resposta do sensor de luminosidade. Com esses dados obtidos do nvel de luminosidade do local, faz se um mapeamento, como uma proporo, que determina a intensidade do brilho do LED.
int photocellPin = 0; 12 http://www.ladyada.net/learn/sensors/cds.html

int photocellReading; int LEDpin = 11; int LEDbrightness; void setup(void) { Serial.begin(9600); } void loop(void) { photocellReading = analogRead(photocellPin); Serial.print("Analog reading = "); Serial.println(photocellReading); // A leitura analgica crua

/* O LED ficar mais brilhante inversamente proporcional a iluminao do local, ento precisa inverter a leitura para criar essa inverso */ photocellReading = 1023 - photocellReading; LEDbrightness = map(photocellReading, 0, 1023, 0, 255); analogWrite(LEDpin, LEDbrightness); //Resposta do LED delay(100); }

Figura 6. Esquema de montagem do Arduino e o sensor LDR

7. Concluso
Este trabalho proporcionou uma viso ampliada da plataforma de hardware livre, Arduino, trabalhando em conjunto com uma linguagem de altssimo nvel, Python, visando um melhor desempenho e expondo alternativas para desenvolvimento de ideias e sua concretizao fsica expressa usando o hardware. Mostrando atravs da filosofia DIY que possvel realizar experimentos interessantes com uso de equipamentos simples como sensores e microcontroladores e conhecimentos mnimos de eletrnica, possibilitando que usurios com pouco conhecimento especfico de Arduino possam manipul-lo, abrindo caminho para que em oportunidades futuras o hardware livre seja encarado com maior seriedade, tanto quanto o software livre hoje.

Referncias
TENEBAUM, A. S. Redes de Computadores, 4. ed. Campus, 2003. p. 18 MENDES, D. R. Redes de Computadores: Teoria e Prtica. So Paulo: Novatec, 2007. BBC. A small slice of design. Disponvel em: http://news.bbc.co.uk/2/hi/science/nature/1264205.stm. Acesso em 08 de Maio 2011 s 08:33:30 OSIER-MIXON, J. M. Hardware Aberto: Como e Quando Funcionam. Disponvel em: http://www.ibm.com/developerworks/br/library/os-openhardware/#resources. Acesso em: 01 de Ago. 2011. ANDERSON, C. A cauda longa: do Mercado de massa para o Mercado de nicho. Rio de Janeiro: Elsevier, 2006. p. 153 ARDUINO. Disponvel em: http://arduino.cc/en. Acesso em: 08 de Abril 2011 BANZI, M. Getting Started with Arduino. USA: O'Reilly, 2008. 128 p. MULTILOGICA. Arduino-UNO. Disponvel em: http://multilogica-shop.com/Arduinouno Acesso em: 03 de Agos. 2011 SANTOS, N. P. Introduo ao Arduino. Revista Programar. v. 17, p. 39-44, Dez. 2008 REAS, C. and FRY, B. Getting Started: Welcome to Processing. Disponvel em: http://processing.org/learning/gettingstarted/. Acesso em: 02 de Agos. 2011. XXI SIMPSIO BRASILEIRO DE REDES DE COMPUTADORES, 2003. Natal. Redes de Sensores Sem Fio. KILIAN, C. T., Sensors. In:______. Modern Control Technology Componentes e Systems. USA: Delmar, 2006. p. 221-293. NATIONAL. Precision Centigrade Temperature Sensor. Disponvel em: http://www.national.com/mpf/LM/LM35.html#Overview. Acesso em: 02 de Agos. 2011. ALVES, R. and COTTS R. and JEN, C. P. and BRITTO, A. LDR: Light Dependent Resistor. Disponvel em: http://www.gta.ufrj.br/grad/01_1/contador555/ldr.htm. Acesso em: 03 de Agos. 2011. ARDUINO. So you want to make an Arduino. Disponvel http://www.arduino.cc/en/Main/Policy Acesso em: 01 de Ago. 2011 em:

SEEEDUINO STALKER V1.0. Disponvel em: http://garden.seeedstudio.com/Seeeduino_Stalker_v1.0. Acesso em: 10 de Ago. 2011 ARDUINO. Xbee Shield. Disponvel em: http://www.arduino.cc/en/Main/ArduinoXbeeShield. Acesso em: 05 de Ago. 2011 ARDUINO. Arduino Ethernet Shield. Disponivel em: http://www.arduino.cc/en/Main/ArduinoEthernetShield. Acesso em: 05 Ago. 2011 ARDUINO. Shields. Disponvel em: http://www.arduino.cc/en/Main/ArduinoShields. Acesso em: 01 de Ago. 2011

You might also like