本文介紹了一種基于STM32單片機的智能加濕器。該加濕器配備了DHT11溫濕度傳感器、水位傳感器和濁度傳感器,數據通過單片機處理并顯示在OLED屏幕上。
用戶可通過按鍵模塊設置閾值,并在檢測值與設定值不符時自動關斷或報警。設備支持手動、自動、定時和遠程四種控制模式。系統程序在MKD5軟件上開發并經過調試,現已穩定運行,提升了用戶體驗,并有進一步改進的潛力。
系統硬件設計
本系統采用模塊化設計由stm32單片機控制單元、溫濕度傳感器、水位傳感器、濁度傳感器、蜂鳴器、按鍵模塊、OLED顯示、WIFI模塊、霧化模塊、電機驅動模塊組成。其中單片機做核心與其他模塊互相配合實現各類功能。霧化模塊開關通過直流電機驅動模塊直接控制單片機間接控制。本系統方案整體框圖如圖1所示。
圖1 系統整體框圖
控制單元
因為單片機具有高集成度、實時控制能力強、性價比高、易于擴展與開發且性能穩定等優點,所以本設計采用stm32f103c8t6作為核心控制樞紐,在芯片的輸入和輸出端均并聯穩壓電容以輸出和輸入穩定的3.3 V電壓。
傳感器模塊和可調電位器
該設計使用單總線協議的DHT11溫濕度傳感器模塊,擁有成本低、性能穩定、響應超快、抗干擾能力強、數字信號輸出、精確校準等優點。DHT11溫濕度傳感器模塊的串行數據線接4.7 KΩ上拉電阻后與單片機的PB14引腳相連。測量水位采用水位/水滴傳感器,該傳感器通過一排平行裸露導線線跡測量水滴/水量大小,實現水量到模擬信號的轉換。在本設計中水位傳感器與stm32單片機的PA6引腳相連。
采用濁度傳感器型號為TSW-30,其內部是一個紅外線對管,根據水中懸浮固體總量變化對透光率產生影響來測量透光率,并把透過光強轉換為電流,透過的光多電流就大,反之則小。此設計應用該模塊的模擬量輸出接口AO,與單片機PA5引腳相連。采用2 K可調電位器,通過手動調節軸改變動觸點在電阻體上位置改變電阻值,從而改變電壓與電流的大小,以此實現手動控制。在本設計中其頂部引腳接3.3 V,中間引腳接單片機PA4,底部引腳接地。
蜂鳴器報警電路
蜂鳴器采用無源蜂鳴器,在設計中加入了一個NPN型三極管,用以放大電流驅動蜂鳴器,三極管做開關用,由stm32單片機判斷水位和濁度數據后對三極管基極發送脈沖信號,拉低或拉高基極電壓,拉低時蜂鳴器斷電拉高時通電。這樣即可實現閾值報警功能,蜂鳴器電路如圖2所示。
圖2 無源蜂鳴器電路
本設計采用內置完整TCP/IP協議棧的ESP8266WIFI模塊,支持標準的IEEE802.11b/g/n協議,可將單片機與機智云服務器連接,進行數據傳輸。模塊的LRXD引腳和UTXD引腳分別與單片機串口TX(PB10)和RX(PB11)相連,實現兩者之間的數據通信。
按鍵與顯示模塊
按鍵模塊采用四位獨立按鍵。顯示模塊采用0.96英寸OLED顯示屏,其驅動芯片為SSD1306,由I2C總線驅動,該模塊不需背光顯示,每個像素可獨立發光,且具有可視角度大,功耗低、反應快、適用溫度范圍廣等特點,廣泛應用于移動設備,本設計中為其提供3.3V電壓用以顯示檢測到的溫濕度等信息。
電機驅動與霧化模塊
霧化片采用超聲波霧化片,本質是一片壓電陶瓷,工作時產生高頻震蕩使其接觸到的水分子結構被打散,形成自然飄逸的水霧,使空氣濕潤并含有豐富的負氧離子。
在本設計中霧化片由L298N電機驅動模塊驅動,該模塊是雙橋電路設計,通過控制H橋上電流方向實現對電機的控制,在本設計中用到IN1和IN2引腳,IN2引腳接地IN1引腳接單片機PA2,IN1輸入高電平霧化片啟動進行加濕,輸入低電平霧化片停止加濕,通過改變IN1高電平占空比實現對加濕器工作功率的控制。
軟件設計
主程序設計
本系統編程使用MDK5軟件。編程主要實現外部設備初始化、溫濕度檢測、水位檢測、水濁度檢測、OLED顯示、Wi Fi通信等功能。系統上電初始化后讀取按鍵值、溫濕等數據,并在OLED屏上顯示,選擇手動/自動/定時/遠程模式后,單片機對各設定值與當前值進行數比對,根據目標設定輸出PWM占空比,并根據水位和濁度數據比對結果判斷是否進行蜂鳴器報警關斷加濕。其中在遠程控制模式下,單片機通過串口通信接收云端數據,并根據該數據設定目標輸出值,系統運行流程如圖3所示。
按鍵與OLED顯示模塊程序設計
OLED屏幕每個像素與SSD1306顯存點陣一一對應,所以單片機對SSD1306芯片寫入數據或命令即可實現屏幕在相應點的顯示。顯示的漢字通過字模生成軟件生成,把文字生成的代碼放入OLED的字庫里,因為漢字是16位長度,而SSD1306顯存1頁是8位長度,所以漢字分上下兩部分,分別寫入顯存第一頁和第二頁,以此在主屏幕上拼出一個完整漢字。需要顯示幾個漢字就在字庫中循環檢索幾次。
此外OLED程序函數中需包含初始化、坐標設置、清屏等基礎操作函數。通過調用這些函數完成屏幕對數據的顯示。
圖3 系統運行流程
按鍵模塊主要設計是,通過按鍵掃描函數KEY_Scan(),判斷有無按鍵按下,當有按鍵按下延時10 ms去除抖動,之后識別哪個鍵按下,采集按鍵值保存于key_value中,根據key_value值尋找程序入口,執行程序,完成該次按鍵操作。按鍵設置支持連續按設置優先級k0>k1>k2>k3,所有按鍵設置彈起時為高電平,按下時為低電平。
按鍵功能如下:
(1) k0配網按鍵:
系統初始化后按下k0,ESP8266進入待連接狀態。
(2) k1模式切換按鍵:
K1按下按鍵值為2模式切換,按壓一次sys_mode值(模式值)加1,可切換四種模式(手動、自動、定時、遠程模式,分別對應sys_mode的0、1、2、3超出范圍后歸0)。
(3) k2濁度與水位顯示按鍵:
此頁面可查看傳感器采集到的濁度數據和水位數據。
(4) k3閾值等設置按鍵:
在濁度與水位按鍵k2按下后,再按下此按鍵進入時間與定時設定和閾值與單次按鍵增量設定選擇界面,此時k2與k3分別為上換行鍵和下換行鍵,翻頁到要選擇的設置位置后k1為確認鍵,進入進行相應設置界面或退出此界面。
數據采集與報警程序
DHT11溫濕度傳感器代碼設計包括初始化、延時越過不穩定狀態、讀取數據、校驗數據等步驟。水位傳感器代碼設計涉及設置閾值、讀取水位信號、判斷水位狀態等。濁度傳感代碼包括光電信號采集、數據處理和濁度值計算等。在主程序中通過對該部分外設函數的調用,可實現相應傳感器采集數據的顯示和超出預設安全范圍的報警。也可通過數據值對輸出占空比進行設置。
機智云程序
注冊登錄機智云賬號,進入開發者中心創建產品,本設計所選用Wi Fi/移動網絡方案,通信方式為WIFI,數據定長功耗低。創建好項目后根據設計需要創建數據點,選擇讀寫類型和數據類型。本設計的數據點如圖4所示。包含遠程開關、溫度、濕度、加濕器,和濁度數據標識符及數據類型。
圖4 IOT云平臺產品功能的數據點
在設計時用機智云自動生成MCU開發中必要代碼。設備接入云端服務器后,接收云端和APP端發來的數據點等信息,通過協議幀格式發送到MCU端,MCU端將數據存到緩沖區,每隔一段時間對緩沖區抓包,抓包正確進行解析,推送到數據事件處理,并根據數據點事件執行相應邏輯。
同樣,單片機也通過協議棧幀格式將數據傳給ESP8266模塊后傳至云端服務器,最后處理控制事件的相關代碼。在本設計中創建了ctrol寫等類型數據,根據這些類型數據完成相應的控制。
最后把gizwits串口協議移植到stm32單片機上,并通過固件燒錄工具把固件庫燒寫入ESP8266模塊中。移植燒寫完成后驗證設備端與Demo APP能否正常工作,將設備與手機處于同一局域網下,進入app選擇一鍵配網(使用2.4 G頻道WiFi網絡配網),選擇樂鑫模組,按下配網按鍵,配網完成后可通過手機看到測得的各數據,可選擇遠程控制的打開與關閉,打開時可滑動加濕器滑塊控制加濕器功率。
結束語
本款基于STM32單片機的智能加濕器經過多環境測試,能夠自由切換工作模式,并通過傳感器可靠采集溫濕度和水位信息。其WIFI模塊支持信息云端上傳,用戶可通過手機實現實時監控和遠程控制。水位和濁度傳感器配合蜂鳴器實現缺水和水污濁報警,避免了干燒、過度加濕及噴出污濁水汽的問題,提升了安全性。
-
單片機
+關注
關注
6044文章
44624瀏覽量
638943 -
加濕器
+關注
關注
3文章
168瀏覽量
20846 -
STM32
+關注
關注
2273文章
10926瀏覽量
357767
發布評論請先 登錄
相關推薦
加濕器單片機芯片-單片機開發方案公司
stm32單片機和51單片機區別是什么
全方位對比STM32單片機和51單片機
![全方位對比<b class='flag-5'>STM32</b><b class='flag-5'>單片機</b>和51<b class='flag-5'>單片機</b>](https://file.elecfans.com//web2/M00/94/E8/poYBAGQAP6qAfTpjAAA-uTlfpX8843.png)
智能加濕器方案開發與加濕器的原理
STM32單片機外部中斷簡介 STM32單片機外部中斷的配置過程
基于STM32的智能加濕器
![基于<b class='flag-5'>STM32</b>的<b class='flag-5'>智能</b><b class='flag-5'>加濕器</b>](https://file1.elecfans.com/web1/M00/F2/C7/wKgZoWcKPkiAFWObADF5iw6vq74463.png)
評論