娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

首頁 > 微機(jī)單片機(jī) >單片機(jī)制作 > 使用STM32的射頻模塊以無線方式發(fā)送和接收數(shù)據(jù)

使用STM32的射頻模塊以無線方式發(fā)送和接收數(shù)據(jù)

來源:互聯(lián)網(wǎng)發(fā)布者:念念Brown 關(guān)鍵詞: 微控制器 STM32 射頻模塊 STM32F103C8 更新時間: 2024/05/17

嵌入式電子產(chǎn)品中制作無線項(xiàng)目變得非常重要和有用,因?yàn)闆]有雜亂的電線,這使得設(shè)備更加方便和便攜。有各種無線技術(shù),例如藍(lán)牙、WiFi、433 MHz RF(射頻)等。每種技術(shù)都有其自身的優(yōu)缺點(diǎn),例如成本、距離或范圍傳輸、速度或吞吐量等。今天我們將使用STM32 的射頻模塊以無線方式發(fā)送和接收數(shù)據(jù)。

在這里,我們將連接一個 433MHz 射頻無線模塊與 STM32F103C8 微控制器。該項(xiàng)目分為兩部分。發(fā)送器將與 STM32 連接,接收器將與 Arduino UNO 連接。發(fā)射和接收部分都會有不同的電路圖和草圖。

在本教程中,RF 發(fā)射器向接收器端發(fā)送兩個值:使用超聲波傳感器測量的距離和電位計ADC值(0 到 4096),該值映射為(0 到 100)之間的數(shù)字。Arduino的RF 接收器接收這兩個值并以無線方式在16x2 LCD 顯示器中打印這些距離和數(shù)字值。

所需組件

STM32F103C8微控制器

Arduino UNO

433Mhz 射頻發(fā)射器和接收器

超聲波傳感器 (HC-SR04)

16x2 液晶顯示器

10k 電位器

面包板

連接電線

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

poYBAGMW_RKAOvz-AAKpQUI5gdo268.png

射頻發(fā)射器引腳:

poYBAGMW_ReAOOkMAAASEnq92p4995.png

射頻接收器引腳:

pYYBAGMW_RuAT2WgAAATsUpH2-g381.png

433 MHz 模塊規(guī)格:

接收器工作電壓:3V 至 5V

發(fā)射器工作電壓:3V 至 5V

工作頻率:433 MHz

傳輸距離:3米(不帶天線)至100米(最大)

調(diào)制技術(shù):ASK(幅移鍵控)

數(shù)據(jù)傳輸速度:10Kbps

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

pYYBAGMW_SWAHKrtAAIRtVh2LaM579.png

pYYBAGMW_SGARLbBAAaw4KJFslo483.png

射頻發(fā)射器和 STM32F103C8 之間的電路連接:

poYBAGMW_SyAH1W4AAAOAGl2qfo045.png

超聲波傳感器和 STM32F103C8 之間的電路連接:

pYYBAGMW_TKADJmCAAAOPQjdJqM774.png

STM32F103C8 連接一個10k 電位器,為 STM32 的 ADC 引腳 PA0 提供輸入模擬值(0 至 3.3V)。

帶有Arduino Uno的RF接收器電路圖

poYBAGMW_TeAVVdeAAFKTCYLQ_M012.png

pYYBAGMW_XaADvQjAAe5DiMSJd4408.png

射頻接收器和 Arduino UNO 之間的電路連接:

poYBAGMW_XyAKGtRAAAmuTowTpY967.png

16x2 LCD 和 Arduino UNO 之間的電路連接:

pYYBAGMW_YGAdph-AAB0Dsoxh2c821.png

下面將簡要解釋編碼。草圖將分為兩部分,第一部分是發(fā)射器部分,另一部分是接收器部分。所有草圖文件和工作視頻將在本教程結(jié)束時提供。要了解有關(guān)射頻模塊與 Arduino Uno 接口的更多信息,請點(diǎn)擊鏈接。

為無線射頻傳輸編程STM32F103C8

STM32F103C8 可以使用 Arduino IDE 進(jìn)行編程。無需 FTDI 編程器或 ST-Link即可將代碼上傳到 STM32F103C8。只需通過 STM32 的 USB 端口連接到 PC 并開始使用ARDUINO IDE進(jìn)行編程。

首先包含 Radiohead 庫,可以從這里下載。因?yàn)檫@個庫使用 ASK(幅移鍵控技術(shù))來傳輸和接收數(shù)據(jù)。這使得編程非常容易。您可以通過進(jìn)入 Sketch->include library->Add .zip library 在草圖中包含庫。

#include

正如在發(fā)射器端的本教程中一樣,超聲波傳感器用于測量距離,因此定義了觸發(fā)和回波引腳。

#define trig

接下來,將 RH_ASK 庫的對象名稱設(shè)置為 rf_driver,并使用諸如速度 (2000)、RX 引腳 (PA9) 和 TX 引腳 (PA10) 等參數(shù)。

RH_ASK rf_driver(2000, PA9, PA10);

接下來,聲明該程序所需的 Strings 變量。

字符串傳輸號碼;                            
字符串傳輸距離;
字符串傳輸;

接下來在 void setup() 中,初始化 RH_ASK rf_driver 的對象。

rf_driver.init();

之后觸發(fā)引腳設(shè)置為 OUTPUT 引腳,PA0(連接到電位器)和回波引腳設(shè)置為 INPUT 引腳。串行通信以 9600 的波特率開始。

   序列號.開始(9600);
    pinMode(PA0,輸入);
    pinMode(echoPin,輸入);
    pinMode(trigPin,輸出);

接下來在 void loop() 中,首先將輸入模擬電壓的電位器值轉(zhuǎn)換為數(shù)字值(找到 ADC 值)。由于STM32 的 ADC具有 12 位分辨率。因此,數(shù)字值從 (0 到 4096) 變化,映射到 (0 到 100)。

int 模擬輸入 = 模擬讀取(PA0);                  
    int pwmvalue = map(模擬輸入,0,4095,0,100);

接下來,使用超聲波傳感器測量距離,方法是設(shè)置觸發(fā)器高低,延遲 2 微秒。

數(shù)字寫入(trigPin,低);                          
    延遲微秒(2);
    digitalWri

回波針感測反射回來的波,即觸發(fā)波反射回來的持續(xù)時間用于使用公式計算物體的距離。通過點(diǎn)擊鏈接了解更多超聲波傳感器如何計算距離。

持續(xù)時間長 = pulseIn(echoPin, HIGH);              
    浮動距離=持續(xù)時間*0.034/2;

現(xiàn)在測量的數(shù)據(jù)數(shù)量和距離都轉(zhuǎn)換為字符串?dāng)?shù)據(jù)并存儲在相應(yīng)的字符串變量中。

傳輸數(shù)=字符串(pwm值);                     
    傳輸距離 = 字符串(距離);

兩個字符串都作為一行添加并存儲在稱為傳輸?shù)淖址校禾枴埃庇糜诜指魞蓚€字符串。

  傳輸=傳輸_pwm +“,”+傳輸距離;

傳輸字符串被轉(zhuǎn)換為字符數(shù)組。

const char *msg = transmit.c_str();

數(shù)據(jù)被傳輸并等待直到它被發(fā)送。

rf_driver.send((uint8_t *)msg, strlen(msg));         
    rf_driver.w

發(fā)送的字符串?dāng)?shù)據(jù)也顯示在串行監(jiān)視器中。

序列號.println(msg);

將 Arduino UNO 編程為 RF 接收器

Arduino UNO 使用 Arduino IDE 進(jìn)行編程。在接收器部分,從發(fā)射器部分發(fā)送并由 RF 接收器模塊接收的數(shù)據(jù)和接收到的字符串?dāng)?shù)據(jù)被拆分為各自的數(shù)據(jù)(距離和數(shù)量)并顯示在 16x2 LCD 顯示屏上。

讓我們簡要地看一下接收器編碼:

就像在發(fā)射器部分一樣,首先包含 RadiohHead 庫。因?yàn)檫@個庫使用 ASK(幅移鍵控技術(shù))來傳輸和接收數(shù)據(jù)。這使得編程非常容易。

#include

由于這里使用的是 LCD 顯示器,所以還包括了液晶庫。

#include

與 Arduino UNO 連接的 16x2 LCD 顯示引腳使用 lcd 作為對象指定和聲明。

液晶液晶(2,3,4,5,6,7);

接下來聲明用于存儲字符串?dāng)?shù)據(jù)的字符串?dāng)?shù)據(jù)變量。

字符串 str_receive;                
字符串 str_number; 
字符串 str_distance;

Radiohead 庫的對象已聲明。

  RH_ASK 射頻;

現(xiàn)在在void setup() 中,LCD 顯示設(shè)置為 16x2 模式,并顯示并清除歡迎消息。

lcd.開始(16,2);              
    lcd.print("電路文摘");  
    lcd.setCu

之后,初始化rf對象。

rf.init();

現(xiàn)在在void loop() 中,數(shù)組 buf[] 被聲明為大小為 7。因?yàn)閺陌l(fā)送器發(fā)送的數(shù)據(jù)有 7,包括“,”。因此,根據(jù)要傳輸?shù)臄?shù)據(jù)進(jìn)行更改。

uint8_t buf[7];                       
    uint8_t buflen = sizeof(buf);

如果該字符串在 rf 接收器模塊中可用,則 if 函數(shù)會檢查大小并執(zhí)行。rf.recv()用于接收數(shù)據(jù)。

如果 (rf.recv(buf, &buflen))

buf具有接收到的字符串,因此接收到的字符串存儲在str_receive字符串變量中。

str_receive = String((char*)buf);

如果檢測到兩個字符串之間的“,”,則此for循環(huán)用于將接收到的字符串分成兩部分。

  for (int i = 0; i < str_receive.length(); i++)             
      { 
      if (str_receive.substring(i, i+1) == ",")                  
      { 
      str_number = str_receive.substring(0, i); 
      str_distance = str_receive.substring(i+1); 
      休息; 
      }

聲明兩個值的兩個 char 數(shù)組,通過將字符串轉(zhuǎn)換為字符數(shù)組,將分成兩個的字符串存儲在相關(guān)數(shù)組中。

  字符數(shù)串[4]; 
      字符距離字符串[3];
      str_distance.toCharArray(distancestring,3);             
      str_number.toCharArray(numberstring,3);

之后使用 atoi() 將字符數(shù)組轉(zhuǎn)換為整數(shù)

  int 距離 = atoi(距離字符串);                   
      int number = atoi(numberstring);

轉(zhuǎn)換成整數(shù)值后,距離和數(shù)字值顯示在 16x2 LCD 顯示屏中

  lcd.setCursor(0,0); 
      lcd.print("編號:"); 
      lcd.print(數(shù)字);                 
      lcd.setCursor(0,1); 
      lcd.print("距離:"); 
      lcd.print(距離);                   
      lcd.print("cm");

分別在STM32和Arduino UNO中上傳發(fā)射器和接收器代碼后,使用STM32測量的數(shù)字和物體距離等數(shù)據(jù)通過RF發(fā)射器傳輸?shù)絉F接收器,接收到的值以無線方式顯示在LCD顯示屏上。

測試基于 STM 32 的射頻發(fā)射器和接收器

1.當(dāng)數(shù)字為0且物體距離為6cm時。

poYBAGMW_PaAN-MsAAbluVE2PLA288.png

2.當(dāng)數(shù)字47和物體距離為3cm時。

pYYBAGMW_PKAUi2rAAYfr71s6Cs483.png
發(fā)射器代碼(STM32F103C8):


//433MHZ射頻發(fā)射器與STM32F103C8


//發(fā)射機(jī)代碼


//電路文摘


#include

提問/討論

這里還沒有內(nèi)容,您有什么問題嗎?

我要提問/討論

推薦帖子 最新更新時間:2025-06-16 13:37

為什么語音IC接上功放電路后就沒有聲音了呢
求大神們看看是電路哪里出了問題,喇叭直接接語音IC是可以播放聲音的,但是接了功放后就沒有聲音了,。功放的1腳給的是高 為什么語音IC接上功放電路后就沒有聲音了呢 估計是接插件發(fā)生短路、焊接出現(xiàn)短路、功放電路中元件損壞 既然 喇叭直接接語音IC是可以播放聲音的 ,那么你的語
 吃星星的狼模擬電子
【RT-Thread軟件包應(yīng)用作品】+開箱和開發(fā)環(huán)境建立
開箱和環(huán)境建立 開箱 打開紙箱,看到一個塑料小盒子,里面裝置本次使用的開發(fā)板,一條usb數(shù)據(jù)線,一個遙控器和兩條杜邦想。 正面細(xì)節(jié)圖 背面細(xì)節(jié)圖 連上USB數(shù)據(jù)線,開關(guān)達(dá)到 ON ,首次上電運(yùn)行: 后面還有一頁是二
 我愛下載實(shí)時操作系統(tǒng)RTOS
國內(nèi)有好的EDA設(shè)計工具廠商嗎
我知道EDA大巨頭都是國外的,國內(nèi)有好的EDA設(shè)計工具廠商嗎? 國內(nèi)有好的EDA設(shè)計工具廠商嗎 前兩天看到了一片列舉國內(nèi)做EDA軟件的,有哪些忘了 我知道的有華大九天,做的EDA是IC設(shè)計上的某些工具。。 知道有一個 和某個PCB打樣商城平臺綁定一起 真正從底層做
 kernelkoderPCB設(shè)計
【國賽專訪】“三只弱雞”抱回H題一等獎,憑運(yùn)氣獲獎的來啦!?
你遇到的獲得國賽一等獎是不是一般都是這樣的: 從小拆裝收音機(jī)、電視機(jī)的發(fā)燒友,電子工程師二代、精通模電、數(shù)電的超級學(xué)霸 那你有沒有遇到這樣的: 入學(xué)前電子基礎(chǔ)幾乎為零,參賽時還是大一學(xué)生、直到現(xiàn)在模電知識還很欠缺 卻獲得了H題 模擬電磁曲射炮的國家一等獎,
 nmg電子競賽
【零知ESP8266教程】快速入門25 blynk控制RGB LED
本文講解繼續(xù)使用blynk app+服務(wù)器(本地) + 零知ESP8266硬件的方法,通過手機(jī)APP控制RGB led三色燈。 一、硬件 1.電腦,windows系統(tǒng) 2.零知ESP8266開發(fā)板 3.智能手機(jī)一部 + app(Blynk) 4.micro-usb線 5.RGB
 roc2stm32/stm8
Qorvo收購Active-Semi背后你不知道的二三事!
Qorvo為什么收購Active-Semi? 這首先從Active-Semi所關(guān)注的市場的發(fā)展前景看出點(diǎn)端倪。如下圖所示,電源管理在Qorvo所專注的IDP(包括5G基站、國防有源相控陣、汽車和物聯(lián)網(wǎng))市場的營收貢獻(xiàn)將會越來越多。 這也是Active-Sem
 alan000345無線連接

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

About Us 關(guān)于我們 客戶服務(wù) 聯(lián)系方式 器件索引 網(wǎng)站地圖 最新更新 手機(jī)版 版權(quán)聲明

EEWORLD 電路圖 站點(diǎn)相關(guān): 下載中心 Datasheet 參考設(shè)計

北京市海淀區(qū)中關(guān)村大街18號B座15層1530室 電話:(010)82350740 郵編:100190

電子工程世界版權(quán)所有 京B2-20211791 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 宣武区| 新化县| 玛纳斯县| 蓬溪县| 大洼县| 江山市| 盐池县| 武冈市| 泸定县| 原平市| 繁峙县| 东丽区| 宁河县| 女性| 武清区| 班玛县| SHOW| 武邑县| 宣化县| 新竹市| 沿河| 客服| 嵩明县| 玉林市| 开封县| 龙游县| 油尖旺区| 馆陶县| 共和县| 启东市| 奉贤区| 藁城市| 陆河县| 沂南县| 喀喇沁旗| 任丘市| 昂仁县| 治县。| 青浦区| 尼玛县| 旬邑县|