以
遠距離wifi模塊為核心的無線控制系統(tǒng)通用設(shè)計,當今,無線設(shè)備高速發(fā)展迎接5G時代,以華為為代表的眾多手機廠商紛紛推出5G手機,那時無線已成為一種趨勢,但WiFi控制的生活卻并不多,現(xiàn)在每天可以看到的都是用紅外線對生活進行控制,而這在手機中具有紅外線的功能卻屈指可數(shù),但每一個智能手機用戶都擁有WiFi的功能。
平時,家用電器大多采用按鍵和紅外線等半自動控制方式,很少用手機或平板類來控制移動設(shè)備,然后向移動設(shè)備發(fā)送切換指令到遠距離wifi模塊CV520S無線WIFI模塊該模塊通過串口接收移動設(shè)備的指令發(fā)送給單片機STC12,然后,單片機根據(jù)預(yù)先設(shè)定的指令對電扇進行開關(guān),從而實現(xiàn)了無線控制家電的目的。
該系統(tǒng)概覽系統(tǒng)設(shè)計概述STC12小系統(tǒng)為主,通過增加外部物聯(lián)網(wǎng)設(shè)備遠距離wifi模塊CV520S
無線WIFI模塊(本后文簡稱WIFI模塊)和220VAC繼電器,該無線模塊要求具有固件和預(yù)置模式,STC12小系統(tǒng)無多余外置極大地減少了I/O占用的同時,也減少了系統(tǒng)負載,再通過I/O口控制220VAC繼電器,就可以達到對家庭電扇的控制效果。該系統(tǒng)分為四個模塊:控制模塊(STC12)、WIFI模塊(CV520S)、移動控制設(shè)備(TCP/UDP調(diào)試助手)、受控模塊(220AC繼電器)WIFI模塊和單片機通過串口進行通訊,二者需要相同的波特率,除此之外,每次上電MCU需要發(fā)送指令來啟動WiFi模塊,至此模塊成功啟動,此時移動端TCP/UDP調(diào)試助手可以搜索WiFi模塊的熱點。移動者發(fā)送字符串"kaiFS",WiFi模塊通過串口接收字符串"kaiFS",MCU接收"kaiFS"的啟動繼電器,電扇啟動成功。還可以發(fā)送guanFS來達到關(guān)閉風扇的效果。
編程MCU時使用C語言,先編寫串口功能VoidUSART_Init()設(shè)置函數(shù)名S2CON=0x50;設(shè)置1,8個數(shù)據(jù)位,波特率可變。AUXR=0XF7;使能單獨產(chǎn)生波特率,波特率不增加。AUXR=0x04;將1T的時鐘周期設(shè)置為BRT=0XD9;BRT=0MH,波特率為9600。AUXR=0x01;啟動獨立波特率生成器(BRT)EA=1;開啟總中斷。IE2=1;開啟串口二中斷至此串口初始化函數(shù)寫完。
voidUart2_sendbyte(unsignedchardate);這里是發(fā)送單字節(jié)的無符號字符,S2BUF=date;向發(fā)送數(shù)據(jù)緩沖寄存器發(fā)送數(shù)據(jù),在停止位發(fā)送后,串口控制寄存器S2CON第二位是發(fā)送中斷請求標注位S2TI發(fā)送請求標志位由軟件到1,即S2TI=1;發(fā)送一個字節(jié)后S2TI=0;S2TI=0;與WiFi模塊通信時大多數(shù)發(fā)送和接收的數(shù)據(jù)是字符串,因此需要能夠發(fā)送字符串功能的函數(shù)。unsignedchar*p,voidUart2_send_string(unsignedchar*p);這里是while的起始地址,向字符串開始地址(*p!='\0');通過while()以不間斷的方式,發(fā)送單字節(jié)到達發(fā)送字符串的功能Uart2_sendbyte(*p);在2.2.1中有說明,p++這段代碼的作用就是持續(xù)指向下一位,發(fā)送完成后,p將指向空字節(jié),使*p=='\0'。跳過while()循環(huán)(C語言編程),字符串成功發(fā)送。
STC12單片機中的串口二有中斷功能打開僅需加interrupt8即可,例如voiduart2_isr(void)interrupt8;在串口控制寄存器S2CON的一個比特是接收中斷請求標志位S2RI此外,如果接收數(shù)據(jù)完成,則由硬件設(shè)置1即S2RI=1;接收完成后必須置零,否則,下次接收到的數(shù)據(jù)將不響應(yīng)接收中斷。接受字符data=S2BUF;S2BUF是接收數(shù)據(jù)緩沖器。將dat[i++]=date;dat數(shù)組只需保存來自WiFi模塊的數(shù)據(jù),而dat陣列則保存該數(shù)組。
本文主要介紹遠距離wifi模塊CV520SWiFi模塊,該模塊具有AP和STA兩種模式。AP通常用作server,(基于51單片機物聯(lián)網(wǎng)家庭電話Wi-Fi控制開關(guān)系統(tǒng))STA常作為客戶端使用實現(xiàn)對家電的控制功能僅需AP模式。接下來,您需要設(shè)置AP指令,AT+CWSAP=“CV520”,“12345678”,11,3打開WiFi熱點名稱位CV520??诹顬?2345678,AT+CIPSTART="TCP","192.168.4.2",11,3,可以通過TCP連接且地址為192.168.4.2端點8888,端口號碼可以修改。WiFi模塊和單片機要有同樣的波特率才能完全通訊。設(shè)定WiFi模塊的波特率需要與PC相連這里我使用的是USB轉(zhuǎn)TTL模塊,WIFI模塊成功啟動后,PC上位機上一臺“ready”指示說明成功啟動。在AT+RST重新啟動模塊后,我們通過串口助理發(fā)送代碼AT+CIOBAUD=9600設(shè)置成功WiFi模塊將返回OK指示設(shè)置成功,然后AT+RST重啟模塊才能生效。重新啟動成功也將顯示“ready”此時模塊可以與單片機通信,MCU每次充電都需要發(fā)送AT+CIPMUX=1;AT+CIPSERVER=1,8080;模塊收到后,移動設(shè)備WiFi功能可以搜索到名為CV520且輸入密碼12345678可以成功地連接。此時WiFi模塊設(shè)置完畢!
TCP/UDP調(diào)試助手連接WiFi模塊發(fā)出的熱點之前,需要手機端連接成功連接WiFi如何連接到2.3有敘述IP地址192.168.4.2和端口號8888,通過TCP/UDP調(diào)試程序在移動設(shè)備端進行調(diào)試??梢园l(fā)送數(shù)據(jù)表明連接成功。然后可以實現(xiàn)2.3的功能設(shè)置TCP/UDP調(diào)試助手發(fā)送“kaiFS”,遠距離wifi模塊接收數(shù)據(jù)通過TXD-RXD發(fā)送到單片機,單片機接收命令關(guān)閉風扇,同樣關(guān)閉風扇發(fā)送“guanFS”。
本文詳細介紹了遠距離wifi模塊和單片機的配置,并給出了一些具體代碼,移動設(shè)備通過TCP/UDP客戶端發(fā)送開關(guān)指令,從而實現(xiàn)通過手機對家電進行控制。