|
本帖最后由 lfb532 于 2018-9-13 05:29 編輯
遠(yuǎn)程繼電器控制電燈
大家都知道,繼電器在電路中是作為一個(gè)開(kāi)關(guān),當(dāng)繼電器s端收到高電平時(shí),開(kāi)關(guān)閉合,電路流通。我們就可以使用以小電壓控制大電壓。當(dāng)打開(kāi)微信物聯(lián)網(wǎng)模塊繼電器實(shí)驗(yàn)界面,按下繼電器開(kāi)關(guān),繼電器開(kāi)關(guān)閉合,電路流通,就可以控制風(fēng)扇啊,燈啊,電飯煲啊等等大功率電器。
0.jpg (52.25 KB, 下載次數(shù): 55)
下載附件
2018-9-13 04:49 上傳
0.jpg (22.83 KB, 下載次數(shù): 53)
下載附件
2018-9-13 04:49 上傳
0.jpg (55.35 KB, 下載次數(shù): 53)
下載附件
2018-9-13 04:49 上傳
例如在微信界面點(diǎn)擊繼電器標(biāo)志,微信界面發(fā)送字符“$RELAY,1#”至下位機(jī),下位機(jī)根據(jù)程序判斷繼電器開(kāi)始工作,向繼電器S信號(hào)端輸入高電平。
解釋協(xié)議:繼電器開(kāi)始工作。
然后下位機(jī)給微信界面返回?cái)?shù)據(jù)包$RELAY,(0-2),#
解釋協(xié)議:$RELAY,0,#:成功;
$RELAY,1,#:失敗;
$RELAY,2,#:不匹配當(dāng)前
0.jpg (30.76 KB, 下載次數(shù): 69)
下載附件
2018-9-13 04:50 上傳
注:由于面包板上下兩排的中間是分隔的不導(dǎo)電的,所以盡量在面包板的左半邊區(qū)域或者右半邊區(qū)域使用,如果有使用到面包板的整個(gè)區(qū)域,需要在中間用杜邦線如圖2連接。如圖用紅線模擬內(nèi)部電路,圖1的電路(紅線)中間是斷開(kāi)的,圖2連接后的面包板的電路(紅線)是流暢的、連接的。
0.jpg (39.31 KB, 下載次數(shù): 64)
下載附件
2018-9-13 04:50 上傳
1.準(zhǔn)備工作
在接好線后燒錄程序,注意:燒錄時(shí)需拔掉arduino上的0和1引腳的接線,否則會(huì)上傳失敗!在上傳成功后將0和1引腳的線接上
2.WIFI配置環(huán)境
方式一: 因每個(gè)WIFI的名稱(chēng)和密碼不同,WIFI模塊在出廠時(shí)沒(méi)有進(jìn)行配置,因此需要配置WIFI模塊。配置時(shí)手機(jī)必須連接到當(dāng)前環(huán)境的WIFI網(wǎng)絡(luò)并能正常訪問(wèn)互聯(lián)網(wǎng)。PS: 僅能識(shí)別常規(guī)的2.4G-WIFI信號(hào),無(wú)法識(shí)別5G-WIFI。
方式二: 若要在沒(méi)有WIFI網(wǎng)絡(luò)的戶外環(huán)境中使用微信遙控,需要兩臺(tái)具備移動(dòng)網(wǎng)絡(luò)的手機(jī),其中一臺(tái)當(dāng)熱點(diǎn)提供網(wǎng)絡(luò),另一臺(tái)手機(jī)連接到此熱點(diǎn),后續(xù)配置方法相同。(僅建議使用方式一,部分手機(jī)提供的WIFI熱點(diǎn)可能無(wú)法被WIFI模塊識(shí)別。)
0.png (157.93 KB, 下載次數(shù): 56)
下載附件
2018-9-13 04:51 上傳
源程序如下:
- /**
- * @par Copyright (C): 2010-2019, Shenzhen Yahboom Tech
- * @file 3、遠(yuǎn)程繼電器控制電燈
- * @author zhoujie
- * @version V1.0
- * @date 2017.11.14
- * @brief arduino物聯(lián)網(wǎng)實(shí)驗(yàn)
- * @details
- * @par History 見(jiàn)如下說(shuō)明
- *
- */
- //定義引腳
- int RELAY_Pin = 9; //繼電器信號(hào)端S
- int incomingByte = 0; // 接收到的 data byte
- String inputString = ""; // 用來(lái)儲(chǔ)存接收到的內(nèi)容
- boolean newLineReceived = false; // 前一次數(shù)據(jù)結(jié)束標(biāo)志
- boolean startBit = false; //協(xié)議開(kāi)始標(biāo)志
- String returntemp = ""; //存儲(chǔ)返回值
- void setup()
- {
- pinMode(RELAY_Pin, OUTPUT); //初始化RELAY IO口為輸出方式
-
- Serial.begin(9600); //波特率9600 (Wifi通訊設(shè)定波特率)
-
- digitalWrite(RELAY_Pin, LOW); //RELAY初始化低電平
-
- }
- /**
- * Function loop
- * @author zhoujie
- * @date 2017.11.14
- * @brief 按照接收的數(shù)據(jù)根據(jù)協(xié)議完成相應(yīng)的功能
- * @param[in] void
- * @retval void
- * @par History 無(wú)
- */
- void loop()
- {
- //$RELAY,1#
- while (newLineReceived)
- {
- if(inputString.indexOf("RELAY") == -1) //如果要檢索的字符串值“RELAY”沒(méi)有出現(xiàn)
- {
- returntemp = "$RELAY,2,#"; //返回不匹配
- Serial.print(returntemp); //返回協(xié)議數(shù)據(jù)包
- inputString = ""; // clear the string
- newLineReceived = false;
- break;
- }
-
- if(inputString[7] == '1') //繼電器開(kāi)關(guān)閉合
- {
- int i = inputString.indexOf(","); //從接收到的數(shù)據(jù)中檢索字符串“,”出現(xiàn)的位置
- int ii = inputString.indexOf("#", i); //從接收到的數(shù)據(jù)中以i為起始位置檢索字符串“#”的位置
- if(ii > i && ii > 0 && i > 0 ) //如果ii和i的順序?qū)α瞬⑶覚z索到ii與i存在
- {
- digitalWrite(RELAY_Pin, HIGH); //向繼電器S信號(hào)端輸出高電平,繼電器開(kāi)關(guān)閉合
- }
- else //檢索到ii和i的順序不對(duì)或者沒(méi)有檢索到ii或者i
- {
- returntemp = "$RELAY,1,#"; //返回匹配失敗
- Serial.print(returntemp); //返回協(xié)議數(shù)據(jù)包
- inputString = ""; // clear the string
- newLineReceived = false;
- break;
- }
- }
- else //繼電器開(kāi)關(guān)打開(kāi)
- {
- digitalWrite(RELAY_Pin, LOW); //向繼電器S信號(hào)端輸出低電平
- }
-
-
- returntemp = "$RELAY,0,#"; //返回匹配成功
- Serial.print(returntemp); //返回協(xié)議數(shù)據(jù)包
- inputString = ""; // clear the string
- newLineReceived = false;
-
- }
-
- }
- /**
- * Function serialEvent
- * @author zhoujie
- * @date 2017.11.14
- * @brief 串口接收中斷 serialEvent()是IDE1.0及以后版本新增的功能,不清楚為什么大部份人不愿意用,這個(gè)可是相當(dāng)于中斷功能一樣的啊!
- * @param[in] void
- * @retval void
- * @par History 無(wú)
- */
- void serialEvent()
- {
- while (Serial.available()) //如果串口接收到數(shù)據(jù)則進(jìn)入循環(huán)
- {
- incomingByte = Serial.read(); //一個(gè)字節(jié)一個(gè)字節(jié)地讀,下一句是讀到的放入字符串?dāng)?shù)組中組成一個(gè)完成的數(shù)據(jù)包
- if(incomingByte ==
- ) //如果到來(lái)的字節(jié)是
- ,開(kāi)始讀取
- {
- startBit= true;
- }
- if(startBit == true)
- {
- inputString += (char) incomingByte; // 全雙工串口可以不用在下面加延時(shí),半雙工則要加的//
- }
- if (incomingByte == '#')
- {
- newLineReceived = true; //如果到來(lái)的字節(jié)是'#',讀取結(jié)束
- startBit = false;
- }
- }
- }
復(fù)制代碼
0.png (47.57 KB, 下載次數(shù): 46)
下載附件
2018-9-13 04:51 上傳
所有資料51hei提供下載:
3.遠(yuǎn)程繼電器控制電燈.zip
(3 MB, 下載次數(shù): 42)
2018-9-6 13:46 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|