Dec 20
Minidirigível Microcontrolado
Posted by Flávio Ribeiro in Eletrônica on 12 20th, 2008| icon3No Comments »

Não, esse não é o nosso :-)

Hoje, já quase de férias da faculdade, vou tentar cumprir com parte da promessa que fiz e  pretendo comecar uma série de posts que vai relatar o processo de desenvolvimento de um minidirigível microcontrolado (também conhecido como zeppelin), que por sinal ainda não chegou ao fim. O Minidirigível está sendo produzido por mim e mais 3 amigos da faculdade; André Nascimento, Pedro de Assis e Nathália Brunet, e o objetivo final seria uma apresentação para a disciplina de Arquitetura de Computadores do curso que fazemos.

Sim, antes que se pense que essa foto é o resultado final, NÃO, esse ai NÃO É o nosso. Coloquei ai só pra ilustrar, e como o esquema de caption nesse tema do blog tá quebrado to botando esse parágrafo mesmo.

Tivemos vários entraves e um prazo muito curto pra fazer tudo funcionar. O prazo se encurtou ainda mais ao sabermos que as lojas de eletrônica daqui de João Pessoa não tinham quase nenhum componente que precisávamos (pra variar ¬¬), e ai partimos pra pesquisas e contatos na internet.

Vou organizar essa série de posts assim:

  • Minidirigivel Microcontrolado I : Vou publicar como foi feita a parte física do trabalho. Vai envolver basicamente o que foi usado pra fazer a gôndola, parte de baixo do dirigível que abriga os motores, hastes e o ‘cérebro’ do dirigível que no nosso caso é um microcontrolador PIC 16F877.
  • Minidirigivel Microcontrolado II : Parte de inteligência do dirigível (note as aspas em negrito na palavra inteligência :-)). Detalhar o processo de programação, desde o velho hello world pisca-led usando o PIC16F877 até o algoritmo completo que por sinal não foi complexo de ser feito, e o pic ficou bastante sub-utilizado.
  • Minidirigivel Microcontrolado III : Enquanto eu vou escrevendo os posts acima, vou reportando os problemas ainda não solucionados que enfrentamos. Esse último post é justamente o último pq pretendo escrever ele quando tudo já estiver funcionando, e ai aponto como foram solucionados os problemas reportados.

Esse post marca também uma nova categoria no blog, chamada Eletrônica. Tenho planos de me presentear no Natal com uma coisa que deve gerar muitos posts nessa categoria no ano que vem e por isso resolvi criar logo.

Dec 18
PyMedia no Ubuntu 8.10
Posted by Flávio Ribeiro in Linux, Python on 12 18th, 2008| icon3No Comments »

Enquanto não tenho tempo de escrever o que prometi no post passado (e é pq eu ia escrever tudo aquilo antes de terminar o ano.. triste engano :( ) vou colocando dicas para soluções de problemas que encontro no dia-a-dia.

O de hoje foi instalar o pymedia no Ubuntu. Só pra deixar claro, instalei isso em um Ubuntu 8.10, com Python 2.5.2 e PyMedia 1.3.7.3.

Primeiro instale os pacotes necessários (assumindo que você já tem gcc, g++, build-essential e etc):

sudo aptitude install python-dev libogg-dev libvorbis-dev libmp3lame-dev libfaad-dev libasound2-dev

Depois disso, o certo seria basicamente descompactar o pymedia, fazer o build e instalar;

python setup.py build

python setup.py install

Mas foi ai aonde enfrentei um problema:

building ‘pymedia.audio.acodec’ extension
creating build/temp.linux-i686-2.5/audio
creating build/temp.linux-i686-2.5/audio/acodec
creating build/temp.linux-i686-2.5/audio/libavcodec
creating build/temp.linux-i686-2.5/audio/libavcodec/liba52
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -DBUILD_NUM=1862 -DPATH_DEV_DSP=”/dev/dsp” -DPATH_DEV_MIXER=”/dev/mixer” -D_FILE_OFFSET_BITS=64 -DACCEL_DETECT=1 -DHAVE_MMX=1 -DHAVE_LINUX_DVD_STRUCT=1 -DDVD_STRUCT_IN_LINUX_CDROM_H=1 -DCONFIG_VORBIS -DCONFIG_VORBIS -DCONFIG_FAAD -DCONFIG_MP3LAME -DCONFIG_VORBIS -DCONFIG_ALSA -DHAVE_AV_CONFIG_H -DUDF_CACHE=1 -INone -INone -INone -I/usr/include/lame -INone -INone -I/home/flavio/downloads/pymedia-1.3.7.3 -Iaudio/ -I/usr/include/python2.5 -c audio/acodec/acodec.c -o build/temp.linux-i686-2.5/audio/acodec/acodec.o
In file included from audio/acodec/acodec.c:31:
audio/libavcodec/dsputil.h:484: error: static declaration of ‘lrintf’ follows non-static declaration
audio/acodec/acodec.c:249: warning: initialization from incompatible pointer type
audio/acodec/acodec.c: In function ‘ACodec_Encode’:
audio/acodec/acodec.c:668: warning: pointer targets in passing argument 2 of ‘avcodec_encode_audio’ differ in signedness
error: command ‘gcc’ failed with exit status 1

Para “solucionar” esse problema, comentei essa parte de código em [Diretório do pymedia extraído]/audio/libavcodec/dsputil.h :

#ifndef HAVE_LRINTF
/* XXX: add ISOC specific test to avoid specific BSD testing. */
/* better than nothing implementation. */
/* btw, rintf() is existing on fbsd too — alex */
static inline long int lrintf(float x)
{
#ifdef CONFIG_WIN32
/* XXX: incorrect, but make it compile */
return (int)(x);
#else
return (int)(rint(x));
#endif
}
#endif

Estranhei o cast pra int no retorno de uma função declarada como long, mas enfim. Não sei que consequências isso vai causar, mas que o import rolou bonitinho, rolou.

Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import pymedia
>>> dir(pymedia)
['Player', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__path__', '__version__', 'audio', 'getMetaData', 'meta', 'muxer', 'player', 'removable', 'video']
>>>

E pra mim, que não tenho muito tempo livre agora, isso bastou. :)

Dec 3
Novidades
Posted by Flávio Ribeiro in Pessoal on 12 3rd, 2008| icon31 Comment »

Quase um mês sem pisar aqui direito, venho fazer esse post apenas para avisar que muito provavelmente semana que vem voltarei a escrever bastante aqui.

Já tenho posts mais ou menos escritos - na minha cabeça - sobre o que estou fazendo atualmente na ServiceNet (middleware para terminais PoS), sobre um grupo de usuários Python criado recentemente aqui na Paraíba (Grupy-PB), sobre a libgmail do Python e também pretendo fazer uma série de posts explicando sobre um trabalho que estamos fazendo no Cefet para a disciplina de Arquitetura de Computadores que na verdade passou de um simples trabalho universitário para um desafio; um minidirigível microcontrolado.

Agora que já divulguei aqui fico com a responsabilidade de escrever pelo menos metade desses posts daqui para o fim do ano.

Enfim, até breve. :)