對(duì)紅外波形有一個(gè)大概的認(rèn)識(shí)之后,就要編寫MCU端的代碼,把波形轉(zhuǎn)成紅外碼。這里我的思路是,對(duì)STM32的某個(gè)IO,設(shè)置為輸入下降沿捕捉,然后通過計(jì)算每一個(gè)高低電平的持續(xù)時(shí)間,進(jìn)而把波形轉(zhuǎn)成數(shù)組;具體的實(shí)現(xiàn)可以看代碼,Talk is cheap, show me the code.(主要是懶(/ω\)~哈哈) 3. 紅外編碼
經(jīng)過前面的紅外拷貝之后并存儲(chǔ)了,幾個(gè)功能點(diǎn)的紅外碼,分別是開關(guān),和溫度設(shè)置(16度到27度);
紅外的發(fā)送原理(主要是網(wǎng)上已經(jīng)有很多這方面的教程了),首先上面抓到的紅外波形,并不是紅外發(fā)送器真正發(fā)送的波形,紅外發(fā)送的波形一般是要發(fā)送的命令“加”在一個(gè)38K 的一個(gè)波形上;因?yàn)榻邮斩擞幸粋(gè)波形過濾器,如果不是38K紅外波形范圍內(nèi)會(huì)被過濾掉。所以一般會(huì)以38K的PWM作為一個(gè)紅外載波;
那么發(fā)送的時(shí)候,對(duì)STM32的PA5引腳做為輸出PWM為38K的引腳,然后后根據(jù)機(jī)智云定義好的數(shù)據(jù)點(diǎn),拿到對(duì)應(yīng)的串口協(xié)議文檔,進(jìn)行命令提前,主要是APP控制和MCU狀態(tài)上報(bào),這兩條協(xié)議,(當(dāng)然還有進(jìn)入WiFi配網(wǎng)和串口握手等,不過這些在MCU代碼自動(dòng)生成的時(shí)候已經(jīng)幫我們實(shí)現(xiàn)好了)串口協(xié)議格式如下圖:
那么后面的就是根據(jù)協(xié)議編程了。
插播一條idea,實(shí)現(xiàn)發(fā)送的時(shí)候,開始我想使用機(jī)智云的Gokit上的紅外來作為發(fā)送,不過后面發(fā)現(xiàn)發(fā)送的距離比較短,后面就自己焊接了紅外發(fā)射頭;當(dāng)時(shí)我對(duì)Gokit的改造如下,如果小伙伴要控制的距離不遠(yuǎn)的話,我想是可以的,具體我的改造如下: ◆Gokit引腳修改