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.


07
jan 11

“I Hack’n Rio” vem aí! Será histórico!

O “I Hack’n Rio” vem aí! Você precisa ir. Será histórico!!!

O Hack’n Rio é um evento organizado pelo grupo SL-RJ em conjunto com várias comunidades amigas, como: ArduInRio, Android In Rio, DojoRio, PHP Rio, PythOnRio, Rio.pm, RioJUG, RubyOnRio e Ubuntu-RJ.

A ideia de se fazer este evento veio das próprias comunidades do Rio de Janeiro, que são bastante ativas e frequentemente organizam eventos e encontros técnicos.

Serão apresentadas palestras técnicas, painéis e oficinas sobre tecnologias livres (software e hardware 😉 ). Será uma ótima oportunidade para as comunidades unirem forças e apresentarem suas iniciativas num só lugar.

A expectativa inicial é contarmos com a presença de 1.000 pessoas. Bom né?

Este que vos escreve e o Alvaro “Turicas” Justen (comunidade ArduInRio) somos responsáveis pelo conteúdo e atividades relacionadas ao Arduino e eletrônica em geral. Teremos um espaço especial nos dois dias do evento só para hacks com nossa plaquinha favorita, e muitas outras atividades. Quem quiser, pode nos enviar sugestões de atividades para enriquecermos o espaço.

Se você faz parte de uma das comunidades de software livre do estado, então você também é parte do Hack’n Rio! Ajude a tornar o evento um sucesso procurando por patrocinadores, buscando por conteúdo relevante e chamando pessoas que fazem as coisas acontecerem – seja construindo coisas novas, seja contribuindo com projetos já existentes. Algumas sugestões:

  • Patrocinadores: empresas que usam software livre e querem contribuir para sua evolução; empresas prestadoras de serviço ou desenvolvedoras de softwares livres que querem encontrar talentos para contratarem (as empresas podem até mesmo fazer uma espécie de “O Aprendiz” e oferecer vagas de empregos, se desejarem) e divulgar seu nome e serviços.
  • Conteúdo: não pense só em palestras e mini-cursos, pois isso temos em qualquer evento. Pense em encontros técnicos para correções de bugs ou desenvolvimento de novas aplicações ou novas funcionalidades para aplicações já existentes.

Data:
08 a 09 de abril.

Local:
Cidade Universitária da UFRJ. (informações aqui).

Em tempo:

Apesar da palavra “hacker” atualmente estar associada a uma pessoa que explora falhas de segurança em computadores e tenta prejudicar outras pessoas, no sentido original da palavra ela designa alguém que sabe muito bem algum assunto. Por isso, o Hack’n Rionão é um encontro de usuários malignos de computador, mas sim de pessoas que conhecem muito bem computação, mais especificamente software livre, ou pessoas que estão buscando isto.

Nos vemos lá 😉

Abs.


08
ago 10

Comunicação Serial com Ruby e Program-ME (Arduino) no Ubuntu

Nesse post eu vou demonstrar como usar Ruby para fazer a comunicação entre um Arduino e um computador através da porta serial. No meu caso eu vou usar um Program-ME, que é o Arduino-Like da Globalcode. Mais detalhes do Program-ME podem ser vistos aqui, aqui, aqui, aqui e aqui. Tá bom, né? :p

Vou partir da premissa que você já tem o Ruby instalado e atualizado. Com as gems (RubyGems) e tudo, ok? O objetivo desse post não é ensinar a instalar e configurar o Ruby, e sim usá-lo com a porta serial do seu computador. Mais informações sobre como instalar o Ruby podem ser obtidas aqui, e as ruby gems aqui. Caso tenha tenha alguma dúvida ou problema nessa parte pode me enviar sua dúvida que vou tentar ajudá-lo.

Instalar SerialPort

Ruby-SerialPort é uma biblioteca que fornece facilidades para utilização das portas seriais do computador (padrão RS-232) usando Ruby.

Existem outras formas de acessar as portas seriais como JARs para aplicações Java, DLL para Windows, e várias outras maneiras. Mas para aplicações Ruby essa biblioteca é a mais usada e a que possuí melhor documentação, então fiquemos com ela.

Abra o terminal (Crt+Alt+T) e execute o comando abaixo para atualizar as gems:

sudo gem update

Para instalar a biblioteca SerialPort execute o seguinte comando.

 sudo gem install serialport

Vamos testar a instalação da biblioteca fazendo o seguinte:

Execute o irb.

Agora execute os comandos abaixo no console do “irb”. Se a resposta for “true”, então a biblioteca foi instalada corretamente.

require 'rubygems'
requile 'serialport'

Comunicação com o Program-ME / Arduino

Com a biblioteca instalada e testada vamos ver seu funcionamento com o Program-ME.
Vou fazer um teste usando os LEDs do Program-ME que estão nas portas digitais 7 e 8.
Um programa bem simples que irá tratar as informações recebidas através da porta serial. Irá acender os LEDs 7 e 8, se a porta serial receber ‘A’ ou ‘B’, respectivamente e apagar se a porta receber ‘a’ ou ‘b’.
int led_A = 7;
int led_B = 8;

void setup() {
  Serial.begin(9600);
  // define as portas como saida
  pinMode(led_A, OUTPUT);
  pinMode(led_B, 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'
    int entrada = Serial.read();
    switch (entrada) {
    case 'A':
      digitalWrite(led_A, HIGH); //acende led_A
      break;
    case 'B':
      digitalWrite(led_B, HIGH); //acende led_B
      break;
    case 'a':
      digitalWrite(led_A, LOW); // apaga led_A
      break;
    case 'b':
      digitalWrite(led_B, LOW); // apaga led_B
      break;
    }
  }
}

Agora vamos ao programa Ruby.

require 'rubygems'
require 'serialport'

sp = SerialPort.new "/dev/ttyUSB0"

# use "while true do" se quiser executar sem parar
for i in 1..10 do
	sp.write "A"
	sp.write "b"
	sleep 1
	sp.write "a"
	sp.write "B"
	sleep 1
end

Para executar o programa execute a seguinte na linha de comando: ruby <nome_do_arquivo>.rb. No meu caso ficou assim.

ruby envia_dados_serial.rb

O programa vai apagar e acender alternadamente os dois LEDs por 10 vezes. Tudo muito simples, mas vamos a algumas explicações.

Na linha “4” a classe “SerialPort” irá criar o objeto responsável pela comunicação serial e passamos o endereço da porta serial como parâmetro. No meu caso é a “/dev/ttyUSB0”, mas poderia ser “/dev/ttyS1” ou até mesmo “COM7” no caso do Windows (Sim. Funciona no Win). Nessa linha também podemos definir a taxa de dados (rate)  por segundo para transmissão de dados serial. Por padrão o “SerialPort” utiliza “9600”, por isso não precisamos declarar explicitamente, mas poderia fazer algo assim: sp = SerialPort.new “/dev/ttyUSB0”, 9600. Mas deve ser a mesma que o programa do Program-ME/Arduino está configurada.

Já o comando “write” envia o texto para a porta serial configurada.

Você pode dizer: Pô! Mas porque testar com dois leds? O Arduino só tem um.

Bom! Por dois motivos: Primeiro. Eu achei o efeito com os dois LEDs mais legal. Mas é claro que você pode usar somente o LED na porta 13 do Arduino apagando as linhas desnecessárias, ou até mesmo usar duas portas digitais e fazer igual. Fica à seu critério. Segundo. Para mostrar, de novo, como esse Program-ME é bacana e facilita muito esse tipo de teste.  (Fight! Program-ME Wins) rsrsrsrsrs

Esse mesmo teste pode ser feito usando o “irb” diretamente. Como exemplificado abaixo.

Pretendo fazer um vídeo para demonstrar esse programa. Aguardem…

Conclusão

Tudo muito fácil. Bem a cara do Ruby, né?

Fiz o mesmo teste usando Java, e deu um “pouco” mais de trabalho. ;). Eu também pretendo fazer um post parecido mostrando como fazer a configuração da porta serial e a comunicação, só que usando Java. Mas vai ficar pra um mais tarde.

Espero que o post tenha sido útil

Abs.


28
maio 10

Program-ME vs Arduino – Fight!

A idéia de fazer esse post surgiu a partir de uma pergunta no forum da comunidade do Program-ME no Ning. Um companheiro queria saber a diferença entre um Arduino padrão e o Program-ME antes de investir em um produto.

Nosso companheiro José Luiz respondeu muito bem a dúvida, mas achei que a resposta merecia um complemento. Decidi então dar meus 10 centavos, e dei a opinião de quem está começando nessa cachaça de eletrônica 😉 e encontrou no Program-ME um dispositivo pronto pra briga. Minha resposta foi mais ou menos assim:

Posso te afirmar que isso tudo de bom que o Luiz escreveu para mim se resume em uma coisa: Muita coisa pronta para colocar a mão na massa 😉

Já fiz vários testes e brincadeiras só com o Program-ME. Sem precisar comprar nenhum componente extra.

Daí me veio a idéia de comparar os dois produtos em alguns testes básicos. Existem muitos tutoriais de como testar o Arduino com LED, PWM, LDR e outras coisas. Todos também se aplicam ao Program-ME, já que ele é 100% compatível com o Arduino. Mas a diferença que o produto da Globalcode foi pensado para ser o mais didático e fácil possível no ensino da computação física e na criação de experimentos em eletrônica. Então vamos ao que interessa.

Usando LDR

Nesse primeiro FIGHT eu vou comparar os dois dispositivos numa implementação usando um LDR.

Como eu não tenho um Arduino eu decidi colocar aqui um post bem didático do blog do Andre, que demonstra como usar o Arduino com um LDR. O post está bem legal. Muito bem explicado. Possui a lista de materiais necessários, detalhes do circuito que será criado, o programa para executar o teste, e como fazer o upload do programa e executar o teste. Show de bola! Mas percebam a quantidade de coisas que devem ser feitas para o programa funcionar.

O programa (abaixo) foi bem comentado pelo autor, e basicamente acende ou apaga o LED, se o LDR receber pouca ou mais luz, respectivamente (linhas 17 a 21).

/*# PROGRAMA ELABORADO POR ANDRED. #*/

int valor = 0;    // Variavel onde e guardado o valor lido do LDR
int led_pin = 13;  // Pino onde vamos ligar o LED
int analogin = 5; // Pino onde vamos ligar a LDR

void setup(){
  Serial.begin(9600); // Inicia A comunicação da porta Serial para que possamos ver o valor do LDR
}

void loop(){
  valor = analogRead(analogin); // O valor que irá ser lido na porta analogica numero 6 irá ser guardado na variavel “valor”
  Serial.print("O valor Da LDR e igual a: ");  // Mostrar na consola a frase “O valor Da LDR e igual a: “
  Serial.println(valor); // Mostras no Serial Monitor o valor da variavel “valor”
  delay(25); // Faz uma pequena pausa de 25 Mili Segundos

  if (valor < 300) { // Se a variavel valor for menor que 300
    digitalWrite(led_pin, HIGH); // acende o led da porta 8
  } else {
    digitalWrite(led_pin, LOW);
  } // se for maior mantem o led da porta 8 apagado

}

Agora pergunto. E se você não tem toda a lista de materiais e está doido para brincar? Quanto tempo ele gastou para finalizar esse experimento só para ver se o programa funcionava? Ou outro impeditivo qualquer. No caso do Arduino você terá, quase que necessáriamente, que seguir os passos que o André indicou, pois essas são as etapas básicas para brincar com Arduíno + LDR.

Agooooora, se você tem um Program-ME faça assim:

Viram a diferença?

Usando o Program-ME eu concluí o mesmo teste em menos de 1 minuto.

Eu só precisei fazer o upload do programa dele para o Program-ME e pronto. A plaquinha vem preparada para a batalha!! Já vem com 9 leds, 1 speaker, 2 entradas para conectar servo motores, 2 entradas para conectar pontenciometros, sensores de distância analógicos, 1 botão, e o já conhecido sensor de luminosidade (LDR), e etc..

Isso facilita muito, pois tudo já está soldado e testado, e economiza nossa grana e nosso tempo, pois já está comprado e nenhum investimento adicioal é necessário.

Claro que se vamos criar nosso próprios projetos e inventar trapizongas, então mexer com solda, protoboard, e etc é necessário, e até muito legal 😉 Mas eu acho muito legal poder fazer vários testes e brincadeiras (principalmente para estudar a linguagem de programação) sem precisar estar à volta com fios, solda, e outras coisas só para fazer uma brincadeirinha.

Program-ME WINS

Não quero dizer que o Program-ME é melhor que “x” ou “y”, até porque não ganho comissão, nem nada. Essa é a opinião de uma pessoal que encontrou tudo que precisava em um produto, e até agora está muito satisfeita com tudo. A qualidade do dispositivo é excelente e o atendimento da GC é ótimo.

Vou tentar colocar mais alguns “fights” entre os dois dispositivos mais para frente, mas para começar tá bom.

Fico por aqui.

Abs.