robotinics
25/05/2019

Temos problemas

Infelizmente a bateria de 4200mah esta ruim, passou o dia inteiro carregando e ainda esta com 4.5Volts.

Novidades

Controle de Bateria

Hoje implementei o controle de carga automática do módulo base.

A bateria é o módulo que inicia, desta forma se o robô estiver desconectado da fonte ele consegue dar partida.

O problema é quando a bateria esta baixa. Mas é assim que irá ficar!

Carga Automática

O Controle de Carga automática testa a tensão da bateria, abaixo de 9Volts, ele desliga automaticamente.

De 10V até 9.0V ele dá avisos sobre a bateria, também inclui um pino 6, que pode ser conectado um led, e irá piscar quando a bateria estiver baixa.

Quando a bateria acima de 10V o led ficará aceso.

Quando a bateria estiver abaixo de 9V, ficará apagado.

Proteção de carregamento

Inclui também um controle, para que toda vez que chavear para bateria, o carregador de bateria irá desligar. Desta forma, evito quebrar o carregador.

Carga automática de Bateria

Implementei, também o controle de carga automática caso a bateria esteja na alimentação externa, e a bateria estiver baixa. Desta forma, dou alguma inteligência ao circuito.


robotinics
23/Maio 2019

Ontem chegou o sensor de tensão e conector da bateria de lipo.

Com estes dois últimos equipamentos, agora eu consigo finalizar a montagem da base.

Devido a pouca memória, estarei retirando o modulo do GPS da Base, e incluindo no módulo do meio.

Infelizmente nem tudo dá para fazer com o arduino nano. Com esta modificação, o espaço do processador esta em 39%, o que garante um funcionamento coerente.

Criei um novo comando VBAT, e mudei o VOLTS para leitura da voltagem do sistema.

Ficando o VBAT, para leitura apenas da bateria. A diferença entre o VBAT e o VOLTS, é que o VBAT esta lendo a tensão antes do relê. Desta forma, quando o relê estiver chaveado para a alimentação externa, ainda sim, o VBAT lerá a bateria.

Estou em um dilema, pois quando a bateria estiver totalmente descarregada, o sistema não conseguirá inicializar. Pois o primeiro start é sempre com a bateria.

Talvez, inverta a entrada, deixando o padrão para Externa.

Agora, comecarei a implementar a verificação da necessidade de recarga.

Desta forma, quando o sistema verificar que a bateria esta descarregada, automáticamente chaveia a recarga da bateria. Deixando para alimentação externa.

A questão da Bateria, ainda tem uma ultima duvida. Preciso incluir um diodo para evitar medir a tensão da externa, quando ambas estiverem ativas no sensor da bateria.

Outra atividade que melhorei foi a impressão do suporte Laser.

Segue as fotos do projeto:

robotinics
MBase

Hoje foi um dia longo, escrevi praticamente do zero, o módulo MBase.

Hardware

Hardwares instalados na Base:

  • Ponte H
  • Sensor de Voltagem
  • Sensor de Corrente
  • Reles para chaveamento
  • Bluetooth
  • GPS
  • Sensor Humidade e Temperatura (DHT11)

Pinout da placa

O pinout é o posicionamento dos pinos, representando as ligações com o processador.

 //Motor 
define PINO_ENA 6
define PINO_IN1 8
define PINO_IN2 9
define PINO_IN3 10
define PINO_IN4 11
define PINO_ENB 7
int pinHumidade = A2; //ok
int pinVoltagem = A5;
int pinAmp = A4;
int pinReleVago= 4;
int pinReleChave = A0;
int pinReleCarregador= 5;
int pinLedGreen = 6; //Aviso de bateria
int pinBTTX = A7;
int pinBTRX = A6;
int pinVoltagemBat = A1;

Comandos

Os comandos disponíveis de ação, permitem realizar as leituras ou ações no dispositivo:

   Serial.println("MAN - Manual de comandos"); 
Serial.println("VOLTS - Leitura de voltagem do sistema");
Serial.println("VBATT - Leitura de voltagem da bateria");
Serial.println("AMPS - Leitura de corrente da bateria");
Serial.println("FRENTE - Avança o robô");
Serial.println("PARAR - Para o robo");
Serial.println("GIRADIR - Gira a direita");
Serial.println("BATERIA - Chaveia P Bateria");
Serial.println("EXTERNA - Chaveia P alim. externa");
Serial.println("LE_ALIMENTACAO - Verifica alimentacao ");
Serial.println("GIRAESQ - Gira a esquerda");
Serial.println("CARR_ON - Ativa o carregador");
Serial.println("CARR_OFF - Desativa o carregador");
Serial.println("VAGOON - Ativa o Rele Vago");
Serial.println("VAGOOFF - Desativa o Rele Vago");
Serial.println("DHT11 - HUMIDADE/TEMPERATURA");

Leituras continuas

O Arduino, permite um ciclo constante de Leituras para os devices. Algumas são constantes, outras sazonais.

//Realiza Leituras de dispositivos
void Leituras()
{
Serial_Read();
Bluetooth_Read();
Le_Volts();
Le_Amp();
Le_DHT11();
Le_GPS();
}


Pendências

Falta implementar os controles e monitoramento da bateria.

Seguindo a regra a seguir:

  1. Ao ligar o device, deve sempre indicar o padrão de bateria.
  2. Ao verificar que a alimentação externa esta ativa, deve chavear para alimentação externa
  3. Quando em alimentação externa, e com a bateria em nível inferior de 90% de carga, deve iniciar a recarga.
  4. Quando o robô estiver com carga inferior a 70% deve notificar através de mensagem na serial.
  5. Quando o robô estiver com carga inferior a 60% e estiver com alimentação externa, deve automaticamente chavear para este.

Download

Vídeos

Apresentação do módulo

Alimentação Externa

Blog
Netcat

netcat é uma ótima solução para quem precisa realizar testes de conexão no linux.

Para instalar:

apt-get install nc

Para conectar no servidor:

nc <ip> <porta>

Para conectar como servidor:

nc -l <porta> [hello client]

SSC
Correção no firmware no FelineSrv.ino

Corrigi a versão do firmware do FelineSrv.ino, com esta correção garanto que o envio e recebimento de dados do TCP <-> Serial, foi corretamente estabelecidos.

Utilizei o nc (netcat) do linux para testar.

Ainda resta alguns bugs no ssc.

Vamos ao trabalho!

robotinics
Funcionalidades de Controle de Servo

Foi implementado os comandos SERVOX e SERVOY, para posicionamento dos servo motores da cabeça.

Comandos como varre servo e outras funcionalidades não serão desenvolvidas nessa versão, ficando para a próxima.

A versão 2.0 do módulo MCabeca2 esta encerrada.

Agora, estarei iniciando o módulo MBase, que será responsável pelo controle dos devices da base de rodas.

Como sersor de alimentação, corrente, reles liga desliga, sersor de voltagem, entre outros módulos.

Estarei também corrigindo o livro, para incluir estes novos módulos.

Lista final dos comandos do módulo MCabeca2

  • MAN – Manual de comandos
  • ACENDEOLHOS – Acende a luz dos olhos
  • APAGAOLHOS – Apaga a luz dos olhos
  • OLHODIREITO – Acende a luz dos olho direito
  • OLHOESQUERDO – Acende a luz dos olho esquerdo
  • ACEL – Acelerometro
  • ULTRA – Ultrasom
  • GAS – Sensor Gas
  • VERSAO – Versao do Firmware
  • TESTE – Teste de Movimento
  • LASERON – Acende o Laser
  • LASEROFF – Apaga o Laser
  • LUZAZULON – Acende luz azul da cabeça
  • LUZAZULOFF – Apaga luz azul da cabeça
  • LUZVERDEON – Acende luz verde da cabeça
  • LUZVERDEOFF – Apaga luz verde da cabeça
  • LUZVERMELHAON – Acende luz vermelha da cabeça
  • LUZVERMELHAOFF – Apaga luz vermelha da cabeça
  • SERVOX:posicao; – Posiciona no angulo o servo X
  • SERVOY:posicao; – Posiciona no angulo o servo Y
  • DHT22 – SENSOR HUMIDADE E TEMPERATURA
robotinics
Melhoria no MCabeca2

Foi implementado em 8/4/2019, nova versão do MCabeca2, onde inclui as seguintes facilidades:

  • DHT22 – Sensor de Humidade e Temperatura
  • Correção do Sensor de proximidade
  • Implementação das funcionalidades do Led
  • Correção da leitura serial de comandos
  • Modificações do código
  • Comando de ação do Laser

Pendências

Inclusão de comando de posicionamento do servo-motor X e Y

maurinsoft.com.br