女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

3天內不再提示

使用STM32的射頻模塊以無線方式發送和接收數據

科技觀察員 ? 來源:circuitdigest ? 作者:Pramoth Thangavel ? 2022-09-06 16:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式電子產品中制作無線項目變得非常重要和有用,因為沒有雜亂的電線,這使得設備更加方便和便攜。有各種無線技術,例如藍牙、WiFi、433 MHz RF射頻)等。每種技術都有其自身的優缺點,例如成本、距離或范圍傳輸、速度或吞吐量等。今天我們將使用STM32 的射頻模塊以無線方式發送和接收數據。

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

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

所需組件

STM32F103C8微控制器

Arduino UNO

433Mhz 射頻發射器和接收器

超聲波傳感器 (HC-SR04)

16x2 液晶顯示器

10k 電位器

面包板

連接電線

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

poYBAGMW_RKAOvz-AAKpQUI5gdo268.png

射頻發射器引腳:

poYBAGMW_ReAOOkMAAASEnq92p4995.png

射頻接收器引腳:

pYYBAGMW_RuAT2WgAAATsUpH2-g381.png

433 MHz 模塊規格:

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

發射器工作電壓:3V 至 5V

工作頻率:433 MHz

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

調制技術:ASK(幅移鍵控)

數據傳輸速度:10Kbps

STM32F103C8射頻發射器電路圖

pYYBAGMW_SWAHKrtAAIRtVh2LaM579.png

pYYBAGMW_SGARLbBAAaw4KJFslo483.png

射頻發射器和 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

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

為無線射頻傳輸編程STM32F103C8

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

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

#include     

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

#define trigPin PB1                             
#define echoPin PB0          

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

RH_ASK rf_driver(2000, PA9, PA10);             

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

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

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

rf_driver.init();

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

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

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

    int 模擬輸入 = 模擬讀?。≒A0);                  
    int pwmvalue = map(模擬輸入,0,4095,0,100);        

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

    數字寫入(trigPin,低);                          
    延遲微秒(2);
    digitalWrite(trigPin, HIGH);                          
    延遲微秒(10);
    數字寫入(trigPin,低);                          

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

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

現在測量的數據數量和距離都轉換為字符串數據并存儲在相應的字符串變量中。

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

兩個字符串都作為一行添加并存儲在稱為傳輸的字符串中,逗號“,”用于分隔兩個字符串。

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

傳輸字符串被轉換為字符數組。

    const char *msg = transmit.c_str();    

數據被傳輸并等待直到它被發送。

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

發送的字符串數據也顯示在串行監視器中。

    序列號.println(msg);                                     

將 Arduino UNO 編程為 RF 接收器

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

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

就像在發射器部分一樣,首先包含 RadiohHead 庫。因為這個庫使用 ASK(幅移鍵控技術)來傳輸和接收數據。這使得編程非常容易。

#include                 

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

#include    

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

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

接下來聲明用于存儲字符串數據的字符串數據變量。

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

Radiohead 庫的對象已聲明。

      RH_ASK 射頻;                          

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

    lcd.開始(16,2);              
    lcd.print("電路文摘");  
    lcd.setCursor(0,1); 
    lcd.print("STM32 射頻"); 
    延遲(5000);
    lcd.clear();

之后,初始化rf對象。

rf.init();                    

現在在void loop() 中,數組 buf[] 被聲明為大小為 7。因為從發送器發送的數據有 7,包括“,”。因此,根據要傳輸的數據進行更改。

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

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

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

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

str_receive = String((char*)buf);                         

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

      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 數組,通過將字符串轉換為字符數組,將分成兩個的字符串存儲在相關數組中。

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

之后使用 atoi() 將字符數組轉換為整數

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

轉換成整數值后,距離和數字值顯示在 16x2 LCD 顯示屏中

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

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

測試基于 STM 32 的射頻發射器和接收器

1.當數字為0且物體距離為6cm時。

poYBAGMW_PaAN-MsAAbluVE2PLA288.png

2.當數字47和物體距離為3cm時。

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


//433MHZ射頻發射器與STM32F103C8


//發射機代碼


//電路文摘


#include //RadioHead 庫


#define trigPin PB1 //設置超聲波傳感器的Trigpin為PB1


#define echoPin PB0 //設置超聲波傳感器的echoPin為PB0


RH_ASK rf_driver(2000, PA9, PA10); //設置引腳PA9為接收器,PA10為發送器,2000為速度





字符串傳輸_pwm;//存儲字符串值的字符串


字符串傳輸距離;


字符串傳輸;


無效設置()


{


// 初始化 ASK 對象


rf_driver.init();


序列號.開始(9600);


pinMode(PA0,輸入);


pinMode(echoPin,輸入);


pinMode(trigPin,輸出);


}





無效循環()


{


int 模擬輸入 = 模擬讀?。≒A0);// 來自連接到電位器的引腳 PA0 的 ADC 值


int pwmvalue = map(模擬輸入,0,4096,0,100);// 將 0 到 4096 轉換為 0 到 100





數字寫入(trigPin,低);//將超聲波的TrigPin設為LOW


延遲微秒(2);


digitalWrite(trigPin, HIGH); //使Ultrasonic HIGH的TrigPin


延遲微秒(10);


數字寫入(trigPin,低);//將超聲波的TrigPin設為LOW


持續時間長 = pulseIn(echoPin, HIGH); //接收反射的Echo信號


浮動距離=持續時間*0.034/2;//計算對象的CM距離


傳輸_pwm =字符串(pwm值);//將值轉換為字符串


傳輸距離 = 字符串(距離);//將值轉換為字符串


傳輸=傳輸_pwm +“,”+傳輸距離;//在一行中添加兩個字符串


const char *msg = transmit.c_str(); //


rf_driver.send((uint8_t *)msg, strlen(msg)); //發送字符串


rf_driver.waitPacketSent();


序列號.println(msg); //用于調試的串行打印值


延遲(1000);


}





接收器代碼(Arduino UNO):


//接收器Arduino代碼


//433MHZ射頻,STM32F103C8作為發射器


//電路文摘





#include //包含 RadioHead 庫


#include //包含LCD顯示庫





液晶液晶(2,3,4,5,6,7); //使用連接到 Arduino 的引腳初始化 lcd


字符串 str_receive; //存儲值的字符串


字符串 str_number;


字符串 str_distance;





RH_ASK 射頻;//rf 作為 RG_ASK 的對象


無效設置()


{


lcd.開始(16,2);//液晶屏設置為16x2模式


lcd.print("電路文摘"); //顯示歡迎信息


lcd.setCursor(0,1);


lcd.print("STM32 射頻");


延遲(5000);


lcd.clear();


rf.init(); //初始化射頻對象


}





無效循環()


{


uint8_t buf[7];


uint8_t buflen = sizeof(buf);


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


{


str_receive = String((char*)buf); // 從發送器接收字符串


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);


休息;


}


}


字符數串[4];


字符距離字符串[3];





str_distance.toCharArray(distancestring,3); //將字符串轉換為字符數組


str_number.toCharArray(numberstring,3);





int 距離 = atoi(距離字符串);//將數組轉換成整數值


int number = atoi(numberstring);





lcd.setCursor(0,0);


lcd.print("編號:");


lcd.print(數字); //在LCD顯示屏上顯示數值


lcd.setCursor(0,1);


lcd.print("距離:");


lcd.print(距離);//在液晶顯示屏上顯示距離值


lcd.print("cm");


延遲(1500);


lcd.clear();


}


}

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

    關注

    48

    文章

    7933

    瀏覽量

    154126
  • STM32
    +關注

    關注

    2291

    文章

    11022

    瀏覽量

    363517
  • 射頻模塊
    +關注

    關注

    5

    文章

    88

    瀏覽量

    20046
  • STM32F103C8
    +關注

    關注

    1

    文章

    23

    瀏覽量

    8283
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    STM32串口發送數據接收數據方式總結

    STM32串口發送數據接收數據方式總結
    的頭像 發表于 09-19 09:14 ?8962次閱讀
    <b class='flag-5'>STM32</b>串口<b class='flag-5'>發送</b><b class='flag-5'>數據</b>和<b class='flag-5'>接收</b><b class='flag-5'>數據</b><b class='flag-5'>方式</b>總結

    請問使用nRF24L01射頻模塊發送接收數據,發送、接收一次數據消耗多少時間?

    請問,使用nRF24L01射頻模塊發送、接收數據,發送、接收
    發表于 05-19 04:36

    STM32串口發送數據接收數據方式

    STM32串口發送數據接收數據方式總結!
    發表于 01-25 06:54

    STM32使用LoRa模塊無線發送接收 精選資料推薦

    無線發送傳感器數據。 BME280氣壓傳感器提供氣壓,溫度,濕度等信息。STM32 LoRa發送器將傳感器
    發表于 08-11 08:44

    STM32CubeMX串口發送接收數據

    STM32CubeMX之串口配置??串口通信是一種設備間非常常用的串行通信方式比特位的形式發送接收
    發表于 08-16 06:58

    STM32串口發送數據接收數據方式有哪些?

    STM32串口發送數據接收數據方式有哪些?
    發表于 12-02 07:15

    stm32 uart1如何通過DMA方式發送接收數據?

    stm32 uart1如何通過DMA方式發送接收數據?
    發表于 12-08 07:05

    射頻無線發送接收芯片TRF6900在短距離無線數據傳輸中的應

    射頻無線發送接收芯片TRF6900在短距離無線數據傳輸中的應用 摘要: 本文介紹TI公司推出的
    發表于 11-13 21:22 ?60次下載

    STM32_CAN發送接收過濾原理

    STM32_CAN發送接收過濾原理介紹。
    發表于 07-22 17:04 ?9次下載

    無線電信號的發送接收

    廣大無線電愛好者都知道無線電通信是利用電磁波在空間的傳播來傳遞信息的。 但是電磁波又是怎樣把信息傳遞出去的呢?對于無線電信號是怎樣發送接收
    發表于 03-09 10:17 ?1.6w次閱讀

    STM32串口發送數據接收數據方式總結!

    串口發送數據最直接的方式就是標準調用庫函數 。
    發表于 01-27 06:03 ?9次下載
    <b class='flag-5'>STM32</b>串口<b class='flag-5'>發送</b><b class='flag-5'>數據</b>和<b class='flag-5'>接收</b><b class='flag-5'>數據</b><b class='flag-5'>方式</b>總結!

    STM32接收CVI發送數據程序

    上一篇文章分享了CVI發送數據STM32的程序,(LabwindowsCVI上位機通過串口向STM32發送
    發表于 12-20 19:36 ?9次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>接收</b>CVI<b class='flag-5'>發送</b>的<b class='flag-5'>數據</b>程序

    使用STM32F103C8和SIM800C GSM模塊發送/接收短信

    在本教程中,此類GSM 模塊將與 STM32F103C8 ARM 微控制器連接,從程序中配置的蜂窩移動號碼發送接收文本消息 (SMS)。
    的頭像 發表于 09-07 15:34 ?2.2w次閱讀
    使用<b class='flag-5'>STM32</b>F103C8和SIM800C GSM<b class='flag-5'>模塊</b><b class='flag-5'>發送</b>/<b class='flag-5'>接收</b>短信

    433模塊發送接收 433無線模塊使用方法

    433模塊是一種常用的無線通信模塊,用于實現短距離無線通信。在433模塊中,一般有發送
    發表于 06-12 17:41 ?1.5w次閱讀

    STM32串口的發送接收

    USART是STM32內部集成的硬件外設,可以根據數據寄存器的一個字節數據自動生成數據幀時序,從TX引腳發送出去,也可以自動
    的頭像 發表于 11-10 16:04 ?2074次閱讀
    <b class='flag-5'>STM32</b>串口的<b class='flag-5'>發送</b>和<b class='flag-5'>接收</b>
    主站蜘蛛池模板: 泰和县| 右玉县| 金湖县| 郸城县| 淮安市| 崇礼县| 汕尾市| 财经| 郓城县| 宕昌县| 巴林左旗| 大足县| 浠水县| 泾阳县| 博客| 抚顺县| 炎陵县| 合江县| 柞水县| 化隆| 沁水县| 伊通| 广平县| 来安县| 龙岩市| 登封市| 肇源县| 瑞安市| 抚州市| 来安县| 时尚| 那坡县| 嘉鱼县| 盖州市| 巴楚县| 南木林县| 延长县| 华宁县| 田东县| 苏尼特左旗| 凤阳县|