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