0 前言
??
這兩年開(kāi)始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。
為了大家能夠順利以及最少的精力通過(guò)畢設(shè),學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的是
?? 畢業(yè)設(shè)計(jì) STM32的wifi照明控制系統(tǒng)(畢設(shè)分享)
??學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿(mǎn)分5分)
- 難度系數(shù):3分
- 工作量:3分
- 創(chuàng)新點(diǎn):3分
?? 項(xiàng)目分享:見(jiàn)文末!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-845911.html
1 主要功能
主要功能: 此路燈系統(tǒng)使用STM32為主控制器,有兩種工作模式,分別是手動(dòng)模式和自動(dòng)模式。
自動(dòng)模式:使用光敏電阻模塊采集環(huán)境亮度值和使用SR501檢測(cè)人體,當(dāng)環(huán)境亮度值較低且檢測(cè)到人體的時(shí)候,燈會(huì)自動(dòng)打開(kāi),且會(huì)根據(jù)環(huán)境亮度值的不同,燈光亮度會(huì)自動(dòng)調(diào)節(jié)。
手動(dòng)模式:通過(guò)按鍵控制燈的亮滅,使用按鍵調(diào)整燈光亮度,有三個(gè)檔位可選擇。
1.使用STM32F103C8T6單片機(jī)做主控制器。
2.使用OLED顯示燈的狀態(tài)、工作模式、環(huán)境亮度值、燈的檔位。
3.使用WiFi模塊(ESP-01)連接手機(jī),可在手機(jī)端控制燈的狀態(tài)、工作模式、工作檔位。且采集的亮度值會(huì)上傳至手機(jī)端。
4.使用光敏電阻模塊采集當(dāng)前環(huán)境的亮度值。
5.使用L298N驅(qū)動(dòng)模塊驅(qū)動(dòng)路燈。
6.使用SR501傳感器檢測(cè)人體。
7.三個(gè)按鍵可控制燈的亮滅、工作模式、工作檔位。
2 緒論
2.1 項(xiàng)目背景
每當(dāng)夜幕降臨,城市中各種各樣、色彩繽紛的路燈亮起,為城市披上了一層絢麗的外衣。但在這絢麗的外表下則隱藏著巨大缺點(diǎn):
1)能源浪費(fèi):由于城市的夜晚進(jìn)入后半夜后,人們已經(jīng)開(kāi)始休息,街上人流量開(kāi)始減少,有些地段在特殊時(shí)段根本不需要過(guò)多的路燈照明,導(dǎo)致能源浪費(fèi),增加了不必要的成本;
2)維護(hù)困難:由于使用人工巡檢,需要大量人力,而路燈數(shù)量龐大,路燈實(shí)時(shí)狀態(tài)不能及時(shí)獲取,導(dǎo)致路燈故障維護(hù)、排查效率極低。
2.2 需求分析
近年來(lái)中國(guó)國(guó)力不斷增強(qiáng), 資源方面非常欠缺, 其中電力能源尤為緊張。 環(huán)保節(jié)能成為當(dāng)今社會(huì)的主題。 路燈是城市中處處可見(jiàn)的基礎(chǔ)設(shè)施, 也是一個(gè)城市現(xiàn)代化的標(biāo)志。 路燈最原始的控制方式是人工控制, 由管理人員手動(dòng)控制來(lái)實(shí)現(xiàn), 這種方式不僅浪費(fèi)人力, 耗時(shí)較多, 而且效率低下。 其次是時(shí)控控制方式, 由路燈的配電柜內(nèi)的時(shí)控裝置控制, 也就是通過(guò)設(shè)置配電箱里的定時(shí)器, 來(lái)實(shí)現(xiàn)路燈的定時(shí)打開(kāi)或關(guān)閉,是目前城市應(yīng)用最多的控制方式。 但是時(shí)控控制照明方式單一且耗能較大, 還常常因?yàn)椴煌蚨鴽](méi)有及時(shí)啟動(dòng), 例如: 特殊天氣等。
因此, 為了提高城市道路照明系統(tǒng)的效率和可擴(kuò)展性, 豐富其照明方式, 現(xiàn)提出了一種基于NB-IoT的智能路燈管理系統(tǒng), 目的是將城市道路照明與空氣質(zhì)量檢測(cè)相結(jié)合, 將嵌入式技術(shù)與無(wú)線(xiàn)通信相結(jié)合, 同時(shí)融入到新的城市物聯(lián)網(wǎng)(IoT) 系統(tǒng), 從而實(shí)現(xiàn)對(duì)城市路燈的控制精準(zhǔn)化、 監(jiān)控智能化、 故障檢修便捷化。 利用傳感器技術(shù)來(lái)完善城市道路智能照明, 實(shí)現(xiàn)智能化, 數(shù)字化的同時(shí), 具備監(jiān)測(cè)周?chē)h(huán)境并實(shí)時(shí)檢測(cè)PM2. 5濃度功能。
3 系統(tǒng)設(shè)計(jì)
具體功能如下:
1)路燈節(jié)點(diǎn)支持自定義控制方式,可支持自定義時(shí)間控制策略和多樣化控制(兩側(cè)路燈全亮、全關(guān)、隔桿高亮等)兩種方式;
2)根據(jù)所在環(huán)境光照強(qiáng)度,自動(dòng)調(diào)節(jié)路燈亮度,低功耗節(jié)能減排;
3)斷電保護(hù),電壓電流超過(guò)安全閾值,路燈自動(dòng)斷電;
4)路燈故障自動(dòng)報(bào)警,GPS精確定位,可從手機(jī)APP、微信小程序、PC端和Web平臺(tái)可視化監(jiān)控路燈信息,隨時(shí)可調(diào)取任何一處路燈信息;
5)實(shí)時(shí)采集路燈節(jié)點(diǎn)工作狀態(tài)、電壓、電流、功率、功率因數(shù)、耗電量、產(chǎn)生二氧化碳、頻率、環(huán)境光照度和路燈狀態(tài)數(shù)據(jù),實(shí)現(xiàn)統(tǒng)計(jì)分析和歷史查詢(xún)。
6)使用機(jī)器學(xué)習(xí)算法,根據(jù)對(duì)路燈節(jié)點(diǎn)實(shí)現(xiàn)建模,實(shí)現(xiàn)城市畫(huà)像分析。
總之,基于NB-IoT技術(shù)的城市道路智慧路燈監(jiān)控系統(tǒng)有著廣闊的前景和寬廣的需求。
3.1 功能設(shè)計(jì)
基于NB-IoT技術(shù)的城市道路智慧路燈監(jiān)控系統(tǒng),在每個(gè)照明節(jié)點(diǎn)上安裝一個(gè)集成了NB-IoT模組的單燈控制器,單燈控制器再經(jīng)運(yùn)營(yíng)商的網(wǎng)絡(luò),與路燈控制平臺(tái)實(shí)現(xiàn)雙向通信,路燈控制平臺(tái)直接對(duì)每個(gè)燈進(jìn)行控制,包括開(kāi)關(guān)燈控制、光照檢測(cè)、自動(dòng)調(diào)節(jié)明暗、電耗分析等操作。智慧路燈實(shí)物圖如下所示:
3.1.1 系統(tǒng)角色分析
根據(jù)需求分析提出的研究方向, 系統(tǒng)的角色分配如圖 2-1 所示。 管理人員在電腦中查看傳感器節(jié)點(diǎn)檢測(cè)回來(lái)的光強(qiáng)和 PM2.5 數(shù)據(jù), 并對(duì)數(shù)據(jù)進(jìn)行判斷。 通過(guò)阿里云平臺(tái), 對(duì)路燈進(jìn)行手動(dòng)控制。
3.1.2 開(kāi)發(fā)環(huán)境
3.2 總體設(shè)計(jì)
智能路燈系統(tǒng)的總體設(shè)計(jì)主要分為軟硬件設(shè)計(jì)和軟件設(shè)計(jì)兩個(gè)部分。 硬件主要由STM32 開(kāi)發(fā)板、 光敏傳感器、 PM2. 5 空氣傳感器和串口組成。 軟件則分為 IOT 云平臺(tái),Mysql 和數(shù)據(jù)的采集、 發(fā)送和接收。
3.3 硬件部分
3.3.1 整體架構(gòu)
基于 NB-IoT 的智能路燈管理系統(tǒng)硬件部分主要以 STM32 開(kāi)發(fā)板作為核心, 光敏傳感器模塊與 PM2. 5 空氣傳感器模塊通過(guò)串口與 STM32 核心板連接。 傳感器節(jié)點(diǎn)采集到的數(shù)據(jù)由核心板處理, 然后把處理好的數(shù)據(jù)通過(guò)串口發(fā)送給 NB-IoT 模塊。
學(xué)長(zhǎng)所用到的器件選型為:
- (1) STM32 核心板: STM32F103
- (2) 光敏傳感器模塊: GY-30
- (3) PM2. 5 傳感器模塊: GP2Y1014AU
3.3.2 stm32部分
學(xué)長(zhǎng)使用到的具體型號(hào)為STM32F103C8T6, 是一款 32 位的微控制器。
STM32芯片接線(xiàn)圖
3.3.3 光敏傳感器模塊
相比于其他傳感器, 光敏傳感器最為常見(jiàn)、 每年的產(chǎn)量也占據(jù)多數(shù)、 被人們所廣泛應(yīng)用。 光敏傳感器種類(lèi)繁多, 光電管、 光電倍增管、 光敏電阻等均包含在內(nèi)。 光敏電阻是最簡(jiǎn)單的光敏傳感器, 智能路燈管理系統(tǒng)用到的光敏傳感器為 GY-30, 是一種光敏電阻。 其工作原理是利用光敏元件將光信號(hào)轉(zhuǎn)換為電信號(hào)。
3.3.4 PM2. 5 空氣傳感器模塊
智能路燈管理系統(tǒng)中的 PM2. 5 空氣傳感器模塊采用 GP2Y1014AU 粉塵傳感器, 是一款利用光學(xué)對(duì)空氣中的灰塵進(jìn)行檢測(cè)的傳感器模塊, 由夏普公司所開(kāi)發(fā)研制。
引腳圖:
3.3.5 NB-I oT 模塊(替換成wifi模塊)
0NB-IoT 是萬(wàn)物互聯(lián)網(wǎng)絡(luò)的一個(gè)重要分支, 是物聯(lián)網(wǎng)領(lǐng)域的一個(gè)新興技術(shù), 中文名稱(chēng)為窄帶物聯(lián)網(wǎng)。 NB-IoT 構(gòu)建于蜂窩網(wǎng)絡(luò), 消耗的帶寬較小, 大約為 180kHz。 為了降低部署的成本, 可直接部署于 GSM 網(wǎng)絡(luò)(2G) 、 UMTS 網(wǎng)絡(luò)(3G) 或 LTE 網(wǎng)絡(luò)(4G) ,還能實(shí)現(xiàn)平滑升級(jí)。
引腳圖:
3.4 軟件部分
3.4.1 核心部分 - NBIOT 模塊通訊控制
NB 作為通訊模塊, 將各傳感器采集回來(lái)的數(shù)據(jù), 經(jīng)過(guò) STM32 處理后上傳到服務(wù)器。
NB 模組通過(guò)串口通訊, 使用之前我們要對(duì) NB 硬件進(jìn)行復(fù)位, 配置 USART 為中斷源, 初始化配置 NVIC, 優(yōu)先級(jí)的設(shè)置。 然后我們就可以對(duì) NB_UART 進(jìn)行配置。第一步, 初始化 GPIO, 打開(kāi)串口 GPIO 的時(shí)鐘后分別配置 USART 的 Tx/Rx 的 GPIO模式;
第二步, 配置串口的初始化結(jié)構(gòu)體, 首先打開(kāi)串口外設(shè)的時(shí)鐘, 然后配置串口的工作參數(shù), 其中波特率設(shè)置為 9600, 數(shù)據(jù)字長(zhǎng)設(shè)置為 8bit, 設(shè)置停止位和校驗(yàn)位、 設(shè)置工作模式時(shí)接收和發(fā)送一起設(shè)置, 到這里串口的初始化配置就基本完成。 還要配置串口的中斷優(yōu)先級(jí), 使能串口接收中斷;
3.5 實(shí)現(xiàn)效果
?? 項(xiàng)目分享:見(jiàn)文末!
3.6 部分相關(guān)代碼
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_ADC1 ,
ENABLE ); //使能 ADC1 通道時(shí)鐘
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //設(shè)置 ADC 分頻因子 6 72M/6=12,ADC 時(shí)間
不能超過(guò) 14M
//PA1 作為模擬通道輸入引腳
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模擬輸入引腳
ADC_DeInit(ADC1); //復(fù)位 ADC1
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; //ADC 工作模式:ADC1 和
ADC2 工作在獨(dú)立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //轉(zhuǎn)換工作在單通道模式
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; //轉(zhuǎn)換工作在單次轉(zhuǎn)換模
式
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //轉(zhuǎn)換由軟
件而不是外部觸發(fā)啟動(dòng)
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC 數(shù)據(jù)右對(duì)齊
ADC_InitStructure.ADC_NbrOfChannel = 1; //順序進(jìn)行規(guī)則轉(zhuǎn)換的 ADC 通道的數(shù)目
ADC_Init(ADC1,&ADC_InitStructure); //根據(jù)指定的參數(shù)初始化外設(shè) ADCX 的寄存器
ADC_Cmd(ADC1, ENABLE); //使能指定的 ADC1
ADC_ResetCalibration(ADC1); //使能復(fù)位校準(zhǔn)
while(ADC_GetResetCalibrationStatus(ADC1)); //等待復(fù)位校準(zhǔn)結(jié)束
ADC_StartCalibration(ADC1); //開(kāi)啟 AD 校準(zhǔn)
while(ADC_GetCalibrationStatus(ADC1)); //等待校準(zhǔn)結(jié)束
}
unsigned int Get_Adc(unsigned char ch)
{
//設(shè)置指定 ADC 規(guī)則組通道, 一個(gè)序列, 采樣時(shí)間
ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5 ); //ADC1,ADC
通道, 采樣時(shí)間為 239, 5 周期
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的 ADC1 的軟件轉(zhuǎn)換啟
動(dòng)功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));/等待轉(zhuǎn)換結(jié)束
return ADC_GetConversionValue(ADC1);
} //返回最近一次 ADC1 規(guī)則組轉(zhuǎn)換結(jié)果
void DS1302_Dispose() //時(shí)鐘處理函數(shù)
{
unsigned char DS_Tab[7];
if(state==0)
{
ds1302_readtime(time_data_1) ; //先獲取時(shí)間
ds1302write(0x8e, 0x80) ; //開(kāi)保護(hù)
}
else
{
DS_Tab[0]=(time_data_1[0]/10) *16+(time_data_1[0]%10) ;
DS_Tab[1]=(time_data_1[1]/10) *16+(time_data_1[1]%10) ;
DS_Tab[2]=(time_data_1[2]/10) *16+(time_data_1[2]%10) ;
DS_Tab[3]=(time_data_1[3]/10) *16+(time_data_1[3]%10) ;
DS_Tab[4]=(time_data_1[4]/10) *16+(time_data_1[4]%10) ;
DS_Tab[5]=(time_data_1[5]/10) *16+(time_data_1[5]%10) ;
ds1302write(0x8e, 0x00) ; //關(guān)保護(hù)
ds1302write(0x80, DS_Tab[0]) ;
ds1302write(0x82, DS_Tab[1]) ;
ds1302write(0x84, DS_Tab[2]) ;
ds1302write(0x86, DS_Tab[3]) ;
ds1302write(0x88, DS_Tab[4]) ;
ds1302write(0x8C, DS_Tab[5]) ;
}
}
// PWM 調(diào)光程序如下所示。
if(adcx<300)LED_Count=300;//限制光敏 AD 轉(zhuǎn)換的范圍
else if(adcx>3900)LED_Count=3900;
else LED_Count=adcx;
PWM_Count=(LED_Count-300)/360; //光敏的范圍是
3900-300=3600, 得到的 AD 值也減去 300, 去除 360 將光敏的強(qiáng)度轉(zhuǎn)化為 10 個(gè)等級(jí)
}
else //不在范圍區(qū)間, 是關(guān)
{
PWM_Count = 0 ;
}
}
else
{
if(((time_data_1[2]*60+time_data_1[1])>=(Close_shi*60+Close_fen))&&((time_data_1
[2]*60+time_data_1[1])<(Open_shi*60+Open_fen)))
{
PWM_Count = 0 ;//否則 PWM 為 0, 關(guān)。
}
else //是開(kāi)
{
if(adcx<300)LED_Count=300;//如果 adcx 值小于 300, LED
輸出值為 300
else if(adcx>3900)LED_Count=3900;//如果 adcx 值大于
3900, LED 輸出值為 3900
else LED_Count=adcx;//否則 LED 輸出值等于 adcx 值
PWM_Count = (LED_Count-300)/360;
}
}
}
else PWM_Count = 0 ; //否則 PWM 為 0, 關(guān)。
}
********************************************************************/
4 最后
?? 項(xiàng)目分享:見(jiàn)文末!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-845911.html
到了這里,關(guān)于畢設(shè)分享 STM32的wifi照明控制系統(tǒng) - 智能路燈(源碼+硬件+論文)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!