精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內(nèi)不再提示

結(jié)合STM32、Arduino理解紅外遙控編解碼通信原理

strongerHuang ? 來源:MultiMCU EDU ? 2023-03-14 09:46 ? 次閱讀

紅外遙控我們并不陌生,身邊隨處可見,最常見的就是家電中的紅外遙控,那你知道其中的收發(fā)原理嗎?

d4fe66b8-c18e-11ed-bfe3-dac502259ad0.gif ?

今天就來分享一篇關(guān)于紅外解碼的文章。

1 硬件連接

紅外解碼只需連3 根線(2 根電源 + 1 根數(shù)據(jù))即可,如下圖中TSOP382。 d5166c54-c18e-11ed-bfe3-dac502259ad0.jpg

2 NEC 協(xié)議解碼

本文所述的紅外編解碼采用 NEC 協(xié)議。通信的數(shù)據(jù)幀里使用 高電平時間 來區(qū)分 0 和 1。

d5305bfa-c18e-11ed-bfe3-dac502259ad0.jpg

對于按一下然后按住不動的情況,NEC 協(xié)議下是這么處理的:

d54981ca-c18e-11ed-bfe3-dac502259ad0.jpg

上圖中寫的“固定重復指令”也叫作“重復引導碼”。對于紅外通信協(xié)議,搜關(guān)鍵詞“IR 引導碼”會比較容易搜出結(jié)果。

NEC 的編碼規(guī)則非常簡單,如下圖:
d5659892-c18e-11ed-bfe3-dac502259ad0.jpg

實際用邏輯分析儀抓取的波形如下,可以與上面的規(guī)則相互印證:

d5740058-c18e-11ed-bfe3-dac502259ad0.jpg

3 Arduino 紅外解碼


d58e41ac-c18e-11ed-bfe3-dac502259ad0.jpg

把上圖中的代碼復制到下面:


#include 


const int irReceiverPin = 2;


IRrecv irrecv(irReceiverPin);
decode_results results;
decode_results res_last;


void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
}


void loop() {
  if(irrecv.decode(&results)){
    if(res_last.value != results.value){
      res_last.value = results.value;
      Serial.print("irCode: ");
      Serial.print(results.value, HEX);
      Serial.print(", bits: ");
      Serial.println(results.bits); 
    }
    irrecv.resume();
  }
}

4 STM32 紅外解碼

1.外部中斷方式

外部中斷方式的優(yōu)點在于:用哪個引腳都可以。因為沒有使用片上定時器外設,所以需要使用 CPU 計數(shù)方式來算時間。

2.定時器捕獲方式

定時器捕獲方式需要使用與定時器相關(guān)的引腳,優(yōu)點是 CPU 不參與計時,被解放出來的 CPU 可以做其他的事。

PS除了 NEC 協(xié)議,紅外通信還有很多其他的協(xié)議,這在 Mixly 圖形化編程軟件中看得很明顯,如下圖:

d59e3378-c18e-11ed-bfe3-dac502259ad0.jpg

本文選擇最簡單的 NEC 協(xié)議談紅外解碼意在簡單地體現(xiàn) IR 通信的應用,所以沒有引入 38kHz 載波的概念。

5 收、發(fā)解碼差異

d5b0c33a-c18e-11ed-bfe3-dac502259ad0.jpg

如上圖,紅外通信比較奇特的一點就是收發(fā)數(shù)據(jù)反相。這就導致雖然從發(fā)送方或接收方都能解出正確數(shù)據(jù),但必解碼時必須注意極性,極性要是反了就解不出或解不對數(shù)據(jù)。

通信實驗:

d5d8bb4c-c18e-11ed-bfe3-dac502259ad0.jpg ?

如上圖,作者覺得發(fā)與收之間的相位差加強了實驗的真實感。作者用了兩個單片機,分別是 ATMega 2560 和 ATMega 644,選 Arduino 系單片機的原因是想偷個懶不寫軟件。

下面放大一個數(shù)據(jù),仔細看一看 38KHz 的載波長什么樣:

d5f18b90-c18e-11ed-bfe3-dac502259ad0.jpg ?

上圖的結(jié)論是占在“接收方”的角度寫的“發(fā)送方”的行為。也就是說:

1.想讓接收方接到 0,發(fā)送方就發(fā) 38KHz 的載波;

2.想讓接收方接到 1,發(fā)送方就停止發(fā)送載波。

這里不免有人會問:停止發(fā)送載波實際上讓接收方收到了 1,那該怎么區(qū)分“停止通信”和“通信中的 1”呢?

這答案就能看出 NEC 協(xié)議的作用了:數(shù)據(jù)幀有頭有尾,在頭尾之間的停止發(fā)送就是數(shù)據(jù) 1,不在頭尾之間的就是沒有通信。

審核編輯:湯梓紅

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

    關(guān)注

    184

    文章

    17184

    瀏覽量

    247729
  • NEC
    NEC
    +關(guān)注

    關(guān)注

    0

    文章

    238

    瀏覽量

    99004
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10822

    瀏覽量

    352419
  • 紅外遙控
    +關(guān)注

    關(guān)注

    22

    文章

    347

    瀏覽量

    45392
  • Arduino
    +關(guān)注

    關(guān)注

    186

    文章

    6453

    瀏覽量

    185902

原文標題:結(jié)合STM32、Arduino理解紅外遙控編解碼通信原理

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機實現(xiàn)紅外遙控編解碼全部資料

    `紅外遙控器的解碼并對電器進行遙控一直是廣大單片機愛好者的一個心愿。自己動手實現(xiàn)紅外遙控電器也是
    發(fā)表于 08-12 10:16

    arduino單片機的紅外遙控解碼發(fā)送庫文件

    紅外遙控庫除了解碼之外還能發(fā)送,用C++封裝的庫函數(shù),是arduino編程的利器
    發(fā)表于 08-29 18:59

    藍牙學習型紅外遙控器(NEC協(xié)議編解碼

    學習型紅外遙控器(NEC協(xié)議編解碼) 單片機:STC89C52RC晶振:11.0592M 波特率:9600編譯環(huán)境:Keil uVision4
    發(fā)表于 02-26 10:34

    初識紅外編解碼

    初識紅外編解碼
    發(fā)表于 08-16 06:35

    如何通過STM32解碼紅外遙控器的信號呢

    什么是紅外遙控?如何通過STM32解碼紅外遙控器的信號呢?
    發(fā)表于 10-27 06:02

    Arduino紅外遙控解碼率很低是為什么?

    Arduino利用官方的紅外解碼庫,但是成功率很低,按8到9次才會識別一次
    發(fā)表于 11-08 06:52

    經(jīng)典全面的紅外編解碼資料

    經(jīng)典全面的紅外編解碼資料 紅外遙控器已被廣泛使用在各種類型的家電產(chǎn)品上,它的出現(xiàn)給使用電器提供了很多的便利。紅外
    發(fā)表于 04-01 18:11 ?236次下載

    紅外遙控編解碼全攻略

    紅外遙控器的解碼并對電器進行遙控是單片機學習者得一個心愿,自己動手實現(xiàn) 紅外遙控
    發(fā)表于 07-12 13:09 ?433次下載
    <b class='flag-5'>紅外</b><b class='flag-5'>遙控</b><b class='flag-5'>編解碼</b>全攻略

    紅外通信模塊設計教程和關(guān)于單片機紅外開發(fā)以及紅外編解碼知識

    紅外通信模塊設計教程和關(guān)于單片機紅外開發(fā)以及紅外編解碼知識
    發(fā)表于 09-04 08:50 ?30次下載
    <b class='flag-5'>紅外</b><b class='flag-5'>通信</b>模塊設計教程和關(guān)于單片機<b class='flag-5'>紅外</b>開發(fā)以及<b class='flag-5'>紅外</b><b class='flag-5'>編解碼</b>知識

    通信接口——編解碼

    通信接口——編解碼
    發(fā)表于 09-04 09:39 ?9次下載
    <b class='flag-5'>通信</b>接口——<b class='flag-5'>編解碼</b>

    紅外遙控編解碼相關(guān)資料分享

    本文分享了紅外遙控編解碼的相關(guān)資料。
    發(fā)表于 11-16 14:40 ?43次下載

    紅外遙控編解碼全面講解

    紅外的簡單發(fā)射接收原理:在發(fā)射端,輸入信號經(jīng)放大后送入紅外發(fā)射管發(fā)射,在接收端,接收管收到紅外信號后,由放大器放大處理后還原成信號。紅外遙控
    的頭像 發(fā)表于 03-06 13:51 ?8.3w次閱讀
    <b class='flag-5'>紅外</b><b class='flag-5'>遙控</b><b class='flag-5'>編解碼</b>全面講解

    STM32培訓:介紹STM32 USB音頻編解碼

    STM32 USB音頻編解碼
    的頭像 發(fā)表于 07-05 00:24 ?8690次閱讀

    STM32 NEC紅外遙控解碼

    STM32 NEC紅外遙控解碼紅外遙控編碼格式一體化紅外
    發(fā)表于 11-30 14:36 ?30次下載
    <b class='flag-5'>STM32</b> NEC<b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>器<b class='flag-5'>解碼</b>

    使用Arduino解碼任何遙控器的紅外遙控信號

    電子發(fā)燒友網(wǎng)站提供《使用Arduino解碼任何遙控器的紅外遙控信號.zip》資料免費下載
    發(fā)表于 10-27 11:51 ?4次下載
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>解碼</b>任何<b class='flag-5'>遙控</b>器的<b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>信號