CC1101: Arduino で使用する RF トランシーバー

cc1101

確かに、一部のプロジェクトでは、Arduino やその他の開発ボードや DIY 回路で無線周波数を使用する必要があります。そうですね、それがあなたの場合は、何が原因であるかを知っておく必要があります CC1101 無線周波数 (RF) トランシーバー。それがこの記事で説明しようとしている内容です。

そして、これともう一つ 私たちのリストに加わる電子部品、さまざまな信号周波数を扱うことができます…

RFとは何ですか?

電磁スペクトル

とともに 無線周波数 (RF) 空気を介して情報を送信するために使用される電磁スペクトルの一部を指します。 RF 波は電磁放射の一種であり、電気エネルギーがケーブルなどの導体を介して伝送されるたびに生成されます。 RF という用語は、前の図で示した、3 ヘルツ (Hz) と 300 ギガヘルツ (GHz) の間に位置する電磁スペクトルの最もエネルギーの低い部分に適用されます。

光の速度=波長・周波数

光の速度 (約 3.000.000 m/s) は決して変わらないため、RF 信号の波長が増加すると、周波数は比例して減少し、その逆も同様です。比較的高い周波数の RF 信号は波長が短く、低い周波数の RF 信号はより長い波長を持ちます。これと同じ理由で、周波数が低い信号はより透過性が高く、より広い範囲をカバーできます。たとえば、2.4 GHz WiFi を使用している場合、5 GHz WiFi と比較してより遠くまで到達し、障壁をよりよく通過できますが、後者の方がより高い伝送速度が可能になります...

ヘルツは波の周波数の測定単位であり、1 秒あたり 1 サイクルに相当します。波の周波数が高くなるほど、その波長は短くなります。ガンマ線の波長が非常に短く、周波数が非常に高いため、エネルギーが非常に高いため、ガンマ線は非常に透過性が高いのです。

このスペクトル領域からの電磁波は、発電機から発生する交流をアンテナに印加することによって送信できます。の 高周波電磁波であるため、光の速度で伝わります。最も基本的なこととして、アンテナ内の電気信号が変化すると、電磁振動 (つまり、RF 波) が発生する可能性があります。これらは、意図的ではない(他のデバイスとの干渉を引き起こす可能性がある)場合もあれば、意図的に、他のアンテナが受信して有用な情報として解釈できる慎重に変調された信号である場合もあります。

この RF 範囲内では、たとえば次のようにデータを高速で送信できます。 Wi-Fi通信 従来の AM および FM ラジオだけでなく、携帯電話も利用できます。

トランシーバーとは何ですか?

RFトランスデューサ

トランシーバーとは、 送信機と受信機の機能を組み合わせます 共有回線上で。これは、一方では送信機、もう一方では受信機を必要とせずに、信号を送受信できることを意味します。多くの DIY プロジェクトにとって非常に実用的なものです。

トランシーバーは次のことができます。 一般的な 2 つのタイプ: 全二重および半二重。全二重トランシーバーでは、デバイスは送信と受信を同時に行うことができます。全二重トランシーバーの一般的な例は携帯電話です。一方、半二重トランシーバーは、一方の通話者が送信している間、もう一方の通話者をミュートします。

トランシーバーは、 無線通信の基礎 携帯電話から通信衛星に至るまで、他の多くのネットワークやラジオ、テレビなどの情報伝達手段を介して、さまざまな用途で使用されています。

トランシーバーの用途

無線周波数 (RF) トランシーバーは、 多機能デバイス さまざまな用途に使用できます。たとえば、前に述べたように、無線通信を必要とするさまざまなアプリケーションでは、その存在が不可欠です。移動体通信の分野では、信号の送受信のために携帯電話でトランシーバが使用されます。さらに、ルーター、コンピューター、モノのインターネット (IoT) デバイスなど、動作に無線通信に依存するデバイスに導入される WiFi や Bluetooth などのテクノロジーにも不可欠です。

専門分野では、RF トランシーバーはセキュリティ システムに不可欠です。 2ウェイラジオ、業務用アプリケーション、セキュリティ、緊急サービスで使用される双方向無線など。これらのデバイスは、物体検出、ナビゲーション、航空交通管制に使用されるレーダーなどの検出システムや、水中用途のソナー システムにも応用されています。

La 放送、 ラジオとテレビの両方で、地上波か衛星かにかかわらず、さまざまなメディアを介した信号の送信には RF トランシーバーが必要です。さらに、宇宙領域では、衛星通信システムにおける衛星と地上局間の通信にトランシーバが不可欠です。

En リモートコントロールおよびテレメトリアプリケーション, RF トランシーバーは、電子機器、ドローン、無人航空機 (UAV) からのデータ送信に使用されます。これらは、GPS 受信機などのナビゲーション システムにも不可欠であり、位置の決定やナビゲーションに貢献します。要約すると、RF トランシーバーは多用途性を備えているため、ワイヤレス通信とデータ送信に依存するさまざまな最新テクノロジーにおいて不可欠なコンポーネントとなっています。

CC1101 には制限があり、特定の周波数範囲で動作するため、これらのアプリケーションの中には、CCXNUMX の範囲内にないものがあることは明らかです。ただし、このトランシーバーのような他の周波数や距離などで動作するデバイスが市場に多数あることを知っておく必要があります。

CC1101とは何ですか?

cc1101

El CC1101 は、1 GHz 未満の周波数で動作するように設計された無線周波数 (RF) トランシーバーです。このデバイスは、Arduino などのプロセッサと組み合わせて使用​​し、無線周波数を介してデータを送受信できます。 CC1101 は、次の帯域内の任意の周波数で動作できます。

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

これらの機能により、CC1101 がオプションになります ワイヤレス通信を必要とするさまざまなプロジェクトに多用途に対応、Arduino および ESP8266/ESP321 プロジェクト、およびリモート通信分野内のその他のエレクトロニクス プロジェクトを含みます。

さらに、CC1101 ビットレートを調整できます さまざまな用途に合わせて使用​​できるため、0.6 Kbps から 600 Kbps までの高速伝送が可能で、2-FSK、GFSK、MSK3 変調もサポートしています。

ご興味がございましたら、専門の家電量販店のほか、Amazon、Aliexpress、eBay などのオンライン販売プラットフォームでもお求めいただけます。ここに 1 つあります 購入の推奨:

出力パワーもプログラム可能で、すべての周波数で最大 +10 dBm をサポートします。彼 範囲は最大100〜150メートルです、周波数に応じて。また、動作には1.8~3.6Vの電圧が必要です。データ通信はSPIバスを介して行われるため、MCUやArduinoなどのボードと組み合わせて簡単に使用できます。

Arduino で CC1101 を使用する

Arduino IDE、データ型、プログラミング

さて、CC1101 が何であるかを理解すれば、Arduino でそれを使用したい場合、それは簡単です。これを行うには、まず最初に行うことは、 正しく接続してください RF デバイスまたはモジュールを開発ボードに接続します。 CC1101は5Vの電圧に耐えられず、損傷する可能性があるため、他の多くのデバイスで行ったようにArduinoの5Vソケットに接続できないことに注意してください。正しく動作するための接続は次のとおりです。

  • Vccの: このソケットを使用するには、Arduino 3v3 に接続します。ソケットがなく、5V しかない場合は、その電圧を供給できるバッテリーまたは外部電源に接続する必要があります。そうしないと、CC1101 が動作します。破損する。
  • SI: Arduino SCK に接続されます。モデルによってピンが変わりますが、通常は D13 です。
  • SO: この場合、GO2 に接続されます。GO12 は通常 Arduino の DXNUMX ピンです。
  • CSN: Arduino の D0 である GO9 ピンに接続する必要があります。
  • GND: そして最後に、GND は Arduino の GND または電源に接続されます。

これが完了したら、Arduino IDE でテストするコードを作成します。これを行うために、ここでは非常に基本的な例を示しますが、好みに応じて変更できます。この場合、CC1101 は次のように動作します。 受信機 RF信号:

動作させるには、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. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。