CC1101: Transceptor RF para uso com Arduino

cc1101

Certamente em alguns projetos você precisará trabalhar com radiofrequência com seu Arduino, ou com qualquer outra placa de desenvolvimento ou circuito DIY. Bem, se esse for o seu caso, você deve saber qual é o Transceptor de radiofrequência (RF) CC1101. E é isso que tentaremos explicar neste artigo.

E com este outro componente eletrônico que entra em nossa lista, você pode trabalhar com diferentes frequências de sinal…

O que é RF?

espectro eletromagnético

Com radiofrequência (RF) Estamos nos referindo a uma parte do espectro eletromagnético que é utilizada para transmitir informações pelo ar. As ondas de RF são um tipo de radiação eletromagnética e são produzidas sempre que a energia elétrica é transmitida através de um condutor, como um cabo. O termo RF se aplica à porção menos energética do espectro eletromagnético que mostro na imagem anterior e que está localizada entre 3 hertz (Hz) e 300 gigahertz (GHz).

Velocidade da luz = Comprimento de onda · frequência

A velocidade da luz (aproximadamente 3.000.000 m/s) nunca muda, portanto, à medida que o comprimento de onda do sinal de RF aumenta, a frequência diminui proporcionalmente e vice-versa. Um sinal de RF de frequência relativamente alta tem um comprimento de onda curto e um sinal de RF de frequência mais baixa tem um comprimento de onda mais longo. Pela mesma razão, sinais de frequência mais baixa são mais penetrantes ou podem cobrir maior cobertura. Por exemplo, se você tiver WiFi de 2.4 GHz, ele pode chegar mais longe e cruzar barreiras melhor em comparação com o WiFi de 5 GHz, embora este último permita velocidades de transmissão mais altas...

O hertz é a unidade de medida da frequência das ondas e corresponde a um ciclo por segundo. Quanto maior a frequência da onda, menor será o seu comprimento de onda. É por isso que a radiação gama é muito penetrante, pois o comprimento de onda é muito pequeno e a sua frequência é muito alta, por isso é altamente energética.

As ondas eletromagnéticas desta região do espectro podem ser transmitidas pela aplicação de corrente alternada proveniente de um gerador a uma antena. As ondas de radiofrequência, sendo ondas eletromagnéticas, viajam na velocidade da luz. Basicamente, um sinal elétrico variável em uma antena pode produzir oscilações eletromagnéticas (ou seja, ondas de RF). Estes podem ser não intencionais (potencialmente causando interferência com outros dispositivos) ou intencionais: sinais cuidadosamente modulados que outras antenas podem receber e ser interpretados como informações úteis.

Dentro desta faixa de RF, podemos transmitir dados em alta velocidade, por exemplo, como feito em Comunicações Wi-Fi e celulares, além das tradicionais rádios AM e FM.

O que é um transceptor?

Transdutor RF

Um transceptor é um dispositivo que combina as capacidades de um transmissor e um receptor em circuitos compartilhados. Isso significa que ele pode enviar e receber sinais, sem precisar de um transmissor de um lado e um receptor do outro. Algo bastante prático para muitos projetos DIY.

Os transceptores podem ser dois tipos gerais: full duplex e half duplex. Em um transceptor full duplex, o dispositivo pode transmitir e receber ao mesmo tempo. Um exemplo comum de transceptor full duplex é um telefone celular. Por outro lado, um transceptor half-duplex silencia uma parte enquanto a outra transmite.

Os transceptores são os pedra angular da comunicação sem fio e são utilizados em diversas aplicações, desde telefones celulares até satélites de comunicação, passando por muitas outras redes e formas de transmissão de informações, como rádio, TV, etc.

Aplicações de um transceptor

Um transceptor de radiofrequência (RF) é um dispositivo multifuncional que pode ter um grande número de usos. Por exemplo, como disse anteriormente, a sua presença é essencial em diversas aplicações que requerem comunicação sem fio. No campo das telecomunicações móveis, os transceptores são utilizados em telefones celulares para a transmissão e recepção de sinais. Além disso, são essenciais em tecnologias como WiFi e Bluetooth, implantados em dispositivos como roteadores, computadores e dispositivos de Internet das Coisas (IoT), que dependem de comunicação sem fio para seu funcionamento.

No campo profissional, os transceptores RF são essenciais em sistemas de segurança. Dois canais de rádio, como rádios bidirecionais usados ​​em aplicações profissionais, serviços de segurança e emergência. Esses dispositivos também encontram aplicação em sistemas de detecção, como radares usados ​​para detecção de objetos, navegação e controle de tráfego aéreo, bem como em sistemas de sonar para aplicações subaquáticas.

La transmissão, Tanto para rádio quanto para televisão, depende de transceptores de RF para a transmissão de sinais através de diferentes meios, sejam eles terrestres ou satélites. Além disso, no domínio espacial, os transceptores são cruciais para a comunicação entre satélites e estações terrestres em sistemas de comunicações por satélite.

En aplicações de controle remoto e telemetria, Os transceptores RF são usados ​​para transmissão de dados de dispositivos eletrônicos, drones ou veículos aéreos não tripulados (UAV). São também essenciais em sistemas de navegação, como os receptores GPS, onde contribuem para a determinação da localização e navegação. Em resumo, a versatilidade dos transceptores de RF os torna componentes essenciais em uma variedade de tecnologias modernas que dependem de comunicação sem fio e transmissão de dados.

Obviamente, existem algumas dessas aplicações que não estão ao alcance do CC1101, pois ele possui suas limitações e opera em determinadas faixas de frequência. Porém, você deve saber que existem mais dispositivos no mercado como este transceptor para trabalhar com outras frequências, distâncias, etc.

O que é CC1101?

cc1101

El CC1101 é um transceptor de radiofrequência (RF) projetado para operar em frequências abaixo de 1 GHz. Este dispositivo pode ser usado em conjunto com um processador como o Arduino para enviar ou receber dados via radiofrequência. O CC1101 pode trabalhar em qualquer frequência nas seguintes bandas:

  • 300 a 348 MHz
  • 387 a 464 MHz
  • 779 a 928 MHz

Esses recursos tornam o CC1101 uma opção Versátil para uma variedade de projetos que exigem comunicação sem fio, incluindo projetos Arduino e ESP8266/ESP321, e outros projetos eletrônicos na área de comunicações remotas.

Além disso, o CC1101 Permite ajustar a taxa de bits para diversos usos, permitindo maiores velocidades de transmissão, de 0.6 Kbps a 600 Kbps, além de suportar modulações 2-FSK, GFSK e MSK3.

Caso tenha interesse, você pode encontrá-lo em lojas especializadas em eletrônicos, ou também em plataformas de vendas online como Amazon, Aliexpress e eBay. Aqui você tem um recomendação de compra:

A potência de saída também é programável, para todas as frequências suportando até +10 dBm. Ele o alcance é de 100 a 150 metros, dependendo da frequência. E para seu funcionamento necessita de uma tensão de 1.8 a 3.6V. A comunicação de dados é realizada através do barramento SPI, portanto é fácil utilizá-lo em conjunto com um MCU ou placas como Arduino...

Usando o CC1101 com Arduino

Arduino IDE, tipos de dados, programação

Agora, depois de entender o que é o CC1101, se quiser usá-lo com o Arduino, é fácil de fazer. Para fazer isso, a primeira coisa é ligue corretamente o dispositivo ou módulo RF à sua placa de desenvolvimento. Tenha cuidado, pois o CC1101 não tolera tensões de 5v e você pode danificá-lo, por isso ele não se conectará à tomada de 5v do Arduino como fizemos com muitos outros dispositivos. A conexão para que funcione corretamente é a seguinte:

  • Vcc: ele será conectado ao Arduino 3v3 para ter esta tomada, caso não tenha e você só tenha 5v, então você terá que conectá-lo a uma bateria ou fonte externa que possa fornecer essa tensão ou o CC1101 irá ser danificado.
  • SI: Será conectado ao Arduino SCK, que pode mudar de pino dependendo do modelo, mas que geralmente é D13.
  • SO: Neste caso ele estará conectado ao GO2, que normalmente é o pino D12 do Arduino.
  • CSN: tem que levar até o pino GO0, que é o D9 do Arduino.
  • GND: e por fim, o GND será conectado ao GND do Arduino ou da sua fonte de alimentação.

Feito isso, é hora de escrever o código para testá-lo no Arduino IDE. Para fazer isso, mostro aqui um exemplo bem básico, mas que você pode modificar ao seu gosto. Neste caso o CC1101 estará operando como receptor Sinal RF:

Observe que você terá que instalar uma biblioteca no seu Arduino IDE para poder funcionar, essa biblioteca é a ELECHOUSE do CC1101 que você pode baixar aqui.
#include <ELECHOUSE_CC1101_SRC_DRV.h>

void setup(){

    Serial.begin(9600);

    if (ELECHOUSE_cc1101.getCC1101()){         // Comprobar la conexión SPI del CC1101.
    Serial.println("Connection OK");
    }else{
    Serial.println("Connection Error");
    }

    ELECHOUSE_cc1101.Init();              // Inicializa el CC1101
    ELECHOUSE_cc1101.setCCMode(1);       // Configuración del modo de transferencia interna.
    ELECHOUSE_cc1101.setModulation(0);  // Modulación: 0 = 2-FSK, 1 = GFSK, 2 = ASK/OOK, 3 = 4-FSK, 4 = MSK.
    ELECHOUSE_cc1101.setMHZ(300,15);   // Pon la frecuencia que quieras usar para la transmisión (por defecto es 433,92 Mhz)
    ELECHOUSE_cc1101.setSyncMode(2);  // Modo de sync: 0 = No preamble/sync. 1 = 16 sync word bits detected. 2 = 16/16 sync word bits detected. 3 = 30/32 sync word bits detected. 4 = No preamble/sync, carrier-sense above threshold. 5 = 15/16 + carrier-sense above threshold. 6 = 16/16 + carrier-sense above threshold. 7 = 30/32 + carrier-sense above threshold.
    ELECHOUSE_cc1101.setCrc(1);      // 1 = CRC calculado en TX y comprobación CRC en RX habilitada. 0 = CRC deshabilitado en TX y RX.
    
    Serial.println("Rx Mode");
}
byte buffer[61] = {0};

void loop(){

    //Comprueba si se ha recibido algo en un tiempo marcado por (time in millis)
    if (ELECHOUSE_cc1101.CheckRxFifo(100)){
    
    if (ELECHOUSE_cc1101.CheckCRC()){    //Prueba CRC. Si "setCrc(false)" CRC devuelve un OK siempre.
    Serial.print("Rssi: ");
    Serial.println(ELECHOUSE_cc1101.getRssi());
    Serial.print("LQI: ");
    Serial.println(ELECHOUSE_cc1101.getLqi());
    
    int len = ELECHOUSE_cc1101.ReceiveData(buffer);
    buffer[len] = '\0';
    Serial.println((char *) buffer);
    for (int i = 0; i < len; i++){
    Serial.print(buffer[i]);
    Serial.print(",");
    }
    Serial.println();
    }
    }
}

O CC1101 operando como transmissor O sinal RF possui um código semelhante ao anterior.


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.