網(wǎng)站建設(shè)的關(guān)鍵詞網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn)教程
目錄
?目錄
前言
一、本設(shè)計(jì)主要實(shí)現(xiàn)哪些很“開門”功能?
二、電路設(shè)計(jì)原理圖
1.電路圖采用Altium?Designer進(jìn)行設(shè)計(jì):
2.實(shí)物展示圖片
三、程序源代碼設(shè)計(jì)
四、獲取資料內(nèi)容
前言
近年來(lái)在車輛逐漸普及的情況下,由于家長(zhǎng)的疏忽,將兒童誤鎖車內(nèi)導(dǎo)致悲劇發(fā)生情況時(shí)有發(fā)生。兒童被鎖車內(nèi)因高溫,缺氧而窒息死亡的事件也屢見不鮮。近年兒童被鎖車內(nèi)死亡的新聞逐漸增多,我們?cè)谝贿吿岣咦⒁饬Φ耐瑫r(shí),是不是可以通過一種預(yù)警器來(lái)避免這種情況。
因此,基于這種情況,我們以STM32F103芯片為控制核心設(shè)計(jì)的誤鎖車內(nèi)的主動(dòng)式報(bào)警裝置便應(yīng)運(yùn)而生。本裝置解決的最大問題就是一旦發(fā)現(xiàn)有孩童被遺忘在車?yán)飼?huì)立即打電話給車主報(bào)警。本裝置由STM32F103c8t6芯片、紅外遙控、GSM模塊、溫度監(jiān)測(cè)模塊、CO檢測(cè)模塊、WIFI模塊等其他硬件設(shè)計(jì)而成的誤鎖車內(nèi)的主動(dòng)式報(bào)警裝置,通過紅外遙控模擬車鑰匙關(guān)閉車門后立即上電各個(gè)模塊立即開始工作,紅外如果檢測(cè)到人,GSM模塊立即撥打電話給車主報(bào)警,而車主知道后可在趕回去車?yán)飼r(shí)可用過APP實(shí)時(shí)了解車內(nèi)溫度高低和車內(nèi)有害氣體濃度,確保能在第一時(shí)間保障車內(nèi)人員安全。
一、本設(shè)計(jì)主要實(shí)現(xiàn)哪些很“開門”功能?
1、APP遠(yuǎn)程開關(guān)控制車輛
2、APP遠(yuǎn)程讀取車輛智能傳感器數(shù)據(jù)信息
3、APP上顯示數(shù)據(jù)彈窗信息警告功能,溫度彈窗,有害氣體彈窗
4、系統(tǒng)WIFI智能聯(lián)網(wǎng),數(shù)據(jù)雙向交互,APP WIFI連接
5、無(wú)線遙控,可控制車輛開關(guān)門
6、紅外熱釋式人體紅外檢測(cè),一旦檢測(cè)觸發(fā)警報(bào)
7、車內(nèi)有害氣體檢測(cè),并不上傳到手機(jī)APP顯示
8、車內(nèi)溫度檢測(cè),溫度數(shù)據(jù)上傳到APP顯示
9、報(bào)警裝置的的人體紅外檢測(cè)到車上有人立即啟動(dòng)撥打電話進(jìn)行警報(bào)
10、測(cè)內(nèi)溫度系統(tǒng)自動(dòng)判別,立即開啟風(fēng)扇進(jìn)行降溫
二、電路設(shè)計(jì)原理圖
1.電路圖采用Altium?Designer進(jìn)行設(shè)計(jì):
1、通過STM32F103C8T6單片機(jī)作為系統(tǒng)主控,最小系統(tǒng)電路是整個(gè)電路的核心。
2、通過紅外熱釋模塊實(shí)現(xiàn)的人體檢測(cè),模塊與單片機(jī)之間通過數(shù)字引腳進(jìn)行連接。
3、 使用無(wú)線433HZ射頻遙控,模塊與單片機(jī)進(jìn)行數(shù)據(jù)引腳協(xié)議解析。
4、通過DS18B20進(jìn)行測(cè)內(nèi)溫度檢測(cè),模塊與單進(jìn)行單總線連接。
5、使用GSMSIM900A短信模塊發(fā)送短信打電話,模塊與單片機(jī)使用串口連接。
6、通過STM32F103C8T6單片機(jī)作為系統(tǒng)主控,最小系統(tǒng)電路是整個(gè)電路的核心。
7、使用ESP8266 WIFI模塊進(jìn)行聯(lián)網(wǎng),模塊與單片機(jī)串口連接。
8、使用MQ-9有害氣體檢測(cè)車內(nèi)一氧化碳濃度,模塊與單片機(jī)使用模擬引腳連接。
2.實(shí)物展示圖片
?
三、程序源代碼設(shè)計(jì)
代碼如下(示例):
/* 用戶區(qū)當(dāng)前設(shè)備狀態(tài)結(jié)構(gòu)體*/
dataPoint_t currentDataPoint;
u8 wifi_sta=0;//WIFI連接狀態(tài) 0: 斷??: 已連接
//協(xié)議初始化
void Gizwits_Init(void)
{
?? ?TIM3_Int_Init(9,7199);//1MS系統(tǒng)定時(shí)
??????usart3_init(9600);//WIFI初始化
?? ?memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));//設(shè)備狀態(tài)結(jié)構(gòu)體初始化
?? ?gizwitsInit();//緩沖區(qū)初始化
}
//數(shù)據(jù)采集
void userHandle(void)
{
? ? //判斷當(dāng)前LED1開關(guān)量
?? ? ? if(LED0==1&&aa==1)
?? ??? ? {
?? ??? ??? ? currentDataPoint.valueAlarm_switch = 1;
?? ??? ? }
? ? ?else?
?? ? ? {
?? ??? ??? ? currentDataPoint.valueAlarm_switch = 0;
?? ??? ? }
?? ?if(wifi_sta)//判斷wifi 是否連接
?? ?{
?? ??? ??? ?temp=DS18B20_Get_Temp();//讀取DS18B20溫度值賦給temp
?? ??? ??? ? currentDataPoint.valueCar_temp = temp ;//溫度數(shù)據(jù)
?? ??? ??? ??? ? if(temp>=Temp_alarm)//溫度值>溫度上限值
?? ??? ??? ??? ? { ?
?? ??? ??? ??? ??? ??? ?temp_num++;
?? ??? ??? ??? ??? ? ?FAN=0;//繼電器0觸發(fā)
?? ??? ??? ??? ??? ??? ?if(temp_num>=alarm_num)//警報(bào)次數(shù)達(dá)到一定次數(shù)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?temp_num=0;
?? ??? ??? ??? ??? ??? ??? ?currentDataPoint.valueTemp_Alarm=1;//APP出現(xiàn)警報(bào)提示
?? ??? ??? ??? ??? ??? ?}?
?? ??? ??? ??? ? }
?? ??? ??? ??? ? else ?
?? ??? ??? ??? ? {
?? ??? ??? ??? ??? ? FAN=1;
?? ??? ??? ??? ??? ?currentDataPoint.valueTemp_Alarm=0;
?? ??? ??? ??? ? }
?? ??? ??? ??? ??
?? ??? ??? ??? ? adcx=Get_Adc_Average(ADC_Channel_1,10);
?? ??? ??? ??? ? voltoge_2=(float)adcx*(3.3/4596);
?? ??? ??? ??? ? if(voltoge_2>0.35&&voltoge_2<=0.75)
?? ??? ??? ??? ? {gas = gas_chu;}?
?? ??? ??? ??? ? else
?? ??? ??? ??? ? {
?? ??? ??? ??? ??? ? voltoge_2=voltoge_2-voltoge_1;
?? ??? ??? ??? ??? ? gas=voltoge_2*450+gas_chu;
?? ??? ??? ??? ? }
?? ??? ??? ??? ? currentDataPoint.valueGas_con = gas; //有害氣體數(shù)據(jù)
?? ??? ??? ??? ?if(gas>=gas_alarm)//有害氣體濃度>濃度上限值
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?gas_num++;
?? ??? ??? ??? ??? ??? ?if(gas_num>=alarm_num)//警報(bào)次數(shù)達(dá)到一定次數(shù)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?gas_num=0;
?? ??? ??? ??? ??? ??? ??? ?currentDataPoint.valueGas_Alarm=1;//APP出現(xiàn)警報(bào)提示
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{?
?? ??? ??? ??? ??? ?currentDataPoint.valueGas_Alarm=0;
?? ??? ??? ??? ?}
?? ?}
?? ?else ?
?? ?{
?? ??? ?//沒連接wifi,將警報(bào)次數(shù)清零 保險(xiǎn)
?? ??? ?if(temp_num!=0||gas_num!=0)?
?? ??? ?{
?? ??? ??? ?temp_num=0;gas_num=0;
?? ??? ?}
?? ?}?? ??? ??
}
//主函數(shù)
?int main(void)
?{?? ?
?? ?delay_init();?? ? ? ??? ? ? ?//延時(shí)函數(shù)初始化?? ? ?
?? ?NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
?? ?KEY_Init(); ? ? ? ? ? ? //按鍵初始化?
?? ?EXTIX_Init();?? ??? ? ?? ?//外部中斷初始化?? ??
? ? Gizwits_Init(); ? ? ? ? //協(xié)議初始化
?? ?DS18B20_Init();?? ??? ??? ??? ??? ?//溫度初始化
?? ?Adc_Init();?? ??? ? ??? ??? ?//ADC初始化?? ?
?? ?LED_Init();?? ??? ??? ? ? ? ? ?//LED端口初始化
?? ?uart_init(115200);?? ? ? ?//串口初始化為115200
? ?
? printf("ATS7=30\r");//從撥打電那一刻起到自動(dòng)掛斷30秒
?? ?delay_ms(200);
? while(1)?
?? ?{
?? ??? userHandle();//用戶采集 ??
? ? ?gizwitsHandle((dataPoint_t *)¤tDataPoint);//協(xié)議處理
?? ?}?? ??
}?
?