Apresentando a Versão Beta do Robô Humanoide Internauta1 no estágio 1.
Por: Joel S. Barros
Conheça o 1º Robô humanoide de corpo inteiro construído na região norte, mas especificamente em Manaus, no estado do Amazonas pelo projeto LDAuni. Um projeto social na a área educacional que atua no apoio aos estudantes de nível técnico e universitário no desenvolvimento de tecnologia.
Robótica colaborativa
O Internauta1 é um projeto social de robótica colaborativa, voltado ao mundo da eletrônica, automação, mecatrônica, robótica e programação, com o intuito de envolver estudantes universitários, técnicos de diversas áreas, engenheiros e hobistas de todo o país, na construção de um robô humanoide.
Aqui, está sendo apresentado apenas a construção de um protótipo do hardware em sua Versão Beta, no entanto, o convite para a participação no projeto logo estará sendo divulgado através das redes sociais em nível local e nacional, sendo que para participação nacional, o projeto estará aguardando uma quantidade mínima de 200 mil inscrições no canal para poder ser aberta a participação à todos os interessados, a fim de dar tempo de ser desenvolvido primeiramente a versão local.
A sequência do projeto
Só após o término da construção da primeira versão do Internauta1 por desenvolvedores locais, esta será aberta ao desenvolvimento colaborativo a internautas de todo o país para implantação dos mesmos mecanismos de automação, agora de diversas formas diferentes, com desenvolvimento contínuo, transformando o projeto em um laboratório dinâmico, que se manterá sempre atualizado. Vale ressaltar que esta primeira etapa de desenvolvimento local é muito importante, tendo em vista que o mesmo desenvolvedor de determinada aplicação robótica, já validada e publicada, será também o responsável para testar e validar as novas colaborações enviadas pelos internautas.
Como se encontra hoje a versão Beta no nível 1 de desenvolvimento
Com 16 níveis de automação de acionamento, 2 movimentos de cabeça com 1 Grau de liberdade na horizontal (esquerda e direita), visão por câmera monitorada pelo próprio protótipo, sistema sonoro, totalmente teleoperado via celular por terminal com comunicação bluetooth.
Controle e Contexto
Para este nível 1, o protótipo está sendo todo controlado por um microcontrolador arduino mega 2560, possui dois níveis de contexto, um na versão azul e outro na versão vermelha que servirão de base para uma aplicação futura no nível 2 na área de segurança. Para caracterizar as duas versões, o protótipo possui dois leds azuis e dois leds vermelhos sobre a viseira que são acionados de forma independentes de acordo com o contexto, bem como um led azul e outro vermelho na parte traseira da cabeça para iluminar o crânio e duas lâmpada 127 VCA, sendo uma azul e outra vermelha na caixa toráxica, que são acionadas por meio de um módulo relé de 16 posições/5VDC controlado pelo microcontrolador Arduino.
Movimento de Cabeça
Para se fazer o movimento da cabeça no sentido horizontal, tanto para a esquerda como para a direita, foi utilizado um motor de passo de 4 fios com alimentação de 12VDC, com um controlador L298N interfaceando o motor e o microcontrolador Arduino.
Visão por Câmera
Para esta visão, foi utilizado uma micro câmera convencional 12VDC colorida, com alimentação externa e um mini monitor que mostra a imagem capturada em tempo real, não havendo, no momento, nenhum processamento digital de imagem a fim de fazer reconhecimento facial ou qualquer outro tipo de acionamento, no entanto, tanto o acionamento da câmera quanto do monitor estão sendo feitos pelo microcontrolador através de comandos e acionados pelo modulo relé 16 posições.
Sistema Sonoro
A fim de preparar o protótipo para futuras implantações que levarão sonorização de voz ou temas sonoros, também foi implantado um sistema de som acionado por comando via Arduino por meio do módulo relé 16 posições.
Teleoperação
Para que seja possível o protótipo ser totalmente teleoperado por meio de celular, o sistema possui um módulo bluetooth responsável por conversar com o microcontrolador Arduino e que sincroniza o celular com o sistema para que sejam reconhecidos os dados enviados por um aplicativo genérico de terminal bluetooth.
Código completo desta versão beta do protótipo em modo experimental
(sem otimização de código)
//fios de conexão do motor de passo
int branco = 8;
int amarelo = 9;
int azul = 10;
int laranja = 11;
void setup() {
Serial1.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(48, OUTPUT);
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(51, OUTPUT);
pinMode(52, OUTPUT);
pinMode(53, OUTPUT);
// INICIALIZAÇÃO DO MÓDULO RELÉ (LÓGICA INVERSA - APAGADO)
digitalWrite(2, HIGH);
digitalWrite(48, HIGH);
digitalWrite(49, HIGH);
digitalWrite(52, HIGH);
digitalWrite(53, HIGH);
// PERCORRE OS PINOS DE CONEXÃO DO MOTOR DE PASSO
for (int x = 8; x < 12; x++) {
pinMode(x, OUTPUT);
}
}
int tempo = 30; // VELOCIDADE EM QUE O MOTOR GIRA
void loop() {
if (Serial1.available())
{
char numero = Serial1. read();
if (numero == 'a')//LIGA TV
{
digitalWrite(48, LOW);
}
if (numero == 'j')//DESLIGA TV
{
digitalWrite(48, HIGH);
}
if (numero == 's') //LIGA SOM
{
digitalWrite(52, LOW);
}
if (numero == 'k')//DESLIGA SOM
{
digitalWrite(52, HIGH);
}
if (numero == 'd')//LIGA CÂMERA
{
digitalWrite(53, LOW);
}
if (numero == 'l')//DESLIGA CÂMERA
{
digitalWrite(53, HIGH);
}
if (numero == 'q')//LIGA OLHOS AZUIS
{
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(50, HIGH);
digitalWrite(2, LOW);
}
if (numero == 'o')//DESLIGA OLHOS AZUIS
{
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(50, LOW);
digitalWrite(2, HIGH);
}
if (numero == 'w')//LIGA OLHOS VERMELHOS
{
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(51, HIGH);
digitalWrite(49, LOW);
}
if (numero == 'p')//DESLIGA OLHOS VERMELHOS
{
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(51, LOW);
digitalWrite(49, HIGH);
}
if (numero == 'v')//5 PASSOS PARA DIREITA
{
for (int i = 0; i <= 5; i++) {
Rotacao(0); }
delay(2000);
}
if (numero == 'c')//5 PASSOS PARA ESQUERDA
{
for (int j = 0; j <= 5; j++) {
Rotacao(1); }
delay(2000);
}
}
}
void Rotacao(int sentido){
if (sentido == 0){ // Sentido Anti-Horario (DIREITA)
// Passo 1
digitalWrite(branco, 1);
digitalWrite(amarelo, 0);
digitalWrite(azul, 0);
digitalWrite(laranja, 1);
delay(tempo);
// Passo 2
digitalWrite(branco, 0);
digitalWrite(amarelo, 1);
digitalWrite(azul, 0);
digitalWrite(laranja, 1);
delay(tempo);
// Passo 3
digitalWrite(branco, 0);
digitalWrite(amarelo, 1);
digitalWrite(azul, 1);
digitalWrite(laranja, 0);
delay(tempo);
// Passo 4
digitalWrite(branco, 1);
digitalWrite(amarelo, 0);
digitalWrite(azul, 1);
digitalWrite(laranja, 0);
delay(tempo);
}
if (sentido == 1){ // Sentido Horario (ESQUERDA)
// Passo 1
digitalWrite(laranja, 0);
digitalWrite(azul, 1);
digitalWrite(amarelo, 1);
digitalWrite(branco, 0);
delay(tempo);
// Passo 2
digitalWrite(laranja, 1);
digitalWrite(azul, 0);
digitalWrite(amarelo, 1);
digitalWrite(branco, 0);
delay(tempo);
// Passo 3
digitalWrite(laranja, 1);
digitalWrite(azul, 0);
digitalWrite(amarelo, 0);
digitalWrite(branco, 1);
delay(tempo);
// Passo 4
digitalWrite(laranja, 0);
digitalWrite(azul, 1);
digitalWrite(amarelo, 0);
digitalWrite(branco, 1);
delay(tempo);
}
}
Por: Joel S. Barros
Comments