Desenvolvimento Mobile & Embedded
com Arduino, Python, ARM e Linux

Flávio Ribeiro
Faculdade iDEZ, Outubro de 2009
Quem sou?
Flávio Ribeiro
Graduando em Engenharia Elétrica (IFPB)
Engenheiro de Software (Avaty! Tecnologia)
Python, Sistemas Embarcados, Disp. Móveis, Robótica, Automação

http://www.flavioribeiro.com
http://www.twitter.com/flavioribeiro
email@flavioribeiro.com
flavioribeiro @ freenode #python-br #elinux
Agenda
Conceitos da Computação Móvel e Embarcada
Microprocessadores ARM e o Linux
Demonstração
Arduinos e o Projeto Marmota
Demonstração
Alguns Conceitos
O que Dispositivos Móveis e Sistemas Embarcados
têm em comum?
Alguns Conceitos
Dispositivos Móveis são Sistemas Embarcados!
Alguns Conceitos
E o que são Sistemas Embarcados?!
Alguns Conceitos
da Wikipedia;
“ Um sistema embarcado, ou sistema embutido, é um sistema microprocessado no qual o
computador é completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla. “

do Dept. de Informática da UFPE;
“ Um sistema é dito embarcado quando este é dedicado a uma única tarefa e interage continuamente
com o ambiente a sua volta por meio de sensores e atuadores. “

da MS Windows Embedded;
“... um Embedded System - sistema embarcado - é qualquer dispositivo microprocessado que
executa uma função dedicada... “
Alguns Conceitos
O Meu!

Sistemas Embarcados são sistemas eletrônicos
microprocessados (computadores) encapsulados e
dedicados ao dispositivo em que reside e são
desenvolvidos para exercer especialmente uma
atividade específica.
Alguns Conceitos
●

●

Escassez em recursos de Processamento, Armazenamento e Autonomia
Funcionalidade Única, executada repetidamente
● No caso dos smartphones “esperar por ligações, mensagens ou interações
de conectividade”

●

Forte Comunicação com o ambiente

●

Propósito de Existência concreto

●

Heterogêneos
Alguns Conceitos

●

Divertidos de Programar e Manipular!
Exemplos
Exemplos
Embedded ARM e Linux
O que é ARM?
Arquitetura de processadores RISC (Reduced Instruction Set Computer)
Robusto, suporta interrrupções
Baixo consumo de energia
Ideal para sistemas embarcados robustos!
Embedded ARM e Linux
TS 7200
200MHz ARM9 CPU
PC/104 expansion bus
32MB SDRAM
1 10/100 Ethernet
2 USB 2.0 (12 Mbit/s max)
1 Compact Flash socket
20 DIO lines
Embedded ARM e Linux
Embedded ARM e Linux
TS 7200
Kernel Linux 2.4 ou 2.6
TSLinux
Debian Linux
apt-get powered :)
Embedded ARM e Linux
Desenvolvimento de Aplicações
Embedded ARM e Linux
Desenvolvimento de Aplicações: Linguagens Compiladas
Embedded ARM e Linux
Desenvolvimento de Aplicações: Cross-Compile
Embedded ARM e Linux
Desenvolvimento de Aplicações: Cross-Compile

Desenvolvimento no Host PC
Embedded ARM e Linux
Desenvolvimento de Aplicações: Cross-Compile

Compilação Cruzada no Host PC pra Arquitetura do Target
Embedded ARM e Linux
Desenvolvimento de Aplicações: Cross-Compile

Comunicação

Envio do binário da aplicação pro Target
Embedded ARM e Linux
Desenvolvimento de Aplicações: Cross-Compile

Execução do binário no Target
Embedded ARM e Linux
Desenvolvimento de Aplicações: Linguagens Interpretadas
Embedded ARM e Linux

Demo!
Arduino
Projeto de Hardware e Software Livre voltado
para artistas, designers, hobbystas ou qualquer um
interessado em criar ou prototipar objetos e
ambientes interativos.
Arduino
•

Múltiplas Derivações: Duemilanove
Arduino
•

Múltiplas Derivações: Severino
Arduino
•

Múltiplas Derivações: Paperduino
Arduino
•

Múltiplas Derivações: Illuminato
Arduino
•

Múltiplas Derivações: Toscoduino
Arduino
•

Ciclo de Desenvolvimento rápido
Arduino
•

Estrutura Básica de uma Aplicação
marmota: o que é?
Open Hardware
Esquemas, dicas, layout de placas
Open Software
Todo o código no nosso svn!
marmota: o que é?
comunidade?
marmota: o que já
foi feito?
CarControlledByPhone
marmota: o que já
foi feito?
CarControlledByPhone
→ Carrinho com motores de 3v reduzidos
marmota: o que já
foi feito?
CarControlledByPhone
→ Carrinho com motores de 3v reduzidos
→ Arduino Duemilanove
marmota: o que já
foi feito?
CarControlledByPhone
→ Carrinho com motores de 3v reduzidos
→ Arduino Duemilanove
→ Módulo BlueSMIRF (SparkFun)
marmota: o que já
foi feito?
CarControlledByPhone
→ Carrinho com motores de 3v reduzidos
→ Arduino Duemilanove
→ Módulo BlueSMIRF (SparkFun)
→ Smartphone Symbian
marmota: o que já
foi feito?
CarControlledByPhone
→ Carrinho com motores de 3v reduzidos
→ Arduino Duemilanove
→ Módulo BlueSMIRF (SparkFun)
→ Smartphone Symbian
→ Python pra s60
marmota: o que já
foi feito?
CarControlledByPhone

Demo!
marmota: o que vem
por aí?
CarControlledByPhone na 1ª Competição de
Carros Controlados do PET Engenharia Elétrica
@ IFPB
marmota: o que vem
por aí?
CarControlledByPhone +
TouchScreen + Live Streaming
(effort @ embedded.ufcg)
marmota
Projeto Inteiramente Livre
Você pode ajudar!

www.marmota.mobi
Dúvidas?!
Obrigado!

Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux