夏天熱急得直跺腳?送它給女友,竟能輕輕松松獲得清涼?
夏天想開(kāi)空調(diào)找不到遙控器!遙控器找到之后,想要調(diào)節(jié)溫度又要起身拿遙控器!
如何擺脫麻煩?
紅外遙控,遠(yuǎn)程操作,隨心開(kāi)啟、調(diào)節(jié)、關(guān)閉空調(diào),全靠它!
紅外遙控和舵機(jī)控制通過(guò) 涂鴉智能 App 下發(fā) 打開(kāi)空調(diào) 指令控制紅外****模塊****指令打開(kāi)格力空調(diào),下發(fā) 開(kāi)/關(guān)門(mén) 指令控制舵機(jī)實(shí)現(xiàn)開(kāi)關(guān)門(mén)功能。
本教程內(nèi)容均為涂鴉開(kāi)發(fā)者 @時(shí)浩文 提供,經(jīng)其授權(quán)編輯發(fā)布。
物料清單硬件 (4) 軟件 (1)
涂鴉三明治 Wi-Fi MCU 通信板(WB3S) 數(shù)量:1
適用于涂鴉 IoT 自定義方案中,照明、臺(tái)燈、燈 絲燈、調(diào)光器、照明遙控器、排插、開(kāi)關(guān)、家電、運(yùn)動(dòng)健康、傳感類產(chǎn)品原型。
涂鴉三明治紅外遙控功能板 數(shù)量:1
一款無(wú)線****與接收裝置,能學(xué)習(xí)中心頻率為37.9KHz 的紅. 外信號(hào),通過(guò)控制紅外****管的通斷來(lái)達(dá)到控制紅外設(shè)備的目的。
Arduino 開(kāi)發(fā)板 數(shù)量:1
一個(gè)開(kāi)發(fā)各類設(shè)備,讓您比臺(tái)式電腦更能充分感知和控制物理世界的生態(tài)系統(tǒng)。查看詳情
STM32f103C8t6 數(shù)量:1
適用于電機(jī)驅(qū)動(dòng)、應(yīng)用控制、醫(yī)療和手持設(shè)備、PC 和游戲外設(shè)、GPS 平臺(tái)、工業(yè)應(yīng)用、PLC、變頻器、打印機(jī)、掃描儀、報(bào)警系統(tǒng)、視頻對(duì)講和 HVAC 等應(yīng)用。
步驟WB3S模組的 Wi-Fi 板(測(cè)試)在 涂鴉 IoT 平臺(tái) 上創(chuàng)建一款 萬(wàn)能遙控器 產(chǎn)品,開(kāi)發(fā)方案選擇自定義方案。
輸入產(chǎn)品名稱,型號(hào),選擇 Wi-Fi +藍(lán)牙+IR方案,標(biāo)準(zhǔn)功耗。
創(chuàng)建產(chǎn)品后,添加功能定義。由于要控制舵機(jī)開(kāi)鎖,需要添加一個(gè)布爾型功能點(diǎn),填寫(xiě)一個(gè)較規(guī)范的標(biāo)識(shí)符。因?yàn)槭峭ㄟ^(guò)標(biāo)識(shí)符控制功能的實(shí)現(xiàn)。說(shuō)明:定時(shí)功能是云端實(shí)現(xiàn),不需要寫(xiě)代碼,可添加可不添加,我是想實(shí)現(xiàn)定時(shí)關(guān)閉空調(diào)所以添加了定時(shí)功能。
在 硬件開(kāi)發(fā),選擇 WB3S Wi-Fi &BLE 雙協(xié)議模組。在開(kāi)發(fā)資料下載區(qū)域,下載開(kāi)發(fā)資料。MCU SDK:涂鴉的 MCU 開(kāi)發(fā)代碼包。可以移植到 Arduino Uno/Nano 最小系統(tǒng)。Uno 和 Nano 使用一樣的芯片,代碼一樣,只是在 Arduino 下載的時(shí)候選擇對(duì)應(yīng)的開(kāi)發(fā)板即可。同樣,MCU SDK 也被移植到 STM32f103c8t6 最小系統(tǒng)板,并采用 Keil 開(kāi)發(fā)。在 STM 32 和 Arduino 都成功與模組通信后,按下設(shè)備按鍵進(jìn)入配網(wǎng)模式。涂鴉模組調(diào)試助手:可以模擬 MCU 和模擬模組。功能點(diǎn)調(diào)試文件:以 .json 結(jié)尾的文件。可以使用涂鴉模組調(diào)試助手需導(dǎo)入 DP 文件,即為這個(gè)文件。
在下載資料中安裝 涂鴉模組調(diào)試助手。我的電腦是 Windows 10 直接安裝即可,如果是 Windows 7 系統(tǒng),則需安裝 NET4.6.1 框架。使用方式詳情請(qǐng)參考 涂鴉模組調(diào)試助手 。我拿到的是三明治開(kāi)發(fā)板里的 TYDE5-WB3S-MCU-1 Wi-Fi 板,涂鴉已經(jīng)把 MCU 通用對(duì)接的固件已經(jīng)燒錄好了,無(wú)需再燒錄固件。所以直接在調(diào)試助手里選擇 MCU模擬,選擇串口端口號(hào)(端口號(hào)查看:右鍵我的電腦->設(shè)備管理器->端口),波特率選擇 115000。導(dǎo)入之前下載的 功能點(diǎn)調(diào)試文件。
點(diǎn)開(kāi) 初始化配置,點(diǎn)擊 開(kāi)始調(diào)試 按鈕。即可看到在調(diào)試窗口的模組心跳信息。
之后就可在 操作 欄,使用相關(guān)指令。本小節(jié)簡(jiǎn)單描述下配網(wǎng)操作。點(diǎn)擊 AP配網(wǎng),在調(diào)試窗口就可看到 Wi-Fi 模組進(jìn)入AP配網(wǎng)模式。在手機(jī)端打開(kāi) 涂鴉智能 APP,點(diǎn)右上角 + 號(hào),選擇自動(dòng)發(fā)現(xiàn),就可添加到 Wi-Fi 模組,按提示配網(wǎng)即可。成功配網(wǎng)后,在涂鴉模組調(diào)試助手里查看 Wi-Fi 模組是否已成功連接路由器,且連接到涂鴉 IoT 云端。在涂鴉智能 App 里嘗試操作設(shè)備,然后在調(diào)試助手里查看是否有 MQTT 協(xié)議的云端下發(fā)數(shù)據(jù)。
舵機(jī),故名思議,像船尾的舵那樣,只能轉(zhuǎn)動(dòng)固定的角度,一般的舵機(jī)最大轉(zhuǎn)角約為 180 度。也有一些舵機(jī)能達(dá)到 300 度的。使用 Arduino Uno 控制板控制舵機(jī)之前您可以參考以下資料。
認(rèn)識(shí) Ardinuo 控制板
Ardinuo實(shí)驗(yàn)室
將PPM信號(hào),經(jīng)信號(hào)線傳輸。 PPM信號(hào)的頻率是50HZ。寬度從0.5MS到2.5MS。具體用到的代碼如下所示:
//引入頭文件#include <Servo.h> //調(diào)用舵機(jī)函數(shù)庫(kù)Servo myservo;//初始化舵機(jī)控制腳為D6myservo.attach(6); //定義數(shù)字第6腳為舵機(jī)控制引腳//寫(xiě)入舵機(jī)角度,0~180度myservo.write(120); //寫(xiě)入舵機(jī)角度Arduino紅外****控制格力空調(diào)
紅外****參考鏈接:https://www.yiboard.com/thread-910-1-1.htmlhttps://www.cnblogs.com/hgxh/p/4109012.htmlhttps://www.arduino.cn/thread-1220-1-1.htmlArduino控制格力空調(diào):http://bbs.mydigit.cn/read.php?tid=2103622
紅外接收代碼,此代碼不能用于控制空調(diào):
//本例來(lái)自于紅外接收模組的IRremote自帶范例//已經(jīng)作出了修改/*電路連接 *紅外接收器的VOUT接在數(shù)字引腳3上 *效果,當(dāng)遙控器按下按鍵時(shí)電腦的串口會(huì)出現(xiàn)按鍵的命令編碼. */#include <IRremote.h> //加載頭文件,紅外的庫(kù)需自己導(dǎo)入int RECV_PIN = 3; //定義紅外接收器的引腳為3int a=0;IRrecv irrecv(RECV_PIN); decode_results results;void setup(){ Serial.begin(115200); //串口波特率115200 irrecv.enableIRIn(); //初始化紅外接收器}void loop() {if (irrecv.decode(&results)) { Serial.print("IR DATA IS:"); Serial.println(results.value); irrecv.resume(); // 接收下一個(gè)值} delay(100); }
使用上述代碼,讀出空調(diào)遙控器紅外碼,開(kāi)空調(diào):2425357322,關(guān)空調(diào):2156921866。
紅外控制空調(diào)上述代碼適合普通紅外解碼和發(fā)送,不適合空調(diào),多數(shù)空調(diào)遙控器編碼都是100位以上,甚至200位。再看看 IRremote 庫(kù)能接收多少位,在 IRremote.h 文件中你可以找到如下語(yǔ)句:
// [mw_shl_code=cpp,true]'#define RAWBUF 100// Length of raw duration buffer[/mw_shl_code] 設(shè)置成 100 位過(guò)于偏低,可以修改成[mw_shl_code=cpp,true]#define RAWBUF 255[/mw_shl_code]
紅外控制空調(diào)代碼主要參考下面的鏈接。已測(cè)試可以成功打開(kāi)格力空調(diào),但關(guān)閉空調(diào)部分的代碼有問(wèn)題。Arduino控制格力空調(diào):http://bbs.mydigit.cn/read.php?tid=2103622
MCU SDK移植
MCU快速開(kāi)始
在涂鴉創(chuàng)建產(chǎn)品后,有生成 MCU SDK 包,在 Arduino 中導(dǎo)入 MCU SDK 包,然后按下方更改即可。
//(1)#error "請(qǐng)將MCU串口發(fā)送函數(shù)填入該函數(shù),并刪除該行"Serial.write(value);//(2)#error " 請(qǐng)?jiān)趍ain函數(shù)中添加wifi_protocol_init()完成wifi協(xié)議初始化,并刪除該行"//添加wifi_protocol_init();void setup() { wifi_protocol_init(); //wifi協(xié)議初始化 }//(3)#error "請(qǐng)?jiān)诖诮邮罩袛嘀姓{(diào)用uart_receive_input(value),串口數(shù)據(jù)由MCU_SDK處理,用戶請(qǐng)勿再另行處理,完成后刪除該行" //創(chuàng)建serialEvent()函數(shù),實(shí)現(xiàn)串口接收void serialEvent() { if (Serial.available()) { unsigned char ch = (unsigned char)Serial.read(); uart_receive_input(ch); } }//在setup()函數(shù)里調(diào)用serialEvent();void setup() { serialEvent(); //串口接收處理 }//(4)#error "請(qǐng)直接在main函數(shù)的while(1){}中添加wifi_uart_service(),調(diào)用該函數(shù)不要加任何條件判斷,完成后刪除該行"//添加wifi_uart_service();void loop() { wifi_uart_service(); // Wi-Fi 串口}//(5)還需要在變量申明處去掉const ,否則會(huì)報(bào)錯(cuò)//const DOWNLOAD_CMD_S download_cmd[] =DOWNLOAD_CMD_S download_cmd[] = { {DPID_OPENSW, DP_TYPE_BOOL}, {DPID_OPENKT, DP_TYPE_BOOL}, };
上述工作完成后,基本問(wèn)題已解決??稍谕盔f模組調(diào)試助手測(cè)試。測(cè)試界面如下:導(dǎo)入 DP 文件(即 .JSON 文件),波特率設(shè)置為 115200。
涂鴉物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái)為開(kāi)發(fā)者提供了便捷的 IoT 開(kāi)發(fā)工具與服務(wù),助力開(kāi)發(fā)者更高效的完成設(shè)備接入,并為開(kāi)發(fā)者提供物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)及場(chǎng)景服務(wù)能力。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
電子管相關(guān)文章:電子管原理
光耦相關(guān)文章:光耦原理
模擬信號(hào)相關(guān)文章:什么是模擬信號(hào)
電路相關(guān)文章:電路分析基礎(chǔ)
高通濾波器相關(guān)文章:高通濾波器原理 絕對(duì)值編碼器相關(guān)文章:絕對(duì)值編碼器原理