02
jul 11

Robótica e Computação nas Nuvens

Aí estão os arquivos da palestra que eu fiz no FISL 12 e no TDC 2011 sobre Arduino, Robótica e Computação nas Nuvens.

Update: também apresentei no CEFET Summer of Code em 29/07 😉

Abaixo da apresentação estão os fontes dos projetos que eu criei para demonstrar o uso do Google App Engine e o Arduino.

Vídeo do braço robô em ação

http://www.youtube.com/watch?v=3xjVs3T-rpk

Projeto web

Criado com criado com Google App Engine
Projeto Eclipse: Clouduino.zip
Usa o plugin do Google App Engine para eclipse.

Programa local

Programa que roda localmente e lê as informações da aplicação web..
Projeto Netbeans: ClouduinoLocal.zip
Usa a lib Jettison 1.2 para ajudar no parse do JSON.

Programa Arduino

Lê a porta serial e executa o comando enviado.

#include

Servo myservo1;
Servo myservo2;
Servo myservo3;

int pinServo1 = 10;
int pinServo2 = 11;
int pinServo3 = 9;
int velocidade = 5;
int pos;
int entrada;

void setup()
{
  myservo1.attach(pinServo1);
  myservo2.attach(pinServo2);
  myservo3.attach(pinServo3);

  myservo1.write(180);
  myservo2.write(0);
  myservo3.write(90);

  Serial.begin(9600);
}

void loop()
{
  if (Serial.available() > 0) {
    while (Serial.available()>0) {
      entrada = Serial.read();
      Serial.print(entrada);
      delay(1);
    }
      if (entrada == '1'){
  	sobe();
      } else if (entrada == '2'){
  	desce();
      } else if (entrada == '3'){
  	esquerda();
      } else if (entrada == '4'){
  	direita();
      } else if (entrada == '5'){
  	abre();
      } else if (entrada == '6'){
          fecha();
      } else {

      }
  }
}
void desce(){
   for(pos = 0; pos < 180; pos += velocidade) {                                          	       myservo1.write(pos);         	       delay(10);                                }    }    void sobe(){          for(pos = 180; pos>=1; pos-= velocidade) {
     myservo1.write(pos);
     delay(10);
  }
}
void esquerda(){
  for(pos = 0; pos < 180; pos += velocidade) {                                          	     myservo2.write(pos);         	     delay(10);                               }    }    void direita(){       for(pos = 180; pos>=1; pos-= velocidade) {
    myservo2.write(pos);
    delay(10);
  }
}
void abre(){
  for(pos = 0; pos < 90; pos += velocidade) {                                          	      myservo3.write(pos);         	      delay(10);                               }    }    void fecha(){           for(pos = 90; pos>=1; pos-= velocidade) {
       myservo3.write(pos);
       delay(10);
  }
}



01
ago 10

FISL 11. Impressões finais.

Eu já tinha falado um pouco do meu primeiro dia de FISL, terceiro do evento. Faltava falar do último dia. Eu estava muito pegado no trabalho e com problemas domésticos, mas finalmente sobrou um tempinho para eu poder registrar esse último dia.

#AkitaOnRails

Para começar bem o dia eu assisti a palestra do Fábio Akita, que falou sobre o “Ecossistema Ruby on Rails”. Pô! De novo? Ele que ele fez a mesma apresentação no Dev in Rio 2009. Mais ou menos. Basicamente foi a mesma apresentação, mas como ele mesmo disse: essa estava completa. No Dev in Rio ele teve que reduzir a apresentação para caber em uma hora. No FISL ele teve mais tempo e apresentou todo o material. Ele falou da filosofia por trás da arquitetura do Ruby (“Tornar as coisas simples fáceis, e as coisas complexas possíveis”).

Simplicidade. É uma das coisas que mais gosto no Ruby, particularmente no Ruby on Rails. Como ela incentiva o uso de boas práticas com a simplificação do trabalho manual. Você não perde tempo com configurações e coisa e tal, e fica com mais tempo para depurar e testar o seu código. Se sabemos que precisaremos de MVC, CSS, javascript, uma estrutura padronizada, então porque perder tempo fazendo tudo de novo a cada projeto. O Ruby on Rails faz tipo assim: Vamos combinar uma coisa. Deixa que eu me preocupo em fazer o trabalho manual, e você se  preocupa em fazer o trabalho criativo. Claro que temos que aprender como o RoR faz esse trabalho, mas não temos que aprender vários frameworks mesmo. Então porque não aprendemos um bem útil e produtivo?

Claro que ele falou da parte técnica, também.  Falou de tudo que é usado num ambiente de desenvolvimento Ruby profissional, como repositórios, integração, monitoramento, teste, servidores, frameworks, bancos de dados, etc..  E enriqueceu muito a apresentação mostrando as referências de sites com conteúdo para aprendizado do Ruby e Rails como o rubylearning.org, guides.rubyonrails.org, railscasts.com, e cursos presenciais e on-line aqui no Brasil.

Uma das coisas mais legais nessa apresentação foi que ele quis deixar claro que nenhuma linguagem/plataforma é “simplesmente” melhor que outra. Isso vindo dele, que é uma referência, é sempre legal. Temos que se acabar com essa discussão sem fim sobre o que é melhor o que. Um lugar para cada coisa e cada coisa em seu lugar, Correto?
Foi uma ótima apresentação.

Mais detalhes na apresentação do Akita aqui: (Fisl 11 – Ecossistema Ruby on Rails)

#AkitaOnRails 2

A segunda palestra que eu vi também foi com o Akita, mas com um enfoque diferente. E essa, em minha opinião, foi uma das melhores palestras que eu assisti no evento. Título: Dicas de Desenvolvimento Web com Ruby.

Ele apresentou dicas de como melhorar o desempenho de aplicações web. Os exemplos de implementação dados por ele foram todos para o mundo Ruby, mas as dicas podem muito bem ser usadas para qualquer aplicação web, independente de plataforma.

Por exemplo: redução do número de requisições e minificação de CSS e javascript, uso do javascript embaixo da página (perto do </body>) para agilizar o carregamento do conteúdo deixando os scripts para o final, utilização de asset hosts para aumentar o número de conexões simultâneas por domíno na hora de carregar conteúdo,  uso de CDN (Content Delivery Network), agendamento de tarefas e outras. Na verdade são mais de 30 técnicas e boas prática para desenvolvimento para web, mas ele apresentou apenas 6, e só essas já fariam milagres para 80% dos sites que eu conheço. :p

Algumas técnicas apresentadas utilizaram soluções RoR, mas podem muito bem ser implementadas com Java, .Net, PHP, e por aí vai. Algumas são tão simples que basta copiar e colar (ou coisa parecida), como as técnicas de diminuir as requisições e de colocar o javascript embaixo da página.

Mais que uma palestra com dicas, foi uma aula de como podemos fazer sempre o melhor, nos preocupando não somente em entregar, mas buscando otimizar ao máximo os produtos que criamos. Parabéns Akita!

Mais detalhes na apresentação do Akita aqui: (Fisl 11 – Dicas de Desenvolvimento Web com Ruby)

Funny Inveja Maker

Merece registro também a apresentação “Nokia N900 – Inveja Maker” com o Anahuac de Paula Gil. Ele mostrou os principais recursos do seu poderoso N900 (multitarefa, processador, memória, câmera, S.O. linux, etc, etc, etc.), e comparou com outros smartphones “menos providos” de tanta tecnologia. Foi muito engraçado, pois ele além de já ser um cara muito divertido, não perdeu tempo em sacanear todo mundo que não tinha um N900, principalmente os que tinham iPhones.

Ah. Ele fez a apresentação direto do N900 😉

#HoraExtra

Destaque especial para a galera do #HoraExtra aqui do Rio. Eles estavam super inspirados e criaram nada menos que seis aplicações nos quatro dias de FISL. Tá bom ou quer mais? Quer mais? Bem. Além disso organizaram  sessões de Dojo, que foram um sucesso total. Muita gente não conhecia o conseito do Dojo, e foi uma ótima oportunidade para divulgar. Mais? A galera teve diversas palestras aprovadas e no dia 23-07 Sylvestre Mergulhão e Henrique Crang arrebentaram com a mais falada apresentação do FISL: “Por que eu sou fanático por testes e você é um bundão”. Muito show.

Mas para mim o destaque da galera foi do desenvolvimento das aplicações. Todas simples e muito criativas (feitas com Rails e uma com Python). E era essa a idéia. Criar aplicações funcionais usando boas práticas de desenvolvimento, claro, e com todo mundo se divertindo. Inicialmente elas eram publicadas no Heroku, mas algumas já tem seu próprio domínio como a deRessaca e a Desoroscopo, a que eu mais gostei.

Confira aqui as aplicações:

E aqui a lista dos repositórios no Github:

http://github.com/horaextra/desoroscopo
http://github.com/horaextra/banheiro
http://github.com/horaextra/deressaca
http://github.com/horaextra/bullshitometro
http://github.com/horaextra/dojomap
http://github.com/horaextra/descertificador

Foi uma ótima participação de toda a galera. Parabéns a todos. E vamos aguardar o que será feito no próxmo FISL, a galera não vai se contentar com menos. rsrs

Conclusão

Adorei o FISL, e já estou pensando no próximo. Pude trocar idéias com pessoas de outros estados e que trabalham com tecnologias muito diversas. Isso enriquesse muito. A convivência com a diversidade amplia muito seus horizontes, tão acostumados ao dia a dia.

Conheci pessoalmente muita gente legal que só houvia falar ou só conhecia através da internet. Isso foi sensacional.

Outra coisa legal do evento foi estar em contato com profissionais que estão preocupados não em entregar o produto, mas sim em fazê-lo funcionar da melhor forma possível e entregando produtos de qualidade.  Isso é inspirador, e contagiante. É uma das coisas que mais gosto quando vou nesses eventos. Eu sempre volto revigorado e cheio de idéias novas.

Agora é aguardar o evento do ano que vem. FISL 12, eu vou 😉

Abs.


23
jul 10

FISL 11. Tô aqui!

É isso. Estou em Porto Alegre no FISL 11 (Forum Internacional Software Livre) . O evento começou dia 21/07, mas só cheguei hoje. Quem sabe no ano que vem eu não chego no início. 😉

Eu estava muito animado para esse encontro, e não me decepcionei. O evento está muito legal. Ótima estrutura, muitos expositores, vários sorteios e promoções, uma grade MUITO abrangente que com certeza irá agradar a todos os presentes, e uma galera bem animada. Encontrei como um pessoal do Rio (a galera do #horaextra), alguns eu já conhecia, como o Rodrigo Pinto e o André Fonseca, e tive a oportunidade de conhecer outros camaradas como Vitor Pelegrino, Marcos Tapajos, Cláudio Berrondo e outros. Isso é uma das coisas que eu mais gosto nesse tipo de evento. Você troca idéias, bate um papo de alto nível e conhece muita gente legal que só houvia falar ou só conhecia através da internet. Legal!!

Já assisti três palestras. Todas muito boas.

A primeira foi do Edgar Silva sobre REST com Java. A sala estava lotada, e ele focou na facilidade atual do Java em usar anotações para transformar classes/métodos simples em serviços REST rapidamente. Mostou também um pouco do jBPM.

Depois parti para uma aula sobre desenvolvimento para TV Digital com Ginga NCL. Achei muito interessante e simples, mas pude perceber ainda existe muita incompatibilidade entre os dispositivos, de fabricantes diferente, que executam aplicações interativas na TV Digital. Isso talvez se deva pela demora, do grupo responsável, em soltar a especificação oficial. Ela saiu a pouquíssimo tempo e alguns fabricantes não esperaram e sairam lançando dispositivos antecipadamente. As informações que obtive são que somente a Sony e a LG estão desenvolvendo aparelhos 100% compatíveis com a norma oficial, mas que ainda não estão disponíveis. Essa é uma área que vai crescer MUITO nos próximos anos. Vi coisas muito legais aqui, muito legais mesmo. <notaMental>Estudar TV Digital</notaMental>

A última palestra que vi foi a da galera do Rio: “Por que eu sou fanático por testes e você é um bundão” com Sylvestre Mergulhão e Henrique Crang. Uma apresentação MUITO engraçada e com muita interação com o público para falar de TDD (Test Driven Development). Foi muito hilária, com o Henrique fazendo o papel do desenvolvedor “bundão”, adepto do POG (Programação Orientada a Gambiarras) e do XGH (eXtreme Go Horse) e o Mergulhão o do bom desenvolvedor, que usa testes e refatoração. Muito boa mesmo. Tomara que disponibilizem o vídeo, pois vale a pena.

Também assisti a um DOJO do pessoal do #horaextra no estande da iG, que é sempre interessante. Tinha MUITA gente curtindo também. Fez sucesso.

Bom! Até aqui foi isso. Amanhã vou chegar cedo para aproveitar bem, pois é o último dia. Depois coloco outras impressões.

Abs.


03
abr 10

Começando no mundo da eletrônica – Arduíno / Program-ME

Desde muito novo sempre me interessei por eletrônica e automação. Talvez seja por influência do meu pai, que é engenheiro, e sempre criava várias “trapizongas” para eu brincar. Nunca esqueço do dia em que ele fez uma lancha para eu brincar na piscina com um motorzinho, uma sandália de dedos velha e um pedaço de madeira. A hélice era feita com tubo de pasta de dentes (naquela época os tubos eram de metal… faz tempo 😉 ). Essa engenhoca e outras, e alguns aparatos que ele trazia do trabalho, sempre me fascinaram.
Por outro lado eu sempre gostei muito de computadores e programação, então na época de escolher uma profissão decidi estudar informática. Deixei a eletrônica de lado, mas nunca me esqueci desse meu desejo.

Conhecendo o Arduino

Ano passado “navegando” pela internet me deparei como projeto Arduino, que é uma plataforma open-source para criação de protótipos eletrônicos, criado por um professor italiano chamado Massimo Banzi. O objetivo de Banzi era incentivar a computação física, cujo conceito é aumentar as formas de interação física entre as pessoas e os computadores. Uma grande idéia!

O mundo Arduino é GIGANTE e fascinante. Tem tudo para quem gosta de eletrônica e possibilita uma infinidade de projetos. Do mais simples (para os iniciantes – meu caso), até o mais complexo (para os profissionais).

Através de suas características é possível integrá-lo com diversos dispositivos, como display LCD, sensores de luz, GPS, motores (DC, de passo, servos), leds, e por aí vai. É possível criar projetos de robôs, automação residencial, arte tecnológica, ensino e educação, e até mesmo integrá-lo com iPhone, celulares, Sun Spot, etc..

A linguagem de programação padrão é essencialmente C/C++, e sua IDE para desenvolvimento é feita em Java. Então podemos desenvolver para Arduino em qualquer plataforma. E funciona sem problemas. Não é uma IDE maravilhosa, e tal, mas é boa para o que se propõe.

Program-ME

Como todo o projeto do Arduino (hardware e software) seguem padrões open-source, existem vários fabricantes de modelos Arduino-Like em todo o mundo. No Brasil temos alguns modelos de Arduino, como: Tatuino, Severino, Modelixino, e o Program-ME da Globalcode. Esse último foi o meu escolhido para começar a brincadeira.

O Program-ME é ideal para mim, que estou iniciando, pois tem vários facilitadores já embutidos nele, por exemplo os leds, speaker, sensor de luz, etc.. Não é necessário comprar e ligar leds à plaquinha para começar a fazer umas brincaderiras, pois o Program-Me já vem com 9 delas. Bom, né?

Program-ME é:

  • Um instrumento didático criado originalmente para a Academia do Programador da Globalcode que pode ser utilizado por qualquer pessoa que queira aprender sobre Robótica, Eletrônica, Automação Residencial, Tecnologia aplicada à arte e mil outras coisas;
  • É um dispositivo de hardware baseado em Arduino, que também é aberto!
  • Tem leds, potenciômetro, sensores e outros componentes;
  • Você poderá comprar um Program-Me pronto na Globalcode ou simplesmente baixar a especificação, ir até à Santa Efigênia (ou similar) e montar o seu;
  • Tem como objetivo democratizar o conhecimento sobre eletrônica + programação + internet;
  • Utilizado para incentivar o desenvolvimento da computação física e comunidade Arduino no Brasil;

Sou fã do pessoal da Globalcode a muito tempo (eles são referência no mundo Java), e eles não decepcionaram.

Comprei um Program-ME e veio completinho. Chegou numa caixinha super bacana, com o cabo USB para comunicação e um manual de instruções encadernado. Parabéns a toda a equipe da Globalcode. O material é de primeira, e o atendimento foi super atencioso e prestativos. Recomendo!

AH! Eles também criaram um blog (Elétron Livre) para divulgar as novidades do projeto, e uma rede social no Ning (Globalcode Program-ME) para o pessoal colaborar, tirar dúvidas e divulgar seus projetos.  Show de bola!!!

Já estou brincando com ele e pretendo ir colocando minhas brincadeiras por aqui. Já tenho algumas idéias e vou tentar realizá-las com a ajuda do Program-ME. Esperem pra ver. rsrsrsr

Como diz manual do Program-ME:

Arduino é simples, fácil de programar e barato. Motivos mais que suficientes para fazer uma comunidade crescente no mundo todo.

Acho que agora eu realizo meu sonho!!! \o/


26
mar 10

Hora do Planeta. Participe!

Galera,

amanhã acontecerá a campanha Hora do Planeta!

No sábado, 27 de março, entre 20h30 e 21h30 (hora de Brasília), o Brasil participa oficialmente da Hora do Planeta. Das moradias mais simples aos maiores monumentos, as luzes serão apagadas por uma hora, para mostrar aos líderes mundiais nossa preocupação com o aquecimento global.

Vamos todos participar e contribuir para um mundo melhor.

Mais informações em: http://www.horadoplaneta.org.br/saibamais.php