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

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

創建完成后即可自動進入項目管理界面,

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

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

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

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

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

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

選擇ESP8266 DownloadTool,

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

點擊右下角新增,將機智云網頁中的 product key 和 product secret 復制進去,


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

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

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

KiCad直播活動(三):在 Windows上編譯KiCad 手把手教您編譯/構建 KiCad 源碼

《零基礎開發AI Agent——手把手教你用扣子做智能體》
《手把手教你做星閃無人機—KaihongOS星閃無人機開發實戰》系列課程課件匯總
《手把手教你做PC-KaihongOS筆記本電腦開發實戰》課件匯總
《手把手教你做星閃無人機》即將開播,鎖定15日晚七點!

《手把手教你做PC》課程即將啟動!深開鴻引領探索KaihongOS筆記本電腦開發實戰

手把手教你通過宏集物聯網工控屏&網關進行協議轉換,將底層PLC/傳感器的數據轉換為TCP協議并傳輸到用戶

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

評論