quarta-feira, 24 de agosto de 2011

Arduino conversando com Lego NXT via RS-485

Hoje finalmente consegui testar algo que já tinha vontade há algum tempo: comunicação entre Arduino e o NXT via RS-485. [Obrigado ao Ivan Seidel, que me emprestou um conector super bacana para ligar o cabo do NXT direto no pront-o-board! :-) ]

Para quem não conhece, o NXT é um bloco programável da Lego, ideal para quem quer trabalhar com robótica sem se preocupar com eletrônica. Ele é muito versátil! Você pode conhecer o NXT lendo este post.

O sistema que montei é o que está descrito no Rostrich's Blog, onde você vai encontrar o esquema para conexão entre o Arduino e o NXT, além dos programas para ambos:
http://rostrich.wordpress.com/2010/05/16/nxt-and-arduino-talking-rs-485/



Ele sugeriu o uso do chip MAX485, que é um circuito integrado de baixo consumo da Maxim dedicado a implementação de comunicação nos padrões RS-485 e RS-422.

Se você planeja usar outro Arduino que não o Uno ou o Nano, veja observação no final do post.

O sistema que montei tem poucas diferenças em relação ao descrito pelo Rostrich. Fisicamente, a diferença se resume ao CI que utilizei: como eu não tinha o MAX485, usei o MAX483, que é um CI equivalente mas com menor velocidade de comunicação. Talvez por isso eu não tenha conseguido alcançar a velocidade de 57600bps (bits por segundo) que o Rostrich diz ter conseguido. Ou seja, precisei fazer uma pequena alteração no código do arquivo baudrate.h, que ficou assim:

#define RS485_BAUD 28800

Também cheguei a testar com 38400bps, mas a comunicação falha de vez em quando. Essa falha pode ser por causa do meu circuito, feito em pront-o-board e com fios que mais parecem antenas... Mesmo assim, funcionou!

Arduino e NXT conversando via RS-485. Teste feito a 38.400 bps.
Cuidado, pois as velocidades de comunicação permitidas têm valores definidos. Usei 28800 bps, mas você pode usar menores. Veja todas aqui.

As outras diferenças do sistema que montei em relação ao do Rostrich são de software:

  • usei a versão 0022 para compilar o programa do Arduino;
  • meu compilador para o NXT é o NXC NBC-1.2.1-r3;
  • usei o Windows Vista.

A linguagem NXC (Not eXactly C), usada para programar o NXT, tem a mesma estrutura do C comum. A IDE que usei para compilar o programa em NXC e gravar o NXT é o Bricxcc. Ele é gratuito e pode ser baixado aqui. Informações sobre a linguagem NXC estão aqui.

Veja o resultado do sistema funcionando!


Ah! Se você ainda não fez isso, vai precisar atualizar o firmware do seu NXT para que o programa funcione: é necessário ter a versão 1.28 enhanced. Atualizei o meu com o que baixei neste link. O próprio Bricxcc tem um comando para atualização do firmware.

--- acrescentado em 05/01/2014 ---

O programa que está n no Rostrich's Blog foi desenvolvido para o Arduino Nano. Para usar com outros modelos de Arduino pode ser necessário fazer pequenos ajustes, pois o programa faz uso direto dos registradores do microconrtolador. No Arduino Uno (e Nano), com ATmega328, os pinos 10, 11 e 12 são mapeados nos bits PB2, PB3 e PB4 do registrador PORTB, respectivamente. Por exemplo, no Arduino Mega os pinos 10, 11 e 12 são mapeados nos bits PB4, PB5 e PB6 do PORTB.

Como o programa  que está n no Rostrich's Blog faz uso direto do registrador PORTB, para usá-lo no Arduino Mega é necessário alterar as linhas de definição dos bits de recepção e transmissão para os seguintes valores:

const byte RECV_RS485_BIT =  B00100000;
const byte SEND_RS485_BIT =  B00010000;

Outros modelos de Arduino podem exigir alterações semelhantes.

Agradeço ao leitor José Pedro Ribeiro Belo por ter feito a pergunta e por ter insistido em fazer o sistema funcionar com o Arduino Mega (veja comentários abaixo). :-)

---

Divirta-se! E até a próxima!

Referências:
http://rostrich.wordpress.com/2010/05/16/nxt-and-arduino-talking-rs-485/
http://forum.arduino.cc/index.php/topic,146511.0.html

quinta-feira, 18 de agosto de 2011

RoboEarth - A internet dos (e para) robôs!


Não. Não é a SkyNet, embora possa parecer a princípio. A RoboEarth é um banco de dados organizado para servir como base para troca de informações e de experiências entre robôs!

A ideia é que os próprios robôs alimentem esse banco, com as coisas que aprenderam, as associações que fizeram, as experiências que tiveram. Assim, qualquer outro robô do mundo poderá ter acesso às experiências "vividas" por todos os outros robôs! Isso é muito legal!

Se você acha que esta é uma ideia de doido, que não tem chance de vingar, pense de novo! O projeto RoboEarth está sendo liderado por pesquisadores da Eindhoven University of Technology, Holanda, com apoio da Philips Innovation Services, University of Stuttgart, Swiss Federal Institute of Technology Zurich, University of Zaragoza e Technische Universität München.

Pra mim a estrutura do RoboEarth lembra a dos Borgs, mas sem a Borg Queen. Espero que seja um sucesso... e que os robôs não decidam nos assimilar no futuro!

Resistance is futile!
Até a próxima!

Fonte: http://www.roboearth.org/

quarta-feira, 17 de agosto de 2011

Equipe da UFV prepara-se para a Competição Brasileira de Robótica 2011

Estudantes e professores de Engenharia Elétrica e Mecânica da UFV preparam-se para representar a Universidade na Competição Brasileira de Robótica 2011 (CBR2011) que, este ano, engloba a Competição Brasileira de Robótica, o RoboCup Brazil Open e as finais da Olimpíada Brasileira de Robótica. O evento ocorrerá juntamente com o Simpósio Brasileiro de Automação Inteligente (SBAI), no campus da Universidade Federal de São João del Rei de 18 a 21 de setembro.

Dentre as diversas modalidades existentes na CBR, a Equipe BDP/UFV – Believe, Do n’ Play – participará da categoria Small Size (F180), na qual diversas universidades colocam suas equipes de robôs autônomos a se confrontar em partidas sem qualquer intervenção humana.

A Equipe BDP/UFV já participou de eventos nacionais e internacionais nos últimos anos, com estréia na F180 durante a última Competição Latino-Americana de Robótica (LARC2010), onde alcançou a sexta colocação geral. Para este ano, os integrantes esperam ansiosamente colocar em teste as pesquisas e trabalhos desenvolvidos até então nas áreas de inteligência computacional, robótica, controle e projeto de dispositivos.

Veja, abaixo, as equipes da UFV.



Fonte: https://phpsistemas.cpd.ufv.br/ccs_noticias/scripts/exibeNoticia.php?codNot=14971&link=portal

sábado, 13 de agosto de 2011

Arduino em Robótica

Arduino Uno
Arduino é uma plataforma para desenvolvimento de sistemas com microcontroladores. Foi desenvolvida com um propósito: ser fácil! Tanto na parte de hardware como na parte de software. Os italianos Massimo Banzi e David Cuartielles, que criaram o Arduino em 2005, fizeram um trabalho tão bom que o Arduino virou febre mundial! Faça o teste: busque pela palavra Arduino e veja a quantidade de projetos que usam esta plataforma.

Para quem quer começar a fazer projetos com robótica, Arduino é uma maravilha! As placas usam microcontroladores da família ATmega, da Atmel (como o ATmega168 e o ATmega328), que possuem diversos pinos que podem ser utilizados como entradas ou saídas digitais e pinos de entrada analógica (com conversor analógico/digital de 10 bits). Além disso, possui hardware para fazer comunicação serial (USART) e pode gerar sinal PWM de 8 bits (em seis pinos no Arduino Uno). A maioria das placas vem todo o circuito necessário para a gravação do microcontrolador através de conexão USB, por onde também pode receber a alimentação para todo o circuito.

Arduino com Shield de controle de motores
O hardware também conta com uma padronização de posicionamento dos conectores de acesso aos pinos. Esta característica permitiu o surgimento de uma série de circuitos auxiliares (shields) para aumentar a capacidade da placa básica. Por exemplo, existem shields para controle de motores, para aumentar a capacidade de sensores a serem lidos, para conexão do Arduino a uma rede, para comunicação via Bluetooth, para leitura de cartões SD etc. A lista é grande!

Arduino é uma plataforma aberta. Além do ambiente de programação, que pode ser baixado de graça, o hardware também é livre. Você tem acesso a todos os esquemáticos de todas as placas e pode fazer o seu próprio Arduino, sem precisar comprar a placa oficial! Esta característica motivou a criação de diversas placas similares ao Arduino. Algumas utilizam microcontroladores da família ATmega (mesma usada no Arduino), e podem ser programadas com a mesma IDE. Alguns exemplos são os projetos Freeduino, Seeduino, Severino e Brasuíno, cujas placas são mostradas a seguir nessa ordem:





Outros projetos similares ao Arduino, mas que utilizam microcontroladores diferentes, são o Pinguino (que usa PIC18F) e o Cortino (que usa um ARM Cortex M3). Estas, apesar de seguirem a mesma filosofia e pinagem do Arduino, não podem ser programadas sua IDE.



Dois exemplos de robôs comerciais que usam hardware baseado em Arduino são o DFRobotShop Rover - Arduino Compatible Tracked Robot e o DFRobotShop Rover 2.0 – Arduino Compatible Mecanum, mostrados nas figuras abaixo. Esses robôs já vêm com toda a estrutura mecânica, vários sensores, motores e, claro, placas baseadas no Arduino e compatíveis com ele!




A facilidade de uso do Arduino faz com que ele seja uma excelente plataforma para aqueles que desejam trabalhar com robótica, mas não tem tanto conhecimento eletrônica nem em programação. Também pode surpreender quem já trabalha com outros microcontroladores! Experimente!

Neste link você pode baixar os slides da palestra que apresentei no VII Encontro Técnico Estudantil da ISA-ES, realizado em 11 de agosto de 2011, no IFES. Os slides mostram alguns exemplos de aplicação do Arduino, inclusive com programas simples.



Mais informações sobre o Arduino, inclusive com diversos exemplos, tutoriais e área de download, podem ser encontrados no site oficial do projeto:

www.arduino.cc

Bom divertimento e até a próxima!

--

Voltei só para acrescentar este link, que mostra mais de 250 shields para Arduino!
http://shieldlist.org/

sexta-feira, 5 de agosto de 2011

Palestras de Robótica na UFES (Vitória, ES)

Prof. Ricardo Carelli proferindo sua palestra em 2010.
Três professores argentinos farão palestras com temas de robótica em Vitória, na Universidade Federal do Espírito Santo (UFES). Tais professores participam de um projeto de intercâmbio entre o Programa de Pós-Graduação em Engenharia Elétrica (PPGEE) da UFES e o Instituto de Automática (INAUT) da Universidad Nacional de San Juan (UNSJ).

O intercâmbio entre o PPGEE/UFES e o INAUT/UNSJ existe há mais de dez anos. Diversos alunos argentinos fizeram parte de seus trabalhos de mestrado ou doutorado na UFES, enquanto vários brasileiros já estiveram na Argentina fazendo parte de seus estudos de mestrado ou de doutorado na área de robótica. Eu fui um deles! Tive a grata oportunidade de passar alguns meses no INAUT nos anos de 2006 a 2008 sob a orientação do professor Carelli, e posso dizer que o trabalho deles na área de controle de robôs é excelente! Por isso, recomendo que não percam as palestras dos professores argentinos. 


O público-alvo é formado por alunos de graduação e de pós-graduação em Engenharias Elétrica, de Computação, de Controle e Automação e afins, além de interessados na área.

As palestras serão realizadas nos dias 8 e 9 de agosto, sempre na sala 7 do prédio da Engenharia Elétrica (CT-II) do campus de Goiabeiras da  UFES. A entrada é livre para todos os interessados.

Todas as palestras serão proferidas em espanhol. Seus títulos e horários são os seguintes:

1- Título:      Estrategia de Control Conmutado para la Interacción Robot-Humano sin Contacto
       Palestrante:    Prof. Dr. Ricardo Carelli
       Instituição:    Universidad Nacional de San Juan, San Juan, Argentina
       Data e horário:         08/08/2011, 14:00 horas

2- Título:   Métricas para Factores Humanos en Robotica
       Palestrante:    Prof. Dr. Vicente Mut
       Instituição:    Universidad Nacional de San Juan, San Juan, Argentina
       Data e horário:         08/08/2010, 15:00 horas

3- Título:      Procesamiento de Señales Electromiográficas Superficiales para el Control de Dispositivos Robóticos
       Palestrante:    Prof. Dr. Fernando di Sciascio
       Instituição:    Universidad Nacional de San Juan, San Juan, Argentina
       Data e horário:         09/08/2011, 16:00 horas

Prof. Vicente Mut em sua palestra em 2010.
Até a próxima!