10
jun 12

[Tutorial] Usando a biblioteca Twitter Library for Arduino com OAuth

Nesse tutorial vou mostar como usar a Twitter Library for Arduino, uma biblioteca muito legal para tuitar usando somente um Arduino e um Ethernet Shield.

Esse projeto é MUITO útil e facilitou demais minha vida. Ele possibilita o envio de tweets pelo Arduino sem a necessidade de nenhum desenvolvimento extra para comunicação com a API do Twitter. Bem legal, pois depois que o Twitter adotou o OAuth como protocolo de autenticação, não era mais possível enviar tweets do Arduino somente informando usuário e senha. 🙁

Twitter Library  envia seu tweet à um site (http://arduino-tweet.appspot.com/) hospedado no meu querido Google App Engine (mais detalhes do GAE com Arduino aqui e aqui). Esse site é que é o responsável por enviar o tweet por você. O serviço do site é uma ponte de acesso facilitado a API do Twitter.

Arduino tuitando em 3 passos:

Dar autorização e obter a chave de acesso

Acesse http://arduino-tweet.appspot.com/ e clique no link Step 1 : Get a token to post a message using OAuth.

Esse link abrirá a página do Twitter para você permitir o acesso da aplicação aos recursos da sua conta.

Depois de autorizar você será redirecionado para uma página informando a sua chave de acesso para essa aplicação (como abaixo). É através desta chave de acesso que você utilizará a Twitter Library. Copie essa chave, mas se perde-la basta repetir o processo e copiá-la novamente.

Your token : XXcv3513-qoiw9hSEDnILynutcIqKXx0IZCP44mWm3pgZfM9dH

Instalar a biblioteca na sua IDE Arduino

Baixe o zip da biblioteca aqui, descompacte o zip e copie a pasta Twitter para dentro de ~/Documents/Arduino/libraries (Mac ou Linux) ou para Meus Documentos\Arduino\libraries\ (Windows). Em alguns casos a pasta libraries ainda não está criada, mas a do Arduino, sim. Nesse caso basta criar a pasta libraries no caminho informado e copiar a Twitter lá para dentro.

Se sua IDE estiver aberta, então a feche e abra novamente. Deverá aparecer um menu como mostrado na imagem abaixo.

Criar um programa, configurar e rodar

Para testar basta acessar os menus File > Examples > Twitter > SimplePost. Um exemplo de uso será criado. Inserira sua chave de acesso (obtida lá em cima) no lugar do texto YOUR-TOKEN-HERE.

Importante: Informe um IP válido da sua rede interna. A linha abaixo é o exemplo da lib, e pode não funcionar na sua rede.

byte ip[] = { 192, 168, 2, 250 };

Faça o Upload  (File > Upload) do programa para o Arduino (com a Ethernet Shield conectada, claro! duhhhh). Ao final do upload abra o monitor da porta serial (Tools > Serial Monitor). Se tudo der certo o resultado ficará assim:

Simples, não?

Obs. 1: O Twitter adotou o protocolo OAuth para autenticação das requisições em sua API. Isto permite que terceiros sejam autorizados a acessar determinadas contas do twitter, com permissão do usuário e sem que o mesmo precise saber sua senha ou dados pessoais. Isso mesmo! Nenhuma informação sua será armazenada por esse serviço. Objetivo deste serviço é ser apenas um autenticador e um atalho para a API do Twitter. Assim fica MUITO fácil comunicar o Arduino com o Twitter, não?

Obs. 2: A qualquer momento você pode revogar a permissão de acesso a essa aplicação pela URL http://twitter.com/settings/connections.

Obs. 3: Se você enviar o mesmo tweet mais de uma vez o Twitter irá responder como a mensagem 403. Ele não permite mensagens duplicadas em um curto espaço de tempo, nem que você envie diversas mensagens seguidas. Isso é para evitar spam de tweet 😉

Conclusão

Gostei muito de usar essa lib, principalmente pela possibilidade de enviar um tweet “diretamente” pelo Arduino de maneira bem transparente e simples. Se você já programou alguma integração com a API do Twitter sabe que não é nada complicado, mas dá um certo trabalho inicial. Além disso é preciso manter uma aplicação fora do Arduino para se comunicar. Com a Twitter Library você não precisa se preocupar com isso. Pode dedicar mais tempo somente ao projeto Arduino 😉

Levando em conta que é um projeto apresentado no próprio site do Arduino eu fico bem tranquilo quanto a confiabilidade dessa solução. Agora vou brincar mais um pouco e crio novo post se achar algo interessante.

Espero que tenham gostado.

Abs. Marco.


06
set 11

Palestra on-line sobre Arduino e Computação nas Nuvens

Para quem gostou do meu post sobre Robótica e Computação nas Nuvens, no qual eu disponibilizo os slides que eu usei em algumas apresentações e os fontes do projeto, segue abaixo o vídeo gravado da webinar que eu dei no site Laboratório de Garagem dia 23/08/2011. Explico bem rapidinho (por causa do tempo) como integrar o arduino com apps em cloud computing, e no fim eu mostro o braço robô funcionando ao vivo. A galera controlou o bichinho on line via internet. Foi bem legal!

Tem uma participação muito especial dos meus cachorros latindo MUITO e me aporrinhando, mas acho que ficou legal 😉

Espero que gostem.

Abs.


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);
  }
}



30
maio 11

FISL 12: Eu vou palestrar uhuuuu

FISL 12… Eu vou palestrar, uhuuuuu !!!!

Eu fiquei muito feliz quando recebi a notícia que minha submissão para o FISL 12 foi aceita. Muito feliz mesmo!

É a primeira vez que palestro em um evento internacional do porte do FISL.

A palestra aprovada pela galera foi:

Robótica e Computação nas Nuvens: Unindo os dois mundos.

Resumo:

Robótica e Computação na Nuvem são os dois temas cada vez mais recorrentes no mundo do desenvolvimento de soluções. Agora podem ser usados juntos para simplificar a vida das pessoas. Nessa palestra mostrarei como é possível, e viável, a qualquer desenvolvedor criar soluções completas e produtos para robótica, automação, domótica e internet com custos baixos, usando recursos de software e hardware open-source disponíveis para todos, mas que nem sempre são usados juntos como solução.

Proposta:

A proposta é demonstrar o uso do Google App Engine como plataforma de integração com soluções de eletrônica e automação criadas com o Arduino. As duas plataformas são open-source (software e hardware), e podem ser utilizadas por qualquer desenvolvedor para criar protótipos ou até mesmo desenvolver soluções de baixo custo inicial que podem ser facilmente mantidas e escaladas. Apresentarei brevemente o potencial das duas plataformas e logo após demonstrarei uma solução de automação controlada pela internet que as utiliza de forma integrada. Imagine: programação, eletrônica, internet e robótica. Juntos! Para finalizar demonstrarei como dar os primeiros passos no estudo e desenvolvimento dessas tecnologias, e falar das comunidades e das oportunidades de um mercado que pode ser explorado por um profissional com esse conhecimento, como programação, automação, domótica, ensino, etc..

Bom! Agora é me preparar… E BEM!!!

Eu já estou nervoso agora, imagina no dia :/

Me desejem sorte.

Abs, Marco.

 

UPDATE:

Já tenho a programação da minha palestra. As palestras serão transmitidas via web, compareçam 😉

Robótica e Computação nas Nuvens: Unindo os dois mundos.
Sala: Prédio 11 – Auditório
Dia: 02/07/2011
Horário: 11h00

Grade completa aqui: http://fisl.org.br/12/papers_ng/public/fast_grid?event_id=1