摘要
隨著科技的飛速發展,魚缸在國內市場上產品繁多,功能不統一,而且大多是非智能化的,功能使用不靈活、不方便,整體性能也無法得到提升,在科技改變生活的時代,對傳統的魚缸進行科技化的改造勢在必得,這將會給人們帶來更多的幸福感。
本論文以 STM32F103C8T6 單片機為核心,設計了一款基于機智云物聯網平臺的智能溫控,智能換水,智能供養,智能照明和智能顯示系統。該系統以 esp8266WiFi 模塊通信為基礎,可以遠程手機監控。本設計硬件電路結構簡單,分為單片機核心控制器模塊,NTC 溫度傳感器檢測智能魚缸的水溫,通過 OLED 顯示當前設備的電流值、溫度值和充氧速率等,按鍵電路用來調節充氧速率、水溫參數的閾值、控制供養和補光,繼電器用來驅動水泵給魚缸加水。
還實現了通過 ESP8266WIFI 模塊實時將數據上傳手機 APP 進行控制,而且可以通過按鍵或手機 APP 調節控制魚缸的各項功能,本論文基于物聯網的智能魚缸系統設計對當代物聯網行業的發展具有一定的意義。
1 緒論
基于物聯網的智能魚缸的發展意義重大,因此,根據市場需求,本次設計的產品采用了 STM32,該產品集成了多種控制功能,包括智能溫度控制,智能換水,智能供氧,智能照明和智能顯示。該系統通過 WiFi 模塊連接到機智云手機 APP,以通過移動應用程序實現魚缸溫度,照明和水變化的遠程監控,并可以在顯示器上顯示時間,水溫,電流,功率和功耗統計信息。
綜上所述,基于物聯網的智能魚缸監測系統的設計與實現解決方案可以節約人工管理的繁瑣,在被動的管理模下,轉化為宏觀的控制,當監視的人不在的時候可以根據微信端來控制供養和照明系統的的控制,還有電流和電量也可以進行調節,對于大型的水族館,可以節約大量人力和物力,對于家庭環境,可以提高家庭的和睦性,對現代生活的發展意義重大。
1.1 本設計主要完成工作
基于以上研究背景和研究意義,本文詳細介紹基于 stm32 單片機和 ESP8266WIFI 對接機智云物聯網云平臺的無線魚缸智能監控系統,實現魚缸遠程控制功能。硬件電路結構簡單,由一些傳感器模塊和系統硬件電路組成,具體包括 ESP8266WIFI 通信模塊,OLED 人機交互顯示模塊,按鈕電路控制模塊,繼電器驅動電路模塊,水溫檢測 AD 處理電路,以及六個電路模塊,如系統電流和電壓檢測。其中,核心控制微控制器為 STM32F103C8T6,人機交互模塊使用 OLED12864 來顯示各種參數數據,并使用按鍵來調節每種模式作為輸入設備。
本文的結構如下:
第一部分介紹了系統的設計背景,介紹了基于物聯網的智能魚缸控制系統的總體方案設計和研究目的。
第二部分是研究系統各模塊的通信原理,包括建立 WIFI 模塊或 Gizwits 終端服務器。
第三部分是完成整個物聯網智能魚缸系統的原理圖和 PCB 圖。
第四部分是完成系統使用的開發環境的介紹和應用,并編寫每個模塊的子功能和主要功能的程序設計。
第五部分是完成系統的 PCB 設計,然后完成系統的焊接和實物功能測試。
2 各模塊的通信原理
2.1 系統功能分析
(1)基于 STM32 硬件系統,結合 ESP8266WiFi 通信技術對接機智云平臺,實現手機 APP 遠程控制照明燈光和繼電器等。
(2)系統實時顯示時間、水溫、電流、功率、耗電量等基本信息,能實現 APP 操作控制。
(3)系統手機端可以遠程一鍵切斷設備的輸出控制,即 “緊急停止” 功能。
(4)LED 照明可以實現亮度調節,充氧可以實現速率調節。此功能可以遠程控制,也可以遠程手機控制。
(5)人機交互采用 OLED 顯示屏,具有好的人性化操作界面。
(6)設備能夠聯網與機智云平臺實時進行信息交互,實現手機端可以遠程控制設備、監測設備運行數據。
2.2 系統總體方案設計
通過對硬件模塊選擇方案的比較和分析確定了這個想法,系統總體結構框圖如圖 2.1 所示,將整個系統分為以下組成部分:STM32 核心控制、按鍵調節、OLED 顯示、ESP8266 感知層配網、繼電器驅動電路、補光燈 LED 照明系統,電源穩壓組成電路。
系統運行時,通過控制器通過程序讀取由溫度感測元件組成的溫度檢測電路輸出的 AD 值,以讀取當前的輸出溫度值 C,四路繼電器分別控制加熱電路,補光電路,供氧電路,輸出一定的電流電壓信號,溫度測試采用探頭式 DS18B20 傳感器,系統的輸入電壓電流由 DACMP2303 轉換電路采集之后經過內部再經過內部 AD 轉換為電壓,再計算出器功率,系統運行時控制器通過串口訪問 ESP8266WiFi 模塊,通過GAgent協議上傳機智云終端服務器,并經過單片機數據處理通過手機 APP 顯示,當用戶想調節手動控制加熱或補光燈,只需通過手機 APP 發送指令,實現遠程控制的功能。最后,該系統通過按鈕掃描,響應按鈕輸入并控制 OLED 顯示屏以顯示各種相關數據信息,完成人機交互。
2.3 主要元器件的選型
2.3.1 主控單片機
方案 1:STM32F103C8T6 單片機主要的特點就是運行速度快,這就要從它的內核架構 Cortex-M3 說起,該架構是 ARM 系列中最經典的架構,而 STM32 系列單片機恰好使用了這個架構,不但提高了單片機的運行速度,還在根本上提升了單片機的性能。而從內存上來看 STM32 系列的單片機至少也有 16K 的內存,而且還帶有 AD 轉換器、I2C 接口以及 SPI 接口,簡化了電路連接。
方案 2:目前的主控制器中,STC89C52 單片機延用的架構仍然是傳統的 51 系列單片機特有的 8051 架構,基本上每一款的 51 系列單片機的程序、引腳等都是可以通用的。從單片機的引腳上來看,該款單片機有 32 個 I/O 口可以開發使用,引腳的功能也都非常清楚明了,能夠幫助開發者來快速設計出電路,從軟硬件兩方面降低了系統的開發難度。但是該款單片機只能容納 8K 的代碼,會降低系統運行速度。
結論:STC89C52 單片機的運行速度會影響系統全局,而 STM32F103C8T6 單片機軟件和硬件更加簡單,符合系統需求,因此首選 STM32F103C8T6 方案。
2.3.2 顯示模塊型號的選擇
方案 1:LCD1602 是一款顯示容量為 32 個字符的液晶式顯示屏,其中包括大小寫字母、符號、簡單的圖形等內容。使用 LCD1602 時直接采用電壓就能對顯示屏的顯示區域進行控制。如果想詳細的了解 LCD1602 可以查閱顯示屏的手冊,從手冊中可以找到顯示屏的代碼直接調用及修改即可,還可以了解到 LCD1602 的電路及各引腳功能,但是該模塊是不能顯示文字和圖片的,很多數據信息都無法顯示完整的,因此從軟件和硬件這兩個方面以及顯示內容來看還得尋求其它的方案設計。
方案 2:本次系統設計選擇 0.96 寸的 OLED(Organic Light-Emitting Diode,有機發光半導體)是有機發光二極管的英文縮寫,液晶屏顯示。考慮到低功耗和交互的友好性,液晶屏顯示必然成為首先。傳統的字符型液晶顯示器,雖然可以能符合以上兩點要求。但相比于便攜性,選用 OLED 顯示器,將更為優越,非常便合于便攜式設備上。本設計選用 OLED 最大支持 64 個字符顯示,其 4 行,每行 16 字符,除了支持所有 ASCII 碼,還自帶字體庫。非常便于顯示信息。顯示字符支持黃,藍兩種不同顏色。
結論:OLED12864 在顯示上更有優勢,符合本系統要求,因此選擇方案 2。
2.3.3 無線通訊方案的選擇
使用 ESP8266 系列無線模塊是高性價比 WiFiSOC 模組,它能夠快速聯網,只需要五步就可以實現 “IoT 技術”,WiFi 模塊采用低功率 32 位 CPU,并且可以作為處理器,主頻最高可達 160MHz。內置 10 位高精度 ADC 轉換模塊,具備緩存能力、上手容易、開發邏輯簡單等特點,關鍵是傳輸數據較為穩定,可以連接機智云終端服務器進行遠程監控,如下表是 ESP8266 工作的指令。
2.3.4 溫度傳感器方案的選擇
為了實時檢測魚缸內的溫度,我們需要一些防水的溫度傳感器,本設計采用 NTC 溫度傳感器,是一個熱敏電阻、探頭,其原理是:的電阻值隨著溫度的升高而迅速降低,實際尺寸非常靈活,它們可以小到 0.010 英寸,也可以是非常小的直徑,最大尺寸幾乎沒有限制,但通常不到半英寸。一般結構由 NTC 熱敏電阻、探頭 (金屬外殼或塑料外殼等) 組成,延長線和金屬端子或連接器,檢測的時候測得數據很穩定,誤差很小。
圖 2-3 NTC 溫度傳感器
它的特點一般是靈敏度高,阻值和 B 值精度高,一致性互換性比較好,并且采用雙層包封工藝,具有良好的絕緣密封性和抗機械碰撞,抗彎折能力。
2.3.5 繼電器驅動方案的選擇
為了驅動繼電器更加有效的工作,系統增加了 ULN2003 驅動芯片,該芯片的主要作用就是對于輸入電流進行放大,然后再驅動 5V 和 12V 的繼電器,因為繼電器驅動的模塊電路是需要較大的電流和電壓工作的。該芯片可用于設置脈沖驅動步進電機、驅動馬達或者直流電機,更有效的和最佳的選擇就是驅動繼電器來控制設備,比如水泵、電壓電流互感器等。并且直接使用的時候該芯片和一些其他的類芯片大致原理上都相同,就直接可以用來使用并檢測。
圖 2-4 ULN2003 芯片邏輯圖
3 系統硬件電路設計
STM32F103C8T6 單片機可以說是系統的控制中樞部分,外部的器件都需要單片機通過內部程序進行指揮和協調,這樣才能保證特定功能的完成。將能夠實現自己功能的各模塊搭建在一起就能有效降低系統制作的復雜性。
3.1 STM32F103C8T6 單片機最小系統
如下時本次系統的最小系統板原理圖設計如圖 3.1 所示,它由最小系統中芯片控制器、震蕩電路、晶振電路以及串口下載電路。
圖 3-1 最小系統單元電路
3.1.1 晶振電路
在單片機中,晶振電路的地位是不可取代的,系統能否啟動成功該部分的電路起到了決定性的作用。晶振電路和單片機內部的晶體振蕩器連接構成了晶振電路,能使單片機擁有更高的運行速度。可以說晶振電路為單片機的運行提供了重要的基礎。
STM32F103C8T6 單片機就是在 OSCIN 和 OSCOUT 引腳連接了 8MHZ 的晶振,在單片機上就能看到,選用的是 20PF 的電容能保證單片機更加快速、穩定的運行。晶振電路如圖 3.1 所示。
圖 3-2 晶振電路
3.1.2 復位電路
在單片機上還有一個白色的按鈕就是復位電路的按鈕,能支持單片機完成程序的初始化,直接就能將系統從頭開始執行。STM32F103C8T6 單片機的 RST 復位引腳上連接了對應的電阻和電容,通過按鍵就能控制復位。在語音分類垃圾桶系統中,就是選用了直接、方便的按鍵復位方式,阻值為 10K,電容的容量為 10μF。按下連接好的按鍵就能將系統重啟。圖 3.2 為復位電路。
圖 3-3 復位電路
3.1.3 電源電路
電源模塊電路如圖 3.6 所示,本系統需要兩種電壓,由于 OLED12864 顯示和 WiFi 通信模塊需要的電壓為 3.3V~5V,而 MCU 工作于 3.3V,由于主控 MCU 采用 3.3V 供電,就選用 AMS1117 三端穩壓器模塊產生 3.3V 電壓。電容 E1,C22 為輸入電容,作用是防止斷電后出現電壓倒置。C23,E2 為輸出濾波電容,作用是抑制自激振蕩和穩定輸出電壓。
圖 3-4 電源電路
但是系統中需要用到 12V 電壓去給繼電器模塊供電,繼電器控制的設備需要的電壓電流功率較大,所以使用 MP2303 外接電源適配器,然后再降壓來整個設備需求,并且該模塊輸入電壓為 4.7v-28v,輸出電壓 0.8V-25v 直接調節,輸出電流連續輸出不低于 3A。
圖 3-5 MP2303 模塊降壓原理圖
3.2 EEPROM 存儲電路設計
該電路 EEPROM 存儲模塊采用 AT24C04 芯片,用于各種電參數的存儲以及各種傳感器的閾值的參數記錄,便于斷電情況下對數據進行保存。
圖 3-6 EEPROM 存儲電路
3.3ESP8266WiFi 電路設計
ESP866 電路設計如圖 2.2 所示,GPIO 口為通用 IO,內部以上拉,且有兩種工作模式:懸空 GPIO0 是工作模式,下拉 GPIO0 是下載模式。并且在 VCC 和 GND 之間使用鉭電容 E1,這樣能保證 WiFi 模塊長時間維持更好的性能。
圖 3-7 ESP8266WiFi 電路
3.4 繼電器驅動電路的設計
ULN2003 用于驅動控制繼電器不僅簡化了復雜的電路,還能對 MCU 引腳輸出的電流進行放大,提高了系統的帶載能力。在使用該 IC 時候,很多人喜歡在驅動感性負載兩端并聯一個二極管,用于續流或者快速放電,其實這個根本沒有必要,在 IC 內部本身就是集成了續流二極管,在此給出了經典得驅動電路,用于驅動繼電器電路,如下所示:
圖 3-8 ULN2003 驅動電路
其中需要注意得有兩點:
首先:COM 引腳,即引腳 9 必須連接到驅動器電源的正極(而不是芯片電源的正極)。
第二:GND 引腳(即芯片的接地引腳)必須與驅動電源的負極形成等電位。
圖 3-9 繼電器控制電路
3.5 溫度檢測電路的設計
溫度檢測電路采用內部 AD 轉換,在電路設計上用 100nf 電容對采集的信號先進行濾波處理,在 P7 端口外界一個探頭式得 NTC 溫度傳感器,探頭采集得模擬信號經過濾波處理后,將信號傳給單片機,經過 AD 轉換,將模擬信號轉換位數字信號,通過顯示屏顯示出溫度。
圖 3-10 溫度檢測電路
3.6 電流采樣電路設計
如下圖所示:R15 康銅絲作為采樣電阻,在經過 LM358 差分放大電路,然后 R14,R17,R13,R18 是對輸入的電流進行放大,R16,C12 是對輸出做 RC 濾波,Rp18=Rp13,Rp14=R17。Vout=Rp18/Rp17*(Vin+-Vin-)。輸出電流傳給單片機 PA5 管腳,然后經過單片機內部 AD 數據處理再通過 OLED 顯示屏顯示出電流大小。
圖 3-11 電流采集電路
3.7 按鍵電路設計
為了滿足按鍵調節各個參數,一共設計了四個按鍵,分別接 PA0,PB12,PB13,PB14 這四個接口,按鍵 1 用來控制 OLED 顯示界面的切換,以達到可以調節溫度,充氧速率等操作。按鍵 3 可以設置溫度,補光燈強度,以及充氧速率等參數的增加。按鍵 4 是用來將參數數值調小。按鍵 2 是確認鍵,每次調整后,按鍵 SW2 將存儲于系統保存當前的變化。
圖 3-12 按鍵控制電路
3.8 報警電路設計
系統中加入無源蜂鳴器電路,主要用于系統出現異常時進行報警,通常通通過 BUZZER 引腳輸入方波信號,該電路同樣是采用 NPN 三極管作為開關進行驅動,其基極的高電平使三極管飽和導通,使蜂鳴器發聲,而基極低電平則使三極管關閉,蜂鳴器停止發聲。
圖 3-13 按鍵控制電路
4 系統軟件設計
在前三章中的硬件電路章節中已經將便攜式風光互補系統的硬件部分介紹完畢,此時就進行下一步的軟件開發介紹。程序代碼編程軟件 KEIL 和 C 語言在系統的軟件部分起到了重大作用,達到軟件編程完成的目的。
4.1 軟件開發環境簡介
本設計中選用德國 keil 公司推出的專為 arm 核控制器開發的一款編譯器軟件。該軟件集成了業內最領先的技術,Keil5 軟件使用時候特別方便,它所占的系統類型為 64 位,兼容 WIN7/WIN8/WIN10,而且下載速度 SWD 模式是 keil4 的五倍,它的特點是集成開發環境,調試器和仿真環境。完美支持 Cortex-M,Cortex-R4、ARM7 和 ARM9 系列器件,并且有大量的項目可以讓使用者快速熟悉強大的內置特征。
4.2 主程序設計
為了滿足水質溫度、電流、用電量及其功率采集的實時性,本程序采用循環掃描的方式對 NTC 溫度傳感器進行數據讀取。系統開始首先對各個模塊功能初始化,初始化完成之后可以通過按鍵調整系統參數(充氧速率、水位閾值、限流大小、照明亮度、凈化速率以及一鍵換水操作),當實際測得水溫低于閾值時,繼電器閉合加熱棒開始給水溫加熱,反之亦然。當系統負載電流大于限流閾值時,蜂鳴器報警,負載電器都停止工作。系統參數設定完成之后,按鍵退出自動保存參數,并且有斷電保存的效果。系統 WiFi 通過無線將數據發送給手機 APP 和終端控制中心,發送完畢后自動清除緩存,結束本次循環。
圖 4-11 主程序流程路
4.4 系統子程序設計
4.4.1 IIC 通信程序設計
串行通信主要使用三條線路來實現:CS,SCLK 和 SDA。其中,CS 是可選芯片,SCLK 是同步時鐘信號,SDA 是發送數據信號。該時序剛開始 CS 片段為高電平,SCLK 為矩形脈沖波動,CS 為低電平時,SCLK 也為低電平,CS 為高電平時,SCLK 就會產生脈沖信號。同時 STD 就開始進行時鐘字節的選取,經過幾個周期,RW 進行數據的讀取,RS 將數據發送給更高的電平進行數據的選擇。最后進行篩選到第二儲存區域,進行第二次的字節變化,產生時序信號,最后 CS 片選回復低電平,脈沖信號停止,STD 停止字節的位選。圖 4-1 是串行通信時序圖:
圖 4-2 串行通信時序圖
4.4.2AD 采集程序設計
使用該 STM32 單片機采集電壓的時候大致可以分為兩種,一個是 DMA 采集,另外一種是定時采集,本次系統對電壓的采集是用了 DMA 方式進行采集的,采集流程設計如下,ADC 采樣的話首先就是對 ADC 進行初始化,確定 ADC 的通道的級別方式,采集時間窗口預定目標轉化為相應的時間和時鐘,定義好三種電壓、電流和溫度的采用結果,對每一個信號采樣 8 次,然后再將閾值通過 STMFLASH 存儲到到芯片當中,所以系統共采集了 3 個數據。如果預定的 ADC 中斷發生,則系統會進入中斷服務程序,然后對當前的設備的電壓電流采集進行數據的傳輸和處理。
圖 4-3 電壓采集流程圖
4.4.3 WiFi 通信程序設計
本設計中 ESP8266WiFi 串口通訊協議是機智云平臺標準接入協議(4.2.0),設備的通訊信息為 9600 波特率,8 位數據位,無校驗,1 位停止位,傳輸字節序采用大端編碼,通信交互形式是采用一問一答,每條命令需要由接收方給出 ACK 應答確認信息,超時時間 200ms,超時后重新發送。WiFi 模組上電后,需要向 MCU 查詢設備信息,獲取信息成功后,WiFi 模組才能正常工作,基本通信協議流程圖如下所示。
圖 4-4 WiFi
AIoT 設備自助開發平臺:
機智云 AIoT 自助開發平臺,提供從產品定義、開發調試、應用開發、產測、云端開發、運營管理、數據服務等覆蓋 IoT 設備接入到運營管理全生命周期服務的開發能力。通過傻瓜化的自助工具、完善的 SDK 與開放的 API,最大限度降低 IoT 設備開發的技術門檻,已服務 320000 + 開發者。
5 系統調試分析
5.1 軟件調試
軟件程序的開發環境是 KEIL5,新建工程的選對單片機的型號,不斷地給系統,保證系統運行的穩定,意淫單片機選用的是 C8T6 的型號,所以在 Target 目標選擇欄里一定要記得修改晶振的大小,這樣才能保證時間的精確度。
圖 5-1 單片機型號選擇
反復通過斷點調試和單步調試的方式對代碼進行檢查以及修改后,就可以編譯代碼查看程序調試的結果,在編程后看到了 “0 error” 的提示,如果看到這個提示結果就表示程序已經是正確的了。如圖 5.2 所示。
圖 5-2 程序編譯通過
程序編譯完畢后接下來就是將單片機的程序通過串口燒錄軟件燒寫進去,第一步就是打開 Fly-Mcu,設定 BOOT0 和 BOOT1 都為低電平,然后將串口軟件設定為 DTR 低電平復位,RTS 高電平進 Bootloader,
圖 5-3 程序燒寫設計
5.2 硬件調試
對于本系統的制作,首先采用的是硬件的焊接,然后是代碼的編寫,最后是運行實物,因此對軟件和硬件這兩部分分別的調試是最后調整實物的基礎。
系統硬件的調節和測試主要時針對系統的電路和程序入手的,在設計電路時可采用 AD 軟件根據各元器件的管腳特性及系統功能先繪制好電路,然后再根據電路進行實物焊接,如果有耐心的話可以邊焊接邊使用萬用板測試,可以大大降低硬件焊接的錯誤率。一般的硬件調試可以遵循以下幾個步驟,得到事半功倍的效果:
(1)第一步:利用電路圖繪制軟件(本設計使用的軟件為 Altium Designer,作為 PROTEL 公司推出的一款智能型較高的專業繪圖軟件)繪制系統整體電路圖,如下圖所示,然后仔細檢查軟件里的元器件及電路連接走向是否正確;
(2)第二步:對照檢查好的原理圖繪制 PCB 圖,確保 PCB 圖的正確性、與原理圖繪制電路的一致性;
(3)第三步:查找元器件資料,對照實物功能及每個元器件的引腳,同時檢查原理圖及 PCB 圖;
(4)設計規則,注意電源線的線寬和元件之間的安全間距,設置 + 12V 電源線寬為 2mm,+5V 線寬 1.5mm,+3.3V 線寬 1.2mm,其余信號線 0.2mm。
(5)根據 EMC 設計規范擺放元器件布局,先連電源線,再連信號線,最后再對 GND 進行敷銅處理,信號接口再滴淚處理,PCB 布線如下所示。
(6)第四步:安裝完成實物后,可以借助萬用表等工具測試局部電路和整體電路,防止出現短路現象,及時糾正元器件電路錯誤及整體電路中的錯誤。
圖 5-4 PCB 布局及連線設計
圖 5-5 PCB 敷銅設計
圖 5-6 PCB3D 模型
5.3 實物測試
(1)通過電源系統給設備供電,顯示器顯示當前時間,當前水簇箱水質溫度,環境大氣的溫度,以及當前設備的供電電流、設備功率以及耗電量度,如下圖所示。
圖 5-7 供電顯示視圖
(2)水簇箱水溫傳感器 NTC 檢測與閾值顯示。
圖 5-8 水溫閾值調試
(3)充氧氣速率調試。
圖 5-9 充氧氣速率設置
(4)水族箱內照明燈光調試。
圖 5-10 LED 照明亮度設置
(5)限流保護設計,當設備超過 5A 時,系統緊急停止工作。
圖 5-11 系統保護電流設置
(6)水泵控制進出水,可以實現 APP 遠程操控和一鍵輕松換水。
圖 5-12 直流水泵設備
(7)以下是機智云公版手機 APP 顯示界面。
? ?? ?圖 5-13 遠程 APP 登錄和操作界面
(8)以下是機智云物聯網平臺的終端服務器數據歷史查詢界面。
圖 5-14 PC 端歷史數據信息查詢
(9)以下是作品的整體實物圖。
-
STM32
+關注
關注
2270文章
10896瀏覽量
355768
發布評論請先 登錄
相關推薦
評論