時間:2018年01月18日 分類:電子論文 次數:
在網絡技術和通信技術的不斷發展背景下,先進的移動通信設備掌控家居生活已經成為了人們研究的重點。由于平板自身具有顯示屏幕大等優點,用平板掌控家居,操作起來更加方便,也很適合老年人使用。而本文開發的平板App程序和對應的硬件電路更是為智能家居提供了幫助,實現了通過WiFi和ZigBee技術來控制家中電燈、空調與門鎖等設備的目標,讓家居生活充滿智能化。
關鍵詞:App,WiFi平板,紅外,智能家居
隨著互聯網技術和3G、4G通信技術的不斷發展,WiFi已成為目前最普遍的無線通信方式之一。如今90%以上的家庭都擁有WiFi,主要用于手機上網。利用WiFi通信,無需布線,因此,利用WiFi進行智能家居的自動化控制成為目前工程師們研究的熱點。由于老年人反應遲鈍,視力欠佳,操作手機時,經常會因看不清或抖動出現按錯鍵的情況,更有甚者可能無法操作手機,而平板具有比手機更大的屏幕,因此,本文開發了一個基于平板和WiFi技術的智能家居監控系統,通過在平板電腦上“指指戳戳”實現開燈、開門和開關空調。
1 系統結構與功能
1.1 總體設計
系統的總體硬件結構如圖1所示。
1.2 系統的工作原理
平板通過ESP8266 WiFi模塊與基于CC2530的協調器相連。WiFi選擇AP模式,默認的IP地址為:192.168.4.1;通過AT指令可以查看或修改WiFi模塊的IP地址(具體方法見ESP8266中AT指令手冊)。為了控制空調、電燈和門鎖等設備,采用積木式結構,每個設備對應一個終端節點,終端節點與CC2530協調器之間通過ZigBee協議進行組網通信。不同的終端節點具有不同的硬件電路和控制功能,由此最終實現通過平板對家中設備如電燈、空調以及門鎖的控制。
2 系統硬件設計
系統硬件主要由基于CC2530的協調器和基于CC2530的終端節點組成,其工作原理如圖2所示。
CC2530是由美國TI公司設計的SoC芯片,它采用8051內核,含有可編程閃存、8 KB RAM、UART和SPI接口等,最重要的是具有采用ZigBee協議進行數據無線發射和接收的功能,適用于智能家居、工業控制等特定場合,能夠省去連線的麻煩,被廣泛應用于物聯網技術領域[1]。本項目中用CC2530分別設計了協調器和終端節點,兩者之間通過ZigBee進行無線通信。協調器作為平板和終端節點之間的橋梁,用以轉發各種命令和數據;終端節點用于數據采集或執行平板發送的命令,實現室內溫度數據采集、控制電燈開關、開啟門鎖和空調等。對于不同的終端節點,僅焊接相關的電子元件即可。
2.1 WiFi模塊
WiFi模塊的主芯片為高性能無線 SOC esp8266-01,在較小尺寸封裝集成了業界領先的 Tensilica L106 超低功耗 32 位 MCU以及WiFi MAC/ BB/RF/PA/LNA等,支持 16 位精簡模式和RTOS,支持標準的 IEEE 802.11 b/g/n 協議和完整的 TCP/IP 協議棧。WiFi模塊的工作電路如圖3所示。
2.2 空調控制電路設計
為了控制空調,用CC2530的P2.0通過電阻外接三極管9013的基極,9013的集電極接紅外發光二極管。通過CC2530的P2.0引腳輸出脈沖可以開啟和關閉空調。
2.3 電燈和開鎖電路設計
用CC2530的P1.3和 P1.5 輸出兩路控制信號,經三極管驅動后接繼電器,由繼電器控制燈泡的220 V電源和12 V開鎖電源,最終實現開關燈泡和門鎖。
2.4 室內溫度采集電路設計
DS18B20是美國DALLAS半導體公司設計的數字溫度傳感器[2],它可直接將溫度轉換成數字溫度值,溫度測量范圍為 -55 ~ 125℃;采用1-Wire 接口。可以編程設置上限和下限報警溫度和溫度轉換分辨,使用方便。在本系統中,CC2530的P1.1 接DS18B20的數據線,可實現室內溫度的采集。
3 系統軟件設計
線性布局(Linear Layout)是一種比較靈活的布局方式,具有操作簡單、修改方便以及界面友好等特點[3]。因此,該平板APP的設計采用線性布局的方法實現。首先,將頁面母板分成若干部分,母板Linear Layout使用Android:orientation="vertical"將各個部分垂直分布;然后,每個部分中的對象通過Android:orientation="horizontal"實現橫向分布。且采用了TextView,Editext,ToggleButton , Button,ImageView等控件。通過對每一個Button設置setOnCheckedChangeListener()語句實現對該控件的監聽。當Button被按下時,會觸發一個事件。平板App軟件大致分為3個模塊,分別是連接模塊、控制模塊和接收模塊。App運行界面如圖4所示。
3.1 IP連接模塊設計
App默認端口號為8080,默認IP地址為:192.168.1.1,如果需要也可以在IP地址欄輸入新的IP。點擊連接,會觸發Socket事件,進行Socket通信。連接成功后,App與硬件的通信都通過Socket進行,進而控制硬件操作。具體開啟線程代碼如下:
toggleButton2.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
toggleButton2.setChecked(isChecked);
if(isChecked == true)
{
socket = null;
ReceiveMessageThread r1 = new ReceiveMessageThread();// 開啟客戶端線程
r1.start();
//延時讓子線程執行完畢后再執行下方程序
for(int i=1;i<10000;i++)
for(int j=1;j<10000;j++);
if(socket != null)
Toast.makeText(MainActivity.this,"正確連入", Toast.LENGTH_SHORT).show();
else {
Toast.makeText(MainActivity.this, "失敗連入", Toast.LENGTH_SHORT).show();
}
}else{
socket = null;
Toast.makeText(MainActivity.this,"斷開連接", Toast.LENGTH_SHORT).show();
}}})
3.2 控制模塊
控制模塊包括電燈控制,門鎖控制,空調控制等。燈與門鎖通過繼電器控制,空調則用紅外控制。軟件通過Socket中的BufferedWriter將攜帶的所有控制信息發送給硬件。實現代碼如下:
BufferedWriter writer = new BufferedWriter (new
InputStreamWriter(socket.getOutputStream()))
開關控制代碼如下:
switch1.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton
buttonView, boolean isChecked) {
Toast.makeText(LampActivity.this, "LED1"+isChecked,
Toast.LENGTH_SHORT).show();
if(isChecked == true)
{
String up1 = "@LED1UP";
try {
writer2.write(up1);
writer2.newLine();
writer2.flush();
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e){
System.out.println(e.toString());
}}else{
String down1 = "@LED1DOWN";
try {
writer2.write(down1);
writer2.newLine();
writer2.flush();
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e){
System.out.println(e.toString());
}}}})
3.3 溫度采集顯示模塊
連接后,溫度采集終端節點每秒采集一次溫度,通過Socket緩沖區BufferedReader將溫度實時上傳到平板。具體代碼如下:
線程:class ReceiveMessageThread extends Thread {
public void run() {
try {
s1 = ed1.getText().toString().trim();
//s1是文本框填寫的IP地址
socket = new Socket(s1,8080);
reader = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
while((valueString1=reader.readLine()) != null){
Message message1 = new Message();
message1.what = UPDATE_RECEIVEMSG;
handler.sendMessage(message1); }
} catch (IOException e) {
e.printStackTrace();
}}}
在onResume()中運行以下代碼:
Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch(msg.what) {
case UPDATE_RECEIVEMSG:
ed2.setText(valueString1.toString());
valueString1 = null;
break;
default:
break;
}}}
4 結 語
本文研究了基于平板的家居智能控制技術,通過WiFi和ZigBee無線方式傳送命令和數據,省去了布線的麻煩。一方面,通過平板可以開門,由于電插鎖安裝在室內,使得想通過開鎖行竊的盜賊望而卻步,起到了防盜的作用。另一方面,特別是夏天,用戶無需打開蚊帳,躺在床上即可用平板開關電燈和空調,避免蚊子鉆入蚊帳中,使生活變得非常方便。本文設計的系統經過實際使用,取得了良好的效果,所研究的技術具有非常重要的意義和廣闊的應用前景。
參考文獻
[1]董澤龍,毋茂盛. SPI/UART與ZigBee協議轉換模塊設計[J].物聯網技術,2015,5(12):32-34.
[2]毋茂盛.單片機原理與開發[M].北京:高等教育出版社,2015.
[3]郭霖.Android第一行代碼[M].北京:中國工信出版集團, 2016.
[4]王健權,王蒙.基于WiFi的智能家居的設計與實現[J].科技風,2016(2):61-62.
[5]何文樂.基于物聯網和wifi的智能家居移動控制系統[J].信息通信,2016(2):90-91.
[6]朱祥賢.基于Android和ZigBee的智能家居系統設計[J].數字技術與應用,2014(9):131-133.
[7]薛誓穎,李捍東.基于ZigBee技術智能家居安防監控系統[J].物聯網技術,2017,7(7):68-70.
[8]魯玉軍,劉振.ZigBee技術在智能家居系統中的應用[J].物聯網技術,2017,7(4):40
推薦期刊:智能計算機與應用期刊是省級期刊嗎
評職人員寫好論文后事要發表的,這時就需要選擇期刊,然而作者在選擇期刊時分不清期刊的真假或者期刊的級別。目前一些期刊,尤其是學術期刊為了迎合發表論文需要,會擅自更改期刊級別說明,為了避免上當,作者在發表職稱論文的時候多關注期刊相關信息。那么智能計算機與應用是省級期刊嗎?怎么判定呢?