0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用433 MHz RF模塊和AVR微控制器構建無線項目

科技觀察員 ? 來源:circuitdigest ? 作者:里沙布·耆那教 ? 2022-11-10 16:27 ? 次閱讀

使我們的項目無線化總是讓它看起來很酷,并擴展了可以控制的范圍。從使用普通紅外 LED 進行短距離無線控制到 ESP8266 進行全球 HTTP 控制,有很多方法可以無線控制某些東西。在本項目中,我們將學習如何使用 433 MHz RF 模塊和 AVR 微控制器構建無線項目。

在這個項目中,我們做以下事情:-

我們將 Atmega8 用于射頻發(fā)射器,將Atmega8用于射頻接收器部分。

我們將 LED 和按鈕與 Atmega8 微控制器連接。

在發(fā)射器方面,我們將按鈕與Atmega連接并傳輸數據。在接收器側,我們將無線接收數據并在LED上顯示輸出。

我們使用編碼器和解碼器IC來傳輸4位數據。

接收頻率為433Mhz,使用市場上廉價的RF TX-RX模塊。

所需組件

Atmega8 AVR 微控制器 (2)

USBASP 編程

10 針 FRC 電纜

面包板 (2)

發(fā)光二極管 (2)

按鈕 (1)

HT12D 和 HT12E 對

射頻模塊

電阻器 (10k,47k,1M)

跳線

5V電源

使用的軟件

我們使用CodeVisionAVR軟件編寫代碼,使用SinaProg軟件使用USBASP程序員將代碼上傳到Atmega8。

在介紹原理圖和代碼之前,讓我們先了解RF模塊與編碼器-解碼器IC的工作原理。

433MHz 射頻發(fā)射器和接收器模塊

poYBAGNstfuABJG3AAB8VoOuxt8447.jpg

這些是我們在項目中使用的發(fā)射器和接收器模塊。它是433 MHz最便宜的模塊,這些模塊在一個通道中接受串行數據。

如果我們看到模塊的規(guī)格變送器的額定工作電壓為3.5-12V,發(fā)射距離為20-200米。它確實以433 MHz 頻率的 AM(音頻調制)協(xié)議傳輸。我們可以以 4KB/S 的速度以 10mW 的功率傳輸數據。

pYYBAGNstf2AXIXdAABpsZwtuo0906.jpg

在上圖中,我們可以看到發(fā)射器模塊的引腳。從左到右,引腳是VCC,DATA和GND。我們還可以添加天線并將其焊接在上圖中表示的點上。

對于接收器規(guī)格,接收器的額定電壓為5V 直流,靜態(tài)電流為 4MA作為輸入。接收頻率為433.92 MHz,靈敏度為-105DB。

poYBAGNstf6Ae-9TAADRKwtBnnQ615.jpg

在上圖中,我們可以看到接收器模塊的引腳。四個引腳從左到右依次為VCC、數據、數據和GND。中間的兩個引腳在內部連接。我們可以使用任何一個或兩個。但是,最好同時使用兩者來降低噪聲耦合。

此外,數據表中沒有提到一件事,模塊中間的可變電感或POT用于頻率校準。如果我們無法接收傳輸的數據,則發(fā)射和接收頻率可能不匹配。這是一個射頻電路,我們需要將發(fā)射器調諧到完美的發(fā)射頻率點。此外,與發(fā)射器相同,該模塊也有一個天線端口;我們可以以線圈形式焊接焊絲,以獲得更長的接收時間。

傳輸范圍取決于提供給發(fā)射器的電壓和兩側天線的長度。對于這個特定的項目,我們沒有使用外部天線,而是在發(fā)射器側使用了5V。我們檢查了5米的距離,效果很好。

電路圖

射頻發(fā)射器側電路圖

pYYBAGNstf-AYvCEAADIZWuT-xs205.png

引腳 D7 的 atmega8 -> 引腳 13 HT12E

引腳 D6 的 atmega8 -> 引腳 12 HT12E

atmega8 的引腳 D5 -> 引腳 11 HT12E

引腳 D4 的 atmega8 -> 引腳 10 HT12E

按鈕固定 Atmega 的 B0。

HT12E 引腳 15 和 16 之間的 1M 歐姆電阻。

HT12E 的引腳 17 連接到射頻發(fā)射器模塊的數據引腳。

HT12E 至 5V 的引腳 18。

HT12E 的 GND 引腳 1-9 和引腳 14 以及 Atmega 的引腳 8。

射頻接收器側電路圖

pYYBAGNstgGAPWrlAAC1W291RfY529.png

atmega8 的引腳 D7 -> 引腳 13 HT12D

引腳 D6 的 atmega8 -> 引腳 12 HT12D

引腳 D5 的 atmega8 -> 引腳 11 HT12D

引腳 D4 的 atmega8 -> 引腳 10 HT12d

LED 連接到 Atmega 的引腳 B0。

HT12D的引腳14到射頻接收器模塊的數據引腳。

HT12D 引腳 15 和 16 之間的 47Kohm 電阻。

HT12D 的 GND 引腳 1-9 和 Atmega 的引腳 8。

LED 連接到 HT12D 的引腳 17。

5V 至 Atmega 的引腳 7 和 HT12D 的引腳 18。

poYBAGNstgWASCcaAAFDEsWfMOM192.jpg

使用 CodeVision 為 Atmega 8 創(chuàng)建項目

安裝這些軟件后,請按照以下步驟創(chuàng)建項目并編寫代碼:

第 1 步。打開 CodeVision 單擊“文件 -> 新建”-> 項目。將出現(xiàn)確認對話框。點擊是

pYYBAGNstgeAVZa0AACSmU93eSM529.png

第 2 步。代碼向導將打開。單擊第一個選項,即 AT90,然后單擊確定。

poYBAGNstgmACh7MAAC8vZSNJSE162.png

第 3 步。選擇您的微控制器芯片,在這里我們將采用如圖所示的Atmega8。

poYBAGNstg2AbRY7AACn3AGlTK4574.png

第 4 步:-單擊端口。在變送器部分,按鈕是我們的輸入,輸出4條數據線。因此,我們必須初始化 Atmega 的 4 個引腳作為輸出。單擊端口 D.通過單擊使位 7、6、5 和 4 輸出。

pYYBAGNstg-AR2vFAABkiPCrAIw650.png

第 5 步:-單擊程序 - >生成,保存并退出。現(xiàn)在,我們一半以上的工作已經完成

pYYBAGNsthGAZpFAAACKBkwvfRU739.png

第 6 步:-在桌面上創(chuàng)建一個新文件夾,以便我們的文件保留在文件夾中,否則它將分散在整個桌面窗口中。根據需要命名您的文件夾,我建議使用相同的名稱來保存程序文件。

我們將有一個接一個的三個對話框來保存文件。對保存第一個對話框后將出現(xiàn)的其他兩個對話框執(zhí)行相同的操作。

現(xiàn)在,您的工作區(qū)如下所示。

poYBAGNsthSAGAeOAADie_Din-E232.png

我們的大部分工作都是在向導的幫助下完成的。現(xiàn)在,我們只需要為發(fā)射器和接收器部分編寫幾行代碼,就是這樣......

按照相同的步驟為接收器部分創(chuàng)建文件。在接收器部分,只有 Led 是我們的輸出,因此使端口 B0 位輸出。

代碼和解釋

我們將編寫使用 RF 無線切換 LED的代碼。本文末尾給出了發(fā)射器和接收器側的 Atmega 的完整代碼。

射頻發(fā)射器的 Atmega8 代碼:

首先包含delay.h頭文件以在我們的代碼中使用 delay。

#include

#include

void main(void)

{

現(xiàn)在,來到代碼的最后一行,您將在其中找到一個 while循環(huán)。我們的主代碼將在此循環(huán)中。

在 While 循環(huán)中,我們將在按下按鈕時將0x10字節(jié)發(fā)送到 PORTD,并在未按下按鈕時發(fā)送0x20。您可以使用任何值進行發(fā)送。

while (1)

{

if(PINB.0 == 1) {

PORTD = 0x10;

}

if(PINB.0 == 0) {

PORTD = 0x20;

}

}

}

射頻接收器的Atmega代碼

首先在 void main 函數上方聲明變量,用于存儲來自 RF 模塊的傳入字符。

#include

#include

#include

unsigned char byte = 0;

void main(void) {

現(xiàn)在來到while循環(huán)。在此循環(huán)中,將傳入字節(jié)存儲到 char 變量字節(jié),并檢查傳入字節(jié)是否與我們在發(fā)射器部分中寫入的字節(jié)相同。如果字節(jié)相同,請將端口 B.0設置為高電平,而不是使用 PORTB.0 來切換 LED。

while (1)

{

byte = PIND;

if(PIND.7==0 && PIND.6==0 && PIND.5==0 && PIND.4==1)

{

PORTB.0 = ~PORTB.0;

delay_ms(1000);

} } }

構建項目

我們的代碼完成了?,F(xiàn)在,我們必須構建我們的項目。單擊“構建項目”圖標,如下所示。

pYYBAGNstheAYkYEAACkCgYppvc374.png

構建項目后,將在調試> Exe文件夾中生成一個十六進制文件,該文件可以在您之前為保存項目而創(chuàng)建的文件夾中找到。我們將使用此十六進制文件通過Sinaprog軟件上傳到Atmega8中。

將代碼上傳到 Atmega8

根據給定的圖表連接電路以編程Atmega8。將FRC電纜的一端連接到USBASP編程器,另一端將連接到微控制器的SPI引腳,如下所述:

poYBAGNsthyAC-5XAABxP4nGW2o051.png

FRC 母連接器引腳 1 -> 引腳 17,Atmega8 的 MOSI

引腳 2 連接到 atmega8 的 Vcc,即引腳 7

引腳 5 連接到 atmega8 的復位,即引腳 1

引腳 7 連接到 atmega8 的 SCK,即引腳 19

引腳 9 連接到 atmega8 的 MISO,即引腳 18

引腳 8 連接到 atmega8 的 GND,即引腳 8

按照電路圖連接試驗板上的其余組件,然后打開Sinaprog。

我們將使用Sinaprog上傳上面生成的十六進制文件,因此打開它并從設備下拉菜單中選擇 Atmega8。從調試> Exe 文件夾中選擇十六進制文件,如下所示。

poYBAGNsth6APZghAABgEvRne9E388.png

現(xiàn)在,單擊程序。

pYYBAGNstiCAfbqhAAD6CIV689g154.jpg

您已完成,您的微控制器已編程。使用相同的步驟在接收器側對另一個Atmega進行編程。

Code for Transmitter Part:


#include

#include

void main(void)

{

DDRB=(0<
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=0

PORTB=(0<

// Port C initialization

// Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In

DDRC=(1<
// State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

PORTC=(0<

// Port D initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In

DDRD=(1<
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

PORTD=(0<
while (1)

{

if(PINB.0 == 1) {

PORTD = 0x10;

}

if(PINB.0 == 0) {

PORTD = 0x20;

}

}

}


Code for Receiver Part:


#include

#include

// Declare your global variables here

unsigned char byte = 0;

unsigned char lightON = 0;//light status

int LED_status = 0;

void main(void)

{

// Input/Output Ports initialization

// Port B initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out

DDRB=(0<
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=0 Bit0=0

PORTB=(0<
// Port D initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In

DDRD=(0<
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

PORTD=(0<
while (1)

{

byte = PIND;

if(PIND.7==0 && PIND.6==0 && PIND.5==0 && PIND.4==1 && LED_status==0)

{

PORTB.0 = ~PORTB.0;

delay_ms(1000);

}

}

}


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7336

    瀏覽量

    150119
  • HTTP
    +關注

    關注

    0

    文章

    478

    瀏覽量

    30765
  • ESP8266
    +關注

    關注

    50

    文章

    959

    瀏覽量

    44545
收藏 人收藏

    評論

    相關推薦

    如何使用8051微控制器和藍牙模塊構建一個Android手機控制的機器人

    在這個項目中,我們將使用8051微控制器和藍牙模塊構建一個Android手機控制的機器人。該機器人是使用直流電機設計的,直流電機的方向將由從
    發(fā)表于 11-18 16:37 ?1367次閱讀
    如何使用8051<b class='flag-5'>微控制器</b>和藍牙<b class='flag-5'>模塊</b><b class='flag-5'>構建</b>一個Android手機<b class='flag-5'>控制</b>的機器人

    8位AVR USB微控制器供電的加密狗應用電路

    AVR296 AVRUSBRF01 USB / RF加密狗應用電路由AT90USB162 8位AVR USB微控制器供電。該板設計用于使用提供的演示軟件輕松評估USB和
    發(fā)表于 03-10 09:59

    怎樣去設計一種基于433MHz RF模塊的Arduino遙控小船

    使用433MHz RF模塊制作一艘簡易的Arduino遙控小船本篇文章中,我們將制作一個遠程控制的Arduino小船,可以使用433
    發(fā)表于 09-17 06:37

    Arduino配合RF 433MHz收發(fā)模塊實現(xiàn)無線通信

    使用。   如何用Arduino控制   閑話不多說,我們直接實踐。接下去我們就演示一下Arduino配合RF 433MHz收發(fā)模塊實現(xiàn)無線
    發(fā)表于 05-15 15:35

    內嵌微控制器無線數據發(fā)射的特性及應用

    簡要介紹內嵌AVR RISC 微控制器無線數據發(fā)射AT86RF401 的功能、內部結構、引腳排列及典型的應用電路。
    發(fā)表于 05-13 15:57 ?13次下載

    如何實現(xiàn)用AVR微控制器控制音樂播放?

    AVR微控制器控制的音樂播放
    的頭像 發(fā)表于 07-10 00:46 ?2831次閱讀

    關于AVR XMEGA微控制器的介紹

    Atmel AVR XMEGA 微控制器
    的頭像 發(fā)表于 07-09 04:10 ?3379次閱讀

    關于AVR微控制器的的省能技巧介紹

    適用於所有AVR微控制器的一般省能技巧 - 在無犧牲功能和績效的情況下節(jié)省用電,為AVR微控制器帶來更大效益!
    的頭像 發(fā)表于 07-08 01:08 ?2684次閱讀

    關于AVR微控制器最早期的樣品介紹

    愛特梅爾AVR微控制器共同發(fā)明人兼首席營銷官Alf-Egil Bogen 介紹AVR微控制器最早期的樣品。
    的頭像 發(fā)表于 07-06 05:38 ?4126次閱讀

    關于RF433無線模塊及應用領域分析詳解

    433MHz無線收發(fā)模組,采用高頻射頻技術,因此也叫RF433射頻小模塊。其由全數字科技生產的單IC射頻前端與ATMEL的AVR單片機組成,
    發(fā)表于 04-30 14:08 ?4w次閱讀

    如何使用Arduino構建一個無線門鈴

     在這個項目中,我們將使用 Arduino 構建一個無線門鈴。我們將有一個按鈕,按下該按鈕將無線播放我們選擇的旋律,以指示有人在門口。對于無線
    發(fā)表于 08-19 15:57 ?1662次閱讀
    如何使用Arduino<b class='flag-5'>構建</b>一個<b class='flag-5'>無線</b>門鈴

    使用AVR微控制器構建一個生物識別考勤系統(tǒng)

    在這個項目中,我們將使用 AVR 微控制器構建一個生物識別考勤系統(tǒng)取代人工考勤程序。該系統(tǒng)將更加可靠和高效,因為它可以節(jié)省時間并避免躲閃。
    發(fā)表于 08-24 15:49 ?598次閱讀
    使用<b class='flag-5'>AVR</b><b class='flag-5'>微控制器</b><b class='flag-5'>構建</b>一個生物識別考勤系統(tǒng)

    單片機常用模塊433無線數傳通信

    今天向大家介紹一個單片機開發(fā)常用模塊433無線數傳模塊。無線收發(fā)模塊
    發(fā)表于 05-31 15:39 ?5次下載
    單片機常用<b class='flag-5'>模塊</b>:<b class='flag-5'>433</b><b class='flag-5'>無線</b>數傳通信

    使用STM32WB系列微控制器構建無線應用

    電子發(fā)燒友網站提供《使用STM32WB系列微控制器構建無線應用.pdf》資料免費下載
    發(fā)表于 09-20 10:15 ?2次下載
    使用STM32WB系列<b class='flag-5'>微控制器</b><b class='flag-5'>構建</b><b class='flag-5'>無線</b>應用

    RF4463PRO 433MHz LoRa模塊100mW高性能無線收發(fā)模塊V3

    433MHz LoRa模塊是一種基于433MHz頻段的LoRa無線通信模塊。LoRa是一種低功耗、遠距離通信技術,適用于物聯(lián)網、遠程監(jiān)控、智
    發(fā)表于 10-19 14:49 ?0次下載