May 18
Jampa Mobility Forum
Posted by Flávio Ribeiro in Eventos, Sistemas Embarcados on 05 18th, 2009| icon3No Comments »

Nessa semana vai rolar um evento muito legal voltado pra dispositivos móveis e sistemas embarcados aqui em João Pessoa, PB.

É o Jampa Mobility Forum, e vai contar com profissionais já experientes na área, como Rodrigo Vivi do INdT e Ângelo Perkusich, coordenador do Laboratório de Sistemas Embarcados e Computação Pervasiva da UFCG.

Virão pra João Pessoa também dois profissionais que já participaram de projetos relacionados a mobilidade no C.E.S.A.R.

O Jampa Mobility Forum é organizado pela Faculdade Idez e Avaty! Tecnologia e a programação está disponível aqui. Nos vemos lá!

May 10

Olá pessoas,

Tirando a poeira aqui do blog pra anunciar meu novo toy project cujo anuncio deveria ser feito só quando eu tivesse algum resultado concreto, mas com o animo na evolução de hoje resolvi publicar logo.

Tenho atualizado o meu twitter bem mais vezes que esse blog pela facilidade que é twittar (principalmente quando você tem um plugin pra seu browser como eu). Lá fico sempre atualizando sobre o que estou fazendo, como as coisas no projeto estão indo, referências a sites onde aprendi a usar o motor de passo, transistores, etc.

Como você leu no fim do parágrafo anterior, o meu novo projeto é relacionado a robótica e microeletrônica. A idéia principal é fazer o meu arduino se comunicar com dispositivos móveis como celulares symbian e internet tablets através de qualquer protocolo, seja ele “wired” ou não.

Pra comecar a brincadeira comprei um módulo bluetooth chamado BlueSMIRF Gold que implementa toda a stack bluetooth e para integrar ao seu arduino basta você ligar o TX do BlueSMIRF no RX do arduino, e o RX no TX do mesmo. Ligando também o pino Vcc do módulo em uma tensão de 5v (que pode ser o pino 5v do arduino) e o GND no terra, você já pode parear o bluesmirf com seu computador e abstrair a conexão bluetooth como sendo uma porta serial, simples assim. Pretendo fazer um outro post ou um artigo no site do marmota detalhando a ligação desse módulo assim que aprender mais sobre ele.

Sim, e antes que eu me esqueca, eu terminei pagando muito caro por esse BlueSmirf. Fora os 60 dólares do módulo, paguei 30 dólares pela entrega e ainda tive o azar do módulo ter parado na Receita. Lá se foram mais 120 reais de imposto, e no fim eu não quis nem somar as despesas e saber quanto o bichinho saiu pra mim.

Comprei também um ProtoShieldBR do gaúcho Rafael Quines que fez um excelente trabalho no desenvolvimento desse shield. A idéia básica do ProtoShieldBR é ser uma plaquinha de propósitos gerais, cheias de barramento onde você vai posicionando os seus componentes da maneira que achar melhor - estilo protoboard - só que em cima do seu arduino. Se não fosse o meu ferro de solda de 5 reais as soldas teriam ficado bem bonitinhas e o resultado final teria sido mais bacana.

Voltando pra os objetivos do toy project; O pontapé inicial do Marmota é fazer um carrinho de controle remoto controlado por um celular s60 através do bluetooth usando python. A parte “física” do carro já tá pronta e hoje consegui comandá-lo via bluetooth usando pySerial no meu notebook. Já fiz também a interface da aplicação PyS60, faltando só criar a classe de socket bluetooth do celular. Falta também dar uma regulada no motor de passo responsável pelo direcionamento do carro, mais algumas colas e soldas, e rodas emborrachadas pra ter uma tração maior com o chão.

Tenho já algumas idéias de interação do arduino com internet tablets, andei pesquisando sobre shields ethernet e até vi que já fizeram um webserver simples pra ele. Já pensou você controlando luzes, alarmes, cameras de vigilância e etc tudo no seu browser aonde você estiver e o arduino do outro lado dando conta de tudo? Show de bola.

Pra finalizar, quem quiser debater, ajudar, dar mais idéias e etc, dê uma lida no site do Marmota. Prometo atualizar ele com fotos, videos e códigos tanto do lado arduino como a aplicação pys60 do lado mobile quando esse primeiro projeto for finalizado. Quem quiser acompanhar mais de perto os passos pra finalização desse projeto, siga-me no twitter!

É isso, até a próxima pessoal :)

Apr 2
PyS60 Console Bluetooth no Linux
Posted by Flávio Ribeiro in Programação, Python on 04 2nd, 2009| icon32 Comments »

O desenvolvimento de aplicações em Python para celulares Symbian - além de ser muito divertido - pode ser a forma mais ágil de se fazer algo útil em pouco tempo.

O port do interpretador possibilita você a usar a camera, GPS, SMS e outros componentes do seu celular com algo em torno de 2~4 linhas.

Mas existe um problema. Pra você testar suas aplicações no ciclo de desenvolvimento precisa ter um MS Windows pra instalar o SDK. Uma outra solução muito adotada entre o pessoal que usa linux é usar o interpretador python do celular no computador, via bluetooth.

Assim, mesmo que você não teste sua apliação toda de uma vez, dá pra criar funções dentro do interpretador e testar pedaços do seu código.

Já existem dezenas de posts explicando como fazer essa façanha, mas aqui vou tentar fazer de uma forma mais simples.

Criei um arquivo chamado bluetooth.sh com o seguinte conteúdo:

#!/bin/sh

/etc/init.d/bluetooth start
sdptool add –channel=2 SP
sudo rfcomm listen /dev/rfcomm0 2

Agora, com o dongle bluetooth espetado no seu computador e devidamente registrado, apenas execute o script de root:

root@doritos:/home/flavio# chmod a+x bluetooth.sh; sh bluetooth.sh
* Starting Bluetooth                                            [ OK ]
Serial Port service registered
Waiting for connection on channel 2

Pronto, agora no seu celular, ative o bluetooth e abra o interpretador. Ao apertar Select\Opções vai aparecer:

Selecione o Bluetooth Console e procure pelo seu computador. Depois da primeira vez que seu celular tiver conectado ao computador ele vai gravar seu PC como ‘Default Host’, e a partir da segunda vez ele vai perguntar se você quer conectar ao Default Host ou se é a outro.

Eu, particularmente, sempre busco por outros, mesmo querendo conectar ao meu PC, porque vinha notando erros quando tentava conectar com o Default Host. Buscando por outros, de alguma forma a conexão estabiliza mais rapidamente quando seleciono o meu PC já achado pelo PyS60.

Quando o celular achar o seu computador e você selecionar ele, o terminal que estava aguardando por conexões depois da execução do nosso bluetooth.sh vai mostrar o seguinte:

root@doritos:/home/flavio# chmod a+x bluetooth.sh; sh bluetooth.sh
* Starting Bluetooth                                            [ OK ]
Serial Port service registered
Waiting for connection on channel 2

Connection from 00:18:42:9B:8D:65 to /dev/rfcomm0
Press CTRL-C for hangup

Olhe pra tela do seu celular, o PyS60 deve dizer que a conexão está OK.

Agora, com o minicom instalado no seu computador, abra um outro terminal e digite:

minicom -s

Vá em configuração da Porta Serial e sete o Dispositivo Serial para /dev/rfcomm0. Verifique se o Bps/Paridade/Bits está 9600 8N1, e se não tiver configure pra ficar dessa forma.

Pronto, agora quando você apertar em Sair no menu de configurações do minicom ele vai inicializar a leitura do dispositivo registrado em rfcomm0.

Agora é só testar seus códigos. Aqui tem alguns exemplos de testes a serem feitos no seu celular.

Com um dongle bluetooth desses genéricos (pra não dizer do mais barato) e um Ubuntu Linux 8.04 aqui no meu computador, foi preciso reinstalar o libbluetooth com o pacote do Debian Puro. Então se você estiver tendo problemas ao final desse post sem conseguir conectar seu celular ao seu linux, tente reinstalar seu bluetooth com essa biblioteca.

Mar 27
Mais um no Twitter
Posted by Flávio Ribeiro in Pessoal on 03 27th, 2009| icon3No Comments »

Agora estou também do Twitter :) Para me seguir: http://twitter.com/flavioribeiro

Mar 23
FISL 10, vamos?!
Posted by Flávio Ribeiro in Eventos, Linux, Tecnologia on 03 23rd, 2009| icon31 Comment »

Mal passou o Bossa Conference e já venho falar novamente sobre eventos aqui no blog. É que dessa vez não vou falar de um simples evento, vou falar do FISL!

Tive a grata oportunidade de ir na 9ª edição ano passado, e lembra aquela lista dos congressos imperdívels? Pois é, o FISL lidera. No ano passado participei da Arena de Programação e pude programar e conhecer pessoas que nunca tinha visto na vida. Lá precisávamos desenvolver aplicações pra os dispositivos da Nokia, e quem estava organizando era o pessoal do INdT. Foi uma excelente experiência, mas como a Arena leva praticamente todos os dias do Congresso ainda não sei se vou participar nesse ano.

Apesar de ainda faltar aproximadamente 3 meses, a organização do evento já está investindo em divulgação e já lancou o programa de Páginas Amigas, sucesso na edição passada. Além disso, estão enviando e-mails pra os participantes anteriores e postando notícias em busca de reunir 10 mil nerds\programadores\entusiastas de tecnologia e software livre. A nossa caravana já conta com ~12 integrantes, quase 100% maior que a do ano passado.

Há rumores também que o mestre jedi Linus Torvalds vai aparecer lá. Pelo menos já chamaram!

Então, se você gostou do que leu aqui, já visitou o site enquanto lia e se empolgou ainda mais, pegue esses próximos 3 meses que faltam e programe sua viagem, compre sua passagem (erhm.. ainda tem promoções na tam..) e junte-se a nós! :-)

Mar 16
Lembretes é com Remember the Milk
Posted by Flávio Ribeiro in Pessoal, Tecnologia on 03 16th, 2009| icon31 Comment »

Se você é como eu que não consegue lembrar as coisas mais triviais na sua rotina como dia de entrega de trabalho, dia de prova e deadline de issues no trabalho, esse post é pra você.

Ao invés de ficar enviando e-mails para si próprio (com tags ‘ATENÇÃO’, ‘LER’, ou com titulos que chamem a atenção cheio de letras maíusculas) ou escrevendo post-its com garranchos (supondo que você é nerd, já não escreve mais tanto com a mão e quando tenta fazer isso sai palavras completamente ilegiveis) e tentando colar os post-its ao redor do monitor (é, tenta, pq aqueles mizeraveis nunca colam que presta, experiência própria), o RTM pode ser a solução.

Com a chegada da web 2.0 e dos SaaS feitos pra melhorar seu dia-a-dia, o Remember The Milk consegue com classe e simplicidade guardar de forma inteligente sua ToDo List. Além de ter uma interface cheia de drag’n'drops e ajax, o RTM consegue integrar facilmente com o GMail tanto como plugin do firefox como com o Google Labs.

Como sou usuário Google Apps, as coisas do GLabs quase nunca são incorporadas na versão do GMail que uso, e ai tive que partir pro plugin que até agora vem fazendo o trabalho muito bem feito, apesar de eu não exigir muito.

Além de tudo isso você ainda pode adicionar um robôzinho Reminder no seu GTalk ou MSN pra te avisar quando as tasks estiverem pra vencer. Tudo isso muito fácil, rápido, sem ter que preencher formulários e etc.

Esse post não foi pago pelo pessoal do RTM, é que fiquei tão feliz com as coisas que ele vem me lembrando e antes passavam batidos que resolvi fazer essa propaganda aqui.

Mar 10
Bossa Conference ‘09 (II)
Posted by Flávio Ribeiro in Eventos on 03 10th, 2009| icon31 Comment »

Só agora, no meio do segundo dia do Bossa que consegui uma conexão estável com a internet. Ontem passei o dia inteiro brigando com os roteadores wi-fi, mas agora após algumas modificações a conexão tá fluindo legal.

Exceto pelo problema com a conexão, a conferência está sendo bastante interessante e calma, assim como nas edições passadas e a cada ano se firma mais na minha lista dos ‘congressos imperdiveis’.

É importante notar a quantidade de palestras e pessoas voltadas pro design de aplicações para dispositivos móveis, o assunto principal desse ano está sendo o Qt.

Ai do lado está a camisa e uma bolinha com a logomarca de um projeto do INdT, o Mamona, presentes que os participantes ganharam quando fizeram o ‘check-in’ do encontro.

Feb 19
Iteradores em Python
Posted by Flávio Ribeiro in Programação, Python on 02 19th, 2009| icon32 Comments »

Durante o curso discutimos um pouco sobre implementação dos chamados ‘métodos mágicos’ de python. Ao invés de interfaces, python adota protocolos a serem seguidos para que objetos criados por você programador obedeça alguns comportamentos, e é por ai que python implementa polimorfismo.

Vejamos por exemplo a função len():

>>> string = ‘flavio’
>>> len(string)
6
>>> lista = ['flavio',21,'ifpb']
>>> len(lista)
3

Ela tem a capacidade de retornar o tamanho de um objeto, mas não de qualquer objeto:

>>> a = 3
>>> len(a)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
TypeError: object of type ‘int’ has no len()

Se você quiser que seu próprio objeto consiga retornar o tamanho ou comprimento de algo pela função len() basta você escrever o método mágico __len__ na sua classe. Imagine que você tem uma classe Pessoa e quer saber a altura das pessoas através do len():

>>> class Pessoa(object):
…     def __init__(self, altura=0):
…             self.altura = altura
…     def __len__(self):
…             return self.altura

>>> Flavio = Pessoa(184)
>>> len(Flavio)
184

Legal, né? Agora, pra não fugir muito o escopo desse post, vamos aos iteradores. Um iterador é basicamente um objeto que pode ser incrementado e decrementado, ser ‘percorrido’. A palavra iterar significa repetir algo algumas vezes. No  python 3 uma função muito utilizada nos laços for, a range(), que antes retornava uma lista (que por sua vez é iteravel) nas versões 2.x agora se comporta como a antiga xrange(), retornando um objeto em si que tem a capacidade de iterar.

No Python 2.X:

>>> type(xrange(3))
<type ‘xrange’>
>>> type(range(3))
<type ‘list’>

No Python 3000 (Py3k, Python 3):

>>> type(range(10))
<class ‘range’>
>>> xrange(10)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
NameError: name ‘xrange’ is not defined

Sabendo já sobre métodos mágicos e o que são iteradores chegou a hora de criar um iterador mesmo, na real. Para você ter um iterador, basta que você crie um método mágico chamado __iter__() retornando a própria instância e um outro método chamado next(), onde as coisas vão realmente acontecer a cada iteração.

Como sou péssimo com exemplos vou simplificar e criar apenas uma classe que gera a velha conhecida dos programadores, ou pelo menos das pessoas que pagaram introdução aos algoritmos: Fibonacci.

  1.  
  2. class Fibonacci(object):
  3. def __init__(self):
  4. self.a = 0
  5. self.b = 1
  6. def __iter__(self):
  7. return self
  8. def next(self):
  9. self.a, self.b = self.b, self.a+self.b
  10. return self.a
  11.  

Pronto, agora podemos iterar em cima do nosso proprio objeto!

>>> fib = Fibonacci()
>>> for num in fib:
…     if num < 150:
…             print num,
…     else:
…             break

1 1 2 3 5 8 13 21 34 55 89 144

Sim, e esse plugin de colorir sintaxe já tá me irritando, engoliu a identação, quebras de linha e etc. Quem usar algum plugin melhor favor me avisar nos comentários!

Feb 8
Bossa Conference ‘09
Posted by Flávio Ribeiro in Eventos, Programação, Sistemas Embarcados on 02 8th, 2009| icon3No Comments »

Está  chegando mais uma edição de uma conferência muito aguardada - pelo menos por mim - envolvendo assuntos relacionados a mobilidade e sistemas embarcados. É o Bossa Conference, evento realizado pelo Instituto Nokia de Tecnologia.

Tive a oportunidade de estar presente nas outras duas edições e posso afirmar que é um dos melhores eventos realizados no Brasil. Por sorte, a cidade onde ele acontece é a poucos km de onde moro (Porto de Galinhas-PE).  Esse ano aposto que não vai ser diferente e com certeza estarei lá.

Se quiserem saber mais sobre o que vai rolar nesse ano acessem o site do evento. Programem suas viagens e nos vemos lá!

Jan 25
MiniCurso: Introdução a Python
Posted by Flávio Ribeiro in Programação, Python on 01 25th, 2009| icon31 Comment »

Olá,

Aqui vão os slides do minicurso de introdução a linguagem de programação Python que ministrei na Avaty!, empresa voltada para soluções em mobilidade e sistemas embarcados (e que usa python em uma de suas soluções) na qual estou trabalhando no momento.

Os slides estão disponiveis para download aqui também, e espero que gostem. :)

« Previous Entries