CC1101:與 Arduino 搭配使用的 RF 收發器

cc1101

當然,在某些專案中,您需要使用 Arduino 或任何其他開發板或 DIY 電路來使用射頻。好吧,如果這是你的情況,你應該知道是什麼 CC1101 射頻 (RF) 收發器。這就是我們將在本文中嘗試向您解釋的內容。

和這個其他 加入我們清單的電子元件,您可以使用不同的訊號頻率...

什麼是射頻?

電磁頻譜

射頻 (RF) 我們指的是用於透過空氣傳輸訊息的電磁頻譜的一部分。射頻波是電磁輻射的一種,每當電能通過導體(例如電纜)傳輸時就會產生射頻波。 RF 一詞適用於我在上圖中向您展示的電磁頻譜中能量最低的部分,該部分位於 3 赫茲 (Hz) 到 300 吉赫茲 (GHz) 之間。

光速=波長·頻率

光速(大約 3.000.000 m/s)永遠不會改變,因此隨著 RF 訊號波長的增加,頻率會成比例降低,反之亦然。相對高頻的RF訊號具有短波長,而較低頻率的RF訊號具有較長的波長。基於同樣的原因,較低頻率的訊號更具穿透力或可以覆蓋更大的覆蓋範圍。例如,如果您有 2.4 Ghz WiFi,與 5 Ghz WiFi 相比,它可以到達更遠的距離並更好地跨越障礙,儘管後者允許更高的傳輸速度...

赫茲是波頻率的測量單位,相當於每秒一個週期。波的頻率越高,其波長越短。這就是為什麼伽馬輻射的穿透力很強,因為波長很小,頻率很高,所以能量很高。

來自該頻譜區域的電磁波可以透過將源自發電機的交流電施加到天線來傳輸。這 射頻波,是電磁波,以光速傳播。最基本的是,天線中變化的電訊號會產生電磁振盪(即射頻波)。這些可能是無意的(可能對其他設備造成乾擾)或有意的:其他天線可以接收並解釋為有用資訊的精心調製的訊號。

在這個射頻範圍內,我們可以高速傳輸數據,例如,如 無線網路通訊 和手機,以及傳統的 AM 和 FM 收音機。

什麼是收發器?

射頻換能器

收發器是一種設備 結合了發射器和接收器的功能 在共享電路上。這意味著它可以發送和接收訊號,而無需一方面具有發射器,另一方面具有接收器。對於許多 DIY 項目來說非常實用。

收發器可以是 兩種一般類型:全雙工和半雙工。在全雙工收發器中,設備可以同時發送和接收。全雙工收發器的常見範例是行動電話。另一方面,半雙工收發器使一方靜音,而另一方則進行傳輸。

收發器是 無線通訊的基石 並透過許多其他網路和資訊傳輸方式(例如廣播、電視等)用於從行動電話到通訊衛星的各種應用。

收發器的應用

射頻 (RF) 收發器是 多功能設備 它有很多用途。例如,正如我之前所說,它的存在在需要無線通訊的各種應用中至關重要。在行動電信領域,收發器用於行動電話中用於訊號的發送和接收。此外,它們對於 WiFi 和藍牙等技術至關重要,這些技術部署在路由器、電腦和物聯網 (IoT) 設備等設備中,這些設備的運作依賴於無線通訊。

在專業領域,射頻收發器在安防系統中至關重要。 對講機,例如用於專業應用、安全和緊急服務的雙向無線電。這些設備也應用於偵測系統,例如用於物體偵測、導航和空中交通管制的雷達,以及水下應用的聲納系統。

La 廣播, 對於廣播和電視來說,它依賴射頻收發器透過不同的媒體(無論是地面媒體還是衛星媒體)傳輸訊號。此外,在太空領域,收發器對於衛星通訊系統中衛星與地面站之間的通訊至關重要。

En 遠端控制和遙測應用,射頻收發器用於電子設備、無人機或無人駕駛飛行器 (UAV) 的資料傳輸。它們在導航系統中也很重要,例如 GPS 接收器,它們有助於位置確定和導航。總之,射頻收發器的多功能性使其成為各種依賴無線通訊和資料傳輸的現代技術的重要組成部分。

顯然,其中一些應用不在 CC1101 的範圍內,因為它有其局限性並且在某些頻率範圍內運行。然而,您應該知道,市場上有更多像此收發器這樣的設備可以在其他頻率、距離等下工作。

CC1101是什麼?

cc1101

El CC1101 是一款射頻 (RF) 收發器,設計工作頻率低於 1 GHz。該裝置可與 Arduino 等處理器結合使用,並透過射頻傳送或接收資料。 CC1101可以工作在以下頻段內的任何頻率:

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

這些功能使 CC1101 成為一種選擇 多用途,適用於需要無線通訊的各種項目,包括 Arduino 和 ESP8266/ESP321 項目,以及遠端通訊領域內的其他電子項目。

此外,CC1101 允許您調整位元率 針對不同的用途,允許更高的傳輸速度,從0.6 Kbps到600 Kbps,並且還支援2-FSK、GFSK和MSK3調製。

如果您有興趣,您可以在專門的電子商店找到它,也可以在亞馬遜、速賣通和eBay等線上銷售平台上找到它。在這裡你有一個 購買推薦:

輸出功率也是可編程的,所有頻率都支援高達 +10 dBm。他 範圍可達100-150米,取決於頻率。其運作需要 1.8 至 3.6V 的電壓。數據通訊透過SPI匯流排進行,因此很容易與MCU或Arduino等闆卡一起使用...

將 CC1101 與 Arduino 結合使用

Arduino IDE、數據類型、編程

現在,一旦您了解了 CC1101 是什麼,如果您想將其與 Arduino 一起使用,那就很容易做到了。要做到這一點,首先要做的是 正確連接 將 RF 設備或模組連接到您的開發板。請小心,因為 CC1101 不能承受 5v 電壓,因此可能會損壞它,因此它不會像我們對許多其他設備所做的那樣連接到 Arduino 的 5v 插座。其正常工作的連結如下:

  • VCC:它將連接到 Arduino 3v3 以便擁有此插座,如果沒有它並且您只有 5v,那麼您必須將其連接到可以提供該電壓的電池或外部電源,否則 CC1101 將被損壞。
  • SI:連接Arduino SCK,根據型號可以改變引腳,但一般是D13。
  • SO:在這種情況下,它將連接到 GO2,通常是 Arduino 的 D12 引腳。
  • 南航:你必須把它接到GO0腳,也就是Arduino的D9。
  • GND:最後,GND 將連接到 Arduino 或電源的 GND。

完成此操作後,就可以編寫程式碼以在 Arduino IDE 中進行測試了。為此,我在這裡向您展示一個非常基本的範例,但您可以根據自己的喜好進行修改。在這種情況下,CC1101 將作為 接收器 射頻訊號:

請注意,您必須在 Arduino IDE 中安裝一個庫才能工作,該庫是 CC1101 的 ELECHOUSE 庫, 你可以從這裡下載.
#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();
    }
    }
}

CC1101 作為 發射器 RF 訊號的代碼與前一個類似。


成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。