色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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
    +關注

    關注

    2277

    文章

    10951

    瀏覽量

    359231
  • 硬件
    +關注

    關注

    11

    文章

    3419

    瀏覽量

    66702
  • 紅外遙控器
    +關注

    關注

    3

    文章

    133

    瀏覽量

    21851
收藏 人收藏

    評論

    相關推薦

    四頻拷貝遙控器走俏海外

    。 ??????客戶需要一種拷貝遙控器:要比普通拷貝遙控器智能,要比全頻拷貝遙控器便宜,于是我們工程師就設計了這款四頻拷貝遙控器。 ? 紅邊
    的頭像 發表于 02-08 15:34 ?179次閱讀
    四頻拷貝<b class='flag-5'>遙控器</b>走俏海外

    OM6621E 低功耗BLE5.1協議Soc芯片 藍牙語音遙控器原理應用

    ,通過語音信號傳輸控制指令。相比于傳統紅外遙控器,藍牙語音遙控器的特點在于傳輸距離遠,不怕遮擋,也不需要瞄準,可以實現360度無死角遙控;傳輸帶寬大,可實現語音傳輸;數據可加密,傳輸更
    發表于 01-14 15:01

    技術再進化——工業遙控器技術要求更高

    雖然同屬無線遙控器類,民用和工業用遙控器之間的差異性可不是一星半點。工業遙控器是利用無線信號傳輸來操控工業重型設備的輔助裝置。在各種惡劣環境的適應性方面,工業遙控器的性能要遠高于民用
    的頭像 發表于 01-14 13:51 ?219次閱讀

    數字遙控器

    智能車輛解決方案中數字遙控器產品是現場開發、測試以及運維人員調試、控制車輛的重要手段,數字遙控器系統整體由云端、移動客戶端和嵌入式車端三部分構成,針對不同場景,經緯恒潤數字遙控器能夠依
    的頭像 發表于 01-07 09:56 ?304次閱讀
    數字<b class='flag-5'>遙控器</b>

    RF遙控器廠家:射頻遙控器將成為未來的控制主流

    改革開放40余年來,人們的家庭生活發生了巨變——各型家用電器走進了千家戶。在此期間,家用電器的發展也在不斷走向多樣化、智能控制化。通常我們所見的電視和空調、投影儀等設備大都是使用紅外遙控器
    的頭像 發表于 12-31 11:47 ?203次閱讀

    如何選購適合的拷貝遙控器——增配遙控器教程來啦

    射頻遙控器由于其傳輸距離遠、信號可穿墻、360°傳播信號等優勢,迅速在日常生活中得到普及。我們常見的卷簾門遙控器、電瓶車遙控器、車庫門遙控器、道閘門都是使用的射頻
    的頭像 發表于 12-26 13:57 ?1259次閱讀
    如何選購適合的拷貝<b class='flag-5'>遙控器</b>——增配<b class='flag-5'>遙控器</b>教程來啦

    OM6621E 低功耗BLE5.1協議Soc芯片 藍牙語音遙控器原理應用

    ,通過語音信號傳輸控制指令。相比于傳統紅外遙控器,藍牙語音遙控器的特點在于傳輸距離遠,不怕遮擋,也不需要瞄準,可以實現360度無死角遙控;傳輸帶寬大,可實現語音傳輸;數據可加密,傳輸更
    發表于 12-20 11:18

    遙控器解碼怎么使用

    夠接收和解碼遙控器發出的紅外(IR)信號。這些信號通常用于控制電視、空調、音響等家用電器。解碼可以復制這些信號,從而允許用戶使用新的遙控器智能
    的頭像 發表于 09-30 14:23 ?1518次閱讀

    藍牙語音遙控器方案

    ,使用非常方便,徹底擺脫傳統紅外遙控器在節目搜索時的繁瑣操作和低效。 一、方案介紹: 藍牙語音遙控器一般是通過按下語音鍵,遙控器會發送一個 HID 編碼通知
    的頭像 發表于 08-29 14:37 ?740次閱讀
    藍牙語音<b class='flag-5'>遙控器</b>方案

    萬能斷路參數設置的基本原則

    萬能斷路是一種廣泛應用于電力系統、工業自動化和建筑電氣等領域的保護和控制設備。它具有過載保護、短路保護、欠壓保護等多種功能,能夠有效地保護電氣設備和線路的安全運行。為了確保萬能斷路
    的頭像 發表于 08-14 15:50 ?1307次閱讀

    萬能斷路跳閘后如何復位

    萬能斷路是一種廣泛應用于電力系統中的保護裝置,其主要作用是在電路發生故障時,能夠迅速切斷電路,以保護電氣設備和人身安全。然而,在實際使用過程中,萬能斷路可能會出現跳閘現象,這時候就
    的頭像 發表于 07-31 15:24 ?2457次閱讀

    萬能斷路參數如何設置

    萬能斷路是一種廣泛應用于電力系統、工業自動化和建筑電氣領域的電氣設備,其主要功能是在電路中起到過載、短路、欠壓等保護作用。正確設置萬能斷路參數對于確保設備安全運行和提高系統可靠性具
    的頭像 發表于 07-31 15:19 ?2646次閱讀

    星閃挑戰UWB,指向遙控方案迎來新成員

    的使用體驗打了折扣。目前紅外遙控器品類里以萬能遙控器、學習遙控器更受關注;射頻遙控器品類如藍牙
    的頭像 發表于 06-28 08:05 ?219次閱讀
    星閃挑戰UWB,指向<b class='flag-5'>遙控</b>方案迎來新成員

    基于T5L智能屏的萬能紅外控制

    ——來自迪文開發者論壇本期為大家推送迪文開發者論壇獲獎開源案例——基于T5L智能屏的萬能紅外控制。工程師通過T5L串口與紅外傳感器模塊進行
    的頭像 發表于 06-22 08:13 ?465次閱讀
    基于T5L<b class='flag-5'>智能</b>屏的<b class='flag-5'>萬能</b><b class='flag-5'>紅外</b>控制<b class='flag-5'>器</b>

    用STM8做紅外遙控器,需要量產,請問用什么型號合適?

    想用STM8做紅外遙控器,需要量產,請問用什么型號合適? 最好價格上能有優勢
    發表于 05-15 07:13
    主站蜘蛛池模板: 青青伊人网 | 九九热国产视频 | 一区一区三区产品 | 精品久久久噜噜噜久久7 | 中文字幕在线视频网站 | 饥渴的新婚女教师 | 91九色精品国产免费 | 内射一区二区精品视频在线观看 | 欧美午夜理伦三级在线观看 | 国产免费内射又粗又爽密桃视频 | 精品久久中文字幕有码 | 99在线精品国自产拍不卡 | 久久久久国产精品嫩草影院 | 福利啪啪吧 | 999国产高清在线精品 | 久青草国产在线视频亚瑟影视 | 涩涩爱涩涩片影院 | 久久免费资源福利资源站 | 国产线精品视频在线观看 | 亚洲成人网导航 | 中文字幕在线观看亚洲视频 | 第一精品福利导福航 | 国产精品久久久久久52AVAV | 纯肉高H种马艳遇风流多 | 九九热最新视频 | 狠狠操伊人 | 最近日本字幕MV免费观看在线 | 亚洲国产综合久久久无码色伦 | 亚洲欧美一级久久精品 | 有人在线观看的视频吗免费 | 女王羞辱丨vk | 中文字幕在线观看亚洲视频 | 色偷偷爱偷偷要 | 色噜噜噜视频 | 久久婷五月综合色啪首页 | 亚洲精品欧美精品中文字幕 | 最近最新中文字幕MV高清在线 | 国产成a人片在线观看视频99 | 国产精品久久人妻无码网站一区L | 国产精品嫩草免费视频 | 国产精品一区二区在线播放 |