APC220

De LHC - Laboratório Hacker de Campinas
Ir para: navegação, pesquisa
Módulo APC220

Sobre o módulo

O módulo APC220 é um modulo de RF de baixo consumo de energia e fácil configuração para utilização em projetos que necessitam de comunicação sem fio alternativa às tradicionais. Utiliza frequências nas faixa dos 418 Mhz a 455 Mhz para comunicações em distância superior às frequências de 2.4 Ghz e 5.8 Ghz.
Geralmente frequências mais baixas conseguem penetrar em ambientes com um maior número de obstruções porém estão mais suscetíveis a interferências.
A programação do módulo é feita por software através de um dispositivo USB que acompanha o módulo sendo possível selecionar Frequência, Taxa de Transferência RF, Potência de Transmissão e configurações da rede.
É possível a utilização em projetos que necessitam de controle remoto para Drones, Roovers, Robos, etc. Funciona conectado diretamente a um PC ou à dispositivos de IoT. Possuem uma antena removível que pode ser substituída por uma de maior ganho adequada à frequência utilizada.
Realizamos alguns testes de transmissão e de distância com alguns módulos. Os resultados podem ser encontrados abaixo junto com os códigos utilizados.

Especificações

  • Frequência de funcionamento: 418 MHz a 455 MHz
  • Voltagem: 3.5-5.5V
  • Consumo de corrente: <25-35mA
  • Temperatura de funcionamento: -20℃~+70℃
  • Alcance: 1200m em linha aberta (1200 bps)
  • Interface: UART/TTL
  • Taxa de transferência (Serial): 1200-19200 bps
  • Taxa de transferência (Ar): 1200-19200 bps
  • Potência máxima de transmissão> 20mW
  • Buffer de recebimento: 256 bytes
  • Tamanho: 37mm × 17 mm × 6.6mm
  • Peso: 30g

User Manual
Datasheet

Pinagem

Os pinos necessários para funcionamento são apenas VCC, GND, RXD e TXD. Os demais são utilizado apenas no modo de programação.
A alimentação pode ser desde 3.3V até 5.5V. Nós testes que realizamos conseguimos uma melhor performance alimentando o módulo com 5V.
Mesma com alimentação em 5V a voltagem do pino TXD se mantém em 3.3V o que torna possível a utilização do módulo com ESP8266

Pinagem APC220.jpg
Pino Definição Detalhes
1 SET Set parameters (low)
2 AUX UART Signal- Receive (low) Transmit (high)
3 TXD UART TX
4 RXD UART RX
5 EN
  • Disable the device when apply <0.5V
  • Enable the device when leave it disconnected or apply >1.6V
6 VCC 3.3V-5.5V Power
7 GND 0V Ground

Experimentos

Experimento 1

Realizamos um teste inicial utilizando para isso um Arduino Uno como transmissor e um ESP8266(ESP-01) como receptor ambos montados em protoboard. O teste foi realizado em ambiente urbano e com linha de visão entre ambos os módulos.

O teste funciona da seguinte maneira:
- O emissor escreve a cada 1 segundo uma string "LHC#" na serial do módulo emissor pré configurado em frequência e identificação de rede.
- O receptor aguarda o recebimento de dados na porta serial e trata esses dados todas as vezes que é recebido o caracter # equivalente a uma quebra de linha.
- Um led vermelho pisca no receptor enquanto não são recebidos os dados esperados, ou seja a string "LHC#", ou quando os dados recebidos são diferentes do esperado.
- Quando a string esperada é recebida o receptor para de piscar o led vermelho e ascende o led verde por 1 segundo e volta a piscar o led vermelho até receber novamente a string esperada.
- Desta forma é possível identificar mesmo sem um display todas as vezes que uma comunicação esperada foi recebida corretamente pelo módulo receptor.

No teste que realizamos posicionamos o módulo emissor em frente ao LHC e começamos a andar em linha reta. No início o led verde do receptor piscava com bastante frequência. Conforme nos afastamos cerca de 100 metros o led verde ainda piscava porem foi necessário realizar algumas paradas pois enquanto em movimento a recepção pareceu mais prejudicada.
Continuamos andando até uma distância de cerca de 200 metros aonde não foi mais possível verificar o led verde piscando indicando que os dados não estavam mais sendo recebidos.

Conclusão: é possível que a distância alcançada tenha sido limitada por alguns fatoes principais:
- 1: A taxa de transferência(baud rate) configurada foi de 9600 bps o que pode limitar o alcance.
- 2: As antenas utilizadas são as que acompanham o produto e de tamanho reduzido, tamanho esse que talvez não seja ideal para a frequência de trabalho.
- 3: O ambiente urbano pode causar mais interferências devido a outros aparelhos que operam na mesma frequência.

Experimento 2

Neste experimento iremos realizar a redução da taxa de transferência pelo ar para 1200bps e verificar se a distância de transmissão será maior.
Planejamos também conectar um display de LCD no receptor para acompanhar o recebimento dos dados em tempo real.

Códigos

Emissor: ArduinoMegaAPC220-TX.ino

// Base TX Arduino Mega
//Variavel que armazena os caracteres recebidos
char buf;
 
//Definicoes das portas dos leds
int porta_led_verm = 8;
int porta_led_amar = 9;
 
//Variaveis para controle do estado dos leds
int estado_verm = 0;
int estado_amar = 0;
 
void setup(){
  pinMode(porta_led_verm, OUTPUT);
  pinMode(porta_led_amar, OUTPUT);
  Serial.begin(9600);
  Serial1.begin(9600);
    Serial.println (" LHC TESTA " );
}
 
void loop(){
  //Aguarda os dados na serial
  while(Serial.available() > 0)  {
    buf = Serial.read();
    if (buf == 'LHC#'){
     digitalWrite(porta_led_amar, HIGH);
     digitalWrite(porta_led_verm, LOW);
     delay(1000);
    } 
  }
  digitalWrite(porta_led_verm, 1);
  delay(500);
  Mandar();
}
 
void Mandar(){
  Serial.print("LHC#"); 
  digitalWrite(porta_led_amar, 0);
  delay(500);
  digitalWrite(porta_led_amar, 1);
  digitalWrite(porta_led_amar, 0);
}

Receptor:

init.lua

function startup()
    print('Iniciando...')
    dofile('receptor_apc220_teste_campo.lua')
end
 
-- Espera 4 segundos para iniciar o programa sendo possivel o timer ser finalizado com tmr.stop(0) para reprogramacao do ESP
-- Muda o baud rate para 9600 bps para funcionar com a serial do APC220.
tmr.alarm(0,4000,0,uart.setup(0,9600,8,0,1) startup)

receptor_apc220_teste_campo.lua

-- Codigo para receber dados com ESP-01 via modulo APC220 para teste de campo
 
-- Certifica que o wifi esta desligado para economizar bateria
wifi.sta.disconnect()
 
-- Definicao dos pinos dos leds
led_vermelho = 4
led_verde = 3
--Definicao do estado dos leds
status_led_vermelho = gpio.LOW
status_led_verde = gpio.LOW
-- Inicializa LEDs apagados
gpio.mode(led_vermelho, gpio.OUTPUT)
gpio.write(led_vermelho, status_led_vermelho)
gpio.mode(led_verde, gpio.OUTPUT)
gpio.write(led_verde, status_led_verde)
 
function desliga_led_vermelho()
    gpio.write(led_vermelho, gpio.LOW)
end
 
function pisca_led_vermelho()
    gpio.write(led_vermelho, status_led_vermelho)
    if status_led_vermelho == gpio.LOW then
        status_led_vermelho = gpio.HIGH
    else
        status_led_vermelho = gpio.LOW
    end
end
 
tmr.alarm(0, 200, 1, pisca_led_vermelho)
 
-- Limpa variavel data antes de ler a serial
data = ""
uart.on("data", "#",
    function(data)
        print ("Recebido do APC220:", data)
        if (data=="LHC#") then
            tmr.stop(0)
            desliga_led_vermelho()
            status_led_verde = gpio.HIGH
            gpio.write(led_verde, status_led_verde)
            tmr.delay(1000000)
            status_led_verde = gpio.LOW
            gpio.write(led_verde, status_led_verde)
            tmr.alarm(0, 200, 1, pisca_led_vermelho)
        end
end, 0)

Experimentos futuros

- Utilizar antenas indicadas para a frequência de trabalho (faixa dos 433 Mhz). Alguns modelos indicados são por exemplo um fio rígido de 17,3cm, antena do tipo dipolo e antenas do tipo Yagi para transmissões direcionais do sinal.
- Realizar o teste em campo aberto (preferencialmente em área rural) menos suscetíveis a interferências.
- Teste de distância utilizando antenas direcionais do tipo Yagi em área urbana e rual.

Referências

Página com especificações do módulo no site DFROBOT
Exemplo de antena diplo para 433 Mhz utilizada com APC220
Exemplo de antena Yagi para 433 Mhz
Manual de construção de uma antena Yagi para tracking em 433 Mhz
Vídeo sobre diferentes tipos de antenas UHF
GitHub do LHC com os códigos utilizados para teste do APC220
Teste simples de piscagem de LEDs utilizando APC220 e Arduino