0 前言
?? 這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。
為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的是
?? 基于stm32單片機(jī)的酒精濃度酒駕檢測系統(tǒng)
??學(xué)長這里給一個(gè)題目綜合評分(每項(xiàng)滿分5分)
- 難度系數(shù):3分
- 工作量:3分
- 創(chuàng)新點(diǎn):2分
1 簡介
為了控制酒后駕車,本項(xiàng)目基于STM32平臺設(shè)計(jì)了一套酒后駕車監(jiān)測系統(tǒng)。
2 主要器件
-
STM32系統(tǒng)板
-
酒精檢測傳感器
-
LCD顯示屏
-
供電模塊
-
SIM800C模塊
-
蜂鳴器模塊
3 實(shí)現(xiàn)效果
主要功能
采用酒精傳感器采集數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)酒精超標(biāo),會(huì)通過GPRS模塊向指定的手機(jī)號碼發(fā)送提醒短信LCD顯示屏可實(shí)時(shí)顯示檢測的酒精含量,超標(biāo)后,本地蜂鳴器也會(huì)發(fā)出警報(bào),提醒駕駛員。
4 硬件設(shè)計(jì)
MQ-3酒精乙醇傳感器模塊
簡介
MQ-3氣體傳感器所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫(Sn02)。當(dāng)傳感器所處環(huán)境中存在酒精蒸汽時(shí),傳感器的電導(dǎo)率隨空氣中酒精氣體濃度的增加而增大。使用簡單的電路即可將電導(dǎo)率的變化轉(zhuǎn)換為與該氣體濃度相對應(yīng)的輸出信號。MQ-3氣體傳感器對酒精的靈敏度高,可以抵抗汽油、煙霧、水蒸氣的干擾。這種傳感器可檢測多種濃度酒精氣氛,是一款適合多種應(yīng)用的低成本傳感器
實(shí)物圖
MQ-3氣體傳感器對酒精的靈敏度高,可以抵抗汽油、煙霧、水蒸氣的干擾。這種傳感器可檢測多種濃度酒精氣氛,是一款適合多種應(yīng)用的低成本傳感器。
該模塊主要特點(diǎn)如下:
- 具有信號輸出指示。
- 輸出的雙通道信號(模擬量輸出與 TTL 輸出)。
- TTL 輸出有效信號為低電平。
- 模擬輸出電壓為 0~5V, 濃度高則電壓高。
- 對乙醇蒸汽擁有很高的靈敏度和不錯(cuò)的選擇性。
- 它具有較長的使用壽命和可靠的穩(wěn)定性。
- 快速的響應(yīng)恢復(fù)特性。
SIM800C模塊
SIM800C模塊是一款高性能高性價(jià)比工業(yè)級的GSM/GPRS模塊。本模塊采用SIMCOM公司的工業(yè)級四頻850/900/ 1800/1900MHz SM800芯片,可以低功耗實(shí)現(xiàn)語音、SMS、數(shù)據(jù)和傳真信息的傳輸。
模塊特點(diǎn):
1、支持極限D(zhuǎn)C5V-18V寬電壓輸入
2、有電源使能開關(guān)引腳EN
3、支持鋰電池供電接口VBAT3.5-4.5V
4、輸入支持移動(dòng)和聯(lián)通手機(jī)卡Micro SIM卡
5、送51/STM32/ARDUINO驅(qū)動(dòng)例程
5 軟件說明
系統(tǒng)框圖
系統(tǒng)原理圖文章來源:http://www.zghlxwxcb.cn/news/detail-830320.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-830320.html
6 部分核心代碼
/* USER CODE BEGIN PV */
uint32_t adc_value=0;
uint32_t Alcohol=0;
uint8_t a=1;
/* USER CODE END PV */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_ADC_Start_DMA(&hadc1,&adc_value,1);
Alcohol=((float)adc_value*3.3/4096*0.36-1.08)*10000;//電壓數(shù)據(jù)轉(zhuǎn)換(此處由于還未找到相關(guān)公式,暫時(shí)這樣代替,如有了解的大佬可以在評論區(qū)補(bǔ)充一下)
printf("Alcohol=%d\r\n",Alcohol);
HAL_Delay(1000);
}
/* USER CODE END 3 */
}
//中斷回調(diào)函數(shù),當(dāng)有酒精時(shí),DO口電平由高電平邊低電平,PA4觸發(fā)外部中斷,進(jìn)入中斷函數(shù)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
if(GPIO_Pin==Alcohol_DO_Pin){
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,1);
}
//設(shè)置一個(gè)按鍵中斷,為了把酒精觸發(fā)的LED點(diǎn)亮之后熄滅(實(shí)際項(xiàng)目中可改為關(guān)閉蜂鳴器等)
if(GPIO_Pin==KEY1_Pin){
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,0);
}
}
/* USER CODE END 4 */
//顯示提示信息
POINT_COLOR=BLACK;//設(shè)置字體為藍(lán)色
LCD_ShowString(10,100,136,16,16,"Alcohol: . mg/L");
LCD_ShowString(10,120,120,16,16,"Threshol1: . ");
LCD_ShowString(10,140,120,16,16,"Threshol2:0.500");
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
//LCD_ShowxNum(156,130,adcx,4,16,0);//顯示ADC的值
temp=((float)adcx*(5.0/4096))*0.36-1.08;
printf("value:%f",temp);
t=KEY_Scan(0); //得到鍵值
if(t==KEY0_PRES)
{
threshol1+=0.01;
}else if(t==KEY1_PRES)
{
threshol1-=0.01;
}
threshol_1=threshol1;
LCD_ShowxNum(90,120,threshol_1,1,16,0);//顯示濃度值
threshol_2=(threshol1-threshol_1)*1000;
LCD_ShowxNum(106,120,threshol_2,3,16,0);
if(temp > threshol1 && temp < threshol2) //如果濃度大于閾值
{
PB9=0; //開啟蜂鳴器
delay_ms(1000);
delay_ms(1000);
PB9=1; //蜂鳴器關(guān)閉
delay_ms(1000);
LCD_Fill(70,200,170,300,RED);
}else if(temp > threshol2){ //急促
PB9=0; //開啟蜂鳴器
delay_ms(300);
PB9=1; //蜂鳴器關(guān)閉
delay_ms(50);
LCD_Fill(70,200,170,300,BROWN);
}else
{
PB9=1; //蜂鳴器關(guān)閉
LCD_Fill(70,200,170,300,GREEN);
}
adcx=temp;
LCD_ShowxNum(74,100,adcx,1,16,0);//顯示濃度值
temp-=adcx;
temp*=1000;
LCD_ShowxNum(90,100,temp,3,16,0);
LED0=!LED0;
delay_ms(250);
}
7 最后
到了這里,關(guān)于stm32畢設(shè)分享 stm32單片機(jī)酒精濃度酒駕檢測系統(tǒng) - 物聯(lián)網(wǎng) 嵌入式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!