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