Postagem em destaque

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte I

Este post é o primeiro de uma série de seis que escrevi tratando de controle de potência e PID (controle proporcional, integral e derivativo...

segunda-feira, 19 de janeiro de 2015

Arduino comunicando-se via rádio I

No último Automação no Parque o grande Euclas apareceu com dois radinhos de comunicação para que a gente testasse o seu uso com o Arduino.

O kit é o APC 220, que vem dessa forma aí do lado: duas unidades  mais um conversor USB serial que possibilita a conexão direta do radinho no PC.

O datasheet do bichinho vc acha aqui.

A primeira prática que fizemos foi tentar botar o bichinho para funcionar. Apanhamos um pouco, mas no fim funcionou. Não conseguimos usar o sw de configuração depe (vc pode baixá-lo daqui, bem como os drivers do conversor TTL).

Para os testes fiz dois "pograminhas": um que enviava comandos e outro que recebia do outro lado. O receptor fazia i LED do pino 13 piscar, de maneira que, ao ligá-lo numa bateria podia-se identificar se  o radinho estava recebendo os comandos, podendo-se assim afastá-lo e medir o alcance.

Abaixo os fontes dos programas:

// Este é o programa que roda no Arduino que fará o  
// papel de transmissor

void setup() 
{   
  Serial.begin(9600); 


void pisca(int c, int v) 
{
   for(int i=0;i<c;i++)
   {
     Serial.print('1');
     delay(v);
     Serial.print('1');
     delay(v);
   }
 } 

void loop()

// Pisca o LED 3 vezes com intervalo de 200ms, então dá um tempo de 1s.   
   pisca(3,200);
   delay(1000);
 }

// Este é o programa que roda no receptor.
char buf;
int porta_led = 13;

int estado_led = 0;

void setup()
{
  pinMode(porta_led, OUTPUT);
  Serial.begin(9600);
  Serial.println("Digite : ");
  Serial.println("1 - Para ligar/desligar o led do Arduino");
  Serial.println();
}
void loop()
{
  while(Serial.available() > 0)
  {
    buf = Serial.read();
    if (buf == '1')
    {
      estado_led = !estado_led;
      digitalWrite(porta_led, estado_led);
      mensagem_estado_led("led ", estado_led);
    }
  }
}
void mensagem_estado_led(String led, int estado)
{
  Serial.print("Led ");
  Serial.print(led);
  if (estado == 1)
  { 
    Serial.println(" ligado");
  }
  else
  {
    Serial.println(" desligado");
  }
}


Dá prá ver que a comunicação com o radinho é serial. Como eu usei a porta serial de hardware do Arduino (objeto Serial), para que estes programas funcionem é necessário que vc conecte os radios à porta serial dos pinos 0 e 1. Lembre-se que, fazendo isso, vc deve desconectar o pino TX toda vez que for atualizar o programa no Arduino. Se vc usar a biblioteca SoftwareSerial que agora vem com o programa do Arduino vc pode usar outras portas para se comunicar com os rádios, dispensando-se de ficar ligando e desligando o TX.

Abaixo fotos do circuito montado.



Testamos  o rádio até uma distância de uns 50 metros, sem visada direta, e o bichinho funcionou normalmente. Vamos testá-lo para o envio de textos, mas isso é assunto para outro post.