在選題之后直接開始面向CSDN編程(bushi),因為智能家居的方向太廣,大多數(shù)都是基于STM32單片機制作的,也有部分51單片機。但因為選題原因,我需要找到Arduino單片機的例程,關(guān)于這一部分又雜又亂,所以我只能把所有看起來有用的東西全部收藏,然后在后面著手制作的時候拿出來看。
最后的成品狀態(tài)如下圖:

總而言之呢,我的畢業(yè)設(shè)計實現(xiàn)了以下幾個功能,這幾個功能應(yīng)付一下畢設(shè)應(yīng)該是沒問題的:
1)在手機端單獨控制每個控制端的開關(guān)。
2)在手機端查看傳感器數(shù)據(jù)。
3)監(jiān)測到火焰自動報警、開窗、開門。
4)監(jiān)測到下雨自動關(guān)窗。
5)在進行操作時有聲音提示。
6)按鍵實現(xiàn)在自動模式和手動模式切換的功能。
7)在白天回家開門時自動開門、開窗;在夜晚回家時自動開門、開燈、開窗;離家時自動 關(guān)燈、關(guān)窗。
8)多種模式選擇,包括正常模式、睡覺模式、電影模式、下雨模式、自動模式。
9)自動模式實現(xiàn)傳感器與家具聯(lián)動,根據(jù)傳感器設(shè)置的值自動開關(guān)家具。
功能不算很多,也不是很高大上,同時還是有略微的幾個bug(畢竟誰不會寫bug呢),但是基本運行完全沒問題,具有很強的參考意義。
1
機智云平臺的配置
要制作智能家居系統(tǒng),大家的第一想法就是遠(yuǎn)程控制,其次就是設(shè)備之間的聯(lián)動。
所以要解決遠(yuǎn)程控制這個問題,有很多方式,比如自己架設(shè)服務(wù)器、使用平臺提供的服務(wù)等,對于這一系列教程來說,我們就要使用最簡單的方式快速的開發(fā)自己的智能家居系統(tǒng),因此我選擇了機智云平臺。
選擇機智云的原因就是它提供了一系列的服務(wù),就像自動代碼生成服務(wù),云端服務(wù)等。我們只需要自己設(shè)置數(shù)據(jù)點(硬件的數(shù)據(jù)范圍、名稱),它就可以一鍵生成硬件端的配置代碼以及手機APP控制端的源碼,可以說是非常方便了。
關(guān)于機智云平臺的簡介我就不在這里多說了,有想深入了解的小伙伴可以自行查閱百度或者機智云開發(fā)文檔。下面直接進入正題,我的教程全部依照我自己的設(shè)計進行講解。
首先需要注冊一個機智云賬號:https://www.gizwits.com/,注冊之后進入開發(fā)者中心,點擊創(chuàng)建新產(chǎn)品,進入如下界面并選擇:

創(chuàng)建完成后即可自動進入項目管理界面,

左側(cè)工具欄中,基本信息包含了產(chǎn)品名字,產(chǎn)品類型,通訊方式以及Product Key,Product Secret 。
數(shù)據(jù)點是項目中使用到的硬件模塊的各種信息,這部分信息需要自己創(chuàng)建數(shù)據(jù)點,在后續(xù)自動生成代碼時就會自動把數(shù)據(jù)的get、set、send生成好,差不多就這個意思。
虛擬設(shè)備是模擬調(diào)試,數(shù)據(jù)點創(chuàng)建好之后可以在網(wǎng)頁中實時的模擬數(shù)據(jù)的上傳和數(shù)據(jù)的讀取,可以用來判斷數(shù)據(jù)點設(shè)置的是否正確。
再到服務(wù)一欄,應(yīng)用配置就是對APP安裝包文件的配置,在這里生成一個ios或者安卓的安裝應(yīng)用程序,可以在其中添加QQ\微信登錄選項(需要自己去申請api接口key),
應(yīng)用開發(fā)就是生成APP的源碼包的地方,這個地方在APP篇會在講解,最開始調(diào)試可以使用機智云提供的默認(rèn)APP。
MCU開發(fā)是這篇需要用到的,自動生成的硬件端代碼。
首先對數(shù)據(jù)點進行配置:
進入數(shù)據(jù)點一欄后,點擊新建數(shù)據(jù)點,根據(jù)自己的設(shè)備進行選擇,比如說我現(xiàn)在要添加一個LED燈,標(biāo)識名(自己定)我就填寫LED_Bedroom,大家也知道要控制一個LED燈,通常使用1,0表示開和關(guān),因此我們需要設(shè)置一個可寫的數(shù)據(jù)點,來寫入開關(guān)信息,數(shù)據(jù)類型選擇布爾就可以個,只需要ture和false值就好。完成后點擊添加,這樣我們就添加進了第一個數(shù)據(jù)點。

接下來我們添加一個光照傳感器的數(shù)據(jù)點,光照傳感器的運行模式就是將模塊中的光照數(shù)值傳入開發(fā)板中,因此光照傳感器的讀寫類型設(shè)為只讀即可,數(shù)據(jù)類型選擇數(shù)值,經(jīng)過資料查詢發(fā)現(xiàn)光照傳感器的數(shù)值范圍為1-65535,分辨率的意思就是保留幾位小數(shù),根據(jù)光照傳感器的最大參數(shù)自行設(shè)定即可。

接下來創(chuàng)建一個枚舉類型的數(shù)據(jù)點,用來設(shè)置不同的模式,我在自己的項目中設(shè)置了正常模式、睡覺模式、電影模式、下雨模式和自動模式五種模式,用來一鍵切換。如下:

常用的數(shù)據(jù)點設(shè)置就是這樣,根據(jù)自己使用的模塊設(shè)置即可,在數(shù)據(jù)點主界面可以編輯中文名稱,會顯示在最后生成的APP中。我的數(shù)據(jù)點設(shè)置如下:

數(shù)據(jù)點設(shè)置完成之后一定要保存,否則刷新會消失。
接下來就可以自動生成代碼了,在左側(cè)工具欄選擇基本信息,點擊顯示Product Secret,復(fù)制顯示出來的代碼,再選擇左側(cè)工具欄的MCU開發(fā),并將剛才復(fù)制的Secret粘貼上,并如下選擇:

點擊生成代碼包,稍等片刻即可下載。此時就可以放一邊備用了,關(guān)于機智云的配置就結(jié)束了。
2
ESP8266-01S的固件燒錄
我們選擇了機智云平臺,因此我們要給它燒錄進相應(yīng)的固件——Gagent固件,下載地址:
https://download.gizwits.com/zh-cn/p/92/94
下載這個即可。
下載好之后就可以進行燒錄的,因為ESP8266-01s并沒有USB接口,因此我們需要一個下載器燒錄模塊,usb轉(zhuǎn)ttl模塊,型號為cp2102,長這個樣子:
使用時需要下載驅(qū)動,這里讀者可以自己去搜索安裝。同時我們需要下載固件燒錄工具,flash_download_tool_v3.8.5,這里讀者可以自己去搜索安裝。以及需要下載機智云的Gagent_Debugger_v3.2.3軟件,用來燒寫好后進行調(diào)試固件。
https://download.gizwits.com/zh-cn/p/98/119
下面是連線說明,連線不夠用可以借助面包板:
USB轉(zhuǎn)TTL的RX連接ESP8266-01s的TX
USB轉(zhuǎn)TTL的TX連接ESP8266-01s的RX
USB轉(zhuǎn)TTL的3v3連接ESP8266-01s的3v3
ESP8266-01s的IO0接地!
ESP8266-01s的EN接高(接到3v3即可)
USB轉(zhuǎn)TTL的GND連接ESP8266-01s的GND
ESP8266的gpio0端口控制著模塊的工作模式,GPIO0為低時是下載(燒錄)模式,正常時為工作模式,因此燒錄完成之后將此線拔掉在上電即可正常工作。
在這里需要注意,ESP8266-01s模塊需要非常標(biāo)準(zhǔn)的3.3v供電,千萬不要接到非3.3供電接口。
準(zhǔn)備工作正式完成,下面我們就可以開始準(zhǔn)備燒錄固件了,
首先打開下載好的flash_download_tool_v3.8.5,選擇Developer Mode:

選擇ESP8266 DownloadTool,

打開后如下圖選擇:
第一行中的文件選擇剛才下載好的ESP8266-01s的Gagent固件(GAgent_00ESP826_04020034_8MbitUser1_combine),之后將usb轉(zhuǎn)ttl插入電腦,選擇好COM端口,點擊START就可以燒寫了,其中可能燒寫失敗或者連接失敗很多次,可以嘗試更換電腦、USB端口、多試幾次進行燒寫,直到Success為止。
此時固件燒寫完成了,下面進行調(diào)試:
打開剛才下載的Gagent_Debugger_v3.2.3,轉(zhuǎn)到配置左邊的配置框

點擊右下角新增,將機智云網(wǎng)頁中的 product key 和 product secret 復(fù)制進去,


添加成功后選擇模擬 mcu 選項卡,

此時可以看到上一篇中添加的數(shù)據(jù)點在右邊顯示了出,

此時將ESP8266-01s的IO0線拔掉不要接,再次將USB轉(zhuǎn)TTL模塊插入電腦中,在Debugger軟件中選擇好串口和波特率,點擊打開串口,即可進行調(diào)試,此時也可以進行網(wǎng)絡(luò)的連接,但是需要配合機智云平臺提供的軟件進行網(wǎng)絡(luò)配置,如果有興趣的小伙伴可以自己試一下,在后面也會講。
點擊左下角的Airlink即可進入網(wǎng)絡(luò)配置,在機智云的軟件中選擇添加設(shè)備,選擇好樂鑫ESP8266即可自動搜索,搜索到就是正常的網(wǎng)絡(luò)連接信息,填寫即可。
ESP8266-01s固件燒錄以及配置就完成了。
3
開發(fā)板與模塊的連接
首先主控板使用的是Arduino uno R3,無線模塊使用的是ESP8266-01s,在前面的文章已經(jīng)介紹過了,其次就是各種模塊了。介紹的所有模塊的連接都是按照畢業(yè)設(shè)計的針腳號進行連接,后面讀者可以自己設(shè)置針腳自己連接。在初步連接時可以使用面包板驗證可行性(就是測試一下能不能運行,并且能不能成功顯示數(shù)據(jù))。
我也會在模塊下方貼出我自己在網(wǎng)上找的并且應(yīng)用的使用代碼。
1)DHT11 溫濕度傳感器模塊
3pin,3.3v或者5v供電都可以,中間是數(shù)據(jù)口,代碼中需要設(shè)置端口為INPUT,接在D2口。
byteDHTPIN=2;//定義端口
DHTdht(DHTPIN,DHTTYPE);//初始化
//溫濕度傳感器獲取數(shù)據(jù)
void DHT11_Read_Data(unsigned char * temperature, unsigned char * humidity)
{
*temperature=(unsignedchar)dht.readTemperature();
*humidity=(unsignedchar)dht.readHumidity();
return;
}
2)低電平觸發(fā)的有源蜂鳴器
3pin,接3.3v或者5v都可以,5v更響(沒必要2333),中間是數(shù)據(jù)口,要在代碼中設(shè)置端口為OUTPUT,并初始化為高電平HIGH,接在D3口。使用代碼(ps:使用時記得加延時 ):
digitalWrite(buzzerIO, LOW); //輸出低電平,響
digitalWrite(buzzerIO, HIGH; //輸出高電平,不向
3)SG90 舵機 360度/180度
舵機有360度舵機和180度舵機,360度就是能360度來回轉(zhuǎn)圈,180度只能轉(zhuǎn)到設(shè)定的角度。
3pin,紅色正極,棕色負(fù)極,黃色數(shù)據(jù),3.3v和5v都可以帶動,但是3.3v會有干擾問題導(dǎo)致360度設(shè)定一致時轉(zhuǎn)動圈數(shù)不一致,所以建議用5v(因為好像要設(shè)計什么濾波電路,我并不會23333)。
360度是模擬窗簾,180度模擬門,360度端口接到D5,180度接到D4。
360度舵機使用代碼:
4)BH1750光照強度傳感器
Servo myServo1; //定義舵機1 (180度)
ServomyServo2;//定義舵機2(360度)
byte posdoor = 0; //180舵機端口
byteposcurtain=0;//360度舵機端口
setup(){ //初始化函數(shù)
myServo1.attach(DoorPin); //設(shè)置180度舵機端口
myServo1.write(0);//在180度舵機中:0為0度,里面的參數(shù)為度數(shù),設(shè)置多少度就會轉(zhuǎn)到多少度。
myServo2.attach(curtainPin); //設(shè)置360度舵機端口
myServo2.write(90); //在360度舵機中:參數(shù)90為停止,0和180為正反轉(zhuǎn)。
}
myServo2.write(0); // 正轉(zhuǎn)360度舵機
delay(2000); //延時2000ms,此時一直在轉(zhuǎn)動,如果不設(shè)置下一條代碼就停
myServo2.write(90);//停止轉(zhuǎn)動360度舵機
myServo1.write(120); //180舵機轉(zhuǎn)到120度方向
myServo1.write(0); //180度舵機轉(zhuǎn)到0度方向
5pin,其中一個沒用,接3.3v電源,走的I2C通道(雖然我看了半天沒看懂這個協(xié)議),SCL接SCL,SDA接SDA,這里要注意接觸不良問題,在最后的程序中因為接觸不良經(jīng)常導(dǎo)致整個進程直接卡死,當(dāng)時找不到原因傷透了腦筋。
使用代碼:
5)雨滴傳感器
byte buff[2];
//光照傳感器獲取數(shù)據(jù)
intBH1750_read(){
Wire.beginTransmission(ADDRESS_BH1750FVI); //獲取傳感器地址
Wire.write(ONE_TIME_H_RESOLUTION_MODE); //設(shè)置開始模式
Wire.endTransmission();
Wire.requestFrom(ADDRESS_BH1750FVI, 2); //讓主機從傳感器獲取2位字節(jié)的數(shù)據(jù)
highByte = Wire.read(); //獲取高位字節(jié)
lowByte = Wire.read(); // 獲取低位字節(jié)
sensorOut = (highByte << 8) | lowByte;
illuminance = sensorOut / 1.2;
returnilluminance;
}
走的是模擬接口也就是A的那一排,3.3v供電,模塊上的D端口可以不接,A0接開發(fā)板的A0。
使用代碼:
//雨滴傳感器讀取數(shù)據(jù)
int value = analogRead(RainIO); //value值就是當(dāng)前的數(shù)據(jù)
6)火焰?zhèn)鞲衅?/span>
3.3v供電,模塊的D0接板子的D13,可以調(diào)節(jié)上面的旋鈕來調(diào)整靈敏度,調(diào)整到打火機在旁邊打火時出現(xiàn)警報即可。
使用代碼:
intvalue=digitalRead(fireIO);
當(dāng)示數(shù)為1時,代表檢測到火焰,為0時表示沒有火焰。
7)繼電器+風(fēng)扇
風(fēng)扇買最小的需要電壓最小的即可,同時需要電池盒對風(fēng)扇進行供電。繼電器就是一個電磁開關(guān),有電時閉合,沒電時打開。在圖中左邊是開關(guān)接口(或許可以這么說),右邊是開發(fā)板控制端。
右邊需要接開發(fā)板,3.3v或5v供電,中間是數(shù)據(jù)接口,接開發(fā)板的D10.
風(fēng)扇與電池盒串聯(lián),在將其中一條線接到繼電器左邊中間的接口,另一條線接到左邊或右邊的端口,兩個端口區(qū)別就是一個是低電平觸發(fā)一個是高電平觸發(fā),可以看作“雙開門”的樣子。
8)LED燈
LED燈用了三個,分別用作廚房、臥室、客廳的燈光模擬,長腿是正,短腿是負(fù),接反了不亮,同時所有燈我都串聯(lián)了一個電阻,親測直接接5v會立即燒壞,所以不管3.3還是5v我都串聯(lián)了10k電阻。
9)key按鍵
對角接線,左上角接地,右下角接開發(fā)板D12口。
至此接線部分就全部完成了,關(guān)于代碼部分在這里確實不詳細(xì),因為我從網(wǎng)上copy下來的代碼在我的程序中多多少少都做了更改,網(wǎng)上也是有完整的運行代碼,讀者可以自己去搜索。
代碼的合并、編寫及燒錄可以至B站(ID:一頓晚上飯)查看。
-
智能家居
+關(guān)注
關(guān)注
1931文章
9622瀏覽量
186755
發(fā)布評論請先 登錄
相關(guān)推薦
《手把手教你做星閃無人機》即將開播,鎖定15日晚七點!

《手把手教你做PC》課程即將啟動!深開鴻引領(lǐng)探索KaihongOS筆記本電腦開發(fā)實戰(zhàn)

源碼開放 智能監(jiān)測電源管理教程寶典!

Air780E模組LuatOS開發(fā)實戰(zhàn) —— 手把手教你搞定數(shù)據(jù)打包解包

stm32單片機畢業(yè)設(shè)計——物聯(lián)網(wǎng)智能家居源代碼原理圖

PWM在智能家居系統(tǒng)中的應(yīng)用
手把手教你通過宏集物聯(lián)網(wǎng)工控屏&網(wǎng)關(guān)進行協(xié)議轉(zhuǎn)換,將底層PLC/傳感器的數(shù)據(jù)轉(zhuǎn)換為TCP協(xié)議并傳輸?shù)接脩?/a>

STM32項目分享:智能家居(機智云)系統(tǒng)

智能家居系統(tǒng)設(shè)計方案
智能家居與物聯(lián)網(wǎng)的關(guān)系
智能家居控制系統(tǒng)如何設(shè)計
手把手教你在orcad中設(shè)置CIS元器件數(shù)據(jù)庫,提高工作效率

手把手教你排序算法怎么寫

手把手帶你移植HAL庫函數(shù)

評論