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