基于GSM的學(xué)校垃圾桶溢出報(bào)警系統(tǒng)設(shè)計(jì)_第1頁
基于GSM的學(xué)校垃圾桶溢出報(bào)警系統(tǒng)設(shè)計(jì)_第2頁
基于GSM的學(xué)校垃圾桶溢出報(bào)警系統(tǒng)設(shè)計(jì)_第3頁
基于GSM的學(xué)校垃圾桶溢出報(bào)警系統(tǒng)設(shè)計(jì)_第4頁
基于GSM的學(xué)校垃圾桶溢出報(bào)警系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

參考文獻(xiàn)[1]

胡振山,江振青,呂海燕.

基于GSM的垃圾桶溢出報(bào)警系統(tǒng)設(shè)計(jì).

物聯(lián)網(wǎng)技術(shù).2022.[2]

于雯,王艷,張佳佳,陳思思.

多功能智能垃圾桶結(jié)構(gòu)設(shè)計(jì)和功能實(shí)現(xiàn)[C],

工業(yè)儀表與自動化裝置.2022.[3]

張河,

張桂梅,

段磊鵬,

王婷婷.

基于51單片機(jī)的智能垃圾桶系統(tǒng)開發(fā)[C],

科技創(chuàng)新與應(yīng)用.2021.[4]

王睿錚,趙意如,石義

.

基于

STM89C51

的防雨魚塘浮標(biāo)自動監(jiān)測系統(tǒng)設(shè)計(jì)

[J].

電子制作,2020.[5]

黃國維.

基于深度學(xué)習(xí)的城市垃圾桶智能分類研究[J].

安徽理工大學(xué),2019.[6]

朱瑩.

智能垃圾桶的設(shè)計(jì)與研究[M].

中國礦業(yè)大學(xué),2019.[7]

肖茜月,李代偉,劉田俊睿

.

基于

GSM

模塊的家庭智能報(bào)警系統(tǒng)設(shè)計(jì)與研究

[J].

電腦知識與技術(shù),2021.[8]

劉炳海

.

從零開始學(xué)電子電路設(shè)計(jì)

[M].化學(xué)工業(yè)出版社,2019[9]

陳鐸,盧元爍,張幽彤.

語音控制智能垃圾桶設(shè)計(jì)[J].

電子技術(shù)與軟件工程.2022[10]

楊帆,

秦智鵬.

基于STM32的語音分類垃圾桶設(shè)計(jì)[M].

武漢工程大學(xué)學(xué)報(bào).2020[11]

王熹.

基于YOLOv5的垃圾溢出檢測研究[D].江漢大學(xué),2022.[12]

胡振山,江振青,呂海燕.

基于GSM的垃圾桶溢出報(bào)警系統(tǒng)設(shè)計(jì)[J].

物聯(lián)網(wǎng)技術(shù),2022,12(01):4-6.[13]

司徒凌云,王林章,李宣東,劉楊.

基于應(yīng)用視角的緩沖區(qū)溢出檢測技術(shù)與工具[J].

軟件學(xué)報(bào),2019,30(06):1721-1741.[14]

張國強(qiáng),殷博,邱宇,王偉靜.

基于概率層次分析的緩沖區(qū)溢出檢測工具評估[J].

計(jì)算機(jī)應(yīng)用與軟件,2018,35(07):27-32+103.[15]

李智超.

多層無縫的防破壞防盜防火報(bào)警系統(tǒng)的設(shè)計(jì)[D].東華理工大學(xué),2017.[16]

T.

Vairam;S.

Sarathambekai.

Proficient

smart

trash

can

management

using

internet

of

things

and

SDN

architecture

approach.[M].2022[17]

Jia

Gangyong;Zhu

Yujie;Han

Guangjie;Chan

Sammy;Shu

Lei.

STM:

an

intelligent

trash

can

system

based

on

both

NB-IoT

and

edge

computing

for

smart

cities.2020.[18]

Tremblay,

Ken.

Sprinkler

douses

fire

started

by

ignition

of

oily

rags

in

trash

can.2019[19]

Juan

Guo;Xiaoying

Yu.

The

Design

of

Intelligent

Wastebin

Based

on

AT89S52

[P].

Journal

of

Information

Hiding

and

Privacy

Protection.2021[20]

Design

of

Household

Items

Delivery

Robot.

Design

of

Household

Items

Delivery

Robot

[J].

IOP

Conference

Series:

Earth

and

Environmental

Science

.2019

附錄電路圖源代碼#include"sys.h"#include"delay.h"#include"oled.h"#include"tim.h"#include"port.h"#include"app.h"#include"bsp_gsm_usart.h"#include"bsp_gsm_gprs.h"#include"hcsr04.h"#include"timer.h"#include"HX711.h"intmain(void){ delay_init(); //延時(shí)函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級 system_Time_Init(9,7199); sys_gpio_init(); key_init(10,500,1100,3000); OLED_Init(); //初始化OLED OLED_Clear();OLED_ShowString(0,0,"nihao",12); hsr04_init();TIM3_PWM_Init();Init_HX711pin(); GSM_USART_Config();//u2 while(gsm_cmd("AT\r","OK",1000)!=GSM_TRUE); while(IsInsertCard()!=GSM_TRUE){ delay_ms(500); } while(1) { app(); } }/*********************************************************************************@fileGPIO/IOToggle/stm32f10x_it.c*@authorMCDApplicationTeam*@versionV3.5.0*@date08-April-2011*@briefMainInterruptServiceRoutines.*Thisfileprovidestemplateforallexceptionshandlerandperipherals*interruptserviceroutine.*******************************************************************************@attention**THEPRESENTFIRMWAREWHICHISFORGUIDANCEONLYAIMSATPROVIDINGCUSTOMERS*WITHCODINGINFORMATIONREGARDINGTHEIRPRODUCTSINORDERFORTHEMTOSAVE*TIME.ASARESULT,STMICROELECTRONICSSHALLNOTBEHELDLIABLEFORANY*DIRECT,INDIRECTORCONSEQUENTIALDAMAGESWITHRESPECTTOANYCLAIMSARISING*FROMTHECONTENTOFSUCHFIRMWAREAND/ORTHEUSEMADEBYCUSTOMERSOFTHE*CODINGINFORMATIONCONTAINEDHEREININCONNECTIONWITHTHEIRPRODUCTS.**<h2><center>©COPYRIGHT2011STMicroelectronics</center></h2>*******************************************************************************//*Includes*/#include"stm32f10x_it.h"voidNMI_Handler(void){}voidHardFault_Handler(void){/*GotoinfiniteloopwhenHardFaultexceptionoccurs*/while(1){}}voidMemManage_Handler(void){/*GotoinfiniteloopwhenMemoryManageexceptionoccurs*/while(1){}}voidBusFault_Handler(void){/*GotoinfiniteloopwhenBusFaultexceptionoccurs*/while(1){}}voidUsageFault_Handler(void){/*GotoinfiniteloopwhenUsageFaultexceptionoccurs*/while(1){}}voidSVC_Handler(void){}voidDebugMon_Handler(void){}voidPendSV_Handler(void){}voidSysTick_Handler(void){}/******************************************************************************//*STM32F10xPeripheralsInterruptHandlers*//*AddheretheInterruptHandlerfortheusedperipheral(s)(PPP),forthe*//*availableperipheralinterrupthandler'snamepleaserefertothestartup*//*file(startup_stm32f10x_xx.s).*//******************************************************************************/#include"delay.h"http:////////////////////////////////////////////////////////////////////////////////// //如果需要使用OS,則包括下面的頭文件即可.#ifSYSTEM_SUPPORT_OS#include"includes.h" //ucos使用 #endifstaticu8fac_us=0; //us延時(shí)倍乘數(shù) staticu16fac_ms=0; //ms延時(shí)倍乘數(shù),在ucos下,代表每個(gè)節(jié)拍的ms數(shù) #ifSYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS定義了,說明要支持OS了(不限于UCOS).//當(dāng)delay_us/delay_ms需要支持OS的時(shí)候需要三個(gè)與OS相關(guān)的宏定義和函數(shù)來支持//首先是3個(gè)宏定義://delay_osrunning:用于表示OS當(dāng)前是否正在運(yùn)行,以決定是否可以使用相關(guān)函數(shù)//delay_ostickspersec:用于表示OS設(shè)定的時(shí)鐘節(jié)拍,delay_init將根據(jù)這個(gè)參數(shù)來初始哈systick//delay_osintnesting:用于表示OS中斷嵌套級別,因?yàn)橹袛嗬锩娌豢梢哉{(diào)度,delay_ms使用該參數(shù)來決定如何運(yùn)行//然后是3個(gè)函數(shù)://delay_osschedlock:用于鎖定OS任務(wù)調(diào)度,禁止調(diào)度//delay_osschedunlock:用于解鎖OS任務(wù)調(diào)度,重新開啟調(diào)度//delay_ostimedly:用于OS延時(shí),可以引起任務(wù)調(diào)度.//本例程僅作UCOSII和UCOSIII的支持,其他OS,請自行參考著移植//支持UCOSII#ifdef OS_CRITICAL_METHOD //OS_CRITICAL_METHOD定義了,說明要支持UCOSII #definedelay_osrunning OSRunning //OS是否運(yùn)行標(biāo)記,0,不運(yùn)行;1,在運(yùn)行#definedelay_ostickspersec OS_TICKS_PER_SEC //OS時(shí)鐘節(jié)拍,即每秒調(diào)度次數(shù)#definedelay_osintnesting OSIntNesting //中斷嵌套級別,即中斷嵌套次數(shù)#endif//支持UCOSIII#ifdef CPU_CFG_CRITICAL_METHOD //CPU_CFG_CRITICAL_METHOD定義了,說明要支持UCOSIII #definedelay_osrunning OSRunning //OS是否運(yùn)行標(biāo)記,0,不運(yùn)行;1,在運(yùn)行#definedelay_ostickspersec OSCfg_TickRate_Hz //OS時(shí)鐘節(jié)拍,即每秒調(diào)度次數(shù)#definedelay_osintnesting OSIntNestingCtr //中斷嵌套級別,即中斷嵌套次數(shù)#endif//us級延時(shí)時(shí),關(guān)閉任務(wù)調(diào)度(防止打斷us級延遲)voiddelay_osschedlock(void){#ifdefCPU_CFG_CRITICAL_METHOD //使用UCOSIII OS_ERRerr; OSSchedLock(&err); //UCOSIII的方式,禁止調(diào)度,防止打斷us延時(shí)#else //否則UCOSII OSSchedLock(); //UCOSII的方式,禁止調(diào)度,防止打斷us延時(shí)#endif}//us級延時(shí)時(shí),恢復(fù)任務(wù)調(diào)度voiddelay_osschedunlock(void){ #ifdefCPU_CFG_CRITICAL_METHOD //使用UCOSIII OS_ERRerr; OSSchedUnlock(&err); //UCOSIII的方式,恢復(fù)調(diào)度#else //否則UCOSII OSSchedUnlock(); //UCOSII的方式,恢復(fù)調(diào)度#endif}//調(diào)用OS自帶的延時(shí)函數(shù)延時(shí)//ticks:延時(shí)的節(jié)拍數(shù)voiddelay_ostimedly(u32ticks){#ifdefCPU_CFG_CRITICAL_METHOD OS_ERRerr; OSTimeDly(ticks,OS_OPT_TIME_PERIODIC,&err); //UCOSIII延時(shí)采用周期模式#else OSTimeDly(ticks); //UCOSII延時(shí)#endif}//systick中斷服務(wù)函數(shù),使用ucos時(shí)用到voidSysTick_Handler(void){ if(delay_osrunning==1) //OS開始跑了,才執(zhí)行正常的調(diào)度處理 { OSIntEnter(); //進(jìn)入中斷 OSTimeTick(); //調(diào)用ucos的時(shí)鐘服務(wù)程序 OSIntExit(); //觸發(fā)任務(wù)切換軟中斷 }}#endif //初始化延遲函數(shù)//當(dāng)使用OS的時(shí)候,此函數(shù)會初始化OS的時(shí)鐘節(jié)拍//SYSTICK的時(shí)鐘固定為HCLK時(shí)鐘的1/8//SYSCLK:系統(tǒng)時(shí)鐘voiddelay_init(){#ifSYSTEM_SUPPORT_OS //如果需要支持OS. u32reload;#endif SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //選擇外部時(shí)鐘HCLK/8 fac_us=SystemCoreClock/8000000; //為系統(tǒng)時(shí)鐘的1/8#ifSYSTEM_SUPPORT_OS //如果需要支持OS. reload=SystemCoreClock/8000000; //每秒鐘的計(jì)數(shù)次數(shù)單位為M reload*=1000000/delay_ostickspersec; //根據(jù)delay_ostickspersec設(shè)定溢出時(shí)間 //reload為24位寄存器,最大值:16777216,在72M下,約合1.86s左右 fac_ms=1000/delay_ostickspersec; //代表OS可以延時(shí)的最少單位 SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk; //開啟SYSTICK中斷 SysTick->LOAD=reload; //每1/delay_ostickspersec秒中斷一次 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開啟SYSTICK#else fac_ms=(u16)fac_us*1000; //非OS下,代表每個(gè)ms需要的systick時(shí)鐘數(shù)#endif} #ifSYSTEM_SUPPORT_OS //如果需要支持OS.//延時(shí)nus//nus為要延時(shí)的us數(shù). voiddelay_us(u32nus){ u32ticks; u32told,tnow,tcnt=0; u32reload=SysTick->LOAD; //LOAD的值 ticks=nus*fac_us; //需要的節(jié)拍數(shù) tcnt=0; delay_osschedlock(); //阻止OS調(diào)度,防止打斷us延時(shí) told=SysTick->VAL; //剛進(jìn)入時(shí)的計(jì)數(shù)器值 while(1) { tnow=SysTick->VAL; if(tnow!=told) { if(tnow<told)tcnt+=told-tnow; //這里注意一下SYSTICK是一個(gè)遞減的計(jì)數(shù)器就可以了. elsetcnt+=reload-tnow+told; told=tnow; if(tcnt>=ticks)break; //時(shí)間超過/等于要延遲的時(shí)間,則退出. } }; delay_osschedunlock(); //恢復(fù)OS調(diào)度 }//延時(shí)nms//nms:要延時(shí)的ms數(shù)voiddelay_ms(u16nms){ if(delay_osrunning&&delay_osintnesting==0) //如果OS已經(jīng)在跑了,并且不是在中斷里面(中斷里面不能任務(wù)調(diào)度) { if(nms>=fac_ms) //延時(shí)的時(shí)間大于OS的最少時(shí)間周期 { delay_ostimedly(nms/fac_ms); //OS延時(shí) } nms%=fac_ms; //OS已經(jīng)無法提供這么小的延時(shí)了,采用普通方式延時(shí) } delay_us((u32)(nms*1000)); //普通方式延時(shí)}#else//不用OS時(shí)//延時(shí)nus//nus為要延時(shí)的us數(shù). voiddelay_us(u32nus){ u32temp; SysTick->LOAD=nus*fac_us; //時(shí)間加載 SysTick->VAL=0x00; //清空計(jì)數(shù)器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開始倒數(shù) do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待時(shí)間到達(dá) SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關(guān)閉計(jì)數(shù)器 SysTick->VAL=0X00; //清空計(jì)數(shù)器 }//延時(shí)nms//注意nms的范圍//SysTick->LOAD為24位寄存器,所以,最大延時(shí)為://nms<=0xffffff*8*1000/SYSCLK//SYSCLK單位為Hz,nms單位為ms//對72M條件下,nms<=1864voiddelay_ms(u16nms){ u32temp; SysTick->LOAD=(u32)nms*fac_ms; //時(shí)間加載(SysTick->LOAD為24bit) SysTick->VAL=0x00; //清空計(jì)數(shù)器 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //開始倒數(shù) do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待時(shí)間到達(dá) SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關(guān)閉計(jì)數(shù)器 SysTick->VAL=0X00; //清空計(jì)數(shù)器 }#endif#include"port.h"Keykey_in[KEY_NUM];void_key_init(Key*_key_ptr,u32_filter,u32_click_times,u32_clicks_times,u32_long_press_times){ _key_ptr->status=0; _key_ptr->up=1; _key_ptr->down=0; _key_ptr->filter_start_timing=0; _key_ptr->filter_times=_filter; _key_ptr->click_times=_click_times; _key_ptr->clicks_times=_clicks_times; _key_ptr->long_press_times=_long_press_times;}voidkey_init(u32_filter,u32_click_times,u32_clicks_times,u32_long_press_times){ u8i; for(i=0;i<KEY_NUM;i++) { _key_init(&key_in[i],_filter,_click_times,_clicks_times,_long_press_times); kin[i]=0; }}u8key_update(Key*_key_ptr,u16_s)//適用于觸發(fā)為低電平邏輯{ u8status; if(_s) status=1; else status=0; if(status!=_key_ptr->status) { if(_key_ptr->filter_start_timing==0) { _key_ptr->filter_time=sys_running_timer.ms; _key_ptr->filter_start_timing=1;//開始計(jì)時(shí),去抖 } else { if((sys_running_timer.ms-_key_ptr->filter_time)>_key_ptr->filter_times) { _key_ptr->filter_start_timing=0; if(status==KEY_ACTIVE) { _key_ptr->up=0; _key_ptr->down=1; _key_ptr->click_time=sys_running_timer.ms; _key_ptr->long_press_time=sys_running_timer.ms; } else { _key_ptr->long_press=0; _key_ptr->up=1; _key_ptr->down=0; if((sys_running_timer.ms-_key_ptr->click_time)<_key_ptr->click_times) { if(_key_ptr->clicks==0) _key_ptr->clicks++; elseif((sys_running_timer.ms-_key_ptr->clicks_time)<_key_ptr->clicks_times) { _key_ptr->clicks++; } _key_ptr->clicks_time=sys_running_timer.ms; } } _key_ptr->status=status; } } } else { if(status==KEY_ACTIVE&&(sys_running_timer.ms-_key_ptr->long_press_time)>_key_ptr->long_press_times) { _key_ptr->long_press=1; } } if((sys_running_timer.ms-_key_ptr->clicks_time)>=_key_ptr->clicks_times) { _key_ptr->key_clicks=_key_ptr->clicks; _key_ptr->clicks=0; } return_key_ptr->status;}u8key_begin_timing=0;sys_timkey_tim;u8kin[KEY_NUM]={0};voidkey_logic(void){ u8i;for(i=0;i<KEY_NUM;i++){kin[i]=key_update(&key_in[i],*IO.keys[i]);}}/***************************短信功能****************************/uint8_tgsm_sms(char*num,char*smstext);//發(fā)送短信(支持中英文,中文為GBK碼)char*gsm_waitask(uint8_twaitask_hook(void));//等待有數(shù)據(jù)應(yīng)答,返回接收緩沖區(qū)地址uint8_t IsReceiveMS (void);uint8_t readmessage (uint8_tmessadd,char*num,char*str);/***************************GPRS功能***************************/uint8_t gsm_gprs_init (void); //GPRS初始化環(huán)境uint8_tgsm_gprs_tcp_link (char*localport,char*serverip,char*serverport); //TCP連接uint8_tgsm_gprs_udp_link (char*localport,char*serverip,char*serverport); //UDP連接uint8_tgsm_gprs_send (constchar*str); //發(fā)送數(shù)據(jù)uint8_tgsm_gprs_link_close (void); //IP鏈接斷開uint8_tgsm_gprs_shut_close (void); //關(guān)閉場景uint8_t PostGPRS(void);/*調(diào)試用串口*/#defineGSM_DEBUG_ON 0#defineGSM_DEBUG_ARRAY_ON0#defineGSM_DEBUG_FUNC_ON 0//Logdefine#defineGSM_INFO(fmt,arg...)printf("<<-GSM-INFO->>"fmt"\n",##arg)#defineGSM_ERROR(fmt,arg...)printf("<<-GSM-ERROR->>"fmt"\n",##arg)#defineGSM_DEBUG(fmt,arg...)do{\if(GSM_DEBUG_ON)\printf("<<-GSM-DEBUG->>[%d]"fmt"\n",__LINE__,##arg);\ }while(0)#defineGSM_DEBUG_ARRAY(array,num)do{\int32_ti;\

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論