05
nov 11

Robótica e PHP com Arduino @ PHPn’Rio 2011

Esse post é para divulgar o material que eu e a Desireé usamos na nossa palestra no PHP’n Rio 2011. O evento foi ótimo, com palestras interessantes 😉 , mini cursos e uma área para temas livres. Muito bom mesmo. O pessoal da organização está de parabéns. Obrigado ao Ralphael Almeida pelo convite.
Aqui está o link para o meu Github para o download dos fontes do projeto e a apresentação.
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


27
fev 11

Controlando motor DC com Ponte H (L293D) com arduino via porta serial

Preparei esse post para documentar um teste que eu fiz com CI L293D (Ponte H) para controlar um motor DC com arduino, mandando comandos pela porta serial do computador.

O L293D é uma ponte H dupla, isto é, controla até dois motores e faz com que estes rodem nas duas direções. Mas para esse teste eu usei apenas um motor. 😉

Os motores DC são motores de corrente contínua utilizados em brinquedos e pequenos dispositivos, e funcionam a pilha ou baterias. O bom desse tipo de motores é que são muito baratos. Mais em conta que servo-motores, e são facilmente encontrados em brinquedos. Então qualquer brinquedinho velho que tenha motor e funcione a pilha (ou bateria) tem um motor DC dentro. Basta abrir e retirar. 😀 Claro, claro. Espere o brinquedinho do seu filho quebrar, né. Ou ele perder o interesse e não se lembrar mais daquele carrinho 😉

Mas se seu filho não larga do carrinho ou sua filha não desgruda da boneca, não se incomode. Qualquer boa loja de 1,99 tem vários brinquedinhos legais bem baratinhos prontos para desmontar.

Aí você pode me perguntar. — Porque não comprar logo motores DC em uma loja de eletrônica? É uma ótima opção se você sabe o quer fazer, esse não é o meu caso.

Eu estou fazendo várias experiências e não sei bem o que vou precisar. Sendo assim um brinquedo desses me facilita muito a vida. Os motores DC tem um giro muito alto, e os carrinhos têm sempre caixas de redução com engrenagens para fazer com que os motores entreguem mais força e menos velocidade. Outra coisa boa são as rodas.

Por exemplo: Com R$ 25,00 eu comprei dois carrinhos no supermercado Extra. Com esse valor consegui quatro motores DC, duas caixas de redução para os motores, dois compartimentos para três pilhas, dois eixos para fazer curvas (não sei o nome disso :/ ), oito rodas de borracha de bom tamanho, e mais um monte de componentes eletrônicos que posso reaproveitar. Foi ou não, um bom negócio?

O maior problema de um motor DC é fazê-lo girar para os dois lados. Para isso se usam pontes H. Nos carrinhos elas vem todas soldadas junto com gambiarras chinesas. Não dá para usar. Então temos basicamente duas opções: Construir uma ponte H na unha com transistores e diodos de protecção, e fazer várias ligações, bla bla bla o que é bem complicado. Ou usar um CI que já é uma ponte H completinha, pronta pra uso. Como eu sou um grande preguiçoso escolhi usar o CI L293D que é bem barato (no eBay é ainda mais barato). O L293D dispensa o uso de diodos para tensão reversa dos motores. Basta ligar aos motores. Show!

Eu segui esse tutorial do site Makebits. Tinha pensado em fazer um parecido nesse post, mas o deles está realmente bem explicado. Nada a melhorar.

Vale ressaltar que o circuito só funciona bem com o arduino ligado a uma fonte externa de alimentação. Se estiver ligado somente pela alimentação via USB o motor não gira bem, ou o programa não funciona corretamente. Eu usei uma bateria de 9v.

Para testar o circuito eu fiz um programa para fazer o motor girar para a esquerda e para direita quando eu digitasse no teclado “d” e “e”, respectivamente. Qualquer outra letra faz o motor para de girar.

Eu gravei o motor em ação com a colaboração da minha filhota Gabriela. Ela explica tudo direitinho. Tá! Eu sou babão mesmo, eu sei :p

Segue o programa:

int motorPin1 = 5;
int motorPin2 = 6;
int entrada = 0;

void setup() {
 Serial.begin(9600);
 pinMode(motorPin1, OUTPUT);
 pinMode(motorPin2, OUTPUT);
}

void loop() {

 // testa se a porta serial está disponível
 if (Serial.available() > 0) {
 // le os dados da porta serial armazena na variavel 'entrada'
 entrada = Serial.read();
 if (entrada == 'e'){
 esquerda();

 } else if (entrada == 'd'){
 direita();

 } else {
 parar();

 }
 }
}

void esquerda(){
 digitalWrite(motorPin1, 1);   // Motor para a esquerda
 digitalWrite(motorPin2, 0);   //
}

void direita(){
 digitalWrite(motorPin1, 0);   // Motor para a esquerda
 digitalWrite(motorPin2, 1);   //
}

void parar(){
 digitalWrite(motorPin1, 0);   // para o motor
 digitalWrite(motorPin2, 0);   //
} 

Bom é isso. Quando fizer o teste com dois motores eu faço outro post.

Espero que esse post tenha sido útil.

Abs.