Domingo, 12 de Julho de 2009

Arduino: Uma plataforma Open Source

Quando participei do último OpenTDC promovido pela Globalcode ouvi falar de um hardware open source chamado Arduino. Até aquele momento nunca tinha ouvido falar da idéia de open source no mundo do hardware e sim somente no mundo do software. Minha santa ignorância! Mas, durante a minha visita aos Estados Unidos para participar do JavaOne 2009 tive a oportunidade ímpar de participar de uma feira que aconteceu nos dias 30 e 31 de maio deste ano em San Mateo na California. A feira chamada de Maker Faire (um dos assuntos do próximo Casual Class da Globalcode) foi um evento dedicado a mostrar os trabalhos de diversos pequenos inventores, fazedores, geeks, nerds e artesãos de todas as áreas. Nesta feira vi a presença maciça do Arduino através de diversos projetos, kits de eletrônica, robôs e outros equipamentos feitos pelos expositores que participaram do evento. Nesta feira fiquei mais curioso ainda pelo Arduino e sobre essa idéia de hardware open source. Por consequência, acabei trazendo para casa um kit para fazer pequenos projetos e experiências com o Arduino comprado na feira. E assim começou as minhas peripércias com este hardware simples e pequeno que tem fascinado tanto o mundo dos "makers".

Estão, o que é Arduino? O Arduino é uma plataforma de hardware open source baseado em um microcontrolador com suporte a conexão via serial ou USB com o computador para receber programas. A palavra "plataforma" significa um hardware genérico o suficiente para permitir a criatividade dos desenvolvedores elaborar aplicações com interatividade com o mundo real (também chamado de "physical computing") através de alguns componentes eletrônicos como complemento.

A maior curiosidade sobre o Arduino não está na sua simplicidade, mas sim numa grande comunidade que se formou em torno desta idéia. Por ser um hardware aberto, aonde podemos baixar a lista de componentes, o diagrama esquemático e o desenho da placa de circuito e muita documentação para aqueles que desejam montar o seu próprio Arduino, esta tecnologia proporciona a democratrização do conhecimento para qualquer um usar ou contribuir. Com isso, podemos encontrar diversos projetos na rede contruídos com base no Arduino. Também podemos encontrar livros e revistas especializadas tratando do assunto, além de vários sites sobre o assunto. Alguns exemplos:
Na verdade o Arduino é bem simples. Na sua última versão, possui vários componentes simples como resistores, capacitores, diodos e um regulador de tensão. Mas a parte vital está num microcontrolador da ATmel que disponibiliza algumas portas digitais para entrada ou saída de bits e algumas portas analógicas para entrada de um sinal analógico e a respectiva conversão para um valor binário (int) no programa. O hardware do Arduino é tão simples que pode ser construído em casa após adquitir todos os componentes ou ser adquirido já ponto. A comunicação com o computador para receber os programas é realizado por porta serial ou USB do computador (depende da versão usada do Arduino). Através destas portas é possível conectar LEDs, potenciômetros, motores, sensores de luminosidade, relés ou qualquer outro dispositivo eletrônico que permita receber um bit para ativar algum equipamento externo ou simplesmente receber um sinal de um dispositivo e mandar para o programa. Com o Arduino não é difícil construir um hardware que controla alguns motores de um pequeno robô e receba os sinais de alguns sensores como um sensor ultrasônico. O sensor pode indicar a distância do robô de algum obstáculo para que o código em execução possa provocar uma reversão dos motores para evitar que o robô atinja ao alvo.

No site oficial do Arduino podemos encontra toda documentação, como programar, exemplos de código, como usa através de Windows, Linux ou Mac, além da descrição completa das várias versões do hardware. Neste site podemos fazer o download da ferramenta de desenvolvimento (IDE) para criar programas baseado na linguage "C" para instalar e rodar dentro do Arduino. Esta IDE chama-se "Processing" e está implementada em Java. Mas, como o programa, escrito em "C" e depois compilado, roda dentro do microcontrolador do Arduino, esta IDE apenas usa um compilador externo preparado para gerar códigos binários para os microcontroladores da ATmel. Também permite fazer o upload do programa compilado no computador para a memória do Arduino através da porta serial ou USB. Após o upload, o Arduino começa executar imediatamente.

A imagem a seguir ilustra um programa de exemplo que acompanha a IDE de desenvolvimento para o Arduino.

Exemplo de cógigo para o Arduino
Este programa configura a porta de número 13 do Arduino como saída digital através da função "setup()". Depois, num loop infinito, o Arduino executa as instruções que estão dentro da função "loop()". Estas instruções mudam o estado da porta 13 para HIGH (bit ligado que corresponde a 5 volts nesta porta) e após uma pausa mudam o estado para LOW (bit desligado que corresponde a 0 volt nesta porta). Assim, se ligarmos um dispositivo a esta porta, ele será ligado e desligado. Por exemplo, um LED pode ser usado para visualizarmos o estado desta porta. Ou até poderíamos ter um pequeno motor ligado a esta porta com um circuito apropriado de potência.

Breve escreverei um pequeno tutorial com o passo-a-passo do primeiro teste que fiz com o kit do Arduino. Até lá enjoy and comment it ...

Sábado, 11 de Julho de 2009

Ubuntu Netbook Remix e Acer Aspire One

Recentemente adquiri um netbook da Acer Aspire One (ZG5 - AOA150-1706) com o Windows XP Home previamente instalado. Uma excelente máquina, portátil e com boa performance. Contudo, fiquei extremamente decepcionado com o sistema operacional instalado. Não, porque era um Windows, e sim pelas limitações impostas pela Microsoft para esta distribuição do Windows. Eu estava disposto a manter este sistema operacional porque gostaria de ter uma cópia legalizada, além de poder rodar alguns programas que não tenho disponível para Linux. Mas, fui tentar instalar alguns softwares da própria Microsoft para conectividade com Unix e este sistema rejeitou a instalação. Também experimentei problemas ao copiar arquivos maiores que 2GB para um pendrive de 16GB. Esta foi a gota d'água para jogar na lixeira o Windows e instalar um Linux.

Então, conheci o Ubuntu Netbook Remix (UNR). Esta distribuição é uma versão do já conhecido Ubuntu, mas otimizado e testado para alguns netbooks disponíveis no mercado. Daí, não tive remorso. Fiz um backup da instalação original da máquina e instalei o UNR.

Após a instalação do UNR no netbook, notei que todos os dispositivos funcionaram perfeitamente sem nenhuma configuração extra. Itens como webcam integrada, microfone embutido, mouse touchpad, wifi, áudio e xorg funcionaram perfeitamente. Foi fantástico ver que após uma instalação simples e rápida já estava disponível o Firefox, Pidgin, OpenOffice 3 e outros softwares para edição de imagens, tocar áudio e video. Sem muito esforço instalei o JDK da Sun através do Synaptic Package Manager e depois o Eclipse e NetBeans.

Apesar de ser uma máquina de pouco poder de processamento, o Acer Aspire One com processador Intel Atom N270 de 1.6GHz, 1GB de RAM, 160GB de HD e tela de 8.9" (resolução máxima de 1024x600), os softwares responderam com uma excelente performance. Inclusive as IDEs de desenvolvimento em Java.

Mesmo com toda a elegância da interface do UNR para o desktop no netbook, as vezes o tamanho da tela e as aplicações sempre iniciando maximizado incomodam um pouco. Também notei que o auto-falante embutido no netbook é horrível. Contudo, todos os codec instalados para mp3, DVD, mp4 e divX funcionaram muito bem. Até ficou parecendo com um daqueles DVD players portáteis que tem uma pequena tela embutida para ver filmes.


A distribuição Ubuntu como sempre está evoluindo e se tornando cada vez mais fácil de instalar e usar. As vezes me pergunto porque as pessoas ainda insistem em usar um Windows limitado ou pirata quando já temos uma excelente solução disponível para todos.

JavaOne 2009 - Slides disponíveis na rede

Participei do último JavaOne realizado em San Franciso (USA). Pude contribuir para este evento como palestrante junto com o Vinicius Senger (co-fundador e CEO da Globalcode). Após este evento e o Casual Class realizado pela Globalcode, coloquei os slides na rede para a comunidade através do slideshare.


Detalhes da apresentação podem ser encontrados aqui.

Coloquei também algumas fotos tiradas durante o evento no álbum do picasaweb.

JavaOne2009

Quarta-feira, 4 de Fevereiro de 2009

Spring na Java Magazine by Spock

Finalmente consegui ter uma cópia da edição 65 da revista Java Magazine. Já fazem 10 dias que tive notícias de colegas que assinam a revista dizendo que já receberam. Mas, até hoje ainda não está nas bancas!

Estava ancioso para por as mãos nesta edição para ver como ficou o artigo que escrevi sobre o Spring Framework.

O artigo descreve uma aplicação simples e completa usando Spring Framework, JSF e JPA. Através de configurações em XML e anotações, os serviços de transação e persistência são ilustrados no desenvolvimento de DAOs e componentes de negócios gerenciados pelo Spring e acessados através de telas na web com JSF. As principais funcionalidades do Spring Framework e as partes que compõem o Spring Portfólio também são descritas neste artigo.

Uma aplicação completa para web é presentada, desde a modelagem simples de casos de uso até códigos em classes Java, interfaces e diagramas UML de classes e sequência, mostrando como usar o Spring Framwork para simplificar o desenvolvimento de aplicações.

Nem tudo é perfeito ... Por mais que revisemos o artigo e que exista um editor extremamente criterioso durante a revisão, sempre sobram alguns erros. Para a tranquilidade de todos, não são erros técnicos, mas sim, pequenos erros ortográficos e posicionamento de figuras e listagens em páginas diferente de onde são referênciados.

Aqui estão algumas erratas que encontei após uma nova leitura do texto através da revista:
  • Pág. 54, 1a. coluna, 3o. parágrafo: A figura 1 citada aparece na página 53 exigindo do leitor a mudança de página;
  • Pág. 60, 1a coluna, 3o parágrafo: Aparece a palavra "componentes" onde deveria ser "componente" resultando em: "Em alguns casos não é possível configurar um componente gerenciado pelo Spring através de anotações";
  • Pág 60, 1a coluna, 3o e 4o parágrafos: O início do 4o parágrafo repete a mesma informação apresentada no final do 3o. parágrafo;
  • Pág. 61, 1a coluna, 1o parágrafo: Uma das anotações do Spring está grafada com um s a mais: @Respository, e o certo seria: @Repository;
  • Pág. 61, 1a coluna, 4o parágrafo: A listagem 5 é referenciada nesta página e o conteúdo desta listagem está na página 62, exigindo do leitor a mudança de página.
  • Pág 63, 1a coluna: As listagens 7 e 8 são citadas nesta página, mas o conteúdo destas listagens estão na página 64, exigindo do leitor a mudança de página.
Como podem verificar não são problemas sérios. Alguns são inevitáveis por conta da necessidade de diagramação e outros foram descuido do escritor que vos escreve :)

De qualquer maneira, o artigo ficou muito bom e muito bem apresentado na Java Magazine. Está bem diagramado e com o conteúdo na medida certa. Contudo, para não estender o tamanho do texto, foi necessário colocar somente os códigos fontes e diagramas necessários para o entendimento do assunto apresentado. Em alguns códigos, trechos considerados irrelevantes foram omitidos sem prejuízo para a compreenção. Mas, a DevMedia disponibilizou para download o projeto Eclipse completo que fiz para a aplicação demonstrada no artigo. Quem se interessar pode fazer o download clicando aqui. O zip baixado tem um arquivo "leiame.txt" com os pré-requisitos e passos para instalação.

Show de bola foi a dobradinha com o artigo nesta mesma edição da Java Magazine que traz a tradução da entrevista com o Rod Johnson (criador do Spring e fundador da SpringSource) realizada no JavaOne2008. Eu ajudei a escrever algumas perguntas que foram realizadas pela Yara Senger (Globalcode) e Melissa Villela (Globalcode) durante o evento. Não perdi a oportunidade de questionar os seguintes pontos:
  • A plataforma Spring pretende ser uma alternativa viável à própria plataforma Java EE, e não apenas uma alternativa a EJB?
  • Depois do EJB 3 no Java EE 5, porque deveríamos continuar usando Spring nas aplicações enterprise?
Não foi surpresa ouvir uma resposta positiva para a primeira pergunta e um bom argumento para continuarmos com o Spring. Tem um bom tempo que percebo a intenção do Spring de ser um forte concorrente da plataforma Java EE e isto motivou a minha pergunta. Ele também cita que mesmo com as melhorias no Java EE 5, o EJB 3 ainda continua contendo grande parte do legado "por baixo dos panos" e que diversas funcionalidades continuam limitadas e falham em atingir os objetivos propostos por algumas tecnologias, como por exemplo AOP! Com estas respostas ficou claro para mim que não adianta mais ficar comparando Spring com EJB. O Spring Framework é apenas uma parte da plataforma. Já temos um servidor de aplicações Spring com suporte fantástico a OSGi que implementará no futuro alguns dos profiles especificados para o Java EE 6. Também não podemos esquecer das diversas bibliotecas e frameworks que compõem o chamado Spring Portfólio. Agora temos que comparar as plataformas para decidirmos qual arquitetura implantar no nosso sistema corporativo: Spring Platform versus Java EE Platform!

Por fim, comento no artigo os passos necessários para se tornar um profissional certificado em Spring Framework (S2CP - SpringSource Certified Professional). No início deste ano fiz a prova de certificação. Depois conto os detalhes em outro post.

Quem quiser comentar estes artigos da edição 65 da Java magazine é só mandar para blog@spock.com.br ou escrever comentários para este post.

Then, enjoy!

Domingo, 14 de Dezembro de 2008

A caneta Java no TDC Floripa

No TDC 2008 fiz uma demonstração da caneta que roda java. Aproveitei o evento e preparei alguns slides que usei na apresentação resumindo algumas características do hardware e software.

Lugar legal para compartilhar apresentações é o slideshare.

Quarta-feira, 10 de Dezembro de 2008

The Beer Book


Dica imperdível para os apreciadores de cerveja. Apreciadores de verdade!

The Beer Book de Tim Hampson

O livro traz comentários de mais de 1700 cervejas de mais de 800 cervejarias do mundo. Conta a história de várias cervejarias e muitas fotos das garrafas e rótulos das cervejas. Além de algumas anotações de vários apreciadores.

Muito bom, vale a pena conferir!

Vejam outros comentários:
Then enjoy!

Terça-feira, 4 de Novembro de 2008

A Microsoft comprou a SpringSource?

Tem muita gente acreditando nisso!

Com o recente lançamento do site InfoQ no Brasil com artigos traduzidos para o português, alguns dasavisados acabaram acreditando.

Os 20 melhores artigos de 2008 da InfoQ em inglês foram traduzidos para o português e um deles incluiu a pegadinha de primeiro de abril realizada pelo Rod Johnson (criador do Spring Framework e CEO da SpringSource).

Vejam video abaixo.

Muitos caíram no erro pelo site não ter divulgado inicialmente que era uma piada de primeiro de abril. Mas, alguns leitores espertos perceberam o deslize e avisaram o site para correção.
Links para os artigos na InfoQ:
Fonte: InfoQ.