Tutorial: Comunicação RF com Arduino e módulo APC220 128

Controle o Arduino à partir do seu computador com esse prático Módulo Rádio Wireless APC220, um kit composto por 2 módulos, 2 antenas  e um adaptador USB-TTL.

Módulo RF Arduino APC220

Esse kit forma uma solução completa para quem precisa controlar o Arduino à grandes distâncias  já que, segundo informação do fabricante, o alcance do sinal é de aproximadamente 1.000 metros (em área aberta). Por formar uma comunicação ponto-a-ponto, não depende de infraestrutura de rede, cabeamento ou outros equipamentos para funcionar.

A frequência de operação pode ser ajustada via software (418 à 455 Mhz), e a taxa de transferência pode chegar a 19200 bps.

Requisitos de hardware e software

Iremos utilizar um computador com porta USB para programação dos módulos, além de um Arduino Uno para testar a comunicação. Na montagem do circuito, usaremos 3 leds (de preferência de cores variadas) e resistores para limitação de corrente nos leds.

Para programação dos módulos APC220, será necessário baixar o software RF-Magic nesse link. O arquivo compactado contém apenas um executável chamado APC22X_V12A.EXE. O programa não possui instalador, rodando direto desse executável.

Antes de conectar o adaptador USB ao computador faça o download dos drivers, que você encontra nesse endereço. Estão disponíveis drivers para as versões mais comuns do Windows, como Windows XP, 7, 8, Server 2003, 2000 e Windows Vista, além de drivers para Macintosh e Linux.

Após a instalação dos drivers, conecte o adaptador ao computador e o dispostivo será reconhecido automaticamente. Para verificar se o adaptador foi instalado de forma correta, verifique no painel de controle se existe um dispositivo chamado Silicon Labs CP210x USB to UART Bridge, como na figura abaixo:

Painel de controle - USB UART

 

Configuração do módulo APC220

O RF-Magic é o software utilizado para definir as configurações do módulo, como frequência (418 à 455 Mhz), o NET ID (um número para identificar a rede, entre 0 e 65535) e configurações da serial, como velocidade e paridade. Dependendo do seu sistema operacional, o RF-Magic deve ser executado com direitos de administrador.

Ao abrir o RF-Magic, será exibida uma tela como essa abaixo, informando os parâmetros iniciais do programa e na parte inferior a porta COM na qual o módulo foi detectado, assim como o seu modelo:

  RF-Magic

As configurações padrão do programa podem ser utilizadas normalmente, mas se precisar alterar alguma coisa, não esqueça de configurar os dois módulos da mesma maneira, para evitar problemas na comunicação.

Conexão do módulo APC220 ao Arduino

Dos sete pinos do módulo, vamos utilizar somente quatro para comunicação com o Arduino, que são os pinos de alimentação (3,5 à 5,5V), e também os pinos RXD e TXD, que serão ligados aos pinos TX (pino digital 1) e RX (pino digital 0) do Arduino Uno.

No circuito, teremos 3 leds ligados às portas 5, 6 e 7 do Arduino. O circuito irá receber os dados via porta serial e enviará, também via porta serial, os dados para o módulo APC220 ligado ao computador.

 

Circuito APC220 e Arduino Uno

IMPORTANTE : Mantenha o pino 0 (RX) do Arduino desconectado antes de transferir o programa, caso contrário a IDE irá apresentar um erro informando que houve um problema no carregamento, pois a serial estará ocupada pelo módulo APC220.

Programando o Arduino

O que o programa faz é monitorar a serial (no caso, o módulo APC ligado aos pinos 0 (RX) e 1 (TX)), e tomar uma ação caso seja recebido algum caracter. Envie 1 para ligar ou desligar o led vermelho, 2 para ligar ou desligar o led amarelo e 3 para ligar ou desligar o led verde. A cada um desses acionamentos, o Arduino enviará de volta para o computador uma mensagem, informando o estado do led que foi alterado.

//Programa : Comunicacao utilizando modulo wireless APC220
//Autor : MakerHero

//Variavel que armazena os caracteres recebidos
char buf;

//Definicoes das portas dos leds
int porta_led_verm = 5;
int porta_led_amar = 6;
int porta_led_verd = 7;

//Variaveis para controle do estado dos leds
int estado_verm = 0;
int estado_amar = 0;
int estado_verd = 0;

void setup()
{
  //Define portas dos leds como saida
  pinMode(porta_led_verm, OUTPUT);
  pinMode(porta_led_amar, OUTPUT);
  pinMode(porta_led_verd, OUTPUT);
  //Inicializa a serial
  Serial.begin(9600);
  //Informacoes iniciais 
  Serial.println("Digite : ");
  Serial.println("1 - Para ligar/desligar o led vermelho");
  Serial.println("2 - Para ligar/desligar o led amarelo");
  Serial.println("3 - Para ligar/desligar o led verde");
  Serial.println();
}

void loop()
{
  //Aguarda os dados na serial
  while(Serial.available() > 0)
  {
    buf = Serial.read();
    
    //Caso seja recebido o numero 1, altera o estado do led vermelho
    if (buf == '1')
    {
      estado_verm = !estado_verm;
      digitalWrite(porta_led_verm, estado_verm);
      mensagem_estado_led("vermelho", estado_verm);
    }
    
    //Caso seja recebido o numero 2, altera o estado do led amarelo
    if (buf == '2')
    {
      estado_amar = !estado_amar;
      digitalWrite(porta_led_amar, estado_amar);
      mensagem_estado_led("amarelo", estado_amar);
    }
    
    //Caso seja recebido o numero 3, altera o estado do led verde    
    if (buf == '3')
    {
      estado_verd = !estado_verd;
      digitalWrite(porta_led_verd, estado_verd);
      mensagem_estado_led("verde", estado_verd);
    }   
  }
}

//Rotina de envio da mensagem de retorno sobre o estado do 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");
  }
}

Testando a comunicação

Antes de mais nada, agora que o Arduino já está pronto para receber os dados via serial, desconecte-o do computador, conecte o fio do pino 0 (RX) ao Arduino, e utilize uma fonte externa para alimentação da placa. Fazendo isso, está tudo preparado para o teste de comunicação.

Você pode utilizar o próprio Serial Monitor da IDE para enviar dados para o Arduino, ou então utilizar um software de terminal como o Termite.

Se for utilizar o Serial Monitor, não esqueça de selecionar, no menu Ferramentas = > Porta Serial, a porta utilizada pelo adaptador USB (no nosso caso, estamos utilizando a porta 8, conforme mostramos no início no painel de controle do Windows).

Dentro do Serial Monitor, utilize a barra na parte superior para enviar os comandos 1, 2 ou 3, acionar as portas do Arduino e receber de volta a informação sobre o estado dos leds:

Serial monitor - Comunicação APC220

 Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

128 Comentários

  1. Caro Adilson. Explorar esta possibilidade de fato é importante, já que muitos casos onde sistemas supervisórios podem ser implantados. Vou me atrever a te instigar com base no projeto do link a seguir onde o mesmo hardware é usado numa rede mesh. Campus industriais e fazendas agradecem.

    https://www.instructables.com/id/Simple-Arduino-Wireless-Mesh/

  2. O receptor e o transmissor são os mesmos? No caso independe da ordem onde vai ficar o PC ou o raspberry, e o arduino recebendo. Outra questão é se o Raspberry é compatível

    1. Olá, Roberto,

      Isso aí, não importa a ordem, pois eles são transceivers. Para fazer funcionar na Raspberry, você teria que fazer a programação toda diferente do código, tendo em vista que teria de ser em Python provavelmente.

      Abraços!
      Diogo – Equipe MakerHero

  3. Boa tarde, este kit funciona também para controlar portão elétrico ? por exemplo enviar o comando do PC para o receiver, e outra dúvida, é se o receptor tem como escanear bits de determinada frequência, para identificar a frequência e os bits dos dispositivos que já possuem a função de recepção de sinal, e também eu desenvolver um modulo de proteção, para caso alguém esteja tentando usar algo na frequência tentando acionar algum dispositivo

    1. Roberto,

      Sugiro levar toda essa ideia lá pro fórum, onde é possível auxiliar melhor esse tipo de dúvida.

      Abraços!
      Diogo – Equipe MakerHero

  4. Isso mesmo, as vezes é necessário expor muito com vocábulo simples de entender, como vi cá nesse texto.
    Vou ler outro cláusula desse blogue.

  5. Seu blogue é organizado e o artigo muito muito trabalhado.
    Você escreve de forma clara e também até me ajudou à prosperar minha escrita.

  6. Muito bom, estou tentando fazer mas está dando um erro com o apc220, minha entrada usb não está reconhecendo o adaptar e não estou conseguindo confirgurar na mesma frequencia, alguma ajuda?

    1. Olá Fernando,

      Você fez o download dos drivers?

      Abraço!
      Rosana – Equipe MakerHero

  7. se puede enviar el skecth desde la portatil al arduino con este modulo…para no tener que estar conectando el cable usb……gracias saludos…

  8. Adilson, voce por acaso conhece algum projeto para captar sinais de radiofrequencia, nas faixas de radioamador? Sou radioamador e gostaria de fazer experiencias com isso!

    73,

  9. consigo enviar comandos do PC para outros dispositivos RF, tipo um portão eletrônico?

  10. estou tendo um problema com o rf magic. parece que ele não reconhece o modulo apc220 quando conecto ele na porta usb do notebook, não consigo estabelecer a comunicação entre arduino e pc de forma alguma. alguém sabe como resolver esse problema? acredito que seja o rf magic, mas não sei como concertar isso.

  11. Prossiga à grafar escrito pois você tem bastante talento e também imagino que pode compreender
    muito sucesso ao vestir a vocábulo certa como fez cá.

  12. ola boa noite,
    foi testado a distancia que ele pode transmitir estes dados?
    pelas informações, ele tem alcance aproximado de 1000 m,
    isso se confirma realmente ?

  13. Consigo pela Flip Flop o Apc340 SX1276 que trabalhe da 868Mhz ??? outra pergunta eu consigo usar casa decimal para definir a frequencia?? por ex. 433,50mhz 420,55mhz ???

  14. olá, gostaria de saber quais placas são parecidas com apc220

  15. Legal o post, para enviar um arquivo ou montar uma rede com varios arduinos tipo computador ou manter um laço é possivel? exemplo usar dois arduinos , dois trasmissores e dois receptores e montar um ponto a ponto a 9600 kbps entre o computador e a internet via em um dos arduinos shield ethernet?

  16. como eu faço para mandar comandos usando outro arduino?Tenho um modulo analogico keyes de 5 botoes que usa apenas um pino analogico, o arduino interpreta a voltagem de cada botao e assim identifica qual foi pressionado…no serial.read eu consigo ver o valor de cada botao, como faco para enviar esse valor para o outro arduino?

  17. Posso usar esse módulo para me comunicar com Arduino com Python através da biblioteca serial do Python?

    1. Oi Luís,

      Pode sim. A comunicação com o Arduino é feita pela serial, então é um processo relativamente simples e que você pode programar tranquilamente usando Python.

      Abraço

      Adilson – Equipe MakerHero

  18. Em relação a montar o projeto no Fritzing, onde fica o módulo APC220? Não estou conseguindo localizá-lo. Agradeço a quem me explicar como encontrá-lo.

    1. Olá Marcos.
      “Bem vindo” a porcaria do Fritzing. Ele realmente cria essa ilusão de que seja uma ferramenta “séria” para se trabalhar com eletrônica.
      Eu sou autodidata em eletrônica, provavelmente o menos estudado, da equipe que desenvolveu o Fritizing, tenha milhares de “horas” de escola além. Mas tem uma coisa que aprendi, com lápis e papel e muito tempo desenhando é que não se faz desenho técnico de eletrônica partindo-se de módulos prontos e sim de componentes, suas conexões e um estudo muito bem feito de como tudo se conecta. O mundo não é uma protoboard e faltam coisas no Fritzing.
      Assim, quem começa com essa ferramenta, a acha “bonitinha” e “legalzinha” para montar “circuitinhos”, mas acabam se iludindo que nesta ciência tudo é “facinho” e “moleza” de ser feito.
      Aconselho vc. a usar uma ferramenta real para criação de circuitos eletrônicos e que te permita ter acesso a centenas de bibliotecas (e não componentes) para poder fazer seus circuitos. Senão será só perda de tempo.
      Boa sorte.

    2. Só preciso saber em qual aba de componentes fica o APC220 no Fritzing.

      1. Bom dia Marcos,

        Disponibilizei o arquivo do Fritzing neste link: http://www.makerhero.com/img/files/download/APC220%20with%20antenna.fzpz

        Abraço!

        Adilson – Equipe MakerHero

        1. Obrigado Adilson!

          Vai me ajudar muito.

  19. Boa tarde Adilson, esse módulo, usa comunicação serial igual o XBEE???
    No caso 1 modulo fica no arduino e o outro fica no PC enviando e recebendo informações via serial?
    att

    1. Boa tarde Pedro,

      Isso mesmo. Você também pode colocar os 2 módulos no Arduino, se preferir.

      Abraço!

      Adilson – Equipe MakerHero

  20. fiz a progamaçao mas quando tiro o arduino do pc e ligo na fornte eu nao recebo nada do arduino e tento mandar algo mas nada parece que nao esta conectado

  21. Bom dia galera, estou tentando usar o apc220 para fazer a telemetria do projeto paraybaja, a transmissão funciona corretamente usando o serial monitor da versão 1.0.6 da IDE arduino, porém foi desenvolvido uma interface gráfica usando processing que funciona corretamente quando conectado via usb, mas não funciona quando uso o APC220, alguém poderia me ajudar?

  22. Esse módulo tem alguma restrição contra obstáculos?

    1. Boa tarde Bianca,

      Paredes, por exemplo ? Sim, ele trabalha com ondas de rádio, logo tem as mesmas restrições de outros módulos wireless.

      Abraço

      Adilson – Equipe MakerHero

  23. Boa Noite,
    Faz um ano que comprei esses modulos, na epoca tentei fazer como o tutorial, e nao deu certo, deixei pois tinha outros projetos.
    Agora voltei a tentar e nada, nao consigo fazer funcionar, nao dá sinal nenhum.
    Como fazo para saber se esta havendo comunicaçao entre os dois, sem usar esse turorial, sei lá colocar um led no receptor algo q me diga q esta havendo comunicação.
    Obrigado desde, já.

    1. Bom dia Carlos,

      Creio que a forma mais simples de testar é utilizando o tutorial mesmo, já que antes de mais nada você precisa garantir que os dois módulos estejam com a mesma configuração, senão a comunicação não funciona.

      Abraço.

      Adilson – Equipe MakerHero

      1. Boa tarde, Adilson
        Ja tentei tudo, mas só nao tentei trocar o arduino, é o que vou fazer a noite.
        Adilson, tenho um sistema de rf 433, onde coloquei um led no rx/tx no modulo transmissor e receptor, qdo ha transmissão os leds piscam.
        Será q posso fazer o mesmo nesse sistema.
        Obrigado.

        1. Boa tarde Carlos,

          A idéia é boa, acho que você consegue fazer a mesma coisa sim.

          Abraço

          Adilson – Equipe MakerHero

  24. Amigos
    Necessito interligar um modelo apc220 em uma rede rs485. Alguém sabe como? Quero utilizar o CI max 485.

  25. Ola estou tentando utilizar este tutorial para testar meu apc 220 com um Arduíno due porem não esta dando certo poderia me indicar como devo modificar o programa e as ligações para que funcione?

    1. Boa tarde Paulo,

      Você está utilizando algum divisor de tensão para ligar o APC220 ao Arduino Due ? Esse modelo de placa Arduino trabalha com nível de sinal de 3.3V, e o módulo trabalha com 5V.

      Abraço.

      Adilson – Equipe MakerHero

      1. Não como fala que a alimentação poderia ser de 3,5 a 5v liguei o vcc no 3,3 e os outros direto nas portas

  26. Olá,
    fiz tudo conforme as instruções dadas, mas depois de desconectar o arduino do usb e conectar na fonte externa, quando vou abrir o serial monitor da IDE, aparece a seguinte mensagem de erro:

    Arduino: 1.6.4 (Windows 7), Placa:”Arduino Uno”

    O sketch usa 5.474 bytes (16%) de espaço de armazenamento para programas. O máximo são 32.256 bytes.

    Variáveis globais usam 497 bytes (24%) de memória dinâmica, deixando 1.551 bytes para variáveis locais. O máximo são 2.048 bytes.

    Erro ao abrir porta serial “COM3”. (Port busy)

    Este relatório deveria ter mais informações
    “Mostrar saída verbosa durante a compilação”
    habilitado em Arquivo > Preferências.

    O que devo fazer?

    Att.,

    Danilo

    1. Bom dia Danilo,

      Realmente você não conseguirá ver nada na IDE, já que agora o Arduino está sendo alimentado pela fonte, sem comunicação com o computador. A proposta é exatamente deixar o Arduino “isolado” para testar a comunicação.

      Abraço.

      Adilson – Equipe MakerHero

      1. Obrigado. Consegui a comunicação através do software Termite.
        Estou trabalhando em um projeto para monitorar e controlar a temperatura de um transformador usando o sensor DS18B20. Antes de iniciar a comunicação, fiz alguns testes no sensor pelo site: http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-sensor-de-temperatura-ds18b20-prova-de e consegui aferir a temperatura. Porém, agora ao utilizar o mesmo programa, não consigo retornar o valor da temperatura, ele diz que não reconhece. Alguém pode me ajudar?

        Att.,

        Danilo

        1. Olá Filipe,
          estou com uma dúvida; consigo fazer 1 receptor no computador e +ou- 10 emissores ligados em arduinos??

    2. Esse erro do COM3 deve-se simplesmente ao facto de a porta estar a ser usada em outro software, provavelmente no software de configuração RF Magic, se fechar esse programa e voltar a experimentar tem de dar certo.

  27. boa noite, consigo fazer 1 receptor no computador e +ou- 15 emissores ligados em arduinos??

  28. Olá,

    Pessoal preciso de uma ajuda estou fazendo um projeto de automatizar uma sala para isso estou utilizando o arduino e um sistema supervisório Elipse E3 (http://kb.elipse.com.br/en-us/questions/4816/Comunica%C3%A7%C3%A3o+com+Arduino.) , estou fazendo a comunicação entre eles com esse módulo apc 220, porém encontrei dois problemas, o primeiro é que quando conecto em uma fonte externa ele não comunica mais, o segundo é que quando insiro variáveis analógicas ele começa a falhar como ele conecta e desconecta … nesse último caso estou usando uma alimentação de outro computador para não dar erros de estar utilizando o mesmo canal de comunicação. Alguém pode me ajudar???

    Obrigada

    1. Jéssica, verifique se você esta interconectando os terras (GND) entre o arduino e o APC220..
      Explique melhor o que quer dizer com inserir variáveis analógicas. Onde são inseridas estas variáveis e que tipo, tensão correntes, etc.?
      Que tipo de comunicação esta usando com o Elipse (serial, RS485, TCP…)?
      Tente suprimir os APC220 conectanto a saída da maquina com o Elipse direto a entrada do arduino.

      1. Então ele não estava ligando com a fonte externa devido a baixa corrente da fonte externa, consegui uma maior e ligou normalmente, porém o segundo problema ainda continua ocorrendo, eu estou utilizando 3 dht11 para medir a temperatura e tiro a média, também vou usar o valor da umidade, e vou adicionar ao programa um 5 sensores de corrente, porém quando eu coloco essas variáveis analógicas ele falha liga e desliga a comunicação, estou usando via serial com o módulo apc220, talvez seja algum erro na programação vou coloca-la aqui, se puder dar uma olhadinha….

        #include “DHT.h” //inclui biblioteca DHT11

        #define DHTPIN1 A1// pino que está conectado
        #define DHTTYPE DHT11 // DHT 11
        #define DHTPIN2 A2
        #define DHTPIN3 A3

        DHT dht1(DHTPIN1, DHTTYPE);
        DHT dht2(DHTPIN2, DHTTYPE);
        DHT dht3(DHTPIN3, DHTTYPE);

        int ar1 = 8; //saída para os equipamentos de ar-condicionado
        int ar2 = 9;

        const int AUTO = 10; //botão que colocará os equipamentos de ar-condicionado em modo automático, ou seja, ligará e desligará dentro da faixa estabelecida
        const int MANUAL1 = 11; //botão manual do primeiro ar-condicionado
        const int MANUAL2 = 12; //botão manual do segundo ar-condicionado
        int botaoauto = 0;
        int botaomanual1 = 0;
        int botaomanual2 = 0;
        int cont=0;

        int leitura1 = 0;
        int leitura2 = 0;

        #include

        #include //biblioteca modbus
        // Create new mbs instance
        ModbusSlave232 mbs;

        // registros de escravos
        enum {
        MB_0, // Registro 0
        MB_1, // Registro 1
        MB_2, // Registro 2
        MB_3,
        MB_4,
        MB_5,
        MB_6,
        MB_7,
        MB_8,
        MB_9,
        MB_10,
        MB_11,
        MB_12,

        MB_REGS // Registro Dummy. Usando 0 compensar para manter o tamanho de matriz
        };

        int regs[MB_REGS];
        const int lamp1 = 2;
        const int lamp2 = 3;
        const int lamp3 = 4;
        const int lampQuadro = 5;
        const int Vent1 = 6;
        const int Vent2 = 7;

        void setup(){

        // Parâmetros de configuração do escravo Modbus
        // EscravoId
        const unsigned char SLAVE = 1;
        // taxa de transmissão
        const long BAUD = 9600;
        const unsigned PARITY = ‘n’;

        // Configurar MSB com as configuraçõeso
        mbs.configure(SLAVE, BAUD, PARITY );

        pinMode(lamp1, OUTPUT);
        pinMode(lamp2, OUTPUT);
        pinMode(lamp3, OUTPUT);
        pinMode(lampQuadro, OUTPUT);
        pinMode(Vent1, OUTPUT);
        pinMode(Vent2, OUTPUT);
        pinMode(ar1, OUTPUT);
        pinMode(ar2, OUTPUT);
        pinMode(AUTO, INPUT);
        pinMode(MANUAL1, INPUT);
        pinMode(MANUAL2, INPUT);

        dht1.begin();
        dht2.begin();
        dht3.begin();

        Serial.begin(9600);
        }

        void loop()
        {
        // Passar valores de registro atuais para MBS
        mbs.update(regs, MB_REGS);

        //Liga o primeiro circuito de lâmpadas
        if(regs[MB_1]==1){
        digitalWrite(lamp1, HIGH);
        }
        else{
        digitalWrite(lamp1, LOW);
        }

        //Liga o segundo circuito de lâmpadas
        if(regs[MB_2]==1){
        digitalWrite(lamp2, HIGH);
        }
        else{
        digitalWrite(lamp2, LOW);
        }

        //Liga o terceiro circuito de lâmpadas
        if(regs[MB_3]==1){
        digitalWrite(lamp3, HIGH);
        }
        else{
        digitalWrite(lamp3, LOW);
        }

        //Liga o circuito de lâmpadas no quadro
        if(regs[MB_4]==1){
        digitalWrite(lampQuadro, HIGH);
        }
        else{
        digitalWrite(lampQuadro, LOW);
        }

        //Liga o primeiro circuito de ventiladores
        if(regs[MB_5]==1){
        digitalWrite(Vent1, HIGH);
        }
        else{
        digitalWrite(Vent1, LOW);
        }

        //Liga o segundo circuito de ventiladores
        if(regs[MB_6]==1){
        digitalWrite(Vent2, HIGH);
        }
        else{
        digitalWrite(Vent2, LOW);
        }

        //variavéis para ler temperatura e umidade de cada sensor
        float h1 = dht1.readHumidity();
        float t1 = dht1.readTemperature();

        float h2 = dht2.readHumidity();
        float t2 = dht2.readTemperature();

        float h3 = dht3.readHumidity();
        float t3 = dht3.readTemperature();

        float media = (t1 + t2 + t3) / 3; //media das temperaturas

        botaoauto = digitalRead(AUTO);
        botaomanual1 = digitalRead(MANUAL1);
        botaomanual2 = digitalRead(MANUAL2);

        regs[MB_7] = media; //registradores
        regs[MB_9] = botaoauto;
        regs[MB_10] = botaomanual1;
        regs[MB_11] = botaomanual2;

        if (isnan(t1) || isnan(h1) || isnan(t2) || isnan(h2 || isnan(t3) || isnan(h3))) // testa se retorno é valido, caso contrário algo está errado.
        {
        Serial.println(“Failed to read from DHT”);
        }
        else
        {
        Serial.print(“Temp1:”);
        Serial.print(t1);
        Serial.print(” Temp2:”);
        Serial.print(t2);
        Serial.print(” Temp3:”);
        Serial.print(t3);
        Serial.println(” media:”);
        Serial.println(media );
        Serial.println(” *C”);

        }

        if(botaoauto == HIGH){ //se o botão automático estiver ligado
        if (cont==1){
        cont=0;
        digitalWrite(ar1, LOW);
        }

        if (media>=24) //ele vai ler a média das temperaturas se for maior ou igual a 24 liga o ar 1
        digitalWrite(ar1,HIGH);

        if(media>=26) // se maior ou igual a 26 liga o ar 2
        digitalWrite(ar2,HIGH);

        if(media<=22) // menor ou igual a 22 desliga o ar1
        digitalWrite(ar1, LOW);

        if(media<=20)
        digitalWrite(ar2, LOW); //menor ou igual a 20 desliga o ar2

        }
        else { //se o botão automático estiver delsigado
        if(botaomanual1 == HIGH){ //ele vai ler os dois botões manuais e ligar os respectivos equipamentos de ar-condicionado
        digitalWrite(ar1, HIGH);
        }
        else{
        digitalWrite(ar1, LOW);
        }

        if(botaomanual2 == HIGH){
        digitalWrite(ar2, HIGH);
        }
        else{
        digitalWrite(ar2, LOW);
        }

        }
        }

        1. Analisando rapidamente parece estar tudo OK. Sugiro que VC
          1-isole a aquisição de dados dos DHT e veja o comportamento sem eles;
          2-Conecte as portas seriais diretamente sem usar os APCs;
          3-Verifique se as taxas de transmissão do APC esta correta, tanto a elétrica quanto a do ar;
          4-Tente temporizar a aquisição dos dados (inclua um delay entre as medidas);
          5-Teste com uma taxa de transmissão mais alta ou mais baixa no MODBUS;

          Considere que os APC não são dispositivos duplex, eles trabalham no modo semi-duplex e há que se considerar as taxas. Veja abaixo a nota do fabricante.

          The control of data flux
          Although there is a buffer zone with 256 bytes in the wireless module, when the
          UART rate is higher than the air rate, there must be a problem about the data flux. It
          may cause to lose some data because the data overflow from the buffer. Under this
          condition, it must be ensured that the average UART rate is lower than 60 percent of the
          air rate . For instance, the UART rate is 9600bps, the air rate is 4800bps.If UART rate is
          the same as the air rate, the only way is to interval the transmitting time. If terminal
          transmits 100bytes to UART every time, it will take104ms every time.
          (104ms/0.6)*(9600/9600)=174ms. So when the interval time that terminal transmit
          100bytes to the UART is higher than 174ms every time, those mentioned problems will
          be avoided.

  29. Ola pessoal gostaria de saber se e possível conectar um arduino uno em um joystick e enviar essa informação para outro arduino que vai fazer com que mova o motores conectados no segundo arduino

    1. Boa noite Edivan,

      Sim, você pode realizar essa comunicação com ou sem fio, utilizando por exemplo um módulo bluetooth.

      Abraço.

      Adilson – Equipe MakerHero

  30. Tem como fazer comunicação MODBUS com esse apc220?

    1. William, O MODBUS é um PROTOCOLO, isto é, são códigos usados para fazer a comunicação entre vários dispositivos e que fornecem segurança e confiabilidade na transmissão dos dados. O modulo APC220, transmite os dados na forma serial, não importando que tipo de código esta sendo enviado, desde que compatíveis eletricamente (serial TTL). O dados codificados em MODBUS podem ser enviados por praticamente qualquer meio de comunicação e pode ser ajustado para transmitir RS232, TCP, RS485, (Ethernet/Internet), USB e vários outros.
      Sugiro uma pesquisa na Internet. Existe um site oficial (em inglês) que informa todas estas características.
      Pela sua pergunta, talvez tenhas que usar transmissão serial pela porta USB, usando um adaptador USB/serial RS485 em cada um dispositivos do sistema MODBUS.

  31. É possível enviar os dados de um sensor ,através desse modulo, para um computador/ servidor e exibi-los numa pagina web ?

  32. Bem, minha duvida é o seguinte, é possivel utilizar esse modulo para fazer uma triangulação e comunicar com um smartphone?

  33. Sou pesquisador de campo e gostaria de criar um sistema de monitoramento de nível do rio wirelss.
    Hoje, temos que instalar o sensor na água, cavar 50-100m (dependendo da margem) para ligar o sensor na plataforma de coleta de dados (PCD) – por isso a demanda por um sistema sem fio (redução de horas trabalhadas no mesmo local e aumento de produtividade com a possibilidade de instalar mais estações de monitoramento)
    Como o sensor utiliza amperagem para enviar o nível do rio para a PCD, eu usaria uma boia náutica, colocaria uma bateria 12V, painel solar e controlador de tensão para alimentar o sistema de monitoramento e energizar a arduino pra realizar a transferência.
    Confiando na ajuda desse blog fantástico e sua equipe capacitada, pergunto:
    A) tenho como receber e ler corrente no Arduino?
    Quando a Arduino ler corrente (em mA), envio com o modulo APC220 na boia, recebo via APC220, passo pela arduino e deixo pra PCD registrar a informação.

    1. Caro DFLOPES, para ler corrente no arduino, você tem que converte-la em tensão, usando algum circuito conversor corrente/tensão, dependendo do caso pode ser um simples resistor mas se a corrente for muito pequena pode ter medidas errôneas devido a induções. Depois de converter para tensão é só aplicar a um pino analógico do arduino, respeitando o valor máximo (5v). Para recuperar a corrente na outra ponta sera necessário um conversor tensão corrente. Pesquise na internet que existem vários circuitos que fazem isto, alguns comerciais com altíssima precisão. Normalmente se utiliza corrente entre 4 mA a 20 mA para estes tipos de supervisão, onde 4 mA significa 0mA e 20 mA a corrente máxima do sistema, desta forma quando o arduino recebe zero volts, isto significa que o circuito de corrente esta aberto (com defeito). É um método para detetar falhas.(Já imaginou um rio transbordando e o sistema dizendo que esta seco?)

    2. Boa tarde,

      Sim, é possível enviar essas informações pelo Arduino utilizando o módulo APC220. Qual sensor você irá utilizar para medição de mA ? Temos aqui na loja sensores de corrente que talvez sirvam para o seu projeto.

      Abraço.

      Adilson – Equipe MakerHero

      1. Ola, sou adriano. estudo engenharia estou trabalhando num projeto de telemetria em carros de corrida.

        Usamos o modulo APC220 PARA tx e rx.

        Para analisar o tratamento de dados, utilizamos uma interface feita

        pela própria equipe em linguagem python (S.T.A.R.C.). Em projetos

        anteriores, a interface comunicava-se com o arduino em protocolo

        tcp/ip, porém com a necessidade de um maior alcance de

        transmissão entre e o protótipo e os boxes, optamos pela utilização

        do módulo citado acima. Este por sua vez, opera através de

        comunicação serial, necessitando de uma biblioteca específica da

        linguagem python a pyserial.

        A comunicação funciona perfeitamente ao utilizarmos o monitor

        serial Serial Port Utility. Porém quando utilizamos a comunicação

        em python, na maioria das vezes não conseguimos estabelecer

        uma comunicação e quando conseguimos, os dados obtidos

        aparecem em branco.

  34. Boa tarde

    Testei o módulo APC 220 com o meu arduino nano v3.0 e funcionou corretamente a curta distância (aproximadamente 100 mm) usando uma taxa 19200 Baund, porém quando levei o arduino junto do módulo para outro cômodo da casa localizado no piso inferior, o arduino travou mantendo os LEDs TX-RX acesos interruptamente, o reset não funciona e não consigo compilar outro código, aparentemente a comunicação serial está bugada.
    Vocês já viram algo parecido?

    Grato.

  35. Bom dia, queria fazer conectar Modulo de dio 3DR DE 433Mhz, consigo usar o mesmo programa?

    1. Boa tarde,

      Depende do seu módulo de rádio. O APC220 utiliza comunicação serial com o Arduino.

      Abraço.

      Adilson – Equipe MakerHero

  36. preciso desenvolver um alarme, simples para a minha lancha, ela fica ancorada, preciso ser avisado quando a bomba de porão for acionada, com esse módulo dá pra fazer esse alarme, a minha casa fica aproximadamente uns 800 m da lancha, muito obrigado

    1. Hedy.
      Lá onde fica a lancha, tem ligação de energia elétrica? Pois se tiver fica mais interessante colocar o receptor ao lado da lancha, para que se alguem “mexer nela” e “levar pra longe” (lógico que dentro do limite de 1.000m) e pensar que poderá liga-la sem que ninguem perceba…o resto acho que vc. pode entender.

      1. Vou tentar usar o xbee pro 60mw, só preciso saber se ele aceita fazer line passing, será que é ´possível se sim como faz e vcs tem pra vender vou precisar de 2 módulos,grato

  37. Olá galera não estou conseguindo fazer funcionar. Poderiam me orientar como fazer com uma arduino Due?

    Obrigado

  38. Para operar esses rádio nessa frequencia, é preciso licença ?

    1. Boa noite Luiz,

      Provavelmente não. A frequencia pode ser configurada de 418 à 455 Mhz. Controle remoto de portão eletrônico, por exemplo, trabalha quase na mesma faixa (433 Mhz).

      Abraço.

      Adilson – Equipe MakerHero

      1. Possivelmente não ? A resposta é NÃO ! De 430 MHZ a 440 MHZ, é uma faixa de Frequências que é reservada a Radioamadores – o uso de 433.92 MHZ além de outras frequẽncias típicas de Controle Remoto em UHF: Que inicia em 300 MHZ e termina em 3000 MHZ – 3 GHZ, é um **problema grave** em nossas comunicações ! Notem que Radioamadores PAGAM uma TAXA DE UTILIZAÇÃO ANUAL ( chamada de FISTEL ) para poder se utilizar de várias faixas de frequência no Espectro Eletromagnético ! Este tipo de equipamento não está sujeito a nenhuma “taxa”, porém não há nenhuma garantia, de que não vá sofrer por interferências ( principalmente o RX ). Os Radioamadores podem utilizar de 100W a um máximo de 1000W ( 1 KW ) – e isto pode ser um “problema” muito grave para a decodificação desta “modulação pulsada” ! Notem que não estou citando “PX” ou “Rádio-Cidadão” que é uma telecomunicção “amadora” também – mas **bem diferente** do que os Radioamadores **podem fazer** !

        Saudações, Abraços e a disposição !

        Prof.Samy
        P.S: No Mundo dos Radioamadores tenho certeza absoluta de que vocês todos vão poder fazer este tipo de “transferência de dados” ( que é muito utilizada em Satélites Exclusivos para Radioamadores ! ), como muito mais ! Informem-se pois é muito interessante, útil, um hobby em que os horizontes são muito largos !

  39. Até quantos módulos desse eu consigo conectar ao PC? Tenho uma solução hoje que utiliza módulo WiFly (RN-XV) para fazer a comunicação entre diversos Arduinos e o um programa no Windows. Penso em trocar para o módulo APC220.

    1. Anderson. Quantos módulos desses vc. tem conectado com o PC? Você usa para qual propósito?

      1. Euclides, ainda não tenho nenhum. Levantei a questão justamente para saber se me atende. Bom, o projeto é uma roupa com neon que é controlada através de um software próprio. Hoje tenho duas pessoas, que com o RN-XV se conectam à um servidor TCP através de um rede wireless criada por um roteador. Futuramente poderiam ser 5, 10 pessoas…

  40. Olá, é possível estabelecer uma comunicação com o matlab, utilizando este módulo?

  41. Boa noite.
    Alguem tentou fazer comunicação entre Arduino e outro Arduino (sem usar o conversor USB-TTL) ?
    Deu certo?

    Obrigado.
    Euclides.

    1. Euclides
      Da certo sim! Lembre-se que o APC220 tem porta serial em TTL e que os arduinos também tem, daí a interface é perfeita. O Conversor USB/TTL somente é utilizado com o PC porque ele não tem interface TTL somente USB que não utiliza padrão TTL (5v). Mesmo que tenha porta serial, ela é eletricamente de padrão RS232 (12V).
      Somente prestar atenção em inverter os pinos TX com RX, isto é, ligar o TX do APC220 no RX do arduino e vice versa nos dois extremos.

  42. Ótimo produto.
    Entrega perfeita, demoraram menos de dois dias para entregarem em minhas mãos e já estou utilizando-o em meu projeto. Parabéns por manter a média sempre alta.
    Olhando pela programação nota-se que não é necessário o uso de bibliotecas, o que torna o programa bem, ou seja, com o apc220 é possível tornar quase todos os projetos em projetos sem fio. Isso é demais.
    Gostaria de saber se é possível utilizar mais do que dois destes, como vários pontos de acesso, por exemplo, um em cada cômodo de uma casa (apenas um exemplo). Basta configurar todos iguais e decodificar os sinais recebidos ou vai ocorrer algum bloqueio no sinal de cada um?

    1. Boa noite Luan,

      Não testamos em uma configuração com vários adaptadores, mas a minha sugestão seria também utilizar uma mesma configuração para todos eles, com a decodificação dos sinais recebidos. De qualquer forma, isso depende de testes.

      Abraço.

      Adilson – Equipe MakerHero

  43. Olá, tenho uma dúvida, eu preciso usar o APC220 em um Arduino Uno, mas na porta 0 e 1, eu já estou usando um conversor TTL/485 para comunicar com um módulo que irá me gerar informações utilizando o protocolo ModBus, como posso fazer isso se o APC220 também usa os pinos 0 e 1?

    1. Ola Claudio,
      Use uma serial por software. Por exemplo, utilize os pinos 10 (TX) e 11(RX).
      Inclua a biblioteca SofrwareSerial.h
      Declare a sua serial p.ex: SoftwareSerial novaSerial(10,11)
      No Setup use
      novaSerial.begin(9600);

      Para usar use novaSerial e toda a comunicação se dará pelos pinos 10 e 11
      novaSerial.println(” Olha a nova serial!”);
      novaSerial.read();
      novaSerial.Write()

      Espero ter ajudado.
      73

      1. Ajudou sim Jagoris, muito obrigado man.

    2. Boa noite Claudio,

      Você pode utilizar a biblioteca SoftwareSerial, que permite que você crie outras seriais no Arduino, além das porta 0 e 1. Dê uma olhada nesse link com mais informações sobre a SoftwareSerial : http://arduino.cc/en/Reference/SoftwareSerial

      Abraço.

      Adilson – Equipe MakerHero

    3. Uma dúvida que surgiu quando fui testar, criei a nova serial com os pinos 10 e 11, mas como vou definir qual é a COM0 e COM1? Serial1 e Serial2? Posso trabalhar com as duas simultaneamente?

    4. Claudio, pode me ajudar a realizar uma comunicação MODBUS com o ARDUINO? Comprou algum modulo? dá para utilizar o APC220?

  44. Não necessariamente. Pode ser por exemplo um arduino e um PC, ou um arduino e um PIC. O que importa é que os dispositivos que irão fazer a comunicação um com o outro, devem ter portas seriais.

  45. Bom dia, Filipe!

    É necessário ter 2 arduíno para realizar a comunicação?

    1. Boa noite Marcos,

      Não, você pode enviar as informações à partir o computador, como fizemos no tutorial.

      Abraço.

      Adilson – Equipe MakerHero

  46. Por favor, eu tenho uma dúvida…no trecho
    //Rotina de envio da mensagem de retorno sobre o estado do led

    como o arduino sabe o estado de cada led…não está claro para mim como ele ‘Lê’ o estado de cada led.

    Poderia aprofunda um pouco mais…a rotina de envio de serial ficou ótima e está claro mas o retorno não consegui entender…me desculpa a ignorância caso seja muito simples.

    obrigado

    1. Na verdade o arduino, não sabe se o led está acesso, ele apenas sabe que foi mandado acender e existe uma variável que é setada para indicar isto. Veja na trecho da rotina abaixo como isto ocorre:

      if (buf == ‘1’) // se for enviado o caracter “1”
      {
      estado_verm = !estado_verm; // inverte o valor binário da variável “estado_verm” (o sinal ! faz isto)
      digitalWrite(porta_led_verm, estado_verm); //<> escreve no pino 5 o estado (ligado=1 desligado=0)
      mensagem_estado_led(“vermelho”, estado_verm);// esta linha envia a string “vermelho” e o valor de “estado_verm ” (1 ou 0) para a rotina <<>> que as recebe nas variaveis “led” e “estado” e na sequencia as imprime no terminal via serial.
      }

      Se quizer realmente saber se o led esta ligado ou desligado (ou seja aceso ou apagado) sera necessário monitorar a corrente dele ou ter um sensor de luminosidade acoplado a ele. Isto não não é difícil, mas oneroso e conforme a quantidade de leds monitorado, o hardware acaba ficando bastante grande.

    2. Boa noite Vinicius,

      Na verdade ele não lê o estado de cada led. O que acontece é que, cada vez que o led acende ou apaga, eu inverto a variável que fala se ele está aceso ou apagado. Por exemplo, o led verde. Na linha abaixo o estado do led é invertido :

      estado_verd = !estado_verd;

      Se ele estiver apagado (estado_verd = 0), ele inverte para estado_verd = 1, e faz essa inversão toda vez que o led é ligado ou desligado.

      A rotina void mensagem_estado_led() foi escrita para não ficar repetindo código dentro do programa. O que ela faz é simplesmente pegar esse 0 ou 1 e imprimir a mensagem correspondente.

      Espero ter ajudado. Abraço !

      Adilson – Equipe MakerHero

  47. Fiz tudo conforme as instruçoes dadas, mas depois de desconectar o arduino do usb e conectar na fonte externa, quando vou abrir o serial monitor da IDE, aparece a seguinte mensagem de erro:

    Arduino: 1.5.7 (Windows 7), Placa:”Arduino Uno”

    O sketch usa 4.324 bytes (13%) de espaço de armazenamento para programas. O máximo são 32.256 bytes.

    Variáveis globais usam 353 bytes (17%) de memória dinâmica, deixando 1.695 bytes para variáveis locais. O máximo são 2.048 bytes.

    processing.app.SerialException: Erro ao abrir porta serial “COM8”.

    at processing.app.Serial.(Serial.java:145)

    at processing.app.Serial.(Serial.java:90)

    at processing.app.SerialMonitor.open(SerialMonitor.java:93)

    at processing.app.Editor.handleSerial(Editor.java:2542)

    at processing.app.EditorToolbar.mousePressed(EditorToolbar.java:357)

    at java.awt.Component.processMouseEvent(Unknown Source)

    at javax.swing.JComponent.processMouseEvent(Unknown Source)

    at java.awt.Component.processEvent(Unknown Source)

    at java.awt.Container.processEvent(Unknown Source)

    at java.awt.Component.dispatchEventImpl(Unknown Source)

    at java.awt.Container.dispatchEventImpl(Unknown Source)

    at java.awt.Component.dispatchEvent(Unknown Source)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

    at java.awt.Container.dispatchEventImpl(Unknown Source)

    at java.awt.Window.dispatchEventImpl(Unknown Source)

    at java.awt.Component.dispatchEvent(Unknown Source)

    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

    at java.awt.EventQueue.access$200(Unknown Source)

    at java.awt.EventQueue$3.run(Unknown Source)

    at java.awt.EventQueue$3.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

    at java.awt.EventQueue$4.run(Unknown Source)

    at java.awt.EventQueue$4.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

    at java.awt.EventQueue.dispatchEvent(Unknown Source)

    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

    at java.awt.EventDispatchThread.run(Unknown Source)

    Caused by: jssc.SerialPortException: Port name – COM8; Method name – openPort(); Exception type – Port not found.

    at jssc.SerialPort.openPort(SerialPort.java:167)

    at processing.app.Serial.(Serial.java:141)

    … 35 more

    Este relatório deveria ter mais informações
    “Mostrar saída verbosa durante a compilação”
    habilitado em Arquivo > Preferências.

    Podem me ajudar??

    1. Me parece que Vc está com problemas no JAVA.
      Instale a ultima versão

    2. Boa noite Alberto,

      Ao utilizar fonte externa para o Arduino, use um software alternativo para manipular a serial, como o Termite (http://www.compuphase.com/software_termite.htm).

      Abraço.

      Adilson – Equipe MakerHero

  48. Olá, comprei recentemente um kit APC220 mas não consigo fazer a comunicação entre os dois módulos, ja fui em fóruns e diversos sites mas ainda sim não consigo fazer a comunicação, para teste, uso seu datasheet e código, faço tudo certo a porta TX do módulo conectada ao RX do Arduino ( Mega 2560 ) e o RX no TX. Bem usando a USB, consegui realizar as funções impostas no Terminal Serial, e tudo ok, funciona acende ou desligam as LEDS, ja usei os programas como RF-Magic (APC22X_v12A) deixo exatamente igual a configuração em ambos os módulos e acontece que, o módulo que está no adaptador USB manda dados para o Modulo que vai receber, mas não obtem resposta não executando função alguma… Se puder me ajudar, agradeço bastante, uso o Arduino1.0.6

    1. Tente fazer um loop no modelo que recebe colocando um jumper entre o Tx e o Rx. Use um programa terminal como o RealTERM e envie alguns caracteres. Vc deve receber o retorno deles.
      Atenção que o tx e rx trabalham com níveis TTL.

      1. Fiz tudo certinho usando o RealTERM mas nada de retorno, não pode estar queimados ou algo do tipo, já que usando o apc22X_V12A eu consigo gravar as configurações nos módulos e reconhecer eles, tais como suas configurações… queria saber se tem alguma maneira de saber se há realmente algum defeito neles e como descobrir tal.

        1. Paulo, segue uma maneira fácil e pratica de fazer o teste.
          Você vai usar o Arduino e os dois módulos CP220 e se tiver um protoboard.
          Monte os dois módulos CP220 no protoboard e faça as seguintes ligações:
          1) Em um dos módulos ligue o GND e o VCC e faça um jumper entre o TXD e o RXD;
          2) No outro modulo ligue o GND e o VCC, ligue o pino RXD do CP220 no pino 0 (RX) do arduino e o pino TXD do CP220 no pino 10 do arduino;
          3) Carregue o seguinte skecht no Arduino (desligue o fio no pino 0(zero) do Arduino enquanto carrega o skecht):

          #include
          SoftwareSerial mySerial(10,11);
          void setup()
          {
          Serial.begin(9600); //mesma taxa dos módulos
          mySerial.begin(9600); //idem
          Serial.println(“Envie alguns caracteres…”);
          }
          void loop()
          {
          if(mySerial.available())
          {
          delay(10);
          Serial.write(mySerial.read());
          delay(10);
          }
          }

          Abra o monitor serial da IDE do arduino e assim que receber a mensagem “Envie alguns caracteres…” envie pelo terminal alguns caracteres e verifique se os recebe na tela do monitor os mesmos caracteres.
          Se isto acontecer esta comprovado que os dois CP220 estão estão operando normalmente, pois os sinais enviados pelo modulo junto ao arduino esta sendo enviado para o oposto e nele acontece a repetição dos mesmos para o modulo junto ao arduino.
          Comprove isto removendo o jumper no modulo remoto. Não deve mais receber os caracteres na tela do terminal.

          Espero que tenha ajudado.

          1. ERR0 no skecth:

            A primeira linha deve ser #include

          2. Não sei porque mas esta sumindo os sinais de Menor e Maior, portanto a linha fica:
            #include (sinal de MENOR SoftwareSerial.h sinal de MAIOR)

    2. Boa noite Paulo,

      Entendi. Por acaso você tem o Arduino Uno para fazer o mesmo esquema que está no post ?

      Adilson – Equipe MakerHero

      1. Bem, primeiro quero agradecer a atenção de vocês, e obrigado Jagoris pelas instruções para teste. o resultado foi; não recebi nenhum caractere de volta apenas mandou e não chegou, sendo assim meus módulos estão queimados, ou só um deles… tem como saber se tem apenas 1 com defeito? caso eu for comprar não precisarei comprar o kit todo de novo e sim apenas um dos módulos. Adilson, eu não tenho a uno, uso a Mega 2560 R3.

        1. Já com um pouco chateado eu enviei uns caracteres agora, e não voltou nenhum, retirei o módulo que supostamente enviou os caracteres ( o que tá conectado ao Arduino ) e coloquei no lugar dele o módulo que recebe ( o que esta ligado com o o jumper entre TX e RX ) e no serial, para minha surpresa, apareceu alguns caracteres “ÿÿÿÿ” e sempre que repito esse processo aparecem alguns caracteres desse tipo… Logo testei removendo o módulo que “envia” e reconectando ele para ver se aparece. ( deixando o que “recebe” no lugar dele” ) e nada no serial aparece. Bem, acham que o problema deve ser em enviar de volta o que foi recebido pelo módulo ? Se for, tem alguma solução ?

          1. Isto está parecendo taxa de dados errada em algum dos módulos. Comprove que todos estejam na mesma taxa , inclusive o arduino e o terminal que utiliza.

  49. É possível comunicar 2 arduinos através deles?Como?

    1. Sim é possível. Basta Vc conectar um em cada porta serial do arduino, respeitando as conexões conforme o tutorial, ou seja: TX do arduino no RXD do APC e RX do arduino no TXD do APC. Ambos devem ter a mesma configuração. É só!

      1. E em termos de programação? Vale o mesmo exemplo descrito no tutorial com a adição de uma leitura serial no receptor?

        1. Gabriel,
          Se você está se referindo a programação dos módulos, mantenha o padrão de fabrica que funciona bem. Somente altere a programação se quiser trabalhar com velocidade de ar (Campo RF Tx rate)) diferente, lembrando que quando maior a velocidade MENOR a distancia entre eles. com 2400 bauds de ar, o alcance é máximo em torno de 1000 metros.
          O melhor é utilizar a entrada serial (series rate) com a mesma taxa do RF Tx rate, pois este modulo tem apenas uma memoria de armazenamento de dados de apenas 256 bytes. Se utilizar uma taxa maior na entrada e uma menor na saída (ar) ele não ira conseguir transmitir todas as informações. Imagine que se tenha um barril com um cano de saída em baixo de 10 mm e na entrada em cima um cano de 50 mm. Se fizer passar liquido pelo cano de 50 mm ira vazar uma quantidade menor pelo cano inferior, até que o barril encha e derrame o excesso, ou seja perde-se uma boa quantidade do produto de entrada.
          Se vc não tiver problemas com alcance mantenha a programação conforme o tutorial em ambos.

          1. Me refiro a programação do arduino…Estou tentanto comunicar dois arduinos, mas acabo recebendo valores como 50, 13 e 10 no receptor mesmo após desligar o emissor…Porém a comunicação com o computador(igual a do tutorial) está normal. Sabe alguma solução?

      2. Bom dia Jagoris,
        Estou tentando fazer uma comunicação entre dois arduinos um uno e um mega,segui suas instruuções em colocar TX do arduino no RXD do APC e RX do arduino no TXD do APC.Mesmo assim não obtive êxoto,qual configuração além desta devo realizar?

  50. A informação é muito boa, mas ao baixar o software RF_Magic, o meu anti-virus Norton o elimina informando que tem arquivo hostil anexado. Tem algum outro local para baixar este software?

    1. Bom dia João,

      Pode ser algum alerta falso no seu computador. Baixando o arquivo pelo link indicado, não tivemos problemas.

      Abraço.

      Adilson – Equipe MakerHero

  51. Olá! Parabéns pela ótima postagem! Super fácil entendimento. Fui trabalhar com um módulos desses uns 2 anos atrás e sofri bastante para achar material. Uma ressalva que acho importante é que esse módulo, apesar de utilizar comunicação serial simples, não é compatível com a programação em LABView. Abraços!

    1. Boa tarde Rafael,

      Informação importante. Obrigado !

      Abraço.

      Adilson – Equipe MakerHero

  52. olá tenho um projeto de controle remoto no qual uso um TX e RX de pequeno alcance seria possível aumentar a distancia com esses modulo ? o codificador e decodificador é com piccontrolador

    1. Ola Ciro,
      Se vc conseguir me de um alo, pois acho q esses modulos nao servem para pic, uso os da telecontrolli e funcionam bem, comprei esse e nao há meio de funcionar.

      1. Ciro e Carlos,
        Os módulos APC220 servem para qualquer microprocessador que tenha porta serial, inclusive o PIC. A única preocupação é que a porta trabalhe em nível TTL, ou seja com níveis 0V e +5V. Seriais com níveis RS232 que trabalham entre +_12V devem ter um conversor Serial RS232/TTL.

    2. Boa tarde Ciro,

      Segundo o fabricante, esse módulo aceita distâncias de até 1000 metros.

      Abraço.

      Adilson – Equipe MakerHero

  53. Boa noite, comprei os apcb de vc mas nao to consekindo usar no meu projeto.
    Por acaso vc teria um igual a essee so que com pic?
    So para eu ter uma referencia.
    Obrigado

    1. Boa noite Carlos,

      Não temos esse projeto com PIC.

      Grato.

      Adilson – Equipe MakerHero

  54. amigo,filipe preciso do esquema como montar 8 rele no arduino ethenert shild ,já copilei a biblioteca no arduino mas não sei como ligar as portas digital no modolo rele,ha eu copiei no site robocore,automação residencial.V2.1. se puder me ajudar eu agradeço .charles

  55. Muito bom!
    Adquiri um kit deste no seu site (APC220) e estou utilizando uma placa Romeu V.2, mas não estou conseguindo fazer a comunicação entre os dois módulos. Você tem ideia do que seja o problema? Lembrando que o Romeu V.2 já vem com socket para APC.

    1. Boa noite Samuel,

      Não testamos ainda com o Romeo.

      Grato.

      Adilson – Equipe MakerHero

    1. Olá Aurélio,
      Que bom que gostou 🙂
      Compartilhe com seus amigos!

  56. Muito bom. Mais uma vez parabéns.

    1. Legal Ivan!
      Ficamos felizes com sua aprovação.
      Abraço!