- 必要なコンポーネント
- 使用したソフトウェア
- 433MHzRF送信機および受信機モジュール
- 回路図
- CodeVisionを使用したAtmega8のプロジェクトの作成
- コードと説明
- コードをAtmega8にアップロードします
プロジェクトをワイヤレスにすることで、常に見栄えが良くなり、制御できる範囲も広がります。短距離ワイヤレス制御用の通常のIRLEDの使用から、世界規模のHTTP制御用のESP8266まで、ワイヤレスで何かを制御する方法はたくさんあります。このプロジェクトでは、433 MHzRFモジュールとAVRマイクロコントローラーを使用してワイヤレスプロジェクトを構築する方法を学び ます。
このプロジェクトでは、次のことを行います。-
- 私たちは、使用 Atmega8を RF送信機とのために Atmega8 RF受信部のために。
- LEDとプッシュボタンをAtmega8マイクロコントローラーとインターフェースします。
- 送信機側では、プッシュボタンをAtmegaとインターフェースし、データを送信します。受信側では、データをワイヤレスで受信し、出力をLEDで表示します。
- エンコーダとデコーダICを使用して4ビットデータを送信します。
- 市場で入手可能な安価なRFTX-RXモジュールを使用した受信周波数は433Mhzです。
必要なコンポーネント
- Atmega8 AVRマイクロコントローラー(2)
- USBASPプログラマー
- 10ピンFRCケーブル
- ブレッドボード(2)
- LED(2)
- 押しボタン(1)
- HT12DとHT12Eのペア
- RX-TXRFモジュール
- 抵抗器(10k、47k、1M)
- ジャンパー線
- 5V電源
使用したソフトウェア
私たちは、使用 CodeVisionAVRの 我々のコードと記述するためのソフトウェア SinaProgの USBASPプログラマを使用してAtmega8に我々のコードをアップロードするためのソフトウェアを。
これらのソフトウェアは、指定されたリンクからダウンロードできます。
CodeVisionAVR :http://www.hpinfotech.ro/cvavr_download.html
SinaProg: http ://www.ablab.in/sinaprog-hex-file-downloader-software-to-download-code-to-avr-microcontroller/#inline_content
回路図とコードに入る前に、エンコーダーデコーダーICでのRFモジュールの動作を理解しましょう。
433MHzRF送信機および受信機モジュール
これらは、プロジェクトで使用している送信機モジュールと受信機モジュールです。これは、433 MHzで利用可能な最も安価なモジュールです。これらのモジュールは、1つのチャネルでシリアルデータを受け入れます。
モジュールの仕様を見ると、送信機の定格は入力電圧として3.5〜12V で、送信距離は20〜200メートルです。AM(Audio Modulation)プロトコルで433MHzの周波数で送信します。10mWの電力で4KB / Sの速度でデータを転送できます。
上の画像では、送信機モジュールのピン配列を見ることができます。左から右に、ピンはVCC、DATA、およびGNDです。アンテナを追加して、上の画像に示されているポイントにはんだ付けすることもできます。
以下のためにレシーバー仕様で、レシーバはの評価がある現在の5V DCおよび4MA静止入力としてを。受信周波数は433.92 MHzで有する-105DBの感度。
上の画像では、レシーバーモジュールのピン配列を確認できます。4つのピンは、左から右、VCC、DATA、DATA、およびGNDです。これらの真ん中の2つのピンは内部で接続されています。どちらか一方または両方を使用できます。ただし、ノイズ結合を下げるために両方を使用することをお勧めします。
また、データシートに記載されていないことが1つあります。モジュールの中央にある可変インダクタまたはPOTは、周波数校正に使用されます。送信データを受信できなかった場合は、送信周波数と受信周波数が一致していない可能性があります。これはRF回路であり、送信機を完全な送信周波数ポイントに調整する必要があります。また、送信機と同じように、このモジュールにもアンテナポートがあります。ワイヤーをコイル状にはんだ付けして、より長く受信することができます。
送信範囲は、送信機に供給される電圧と両側のアンテナの長さに依存します。この特定のプロジェクトでは、外部アンテナを使用せず、送信機側で5Vを使用しました。私たちは5メートルの距離でチェックしました、そしてそれは完全に働きました。
RF送信機および受信機回路のRFペアの詳細をご覧ください。RFペアを使用する次のプロジェクトを確認することで、RFの動作について詳しく理解できます。
- RF制御ロボット
- IRからRFへのコンバータ回路
- RaspberryPiを使用したRFリモート制御LED
- RF制御家電
回路図
RF送信機側の回路図
- atmega8のピンD7->ピン13HT12E
- atmega8のピンD6->ピン12HT12E
- atmega8のピンD5->ピン11HT12E
- atmega8のピンD4->ピン10HT12E
- AtmegaのピンB0への押しボタン。
- HT12Eのピン15とピン16の間の1Mオームの抵抗。
- HT12Eのピン17からRFトランスミッタモジュールのデータピンへ。
- HT12Eのピン18を5Vに。
- HT12EのGNDピン1-9とピン14およびAtmegaのピン8。
RF受信機側の回路図
- atmega8のピンD7->ピン13HT12D
- atmega8のピンD6->ピン12HT12D
- atmega8のピンD5->ピン11HT12D
- atmega8のピンD4->ピン10HT12d
- AtmegaのピンB0へのLED。
- HT12Dのピン14からRF受信機モジュールのデータピンへ。
- HT12Dのピン15とピン16の間の47KΩの抵抗。
- HT12DのGNDピン1-9とAtmegaのピン8。
- HT12Dのピン17へのLED。
- Atmegaのピン7とHT12Dのピン18に5V。
CodeVisionを使用したAtmega8のプロジェクトの作成
これらのソフトウェアをインストールした後、以下の手順に従ってプロジェクトを作成し、コードを記述します。
ステップ1。CodeVisionを開きます。[ファイル]-> [新規]-> [プロジェクト]をクリックし ます 。確認ダイアログボックスが表示されます。[はい]をクリックします
ステップ 2.CodeWizardが開きます。最初のオプション、つまり AT90 をクリックし、[OK]をクリックします。
ステップ3.マイクロコントローラーチップを選択します。ここでは、図のようにAtmega8を使用します。
ステップ4:- [ポート]をクリックします。ではトランスミッター部分、プッシュボタンは、我々の入力と4つのデータ行が出力されています。したがって、Atmegaの4ピンを出力として初期化する必要があります。ポートDをクリックします。ビット7、6、5、および4をクリックして出力します。
ステップ5:- [プログラム]-> [生成、保存、終了]を クリックし ます 。今、私たちの仕事の半分以上が完了しています
ステップ6:-デスクトップに新しいフォルダを作成して、ファイルがフォルダに残るようにします。そうしないと、デスクトップウィンドウ全体に散らばってしまいます。フォルダに好きな名前を付けてください。同じ名前を使用してプログラムファイルを保存することをお勧めします。
ファイルを保存するための3つのダイアログボックスが次々に表示されます。最初のダイアログボックスを保存した後に表示される他の2つのダイアログボックスについても同じようにします。
これで、ワークスペースは次のようになります。
私たちのほとんどの作業は、ウィザードの助けを借りて完了します。これで、送信機と受信機の部分に数行のコードを記述するだけで済みます。それだけです…
同じ手順に従って、Receiverパーツのファイルを作成します。レシーバー部分では、Ledのみが出力であるため、ポートB0ビットを出力にします。
コードと説明
RFを使用してLEDをワイヤレスで切り替えるためのコードを記述します。送信機側と受信機側の両方のAtmegaの完全なコードは、この記事の最後に記載されています。
RF送信機のAtmega8コード:
まず、 delay.h ヘッダーファイルをインクルードして、コードでdelayを使用します。
#include
ここで、 while ループが見つかるコードの最後の行に移動 し ます。メインコードはこのループに入ります。
では ながら ループ、我々はボタンが押されたときにPORTDへの0x10バイトを送信すると、ボタンが押されていないときは0x20を送信します。任意の値を使用して送信できます。
while(1) { if(PINB.0 == 1){PORTD = 0x10; } if(PINB.0 == 0){PORTD = 0x20; } } }
RF受信機のAtmegaコード
上記の最初の宣言変数 無効メイン RFモジュールからの着信の文字を格納するための機能。
#include
次に、 while ループに 移動し ます。このループでは、着信バイトをchar変数 バイトに 格納し、着信バイトがトランスミッター部分に書き込んだものと同じであるかどうかを確認します。バイトが同じである場合は、PortB.0をハイにし、LEDを切り替えるためにPORTB.0を使用しないでください。
while(1) { バイト= PIND; if(PIND.7 == 0 && PIND.6 == 0 && PIND.5 == 0 && PIND.4 == 1) { PORTB.0 = 〜PORTB.0; delay_ms(1000); }}}
プロジェクトを構築する
コードが完成しました。次に、 プロジェクト を ビルドする必要があります 。図のように、[プロジェクトのビルド]アイコンをクリックします。
プロジェクトをビルドした後、HEXファイルが Debug-> Exe フォルダーに生成されます。このフォルダーは、プロジェクトを保存するために以前に作成したフォルダーにあります。このHEXファイルを使用して、Sinaprogソフトウェアを使用してAtmega8にアップロードします。
コードをAtmega8にアップロードします
与えられた図に従って回路を接続し、Atmega8をプログラムします。FRCケーブルの片側をUSBASPプログラマーに接続し、反対側を以下に説明するようにマイクロコントローラーのSPIピンに接続します。
- FRCメスコネクタのピン1->ピン17、Atmega8のMOSI
- atmega8のVccに接続されたピン2、つまりピン7
- atmega8のリセットに接続されたピン5、すなわちピン1
- atmega8のSCKに接続されたピン7、つまりピン19
- atmega8のMISOに接続されたピン9、つまりピン18
- atmega8のGNDに接続されたピン8、すなわちピン8
回路図に従ってブレッドボード上の残りのコンポーネントを接続し、Sinaprogを開きます。
Sinaprog を使用して上記で生成されたHexファイルをアップロードするので 、 それを開いて、[デバイス]ドロップダウンメニューから[Atmega8]を選択します。図のように、[デバッグ] -> [Exe ]フォルダーからHEXファイルを選択します。
次に、[プログラム]をクリックします。
これで完了で、マイクロコントローラーがプログラムされます。同じ手順を使用して、受信機側で別のAtmegaをプログラムします。
完全なコードとデモンストレーションビデオを以下に示します。