一、項(xiàng)目背景
隨著智能化的迅速發(fā)展,人們對(duì)于生活中的各類(lèi)設(shè)備也越來(lái)越有智能化的需求,其中智能飲水機(jī)是一種比較常見(jiàn)的設(shè)備。智能飲水機(jī)不僅可以提供飲用水,還可以通過(guò)智能化的技術(shù)滿(mǎn)足人們對(duì)于水質(zhì)、水溫、出水量等方面的需求。因此,當(dāng)前設(shè)計(jì)了一種基于STM32的智能飲水機(jī)系統(tǒng),以滿(mǎn)足人們對(duì)智能化飲水機(jī)的需求。
智能飲水機(jī)系統(tǒng)其主要功能包括:
【1】控制加熱芯片:通過(guò)繼電器模塊控制加熱芯片,在水燒開(kāi)后自動(dòng)斷電。
【2】液位感應(yīng):使用液位傳感器感應(yīng)水箱水位,當(dāng)水位過(guò)低時(shí)通過(guò)語(yǔ)音模塊進(jìn)行播報(bào)提示。
【3】移動(dòng)端控制:Android手機(jī)端可以顯示當(dāng)前雙水箱內(nèi)的水溫,設(shè)置出水溫度及出水量,并且還可以控制出水操作。
【4】主控芯片:采用STM32F103RCT6主控芯片,這款芯片有著強(qiáng)勁的處理能力和豐富的外設(shè)資源,可以滿(mǎn)足飲水機(jī)系統(tǒng)的控制需求。
【5】WIFI通信:選擇ESP8266與手機(jī)端通信,可以實(shí)現(xiàn)遠(yuǎn)程控制。
【6】水溫測(cè)量:采用DS18B20實(shí)現(xiàn)水溫測(cè)量,能夠準(zhǔn)確地測(cè)量水溫。
【7】出水開(kāi)關(guān)控制:采用SG90電機(jī)實(shí)現(xiàn)出水開(kāi)關(guān)控制,可以精準(zhǔn)地控制出水量。
【8】本地有2個(gè)指示燈,綠色和紅色燈。可以表示加熱狀態(tài)。
二、系統(tǒng)硬件設(shè)計(jì)
【1】系統(tǒng)核心芯片選擇
STM32F103RCT6作為本系統(tǒng)的主控芯片,其具有較高的計(jì)算速度和穩(wěn)定性,在眾多STM32系列中也是使用比較廣泛的型號(hào)之一。
【2】溫度測(cè)量模塊
溫度測(cè)量采用DS18B20數(shù)字溫度傳感器,通過(guò)單總線(xiàn)協(xié)議與主控芯片進(jìn)行通信,實(shí)現(xiàn)對(duì)水溫的精準(zhǔn)測(cè)量。
【3】液位檢測(cè)模塊
液位檢測(cè)采用液位傳感器,通過(guò)測(cè)量水箱內(nèi)水位來(lái)判斷是否需要進(jìn)行添加水操作。
【4】控制加熱芯片模塊
繼電器模塊負(fù)責(zé)控制加熱芯片,當(dāng)水燒開(kāi)后自動(dòng)斷電,以確保水的安全。
【5】出水操作模塊
出水操作通過(guò)SG90電機(jī)實(shí)現(xiàn),其可以控制水龍頭的開(kāi)關(guān),實(shí)現(xiàn)出水的自動(dòng)控制。
【6】WIFI通信模塊ESP8266作為WIFI模塊,與手機(jī)端進(jìn)行通信,實(shí)現(xiàn)了智能飲水機(jī)系統(tǒng)的遠(yuǎn)程操控和監(jiān)測(cè)。
三、系統(tǒng)軟件設(shè)計(jì)
【1】溫度測(cè)量與顯示模塊
STM32芯片通過(guò)單總線(xiàn)協(xié)議與DS18B20傳感器進(jìn)行通信,獲取當(dāng)前水溫?cái)?shù)據(jù),并將其通過(guò)LCD1602液晶顯示屏展示在飲水機(jī)面板上。
【2】液位檢測(cè)模塊
液位傳感器負(fù)責(zé)檢測(cè)水箱內(nèi)水位情況,并將水位數(shù)據(jù)傳遞給主控芯片。當(dāng)水位過(guò)低時(shí),系統(tǒng)會(huì)通過(guò)語(yǔ)音提示模塊向用戶(hù)發(fā)出添加水的提醒。
【3】控制加熱芯片模塊
主控芯片通過(guò)繼電器模塊控制加熱芯片的開(kāi)關(guān),在水燒開(kāi)后自動(dòng)斷電,以保證水的安全性。
【4】出水操作模塊
出水操作通過(guò)SG90電機(jī)控制,實(shí)現(xiàn)了對(duì)飲水機(jī)出水的自動(dòng)控制。同時(shí),在Android手機(jī)端,用戶(hù)可以設(shè)置出水溫度和出水量,使得出水操作更加便捷。
【5】WIFI通信模塊
系統(tǒng)通過(guò)ESP8266與Android手機(jī)端進(jìn)行通信,實(shí)現(xiàn)了智能飲水機(jī)系統(tǒng)的遠(yuǎn)程操控和監(jiān)測(cè)功能。用戶(hù)可以通過(guò)手機(jī)端查看當(dāng)前雙水箱內(nèi)的水溫并進(jìn)行相應(yīng)的操作。
ESP8266配置成AP+TCP服務(wù)器模式,開(kāi)啟WIFI熱點(diǎn)等待手機(jī)連接,手機(jī)連接之后使用TCP客戶(hù)端模式連接飲水機(jī)完成數(shù)據(jù)通信。
四、核心代碼
4.1 SG90控制代碼
SG90電機(jī)是一種小型舵機(jī),用于模型航空、船模、車(chē)模和機(jī)器人等小型機(jī)械裝置中,可以控制舵、飛控等運(yùn)動(dòng)部件的轉(zhuǎn)動(dòng)角度。其最大扭矩為1.6kg/cm(4.8V時(shí)),轉(zhuǎn)速為0.12秒/60度(4.8V時(shí)),工作電壓為4.8V~6V。SG90電機(jī)采用三線(xiàn)接口,其中紅色接VCC(正極)、棕色接GND(負(fù)極)、橙色接PWM信號(hào)線(xiàn),可以通過(guò)控制器的PWM信號(hào)控制電機(jī)的角度。
以下是使用延時(shí)模擬PWM波形控制SG90電機(jī)旋轉(zhuǎn)并封裝成子函數(shù)的示例代碼:
cCopy Code#include "stm32f10x.h"
?
#define SG90_PIN GPIO_Pin_5
#define SG90_PORT GPIOB
?
void SG90_rotate(uint8_t angle);
?
int main(void)
{
// 初始化GPIOB時(shí)鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 配置PB5為推挽輸出
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = SG90_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SG90_PORT, &GPIO_InitStructure);
while (1)
{
SG90_rotate(0); // 轉(zhuǎn)到0度
delay_ms(1000);
SG90_rotate(90); // 轉(zhuǎn)到90度
delay_ms(1000);
SG90_rotate(180); // 轉(zhuǎn)到180度
delay_ms(1000);
}
}
?
void SG90_rotate(uint8_t angle)
{
// 計(jì)算PWM波形高電平持續(xù)時(shí)間
uint32_t high_time = 500 + angle * 11.11;
// 發(fā)送PWM波形
GPIO_SetBits(SG90_PORT, SG90_PIN);
delay_us(high_time);
GPIO_ResetBits(SG90_PORT, SG90_PIN);
delay_us(20000 - high_time);
}
在上面的代碼中,將SG90電機(jī)控制引腳連接到了STM32F103的PB5口,并通過(guò)計(jì)算PWM波形高電平持續(xù)時(shí)間來(lái)控制電機(jī)旋轉(zhuǎn)角度。使用了SG90_rotate
子函數(shù)來(lái)實(shí)現(xiàn)控制過(guò)程。當(dāng)調(diào)用SG90_rotate
函數(shù)并傳入目標(biāo)旋轉(zhuǎn)角度時(shí),函數(shù)會(huì)自動(dòng)計(jì)算出對(duì)應(yīng)的PWM波形高電平持續(xù)時(shí)間,并發(fā)送PWM波形來(lái)控制電機(jī)旋轉(zhuǎn)到指定角度。使用了delay_ms
和delay_us
這兩個(gè)函數(shù)來(lái)實(shí)現(xiàn)延時(shí)操作。
4.2 DS18B20溫度傳感器
DS18B20是一種數(shù)字溫度傳感器,它可以直接測(cè)量環(huán)境溫度并轉(zhuǎn)換為數(shù)字信號(hào)輸出。DS18B20溫度傳感器采用一線(xiàn)式總線(xiàn)接口(也叫單總線(xiàn)接口),具有精度高、抗干擾能力強(qiáng)、可靠性高和使用方便等優(yōu)點(diǎn)。
DS18B20溫度傳感器的測(cè)量范圍為-55℃~+125℃,精度為±0.5℃。傳感器內(nèi)置了溫度補(bǔ)償電路,可以自動(dòng)補(bǔ)償溫度影響導(dǎo)致的測(cè)量誤差。
DS18B20溫度傳感器有多種封裝形式,包括TO-92封裝、SOIC封裝和TO-263封裝。其中TO-92封裝是最常見(jiàn)的,也最容易使用,它的引腳分別為GND(負(fù)極)、DQ(數(shù)據(jù)線(xiàn))和VDD(正極)。傳感器可以通過(guò)單總線(xiàn)接口連接控制器,控制器通過(guò)發(fā)送指令讀取傳感器的數(shù)據(jù)。
以下是接口函數(shù)的代碼示例:
#include "stm32f103xb.h"
#include
?
#define DS18B20_GPIO_Port GPIOB
#define DS18B20_GPIO_Pin GPIO_PIN_6
?
void delay_us(uint16_t us)
{
uint16_t i;
for(i=0; i
調(diào)用方式:
DS18B20_Init(); // 初始化
float temperature = DS18B20_ReadTemperature(); // 讀取溫度值
五、總結(jié)
本項(xiàng)目是基于STM32的智能飲水機(jī)系統(tǒng)設(shè)計(jì),實(shí)現(xiàn)了自動(dòng)斷電、液位感應(yīng)、語(yǔ)音提示、手機(jī)遠(yuǎn)程控制等功能。其中,STM32主控芯片選擇STM32F103RCT6,WIFI選擇ESP8266與手機(jī)端通信,水溫測(cè)量采用DS18B20,出水開(kāi)關(guān)控制采用SG90電機(jī)實(shí)現(xiàn)。
通過(guò)繼電器模塊控制加熱芯片,在水燒開(kāi)后自動(dòng)斷電,避免了過(guò)度燒水和安全隱患。同時(shí),利用液位傳感器感應(yīng)水箱水位,當(dāng)水位過(guò)低時(shí)通過(guò)語(yǔ)音模塊進(jìn)行播報(bào)提示,提醒用戶(hù)及時(shí)加水。
在Android手機(jī)端,用戶(hù)可以方便地查看當(dāng)前雙水箱內(nèi)的水溫,設(shè)置出水溫度及出水量,并控制出水操作。這極大地提高了用戶(hù)的使用體驗(yàn)和方便性。
本項(xiàng)目具有實(shí)用性和創(chuàng)新性,不僅滿(mǎn)足了用戶(hù)對(duì)智能化、便捷化的需求,也展示了STM32等技術(shù)在智能家居領(lǐng)域的應(yīng)用前景。
審核編輯:湯梓紅
-
Android
+關(guān)注
關(guān)注
12文章
3903瀏覽量
126608 -
STM32
+關(guān)注
關(guān)注
2257文章
10828瀏覽量
352438 -
WIFI
+關(guān)注
關(guān)注
81文章
5256瀏覽量
201696 -
飲水機(jī)
+關(guān)注
關(guān)注
0文章
41瀏覽量
13825 -
單片機(jī)
+關(guān)注
關(guān)注
0文章
191瀏覽量
16658
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論