使用MSPM0G3507為主控制作溫度控制系統(tǒng)及硬件設(shè)計的方案,利用KEIL軟件編程讀取溫度傳感器接口等多個方面接口工作的的綜合性項目。
以下是一個詳細的規(guī)劃方案及系統(tǒng)功能的概述。
一、 硬件
1、 清單
主控:使用的是LP-MSPM0G3507開發(fā)板。
擴展板:繪制3507擴展板。
擴展使用的設(shè)備:
傳感器:溫濕度AHT21傳感器。
顯示屏:串口屏。
按鍵:屏上四個觸摸按鍵。
指示燈:貼片RGBLED主要功能是顯示工作狀態(tài)。
蜂鳴器:電磁式有源一體有源蜂鳴器。
風機:小風扇,3-5V。
水泵:使用小風扇代替,方便演示
照明:LED燈珠
加熱:2.54端口(LED模擬工作狀態(tài))
電源:4.5V~28V轉(zhuǎn)5V3A電源,寬電壓輸入。5V輸入 再轉(zhuǎn)3.3V
2、 硬件接口設(shè)計介紹:
溫濕度AHT21傳感器接口:
AHT21是一個數(shù)字溫濕度傳感器,通過I2C接口與MSPM0G3507通信。
在擴展板上設(shè)計I2C接口連接,包括SCL(時鐘線)和SDA(數(shù)據(jù)線),以及供電和地線。
串口屏接口:
串口屏通過UART(通用異步收發(fā)傳輸器)接口與MSPM0G3507通信。設(shè)計UART接口,包括TX(發(fā)送)、RX(接收)、供電和地線,使用的引腳是PB6,PB7.
按鍵:
設(shè)計四個輕觸按鍵,每個按鍵連接到MSPM0G3507的一個GPIO引腳,但是這次用的是串口屏,用的是屏上的觸摸按鍵。
貼片RGB LED:
RGB LED需要三個GPIO引腳分別控制紅、綠、藍三種顏色的亮度。設(shè)計三個GPIO引腳接口,以及LED的共陽極連接。
電磁式有源蜂鳴器:
有源蜂鳴器只需要一個GPIO引腳來控制其開關(guān)。設(shè)計一個GPIO引腳接口,連接到蜂鳴器的控制端。
風機接口:
風機(小風扇)通過PWM(脈沖寬度調(diào)制)或簡單的GPIO控制。設(shè)計一個PWM或GPIO引腳接口,以及風機的供電和地線。
水泵接口(小風扇替代):
同風機接口設(shè)計,預留PWM或GPIO引腳接口。
LED照明燈珠:
設(shè)計一個或多個GPIO引腳接口,用于控制LED燈珠的開關(guān)。
加熱接口(使用電阻模擬加熱裝置):
使用電阻作為加熱元件來模擬加熱過程更為實際和可控。電阻加熱是一種常見的加熱方式,它基于焦耳熱效應,即電流通過導體時會產(chǎn)生熱量。設(shè)計一個PWM或GPIO引腳接口,以及加熱元件的供電和地線。
電源管理:
使用4.5V~28V轉(zhuǎn)5V3A電源,確保系統(tǒng)穩(wěn)定運行。設(shè)計5V轉(zhuǎn)3.3V的電路,為需要3.3V供電的元件提供電壓。
預留接口:
設(shè)計RS485、SPI等接口的預留空間,以便未來擴展。
3、 硬件功能與控制方式:
AHT21(溫濕度傳感器)
接口連接:AHT21經(jīng)I2C接口連MSPM0G3507,SCL、SDA分別接PB2、PB3,工作電壓3.3V。 功能:與MSPM0G3507通信,處理溫濕度數(shù)據(jù),經(jīng)濾波、校準后,由液晶屏實時顯示并記錄。使用前需初始化AHT21的IIC,包括設(shè)置地址、模式等,通過I2C發(fā)送讀取命令獲取數(shù)據(jù),再依轉(zhuǎn)換公式得出實際溫濕度(℃和%)。
串口屏
顯示功能:
串口屏顯示文本、圖像、圖標等多種信息,顯示溫度濕度,及各個模塊的開關(guān)情況以及狀態(tài)的信息。
觸控交互:
串口屏配備觸摸屏,可以通過觸摸操作與系統(tǒng)進行交互,點擊按鈕、滑動頁面等??梢杂脕碓O(shè)定溫度的值,照明開關(guān),水泵開關(guān)等一系列操作,及大的實現(xiàn)人機交互的體驗感和操作性。
串口連接:
串口屏通過串口UART與主控MSPM0G3507進行連接,實現(xiàn)數(shù)據(jù)的傳輸和指令的接收。
串口連接通常使用標準的串口線或串口轉(zhuǎn)接線進行連接,使用的引腳是PA25,PA26.
電源連接:
電源連接使用常規(guī)的XH2.54接口使用的是DC 5V,
參數(shù):
7英寸串口屏
芯片: T5L0
尺寸: 7英寸
分辨率: 800*480
視角: 70°/70°/50°/70°(L/R/U/D)
工作溫度: -20℃~70℃
存儲溫度: -30℃~80℃
三防漆工藝: 有
輕觸按鍵:
按鍵電路:
每個按鍵通過上拉電阻連接到MSP430G3507的GPIO引腳。當按鍵未被按下時,GPIO引腳通過上拉電阻被拉至高電平;當按鍵被按下時,GPIO引腳被拉至低電平。
手動鍵:當按下手動鍵時,打開照明和風機,同時啟動一個定時器來控制水泵工作3S-5S后自動關(guān)閉。
取消報警鍵:當系統(tǒng)檢測到超溫等報警條件時,可以通過按下此鍵來取消報警。
使用的MSP430G3507引腳分別是,PA22,PA8,另外兩個按鍵預留,增加新的功能時,再引用,按鍵的功能。
使用MSP430G3507對四個輕觸按鍵的軟件功能,首先是初始化、中斷處理以及按鍵邏輯,
貼片RGB LED
為了產(chǎn)品在使用過程,出現(xiàn)正常實驗時,突然打開相關(guān)的操作,或者停止某些操作,所以這個擴展板設(shè)計時,就增加了一個貼片RGB LED燈,其中RGB LED采用共陽極連接,并且使用三個GPIO引腳分別控制紅、綠、藍三種顏色的亮和滅,沒有設(shè)計成呼吸燈的效果,就是為了更好的體驗其設(shè)計要求,當然在我當時還考慮了確保GPIO引腳能夠輸出適當?shù)碾娏鱽眚?qū)動LED的問題點,并且考慮到LED的共陽極配置和控制。
GPIO引腳
GPIO_R:連接到紅色LED的陰極,用于控制紅色LED的亮滅,引腳為pa8.
GPIO_G:連接到綠色LED的陰極,用于控制綠色LED的亮滅,引腳為pb18.
GPIO_B:連接到藍色LED的陰極,用于控制藍色LED的亮滅,引腳為pa18.
軟件控制
在軟件方面,需要編寫代碼來控制GPIO引腳的電平,從而控制LED的亮滅。由于GPIO引腳通常只能控制開/關(guān)(高/低電平),因此如果想要實現(xiàn)亮度調(diào)節(jié),可能需要使用PWM(脈沖寬度調(diào)制)來實現(xiàn)亮度的調(diào)節(jié),包括呼吸燈。
蜂鳴器
電磁式有源蜂鳴器是一種利用電磁原理產(chǎn)生音頻信號的電子器件,蜂鳴器有著廣泛的應用,蜂鳴器分為有源和無源蜂器兩種,MSP430G3507擴展板上使用的是有源蜂鳴器。
工作原理
電磁式有源蜂鳴器主要由鐵芯、線圈和振膜組成。當電流通過線圈時,產(chǎn)生的磁場會使鐵芯磁化,進而吸引振膜與之相連。隨著電流的變化,磁場也會發(fā)生變化,導致鐵芯的磁力發(fā)生變化,從而使振膜動態(tài)地受到吸引和釋放。這種振動過程會產(chǎn)生聲波,通過空氣傳播出去,形成我們聽到的聲音。
技術(shù)參數(shù)
電磁式有源蜂鳴器的技術(shù)參數(shù)可能因具體型號而異,但一般包括以下幾個方面:
額定電壓:如1.5V、3V、5V、9V、12V等。工作電壓范圍:通常較寬,如1~15V。
額定電流:不同型號的產(chǎn)品額定電流可能不同,如Max30mA、Max40mA等。
操作溫度:一般在-20℃至+70℃之間。
重量:通常較輕,便于集成到各種電子產(chǎn)品中。
引腳連接:與MSP430G3507連接的是PB1引腳,PB1引腳還可以輸出PWM波,可以很好的更換為無源蜂鳴器,實現(xiàn)PWM驅(qū)動無源蜂鳴器的功能。
風機接口:
風機通過PWM(脈沖寬度調(diào)制)或簡單的GPIO控制。設(shè)計一個PWM或GPIO引腳接口,以及風機的供電和地線。
GPIO控制接口
GPIO輸出高電平或低電平來控制風機的開關(guān)狀態(tài)(通常不用于調(diào)速),是什么意思呢,是當GPIO輸出電平為高的時候,就讓風機轉(zhuǎn)動起來,如果要關(guān)就輸出的低電平,道理與工作時的狀態(tài)相反。
風機特性:
軸承:雙微型超細軸承 額定電壓:DC5V 工作電壓:4.5-5V 電流:0.2A 風量:5 m3/h 轉(zhuǎn)數(shù):13200RPM 噪音:18分貝
水泵接口:
水泵的工作原理與風機的工作原理一樣,介紹一下水泵特性:
臥式小潛水泵,支持3V、4.5V、5V、6V等多種電壓,便于與不同電源設(shè)備匹配。
體積小、重量輕,便于安裝和維護。
lfodel型號
JT-DC3W-3,IT-DC3W-4.5
VoltageScope (DC)電壓
3V,4. 5V
Current(A)電流
0.12,0.18
Power(W)功率
0.36,0. 91
Jax TaterHead ()揚程
0.35,0. 55
Max FlowRat e (L/H)流量
80,100
LED照明燈珠:
與風機水泵的工作方式和控制方式同理。
LED照明燈珠特性:
發(fā)光顏色: 白色(正自光) 正向電流: 60mA 透鏡顏色: 黃色透鏡 色溫: 5500K~6000K 封裝: SMD5730 膠體顏色:黃色 半功率視角:120
加熱接口:
加熱的工作原理與風機的工作原理一樣,這里不多介紹。
根據(jù)使用需求和電源條件,選擇合適的電阻作為加熱裝置,是一個不錯的選擇,安全,方便快速。電阻的功率(W)應足夠大,以承受加熱時產(chǎn)生的熱量而不至于過熱燒毀。
連接電路:將電阻與電源和MOS管的控制電路(使用MSP430G3507輸出PWM控制)。根據(jù)溫度傳感器實現(xiàn)溫度控制,目地是將溫度傳感器根據(jù)連接到控制電路中把溫度轉(zhuǎn)成相關(guān)的數(shù)據(jù)傳感給MSP430G3507,經(jīng)過MSP430G3507編程分析出相對應的值,從而實現(xiàn)溫度的控制。
通過使用電阻作為加熱元件,可以更容易地實現(xiàn)加熱過程的精確控制,并與溫度傳感器配合使用,實現(xiàn)閉環(huán)的溫度控制系統(tǒng)。
電源管理
下圖是我選用的電源管理,在這個電源管理電路中,我實現(xiàn)的功能是從寬范圍輸入電壓(4.5V至28V)轉(zhuǎn)換到穩(wěn)定的5V輸出,并把從5V轉(zhuǎn)換到3.3V,是為了滿足不同元件的供電需求,方便更好的實現(xiàn)多模塊工作的需求。
目地
寬電壓的電源輸入4.5V~28V轉(zhuǎn)5V 3A電源設(shè)計,這個就兼容了5V-12V-24V。
選用這種DC電路的設(shè)計,是為了更好的利用對就的資源,合理的使用電源的通用性,這樣轉(zhuǎn)換可以有效地將高于輸出電壓的輸入電壓轉(zhuǎn)換為穩(wěn)定的輸出電壓,并且具有較高的轉(zhuǎn)換效率。
參數(shù)選擇:
輸入電壓范圍:4.5V至28V
輸出電壓:5V
輸出電流:3A
轉(zhuǎn)換效率:盡可能高(以減少熱量產(chǎn)生)
類型:
同步降壓轉(zhuǎn)換器:通常比非同步轉(zhuǎn)換器具有更高的效率。
保護特性:
過流保護(OCP)
過熱保護(OTP)
輸入欠壓鎖定(UVLO)
選用線性穩(wěn)壓器
從5V轉(zhuǎn)換到3.3V,選擇線性穩(wěn)壓器(LDO)。線性穩(wěn)壓器簡單且成本低,但效率較低(特別是在輸入輸出壓差較大時)。
參數(shù)選擇:
輸入電壓:5V
輸出電壓:3.3V
輸出電流:1A
目地
電流需求不高且對效率要求不是非常嚴格,所以選擇LDO。如果需要高效率且電流需求較高,則選擇降壓型DC-DC轉(zhuǎn)換器。
型號: TI的TPS54302D(4.5V-28V轉(zhuǎn)5V3A)
安森美的AMS1117-3.3V
整體電路原理圖:
PCB圖
PCBA組合完整圖:
背面:
正面:
使用的開發(fā)板:
二、框架
4、 整體框架
硬件框架:
軟件框架:
三、軟件
5、 軟件功能:
1、 使用功能與接口:IIC、urat、gpio、PWM,中斷等。
2、 初始化MCU: 配置系統(tǒng)時鐘、GPIO端口、中斷控制器等。
3、 初始化外設(shè):IIC: 初始化IIC接口,用于連接溫濕度傳感器AHT21。
4、 UART: 初始化串口,用于調(diào)試或連接串口屏。
5、 GPIO: 初始化按鍵、LED指示燈、蜂鳴器、電機等控制引腳。
6、 定時器/中斷: 設(shè)置定時器中斷,用于實現(xiàn)延時、周期性任務等。
7、 延時100MS-1S時間,穩(wěn)定初始功能完成。
8、 進入主循環(huán)。
9、 等待開機。
10、 通過串口屏顯示系統(tǒng)啟動信息、當前時間、溫度、濕度等初始狀態(tài)。
數(shù)據(jù)采集: 通過IIC接口讀取AHT21溫濕度傳感器的數(shù)據(jù)。
數(shù)據(jù)處理: 將采集到的數(shù)據(jù)轉(zhuǎn)換為可讀格式,并判斷是否超出預設(shè)的閾值。
顯示更新: 更新串口屏顯示的數(shù)據(jù),包括當前溫度、濕度等。
按鍵檢測與處理:循環(huán)檢測按鍵狀態(tài),根據(jù)按鍵的不同操作執(zhí)行相應的功能。
設(shè)備控制:根據(jù)溫度和濕度的設(shè)定值與當前值的比較結(jié)果,控制風機(小電機)、加熱裝置等設(shè)備的開關(guān)。
報警處理:如果檢測到溫度或濕度超出預設(shè)的安全范圍,則激活蜂鳴器進行報警,并可能通過串口屏顯示警告信息。
6、 軟件配置:
定時器
GPIO、按鍵
IIC
串口:
系統(tǒng)初始:
SYSCONFIG_WEAK void SYSCFG_DL_init(void)
{
SYSCFG_DL_initPower();
SYSCFG_DL_GPIO_init();
/* Module-Specific Initializations*/
SYSCFG_DL_SYSCTL_init();
/*定時器0初始化*/
SYSCFG_DL_TIMER_0_init();
/*串口0初始化*/
SYSCFG_DL_UART_0_init();
/* Ensure backup structures have no valid state */
gUART3Backup.backupRdy = false;
/*spi 存儲芯片 初始化*/
SYSCFG_DL_SPI_0_init();
/* Ensure backup structures have no valid state */
gSPI_0Backup.backupRdy = false;
SYSCFG_DL_SYSTICK_init();
}
SYSCONFIG_WEAK void SYSCFG_DL_GPIO_init(void)
{
DL_GPIO_initPeripheralOutputFunction(
GPIO_UART_0_IOMUX_TX, GPIO_UART_0_IOMUX_TX_FUNC);
DL_GPIO_initPeripheralInputFunction(
GPIO_UART_0_IOMUX_RX, GPIO_UART_0_IOMUX_RX_FUNC);
DL_GPIO_initDigitalInput(KEY_PIN_21_IOMUX);
DL_GPIO_initDigitalOutput(RGB_Red_PIN_26_IOMUX);
DL_GPIO_initDigitalOutput(I2C_SCL_IOMUX);
DL_GPIO_initDigitalOutput(I2C_SDA_IOMUX);
DL_GPIO_setPins(I2C_PORT, I2C_SCL_PIN |
I2C_SDA_PIN);
DL_GPIO_enableOutput(I2C_PORT, I2C_SCL_PIN |
I2C_SDA_PIN);
DL_GPIO_clearPins(GPIOB, RGB_Red_PIN_26_PIN);
DL_GPIO_enableOutput(GPIOB, RGB_Red_PIN_26_PIN);
DL_GPIO_setUpperPinsPolarity(GPIOB, DL_GPIO_PIN_21_EDGE_RISE);
/*LED IO口初始化*/
DL_GPIO_initDigitalOutputFeatures(LED1_PIN_14_IOMUX,
DL_GPIO_INVERSION_DISABLE, DL_GPIO_RESISTOR_PULL_DOWN,
DL_GPIO_DRIVE_STRENGTH_LOW, DL_GPIO_HIZ_DISABLE);
DL_GPIO_clearPins(LED1_PORT, LED1_PIN_14_PIN);
DL_GPIO_enableOutput(LED1_PORT, LED1_PIN_14_PIN);
/*串口1 使能IO口初始化*/
DL_GPIO_initPeripheralOutputFunction(
GPIO_UART1_IOMUX_TX, GPIO_UART1_IOMUX_TX_FUNC);
DL_GPIO_initPeripheralInputFunction(
GPIO_UART1_IOMUX_RX, GPIO_UART1_IOMUX_RX_FUNC);
/*存儲芯片 AT24C 芯片使能IO口初始化*/
DL_GPIO_initDigitalOutput(GPIO_SCL_IOMUX);
DL_GPIO_initDigitalOutput(GPIO_SDA_IOMUX);
/*存儲芯片 AT24C 芯片使能IO口初始化*/
DL_GPIO_initPeripheralOutputFunction(
GPIO_SPI_0_IOMUX_SCLK, GPIO_SPI_0_IOMUX_SCLK_FUNC);
DL_GPIO_initPeripheralOutputFunction(
GPIO_SPI_0_IOMUX_PICO, GPIO_SPI_0_IOMUX_PICO_FUNC);
DL_GPIO_initPeripheralInputFunction(
GPIO_SPI_0_IOMUX_POCI, GPIO_SPI_0_IOMUX_POCI_FUNC);
DL_GPIO_initPeripheralOutputFunction(
GPIO_SPI_0_IOMUX_CS0, GPIO_SPI_0_IOMUX_CS0_FUNC);
}
SYSCONFIG_WEAK void SYSCFG_DL_SYSCTL_init(void)
{
//Low Power Mode is configured to be SLEEP0
DL_SYSCTL_setBORThreshold(DL_SYSCTL_BOR_THRESHOLD_LEVEL_0);
DL_SYSCTL_setSYSOSCFreq(DL_SYSCTL_SYSOSC_FREQ_BASE);
/* Set default configuration */
DL_SYSCTL_disableHFXT();
DL_SYSCTL_disableSYSPLL();
DL_SYSCTL_enableMFCLK();
DL_SYSCTL_setMCLKDivider(DL_SYSCTL_MCLK_DIVIDER_DISABLE);
DL_SYSCTL_setULPCLKDivider(DL_SYSCTL_ULPCLK_DIV_1);
}
SYSCONFIG_WEAK void SYSCFG_DL_TIMER_0_init(void) {
DL_TimerG_setClockConfig(TIMER_0_INST,
(DL_TimerG_ClockConfig *) &gTIMER_0ClockConfig);
DL_TimerG_initTimerMode(TIMER_0_INST,
(DL_TimerG_TimerConfig *) &gTIMER_0TimerConfig);
DL_TimerG_enableInterrupt(TIMER_0_INST , DL_TIMERG_INTERRUPT_ZERO_EVENT);
DL_TimerG_enableClock(TIMER_0_INST);
}
SYSCONFIG_WEAK void SYSCFG_DL_UART_0_init(void)
{
DL_UART_Main_setClockConfig(UART_0_INST, (DL_UART_Main_ClockConfig *) &gUART_0ClockConfig);
DL_UART_Main_init(UART_0_INST, (DL_UART_Main_Config *) &gUART_0Config);
/*
* Configure baud rate by setting oversampling and baud rate divisors.
* Target baud rate: 9600
* Actual baud rate: 9598.08
*/
DL_UART_Main_setOversampling(UART_0_INST, DL_UART_OVERSAMPLING_RATE_16X);
DL_UART_Main_setBaudRateDivisor(UART_0_INST, UART_0_IBRD_4_MHZ_9600_BAUD, UART_0_FBRD_4_MHZ_9600_BAUD);
/* Configure Interrupts */
DL_UART_Main_enableInterrupt(UART_0_INST,
DL_UART_MAIN_INTERRUPT_RX);
DL_UART_Main_enable(UART_0_INST);
}
四、工作畫面
開機LOGO畫面:
控制系統(tǒng)畫面與連接實物圖:
五、總結(jié)
實現(xiàn)了項目優(yōu)化空間擴展,在現(xiàn)有項目的基礎(chǔ)上,進一步探索和優(yōu)化可以顯著提升系統(tǒng)的功能性和實用性。
實現(xiàn)了模塊化擴展接口,設(shè)計統(tǒng)一的模塊接口標準,通過GPIO、IIC或串口,使得不同類型的從機模塊(傳感器模塊、執(zhí)行器模塊等)能夠輕松通信接入系統(tǒng),增強系統(tǒng)的可擴展性和靈活性。
利用動態(tài)模塊管理,實現(xiàn)一個模塊管理器,能夠動態(tài)地識別、配置和管理接入的從機模塊,包括模塊的地址分配、類型識別、參數(shù)配置等,從而支持更復雜的系統(tǒng)架構(gòu)。
基于現(xiàn)有通信接口(IIC),設(shè)計并實現(xiàn)一套自定義的通信協(xié)議,以提高數(shù)據(jù)傳輸效率和數(shù)據(jù)安全性。
探索使用輕量級機器學習算法對采集到的數(shù)據(jù)進行實時分析,異常檢測、趨勢預測等,實現(xiàn)系統(tǒng)的智能化水平。
集成多種傳感器,除了溫度檢測外,還可以增加集成濕度、光照、氣壓、加速度等多種傳感器,實現(xiàn)多維度的環(huán)境感知。
傳感器數(shù)據(jù)融合,通過多傳感器數(shù)據(jù)融合技術(shù),提高環(huán)境分析的準確性,為決策提供更全面的信息支持。
用戶界面與交互,添加顯示屏模塊,實時顯示系統(tǒng)狀態(tài)和監(jiān)測數(shù)據(jù),提高用戶體驗。
六、心得體會深化
在回顧項目經(jīng)歷時,除了對技術(shù)細節(jié)的總結(jié),還可以從以下幾個方面深化心得體會:
問題解決能力:分享在調(diào)試過程中遇到的難題及解決方法,反思如何更有效地排查和解決問題。
持續(xù)學習與創(chuàng)新:鼓勵持續(xù)學習新技術(shù)、新工具,以及如何在項目中勇于創(chuàng)新,嘗試新的解決方案。
職業(yè)規(guī)劃與展望:結(jié)合項目經(jīng)驗,思考未來在嵌入式系統(tǒng)、物聯(lián)網(wǎng)等領(lǐng)域的職業(yè)規(guī)劃和發(fā)展方向和硬件技術(shù)水平的更加深層次的提升與進步。
視頻演示: