日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【STM32】R05D电控红外协议的美的空调遥控器

發布時間:2024/3/12 编程问答 168 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32】R05D电控红外协议的美的空调遥控器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一、設計思路
  • 一、R05D紅外協議原理
    • 1.協議手冊理解
    • 2.驗證時序(重點)
  • 二、硬件實現
    • 1.需要的材料
    • 2.對發射模塊電路進行修改
    • 3.STM32 GPIO選擇
  • 三、代碼實現
    • 1.載波38kHZ實現
    • 2.R05D時序實現
    • 3.調用函數并驗證

一、設計思路

通常紅外遙控采用NEC傳輸協議,而美的空調采用的是R05D紅外協議(應該是自己設計的協議),因此用一般紅外編碼發射模塊無法直接對空調進行控制。

解決方法:獲取R05D協議手冊 + 用紅外接收管對原有遙控器紅外接收進行波形分析。

一、R05D紅外協議原理

R05D電控功能說明書:https://wenku.baidu.com/view/c46594141ed9ad51f01df2c3.html

1.協議手冊理解

總的來說,編碼時序都跟NEC不一樣。 下面1–5點為編碼講解;6–10點為時序講解

  • 通常編碼格式為: L,A,A’,B,B’,C,C’, S, L,A,A’,B,B’,C,C’
  • 第一幀和第二幀相同
  • 采用MSB在先,LSB在后;也就是高位先發(重點:手冊沒講,是通過接收管波形分析出來的!!!!下一部分時序分析有說明)
  • L為引導碼;S為分隔碼;A為識別碼(A=10110010=0xB2,預留方案時A=10110111=0xB7),A’為A的反碼;B’為B的反碼;C’為C的反碼。
  • B、C含義如下

    例如:自動風,制冷,18攝氏度的編碼
  • L 10110010 01001101 10111111 01000000 00010000 11101111 S L ...(省略) L 0xB2 0x4D 0xBF 0x40 0x10 0xEF S L 0xB2 0x4D 0xBF 0x40 0x10 0xEF
  • 引導碼L
  • 分隔碼S
  • 發送"1"數據

  • 發送"0"數據

  • 終止符和兩個控制波形間隔

  • 很明顯,編碼與時序都跟NEC不一樣,注定通過控制GPIO時序來發送R05D協議的編碼

    2.驗證時序(重點)

    通過示波器分析遙控器發送的紅外編碼


    L引導碼后 接收到A=10110010=0xB2 A‘=01001101=0xB7

    因此,證實了上面一部分第3點。高位先發,低位后發!!這跟NEC不一樣(NEC采用低位先發送),所以普通紅外編碼發射模塊根本不適用!!
    由于之前沒有對遙控器進行時序分析,所以默認低位先發,結果還是不行,借了一個遙控器,把紅外接收管接示波器,才知道出錯了。改了時序就能實現了。

    二、硬件實現

    1.需要的材料

  • 首先要有一臺空調(美的中央空調)
  • 紅外發射模塊
  • STM32F1
  • 2.對發射模塊電路進行修改

    由于買的發射模塊自帶編碼,不用NEC編碼只能改電路(這里推薦直接買紅外發射模塊就好了,不帶任何編碼的那種)

    根據原理圖,把IRT引出來跟STM32的IO口相接

    實物圖如下:

    直接焊接一條杜邦線,跟STM32相連接

    這時候,只需要控制STM32GPIO的輸出,就可以控制紅外發射的波形,而不需要用到編碼芯片了

    3.STM32 GPIO選擇

    本人用的是藍橋杯嵌入式的開發板(stm32f103rbt6),至于其他芯片也幾乎大同小異。
    由于載波頻率為38KHZ,GPIO必須有定時器功能,因為可以輸出PWM波形,設置頻率38KHZ,控制輸出與否就能實現編碼時序

    這里選擇使用PA1,屬于定時器2通道2

    通過搞懂協議原理和修改電路并進行連接后,只需要寫出對的時序控制代碼就能控制空調了!!

    三、代碼實現

    1.載波38kHZ實現

    由于TIM2的輸入時鐘為72MHZ,通過分頻和自動重裝載值的設定,得出PWM的頻率為72Mhz / 5(預分頻) / 378(計數次數) ≈ 38Khz

    void TIM_PWM_Init(void) {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;GPIO_InitTypeDef GPIO_InitStructure;/* TIM2 clock enable */RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* PA1引腳設置 */TIM_TimeBaseStructure.TIM_Period = 378; //72 000khz/378/5 = 38.09khzTIM_TimeBaseStructure.TIM_Prescaler = 5-1;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//TIM2預分頻設置:72kHZ。APB1分頻系數2,輸入到TIM3時鐘為36MHzx2 = 72MHz /* Channel 2 Configuration in PWM mode */TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇PWM模式1TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比較輸出使能// TIM_OCInitStructure.TIM_Pulse=500;//設置占空比時間TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC2Init(TIM2, &TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能預裝載寄存器//使能TIM2定時計數器TIM_Cmd(TIM2, ENABLE); }

    2.R05D時序實現

    通過改變比較計數器,來輸出高電平和低電平
    接收高電平:對于發送來說就是輸出低,比較值為0,占空比0%,紅外無輸出
    接收低電平:對于發送來說就是輸出高,比較值為189,占空比50%,紅外輸出載波
    (此發送接收關系與NEC一樣,不懂自行百度)
    延時用的是嘀嗒定時器

    void Lead_Code() {TIM_SetCompare2(TIM2,189); //接收器拉低delay_us(4400);TIM_SetCompare2(TIM2,0); //接收器拉高delay_us(4400); }void Stop_Code() {TIM_SetCompare2(TIM2,189); //接收器拉低delay_us(540);TIM_SetCompare2(TIM2,0); //接收器拉高delay_us(5220); }void Send_0_Code() {TIM_SetCompare2(TIM2,189); //接收器拉低delay_us(540);TIM_SetCompare2(TIM2,0); //接收器拉高delay_us(540); }void Send_1_Code() {TIM_SetCompare2(TIM2,189); //接收器拉低delay_us(540);TIM_SetCompare2(TIM2,0); //接收器拉高delay_us(1620); }void Send_Byte(u8 data) {int i;for(i=7;i>=0;i--){if(data & (1<<i)){Send_1_Code();}else{Send_0_Code();}} }void Normal_Code(u8 A, u8 B, u8 C) {Lead_Code();Send_Byte(A);Send_Byte(~A);Send_Byte(B);Send_Byte(~B);Send_Byte(C);Send_Byte(~C);Stop_Code();Lead_Code();Send_Byte(A);Send_Byte(~A);Send_Byte(B);Send_Byte(~B);Send_Byte(C);Send_Byte(~C);Stop_Code(); }

    3.調用函數并驗證

    void main() {初始化函數();Normal_Code(0xB2, 0x9F, 0x00); //制冷 低風 17 }

    至于調控溫度,模式,自行根據協議修改發送數值就OK了!

    總結

    以上是生活随笔為你收集整理的【STM32】R05D电控红外协议的美的空调遥控器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕在线观看日韩 | 香蕉国产在线 | 日本伦理中文字幕 | 日本美女逼 | youjizz自拍| 小毛片网站 | 97人妻精品一区二区三区视频 | melody在线高清免费观看 | 91亚洲国产成人久久精品麻豆 | 成年人网站在线 | 田中瞳av | 黄色片链接| 97超碰人人澡人人爱学生 | 一区二区三区亚洲精品 | 色丁香av| 韩国伦理片免费看 | 亚洲久久在线观看 | 国产av 一区二区三区 | 人人干在线视频 | 日本三级吃奶头添泬无码苍井空 | 青青青网 | 国产又大又黄又粗 | 久久精品视频8 | 国产一区二区三区四区 | 亚洲欧美日韩偷拍 | 黄色网一级片 | 一二三区免费 | 久久综合亚洲精品 | 性感美女在线观看 | 日本公妇乱偷中文字幕 | 日韩h在线观看 | av大片网址 | 日本理论片午伦夜理片在线观看 | 日韩精品在线视频免费观看 | 少妇粉嫩小泬喷水视频www | 久久久久久成人精品 | 精品伦精品一区二区三区视频 | 黄色av网页 | 国产妻精品一区二区在线 | 国产日产精品一区二区三区四区 | 亚洲激情精品 | 毛片av在线播放 | 91高清无打码 | 亚洲精品在线网站 | 婷婷五月在线视频 | 豆花免费跳转入口官网 | 亚洲91色 | 日美av| 林天顾悦瑶笔趣阁 | 欧美日韩在线视频免费观看 | 视频一区二区三区四区五区 | 99视频导航| 午夜久久网 | 欧美精品动漫 | 久久久久久久久久免费视频 | 什么网站可以看毛片 | 黄色av影院 | 最新久久 | 国产成人精品一区二区在线小狼 | 亚洲成人一二三 | 久久99热久久99精品 | 国产精品揄拍100视频 | 国产做爰全过程免费视频 | 久久国色 | 超碰在线中文 | 风间由美av在线 | 欧美乱妇在线观看 | 国内精品免费 | 双性受孕h堵精大肚生子 | 免费观看一区 | 青草视频在线播放 | 日韩一区视频在线 | 一本色道久久88加勒比—综合 | 91视频插插插| 久一在线| 草久免费视频 | 免费久久一级欧美特大黄 | 67194少妇| av在线男人天堂 | 日韩av手机在线播放 | 美女校花脱精光 | 久久久视频6r | youjizz国产精品 | 日韩一区二区免费播放 | 精品久久久久久国产 | 天天干天天操天天射 | 日韩人妻一区二区三区蜜桃 | 久久av网站 | 国产精品久久免费视频 | 一级在线播放 | 人人叉人人 | 自拍视频网址 | 伊人久久久久久久久久久久久 | 色屁屁www影院免费观看入口 | 五月婷婷狠狠干 | 国产精品一区二区三区在线免费观看 | 亚洲永久免费网站 | 国产精品久久久久久久免费 | 天天干天天搞天天射 |