国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

STM32設計智能居家-萬能紅外遙控器

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-03-12 13:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?

一、環境介紹

MCU: STM32F103ZET6

編程軟件環境: keil5

紅外線傳輸協議:NEC協議---38KHZ載波:。NEC協議是紅外遙控協議中常見的一種。

編碼發送思路:延時函數模擬38KHZ + PWM產生38KHZ兩種方式

代碼風格:模塊化編程,寄存器直接操作方式

二、NEC協議與相關硬件介紹

2.1 NEC協議介紹

NEC協議在上篇入門開發:>文章里已經詳細介紹過了。這篇文章和上篇文章內容是連貫的,上篇文章完成NEC紅外線協議解碼,這篇文章就當做遙控器發送端,發送自定義數據給接收端,完成自定義的數據傳輸;也可以模擬家電遙控器,對電視機、投影儀、空調等設備進行遙控操作。

紅外線協議有很多,本章節主要是針對NEC協議講解,只要把NEC協議原理搞懂了,其他協議都是一樣的使用;如果想要模擬空調遙控器,去控制美的空調、格力空調這些設備,就需要按照美的、格力空調的協議發送;如果不知道協議長什么樣,可以將邏輯分析儀插在紅外線接收頭的引腳上,拿個正常的空調遙控器對著接收頭按一下,然后采集數據分析,即可得到協議規律,然后網絡上也有空調按鍵值功能的說明文檔,調試一下即可。

2. 2 使用的相關硬件

因為要模擬紅外線遙控器,就需要一個紅外線發射管;在學習階段,如果不想自己搭建電路,可以買現成的模塊。 買模塊連接也是比較穩定,接線也比較簡單,VCC和GND接好之后,把DAT引腳接到STM32任意一個IO口上即可,如果想用硬件PWM控制發送,那么引腳接到STM32的PWM輸出腳即可。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

2.3 完成NEC協議編碼發送

先看一段紅外線接收頭引腳上采集的NEC協議的電平: 這是接收端采集的。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

紅外線接收頭的硬件特性: 注意: 這里是針對NEC遙控器協議來說明),下圖就是當前使用的紅外線接收頭。

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

收到38KHZ的紅外光,IN引腳就輸出低電平;沒有收到IN引腳就輸出高電平。

NEC紅外線協議說明:(這是站在接收端解碼的角度分析的)

一段獨立的NEC協議數據包由引導碼+32位數據組成。

引導碼: 9ms的高電平 + 4.5ms 低電平組成。

32位數據就是: 8位用戶碼+ 8位用戶反碼+ 8位按鍵碼+8位按鍵反碼

每個數據位之間的間隔時間是0.56ms(低電平)

NEC協議是依靠收到的高電平持續時間來判斷數據0和數據1;高電平持續時間是0.56ms表示數據0,高電平持續時間是1.68ms表示數據1。

只要明白上面說的兩個特點,就可以寫程序,按照NEC協議驅動紅外線發射管,發送數據了。

編寫發送程序之前,得先明白這個38KHZ的紅外光如何產生?

STM32支持硬件PWM功能,可以配置38KHZ方波輸出;如果沒有硬件PWM功能的單片機,也可以使用延時的方式產生38KHZ方波,差那么一點點問題也不到,解碼端適當調整一下時間范圍即可。

采用延時函數實現方法如下:

/*
函數功能: 發送38KHZ的載波
函數參數:
u32 time_us 持續的時間
u8 flag 1表示發送38KHZ載波,0表示不發送
*/
void InfraredSend38KHZ(u32 time_us,u8 flag)
{
    u32 i;
    if(flag)
    {
        //發送38KHZ載波
        for(i=0;i
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

為了方便發送指定的用戶碼和按鍵碼,可以封裝成一個函數調用。

/*
函數功能: NEC協議編碼發送
函數參數: 
				u8 user 用戶碼
				u8 key  按鍵碼
先發低位
按鍵反碼+按鍵碼+用戶反碼+用戶碼
*/
void InfraredNECSend(u8 user,u8 key)
{
	u32 i;
	 /*1. 組合發送的數據*/
	u32 data=((~key&0xFF)<<24)|((key&0xFF)<<16)|((~user&0xFF)<<8)|((user&0xFF)<<0);
		
	 /*2. 發送引導碼*/
	InfraredSend38KHZ(9000,1);//發送38KHZ載波
	InfraredSend38KHZ(4500,0);//不發送
	
	/*3. 發送32位數據*/
	 for(i=0;i<32;i++)
	 {
			InfraredSend38KHZ(560,1); //間隔時間
			if(data&0x01)InfraredSend38KHZ(1685,0); //發送1
			else InfraredSend38KHZ(560,0); //發送0
		  data>>=1;
	 }
	 InfraredSend38KHZ(560,1); //間隔時間
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

這是使用邏輯分析儀采集的發送端波形: 和協議對應了一下,沒有問題。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

對比一下解碼端采集的波形圖:

三、核心代碼

如果需要整個keil工程源碼,可以在這里下載(解壓即可編譯運行測試):

https://download.csdn.net/download/xiaolong1126626497/19863305

3.1 main.c

#include "stm32f10x.h"
#include "beep.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include 
#include 
#include "exti.h"
#include "timer.h"
#include "rtc.h"
#include "adc.h"
#include "ds18b20.h"
#include "ble.h"
#include "esp8266.h"
#include "wdg.h"
#include "oled.h"
#include "rfid_rc522.h"
#include "infrared.h"

int main()
{   
  LED_Init();
  KEY_Init();
  BEEP_Init();
  TIM1_Init(72,20000); //輔助串口1接收,超時時間為20ms
	USART_X_Init(USART1,72,115200);
	//InfraredDecodeInit(); //紅外線解碼初始化
	InfraredCodingInit();   //紅外線編碼初始化
  printf("UART1 OK.....\n");
	
  while(1)
  {
		InfraredNECSend(13,14); //發送紅外線數據
		DelayMs(500);
		LED0=!LED0;
  }
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.2 紅外線.c

#include "infrared.h"

/*
函數功能: 紅外線編碼初始化
硬件連接: PG11
編碼思路: 采用延時函數實現38KHZ
*/
void InfraredCodingInit(void)
{
	  RCC->APB2ENR|=1<<8; //PG
	  GPIOG->CRH&=0xFFFF0FFF;
	  GPIOG->CRH|=0x00003000;
	  GPIOG->ODR|=1<<11;
}

/*
函數功能: 發送38KHZ的載波
函數參數:
u32 time_us 持續的時間
u8 flag 1表示發送38KHZ載波,0表示不發送
*/
void InfraredSend38KHZ(u32 time_us,u8 flag)
{
    u32 i;
    if(flag)
    {
        //發送38KHZ載波
        for(i=0;i>=1;
	 }
	 InfraredSend38KHZ(560,1); //間隔時間
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

四、格力空調遙控協議介紹

4.1 協議解析

報頭脈沖:9ms

報頭間距:4.5ms

載波頻率:37.9KHz(38KHz)

碼段1與碼段2間距:20ms

“1”:脈寬,656us。間距,1640us。

“0”:脈寬,656us。間距,544us。

4.2 編碼定義

1-3位:模式

送風:圖標:風扇。代碼:110。

自動:圖標:循環箭頭。代碼:000。

除濕:圖標:水滴。代碼:010。

制冷:圖標:雪花。代碼:100。

制熱:圖標:太陽。代碼:001。

4位(加68位):開機關機

開機:1。

關機:0。第68位取反。

5-6位:風速

一級:10

二級:01

三級:11

自動:00

7、37、41位(加65位):掃風

上下掃風:110。第65位取反

左右掃風:101。

上下左右:111

無掃風:000

8位:睡眠

睡眠:1

不睡眠:0

9-12位與65-68位:溫度

制冷模式下:

溫度

9-12位

65-68位

30

0111

1000

29

1011

0000

28

0011

1111

27

1101

0111

26

0101

1011

25

1001

0011

24

0001

1101

23

1110

0101

22

0110

1001

21

1010

0001

20

0010

1110

19

1100

0110

18

0100

1010

17

1000

0010

16

0000

1100

制熱模式:

溫度

9-12位

65-68位

30

0111

0010

29

1011

1100

28

1101

0100

27

1101

1000

26

0101

0000

25

1001

1111

24

0001

0111

23

1110

1011

22

0110

0011

21

1010

1101

20

0010

0101

19

1100

1001

18

0100

0001

17

1000

1110

16

0000

0110

吸濕模式:

溫度

9-12位

65-68位

30

0111

0100

29

1011

1000

28

0011

0000

27

1101

1111

26

0101

0111

25

1001

1011

24

0001

0011

23

1110

1101

22

0110

0101

21

1010

1001

20

0010

0001

19

1100

1110

18

0100

0110

17

1000

1010

16

0000

0010

送風模式:

溫度

9-12位

65-68位

30

0111

1100

29

1011

0100

28

0011

1000

27

1101

0000

26

0101

1111

25

1001

0111

24

0001

1011

23

1110

0011

22

0110

1101

21

1010

0101

20

0010

1001

19

1100

0001

18

0100

1110

17

1000

0110

16

0000

1010

13-20位:睡眠定時

時間

13-20位

0.5

10010000

1

00011000

1.5

10011000

2

00010100

2.5

10010100

3

00011100

3.5

10011100

4

00010010

4.5

10010010

5

00011010

5.5

10011010

6

00010110

6.5

10010110

7

00011110

7.5

10011110

8

00010001

8.5

10010001

9

00011001

9.5

10011001

10

01010000

10.5

11010000

11

01011000

11.5

11011000

12

01010100

12.5

11010100

13

01011100

13.5

11011100

14

01010010

14.5

11010010

15

01011010

15.5

11011010

16

01010110

16.5

11010110

17

01011110

17.5

11011110

18

01010001

18.5

11010001

19

01011001

19.5

11011001

20

00110000

20.5

10110000

21

00111000

21.5

10111000

22

00110100

22.5

10110100

23

00111100

23.5

10111100

24

00110010

0

00000000

21位:超強

超強:1

普通:0

22位:燈光

亮:1

滅:0

23位與25位:健康,換氣

健康:10

換氣:01

健康+換氣:11

普通:00

24位:制冷模式下-干燥;制熱模式下-輔熱;

干燥:1

普通:0

45-46位:顯示溫度

不顯示:00

顯示:10

顯示室內溫度:01

顯示室外溫度:11

其他位:

除了29、31、34位為“1”外,均為“0”。其他位功能不詳(遙控器無對應項)。

第36位和69位分別是碼段1和碼段2的最后一位,無所謂“0”“1”。

4.3 其他說明

在自動模式下只可以設置的項目有:風速1、2、3級、自動;上上下左右掃風;顯示溫度;燈光;睡眠定時(非睡眠)。其他項均不可以設置。此時溫度不可設置,溫度段的代碼為:10011101。

在關機狀態下,可以設置定時開機,代碼與睡眠定時關機一樣。也可以設置燈光。

在制冷模式下,可以設置的項有:溫度;掃風;健康換氣,節能(僅在此狀態下可以設置);風速;定時;超強;睡眠;燈光;溫度顯示。

在除濕模式下,可以設置的項有:溫度;掃風;健康換氣;干燥;溫度顯示;定時;睡眠;燈光。

在送風模式下,可以設置的項有:溫度;風速;健康換氣;掃風;溫度顯示;定時;燈光。

在制熱模式下,可以設置的項有:溫度;風速;掃風;輔熱;溫度顯示;定時;超強;睡眠;燈光。

MGQ 2012-04-141、格力YB0F2紅外信號命令格式

紅外信號主要包括CMD1和CMD2兩部分,其中CMD1包括35 位的命令 和一位停止位,CMD2包括32位的命令和一位停止位。

表格 1 CMD1

Bit:1~3

4

5~6

7

8

模式

開關機(CMD2 32bit取反)

風速

是否掃風

是否睡眠

9~12

13~16

溫度

睡眠1

17~20

21

22

23

24

睡眠2

超強

燈光

健康

干燥/輔熱

25

26

27

28

29

30

31

32

換氣

0

0

0

1

0

1

0

33

34

35

0

1

0

表格 2 CMD2

Bit:1

2

3

4

5

6

7

8

上下掃風

0

0

0

左右掃風

0

0

0

9~10

11

12

13

14

15

16

顯示溫度

0

0

0

0

0

0

17

18

19

20

21

22

23

24

0

0

0

0

0

0

0

0

25

26

27

28

29~32

0

0

0

0

溫度

五、美的空調協議介紹

L為引導碼,

S為分隔碼,

A為認別碼(A=10110010=B2,預留方案時A=10110111=B7),

A'為A的反碼,

B'為B的反碼,

C'為C的反碼

遙控器發射紅外信號之時,通過“560微秒低電平+1680微秒高電平”代表“1”,通過“560微秒低電平+560微秒低電平”代表“0”。

美的的紅外采用NEC格式的R05d

該協議的紅外信號編碼格式為:引導碼+客戶碼+客戶反碼+數據碼+數據反碼+結束位

其中引導碼和結束碼都是固定的,數據反碼由數據碼按位取反得來,真正變化的只有用戶碼和數據碼。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

??審核編輯:湯梓紅

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

    關注

    2309

    文章

    11162

    瀏覽量

    373449
  • 硬件
    +關注

    關注

    11

    文章

    3595

    瀏覽量

    69011
  • 紅外遙控器
    +關注

    關注

    3

    文章

    134

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于芯嶺技術XL2417D芯片的2.4G無線遙控器解決方案

    無線2.4G遙控器是我們生活中常見的一種遙控器了,相比于傳統的紅外線式遙控器,無線2.4g遙控器擺脫了指向性的問題,我們可以在屋內任何位置以
    的頭像 發表于 01-15 12:43 ?603次閱讀
    基于芯嶺技術XL2417D芯片的2.4G無線<b class='flag-5'>遙控器</b>解決方案

    中易騰達指向遙控器產品亮相CES 2026

    遙控器,憑借精準的操控體驗、廣泛的應用場景與扎實的技術內核,在展會上吸引了眾多國際家電及智能設備廠商的關注。 一、從“選擇”到“指向”:交互范式的顛覆性進化 傳統遙控器,無論紅外或藍牙
    的頭像 發表于 01-15 09:13 ?527次閱讀

    智能語音遙控器低功耗BLE藍牙芯片

    隨著AI技術持續進步,支持語音識別功能的電視機、機頂盒等設備已廣泛普及。在這一趨勢下,搭載BLE藍牙芯片的語音遙控器逐步替代傳統紅外遙控,成為新一代電視產品的標準配件。從紅外到射頻,從
    的頭像 發表于 11-07 11:20 ?545次閱讀

    力芯微紅外遙控IC芯片ET4008MTC是家用遙控器智能芯選

    集成度等優勢,正在成為家用遙控器智能芯選。這里,力芯微代理商南山電子就給大家介紹一下力芯微紅外遙控IC芯片ET4008MTC的優勢和應用。ET4008MTC是一款
    的頭像 發表于 10-23 14:41 ?635次閱讀
    力芯微<b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>IC芯片ET4008MTC是家用<b class='flag-5'>遙控器</b>的<b class='flag-5'>智能</b>芯選

    藍牙語音遙控器方案 NRF52840、HS6621

    方案介紹 藍牙語音遙控器一般是通過按下語音鍵,遙控器會發送一個 HID 編碼通知智能電視或者機頂盒打開識音功能,此時,遙控器LED燈保持閃爍或者長亮,用戶開始錄音同時將語音數據上傳給
    的頭像 發表于 10-13 09:26 ?490次閱讀
    藍牙語音<b class='flag-5'>遙控器</b>方案 NRF52840、HS6621

    HarmonyOSAI編程萬能卡片生成(一)

    基于AI大模型理解開發者的卡片需求信息,通過對話式的交互智能生成HarmonyOS萬能卡片工程。 使用約束 建議從以下維度描述卡片需求: 當前不支持在生成卡片預覽圖后繼續描述需求進行增量修改。 萬能
    發表于 09-08 17:09

    微光遙控器為低光環境帶來智能與環保新選擇:永銘電容選型方案

    微光遙控器中的永銘電容選型方案微光遙控器隨著智能家居和物聯網的快速發展,傳統遙控器面臨著電池需要頻繁更換、長時間不使用時電池倉的正負極接觸點發生腐蝕等問題。為了解決這些痛點,微光
    的頭像 發表于 09-01 09:58 ?506次閱讀
    微光<b class='flag-5'>遙控器</b>為低光環境帶來<b class='flag-5'>智能</b>與環保新選擇:永銘電容選型方案

    433 遙控器 PCBA 開發方案:技術要點與實現路徑

    在物聯網技術日益普及的當下,433MHz 頻段的遙控器因成本低、傳輸穩定等特點,在智能家居、工業控制等領域得到廣泛應用。本文將詳細介紹一款 433 遙控器的 PCBA 開發方案,涵蓋產品功能、硬件
    的頭像 發表于 08-07 10:39 ?1246次閱讀

    尋求遙控器:cist電視是哪個公司的產品呀?是否有遙控器賣?

    cist電視是哪個公司的產品呀?是否有遙控器賣?
    發表于 08-04 17:26

    藍牙語音遙控器智能家居的智慧控制核心

    隨著智能家居的蓬勃發展,藍牙語音遙控器憑借其便捷的操作和智能交互體驗,正迅速取代傳統紅外遙控器,成為智能
    的頭像 發表于 06-06 14:15 ?2220次閱讀
    藍牙語音<b class='flag-5'>遙控器</b>:<b class='flag-5'>智能</b>家居的智慧控制核心

    用射頻芯片開發的家電遙控器特點介紹

    這是客戶用我們的射頻芯片開發的一款家電遙控器,可遙控配對后的家電開關狀態,遙控距離可達100米以上。需要了解的可以聯系我們。 家電遙控器主要特點: 距離遠 空曠最遠100米。 抗干擾
    的頭像 發表于 06-03 14:56 ?1665次閱讀
    用射頻芯片開發的家電<b class='flag-5'>遙控器</b>特點介紹

    藍牙語音遙控器智能家居的智慧控制核心

    隨著智能家居的蓬勃發展,藍牙語音遙控器憑借其便捷的操作和智能交互體驗,正迅速取代傳統紅外遙控器,成為智能
    發表于 06-01 20:24

    藍牙語音遙控器 低功耗芯片選型HS6621CxC/OM6621

    隨著智能家居的蓬勃發展,藍牙語音遙控器憑借其便捷的操作和智能交互體驗,正迅速取代傳統紅外遙控器,成為智能
    發表于 05-22 15:23

    藍牙語音遙控國產適用芯片HS6621

    ,使用非常方便,徹底擺脫傳統紅外遙控器在節目搜索時的繁瑣操作和低效。 藍牙語音遙控器一般是通過按下語音鍵,遙控器會發送一個 HID 編碼通知智能
    發表于 04-30 16:21

    教你一招,破解紅外遙控器(可下載)

    是角度問題了。我就以研究過的身份跟大家一起分析下它是什么,怎么工作的。揭開它神秘的面紗就拿我們生活中最熟悉的遙控器來說,是紅外發送接收,紅外線是一種不可見光,可以用
    發表于 03-13 15:30 ?1次下載