18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

?

一、環(huán)境介紹

MCU: STM32F103ZET6

編程軟件環(huán)境: keil5

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

編碼發(fā)送思路:延時函數(shù)模擬38KHZ + PWM產(chǎn)生38KHZ兩種方式

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

二、NEC協(xié)議與相關硬件介紹

2.1 NEC協(xié)議介紹

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

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

2. 2 使用的相關硬件

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

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

2.3 完成NEC協(xié)議編碼發(fā)送

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

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

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

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

一段獨立的NEC協(xié)議數(shù)據(jù)包由引導碼+32位數(shù)據(jù)組成。

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

32位數(shù)據(jù)就是: 8位用戶碼+ 8位用戶反碼+ 8位按鍵碼+8位按鍵反碼

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

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

只要明白上面說的兩個特點,就可以寫程序,按照NEC協(xié)議驅(qū)動紅外線發(fā)射管,發(fā)送數(shù)據(jù)了。

編寫發(fā)送程序之前,得先明白這個38KHZ的紅外光如何產(chǎn)生?

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

采用延時函數(shù)實現(xiàn)方法如下:

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

為了方便發(fā)送指定的用戶碼和按鍵碼,可以封裝成一個函數(shù)調(diào)用。

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

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

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); //發(fā)送紅外線數(shù)據(jù)
		DelayMs(500);
		LED0=!LED0;
  }
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.2 紅外線.c

#include "infrared.h"

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

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

四、格力空調(diào)遙控協(xié)議介紹

4.1 協(xié)議解析

報頭脈沖:9ms

報頭間距:4.5ms

載波頻率:37.9KHz(38KHz)

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

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

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

4.2 編碼定義

1-3位:模式

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

自動:圖標:循環(huán)箭頭。代碼: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

顯示室內(nèi)溫度:01

顯示室外溫度:11

其他位:

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

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

4.3 其他說明

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

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

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

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

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

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

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

溫度

五、美的空調(diào)協(xié)議介紹

L為引導碼,

S為分隔碼,

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

A'為A的反碼,

B'為B的反碼,

C'為C的反碼

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

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

該協(xié)議的紅外信號編碼格式為:引導碼+客戶碼+客戶反碼+數(shù)據(jù)碼+數(shù)據(jù)反碼+結束位,

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

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

??審核編輯:湯梓紅

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

    關注

    2301

    文章

    11084

    瀏覽量

    369795
  • 硬件
    +關注

    關注

    11

    文章

    3535

    瀏覽量

    68477
  • 紅外遙控器
    +關注

    關注

    3

    文章

    133

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

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

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

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

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

    四頻拷貝遙控器走俏海外

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

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

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

    技術再進化——工業(yè)遙控器技術要求更高

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

    效率大升!AI賦鴻蒙萬能卡片開發(fā)

    效率。 近期,華為重磅推出首款開發(fā)鴻蒙原生應用的AI輔助編程工具——DevEco CodeGenie,該工具支持萬能卡片生成功能,借助AI大模型理解開發(fā)者的卡片需求,通過對話式交互,智能生成鴻蒙萬能卡片工程,大幅簡化鴻蒙應用的工
    的頭像 發(fā)表于 01-13 13:44 ?1216次閱讀
    效率大升!AI賦<b class='flag-5'>能</b>鴻蒙<b class='flag-5'>萬能</b>卡片開發(fā)

    數(shù)字遙控器

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

    定制遙控器主要分為哪些步驟?

    隨著人們對生活質(zhì)量的要求不斷提高,各種電器都開始由無線遙控器控制。對于一些廠家沒有做遙控控制的電器,就需要找生產(chǎn)廠家去定制遙控器了。定制遙控器流程一般為:客戶需求確認、外觀設計和電路板
    的頭像 發(fā)表于 01-03 13:47 ?932次閱讀

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

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

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

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

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

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

    太陽遙控器專用光伏微光能量收集管理芯片-MF9006

    太陽遙控器通過內(nèi)置的太陽光伏板,可以利用陽光或室內(nèi)燈光為設備充電,從而減少對一次性電池的依賴,降低碳排放量。例如,三星推出的太陽遙控器
    的頭像 發(fā)表于 11-26 01:02 ?1669次閱讀
    太陽<b class='flag-5'>能</b><b class='flag-5'>遙控器</b>專用光伏微光能量收集管理芯片-MF9006