




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
[19]。寵物智能喂食器系統(tǒng)中的自動(dòng)化和智能化等方面,這些方面將是寵物喂食器設(shè)計(jì)的重點(diǎn)和難點(diǎn)等問題隨之產(chǎn)生,這些問題都有待進(jìn)一步深入研究。1.3主要研究?jī)?nèi)容本課題是一種基于STM32單片機(jī)的寵物智能喂食器系統(tǒng)設(shè)計(jì),在這當(dāng)中,檢測(cè)的是喂養(yǎng)食物設(shè)定的時(shí)間、溫度和濕度,而OLED所顯示的就是現(xiàn)在這個(gè)時(shí)間還有相關(guān)的一些溫度和濕度以及通過藍(lán)牙設(shè)定的閾值。系統(tǒng)采用STM32單片機(jī)對(duì)信號(hào)進(jìn)行分析處理,判斷每次投放食物時(shí)的溫濕度和設(shè)定的喂養(yǎng)時(shí)間,只有自動(dòng)的去將電機(jī)模塊開啟才可以去進(jìn)行正轉(zhuǎn)再去對(duì)投食還有重量進(jìn)行模擬的時(shí)候,只有達(dá)到投放標(biāo)準(zhǔn)以后,電機(jī)才會(huì)反轉(zhuǎn)而停止喂食,這個(gè)時(shí)候就會(huì)提醒寵物去進(jìn)食,或者說是去暫停進(jìn)食。通過實(shí)驗(yàn)仿真驗(yàn)證了該方法可有效智能投喂寵物,安全飲食,防止寵物健康事故的發(fā)生。智能寵物喂食器是一種方便的設(shè)備,可以幫助主人自動(dòng)喂養(yǎng)寵物,確保寵物在適當(dāng)?shù)臅r(shí)間得到食物。定時(shí)喂食:智能寵物喂食器可以設(shè)置定時(shí)喂食計(jì)劃,按照預(yù)定的時(shí)間自動(dòng)投放食物。你可以根據(jù)寵物的飲食需求,設(shè)置每天的喂食時(shí)間。分段喂食:有些寵物需要分段喂食,避免一次性攝入過多食物。智能寵物喂食器可以分割食物投放,讓寵物在一段時(shí)間內(nèi)多次獲得小份食物。配置食物量:智能喂食器通常配備食物容器或者可更換的食物碗,你可以根據(jù)寵物的體重、年齡和飲食需求設(shè)置每餐的食物量。一些高級(jí)喂食器還可以通過智能手機(jī)應(yīng)用程序遠(yuǎn)程調(diào)整食物投放量。音頻提醒:有些智能寵物喂食器配備語(yǔ)音提醒功能,可以再喂食時(shí)間吸引寵物就餐。實(shí)現(xiàn)的功能如下:1.可通過STM32單片機(jī)來實(shí)時(shí)自動(dòng)開啟電機(jī)模塊進(jìn)行投食,反之,電機(jī)反轉(zhuǎn)模擬停止喂食;2.可以通過DHT11溫濕度傳感器來對(duì)當(dāng)前空氣的溫濕度的變化進(jìn)行一個(gè)實(shí)時(shí)的檢測(cè);3.當(dāng)溫濕度超過設(shè)定閾值是可以通過繼電器模塊控制空調(diào)調(diào)節(jié)降低溫度4.能在手機(jī)端設(shè)置喂養(yǎng)時(shí)間并在OLED實(shí)時(shí)顯示,告知主人;5.可以通過按鍵進(jìn)行手動(dòng)喂食;
第2章系統(tǒng)總體結(jié)構(gòu)2.1設(shè)計(jì)方案本課題研究的內(nèi)容為寵物智能喂食器系統(tǒng)設(shè)計(jì)。該套系統(tǒng)主要由濕度模塊、溫度模塊、藍(lán)牙通信、OLED屏幕、電機(jī)、按鍵、繼電器、STM32單片機(jī)部分組成;采用STM32單片機(jī)技術(shù)處理對(duì)濕度模塊和溫度感應(yīng)模塊采集到的參數(shù)并顯示通過藍(lán)牙模塊上傳上位機(jī),將手機(jī)當(dāng)做上位機(jī)對(duì)參數(shù)進(jìn)行一個(gè)實(shí)時(shí)的顯示,而且還可以觀察到各個(gè)時(shí)段喂食的狀態(tài)。當(dāng)對(duì)這個(gè)模式進(jìn)行使用的時(shí)候,還可以對(duì)現(xiàn)在的時(shí)間和喂食的時(shí)間進(jìn)行相應(yīng)的設(shè)置;這個(gè)自動(dòng)喂食模式的定時(shí)時(shí)間到了,以后舵機(jī)逆時(shí)針轉(zhuǎn)一圈就會(huì)對(duì)同時(shí)進(jìn)行模擬,這個(gè)時(shí)候蜂鳴器就會(huì)提示寵物去吃飯,當(dāng)同時(shí)結(jié)束了以后,那么電機(jī)就會(huì)反轉(zhuǎn)一圈,那么蜂鳴器也就會(huì)同樣關(guān)閉。設(shè)計(jì)成果為實(shí)物。結(jié)構(gòu)框圖如下:圖2-1結(jié)構(gòu)框圖2.2單片機(jī)型號(hào)選擇方案一:采用89C51單片機(jī),89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)的低電壓、高性能CMOS8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的89C51是一種高效微控制器,89C2051是它的一種精簡(jiǎn)版本。方案二:采用STM32F103C6T6單片機(jī),STM32F103C6T6是一款由意法半導(dǎo)體公司(ST)推出的基于Cortex-M3內(nèi)核的32位微控制器,硬件采用LQFP48封裝,屬于ST公司微控制器中的STM32系列。STM32F103C8T6的GPIO有8種模式,其中包含上拉、下拉輸入模式,所以外接按鈕時(shí)可不設(shè)計(jì)上下拉電阻。根據(jù)他的原理圖顯示:按鍵KEY0一端接到3.3V的VCC,一端接到PA0引腳。發(fā)光二極管LED0一端也同樣經(jīng)1KΩ電阻接到3.3V的VCC,另一端則接到PC13上。因此,想要讓二極管發(fā)光的話需要讓PC13輸出低電平。STM32最大工作電壓3.6V,使用了LDO(低壓差線性穩(wěn)壓器)將輸入電壓VIN降到3.3v給微控制器供電。3.3V和GND之間的4個(gè)0.1uf的旁路電容(去除高頻交流信號(hào))接到了芯片的4個(gè)VDD和4個(gè)VSS上,芯片擁有四個(gè)VDD和四個(gè)VSS增強(qiáng)供電能力,保證供電的可靠性)。經(jīng)過比較分析,方案二的STM32單片機(jī)更適合作為本設(shè)計(jì)的主控芯片,STM32單片機(jī)豐富的功能和出色的性能更加符合本設(shè)計(jì)的需求。STM32F103C6T6具有高性能、低功耗、豐富的外設(shè)和靈活性強(qiáng)等特點(diǎn),在不同的應(yīng)用場(chǎng)景中有著廣泛的應(yīng)用。本設(shè)計(jì)需要一個(gè)擁有高性能和靈活性、且性能價(jià)格比較高的主控芯片,STM32F103C6T6將是一個(gè)非常好的選擇。圖2-232單片機(jī)最小系統(tǒng)實(shí)物圖2.3通訊模塊選擇方案一:Zigbee是一種低功耗、近距離無線通信技術(shù),專為物聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì)。它基于IEEE802.15.4標(biāo)準(zhǔn),并提供了一種可靠的、自組織的網(wǎng)絡(luò)協(xié)議棧,適用于各種低功耗、低數(shù)據(jù)速率的應(yīng)用。拓?fù)浣Y(jié)構(gòu):Zigbee網(wǎng)絡(luò)采用網(wǎng)狀拓?fù)浣Y(jié)構(gòu),其中包括一個(gè)協(xié)調(diào)器(Coordinator)和多個(gè)設(shè)備(Devices)。協(xié)調(diào)器是網(wǎng)絡(luò)的控制中心,而設(shè)備可以是終端節(jié)點(diǎn)(EndDevice)或路由器節(jié)點(diǎn)(RouterDevice)。路由器節(jié)點(diǎn)可用于擴(kuò)展網(wǎng)絡(luò)覆蓋范圍,并提供多路徑的數(shù)據(jù)傳輸。通信方式:Zigbee使用2.4GHz無線頻段進(jìn)行通信,支持全雙工和半雙工通信模式。它采用了頻率跳變技術(shù),以減少對(duì)其他設(shè)備的干擾,同時(shí)提供可靠的通信連接。網(wǎng)絡(luò)協(xié)議棧:Zigbee網(wǎng)絡(luò)協(xié)議棧分為應(yīng)用層、網(wǎng)絡(luò)層、MAC層和物理層。應(yīng)用層定義了應(yīng)用程序的數(shù)據(jù)格式和通信接口。網(wǎng)絡(luò)層負(fù)責(zé)設(shè)備之間的路由選擇和數(shù)據(jù)傳輸。MAC層管理設(shè)備之間的數(shù)據(jù)幀傳輸和通信時(shí)間調(diào)度。物理層負(fù)責(zé)無線信號(hào)的調(diào)制、解調(diào)和發(fā)送。低功耗特性:Zigbee專注于低功耗通信,在低數(shù)據(jù)速率下提供長(zhǎng)時(shí)間的電池壽命。設(shè)備可以在空閑時(shí)進(jìn)入低功耗睡眠狀態(tài),并根據(jù)需要進(jìn)行周期性喚醒,以節(jié)省能源。自組織網(wǎng)絡(luò):Zigbee網(wǎng)絡(luò)具有自組織和自修復(fù)的能力。當(dāng)新設(shè)備加入網(wǎng)絡(luò)或現(xiàn)有設(shè)備離開網(wǎng)絡(luò)時(shí),網(wǎng)絡(luò)可以自動(dòng)重新配置路由,保持網(wǎng)絡(luò)的連通性。應(yīng)用領(lǐng)域:Zigbee在許多應(yīng)用領(lǐng)域中得到廣泛應(yīng)用,包括智能家居、工業(yè)自動(dòng)化、物流和供應(yīng)鏈管理、醫(yī)療保健、能源管理等。它提供了可靠的遠(yuǎn)程監(jiān)測(cè)和控制能力,并支持大規(guī)模的設(shè)備互聯(lián)。方案二:HC-06是一種經(jīng)典藍(lán)牙模塊,常用于與智能手機(jī)、平板電腦和其他藍(lán)牙設(shè)備進(jìn)行無線通信。以下是HC-06藍(lán)牙模塊的一般介紹:功能:HC-06模塊提供了基本的藍(lán)牙通信功能,支持串口通信協(xié)議(UART),可以通過串口與其他設(shè)備進(jìn)行數(shù)據(jù)交換。它可以作為一個(gè)從設(shè)備(Slave)與主設(shè)備(Master)進(jìn)行數(shù)據(jù)傳輸。通信距離:HC-06模塊的通信距離通常在10米左右,適用于近距離的無線通信需求。請(qǐng)注意,實(shí)際的通信距離可能受到環(huán)境和物理障礙物的影響。工作頻率:HC-06模塊使用2.4GHz的ISM頻段進(jìn)行通信,采用藍(lán)牙2.0標(biāo)準(zhǔn),支持藍(lán)牙經(jīng)典(BluetoothClassic)協(xié)議。它與許多藍(lán)牙設(shè)備兼容,如智能手機(jī)、電腦等。電源需求:HC-06模塊通常使用3.3V的電源供電,具有較低的功耗,適合于低功耗應(yīng)用。它還具有睡眠模式,可以進(jìn)一步降低功耗。配置與控制:HC-06模塊通過AT指令進(jìn)行配置和控制。你可以通過串口與模塊進(jìn)行通信,發(fā)送特定的AT指令來設(shè)置藍(lán)牙名稱、配對(duì)碼、通信速率等參數(shù)。應(yīng)用領(lǐng)域:HC-06模塊常用于各種簡(jiǎn)單的藍(lán)牙通信應(yīng)用,例如串口數(shù)據(jù)傳輸、遠(yuǎn)程控制和監(jiān)控等。它可以與各種嵌入式系統(tǒng)和微控制器進(jìn)行集成,實(shí)現(xiàn)無線通信功能。經(jīng)過比較,藍(lán)牙通信和Zigbee通信都是無線通信技術(shù),它們?cè)诓煌膽?yīng)用場(chǎng)景中具有各自的優(yōu)勢(shì)。以下是藍(lán)牙通信相對(duì)于Zigbee通信的一些優(yōu)勢(shì):廣泛的設(shè)備兼容性:藍(lán)牙是一種廣泛應(yīng)用于消費(fèi)電子產(chǎn)品(如智能手機(jī)、平板電腦、音頻設(shè)備等)的通信技術(shù)。幾乎所有現(xiàn)代智能設(shè)備都具備藍(lán)牙功能,因此可以輕松連接和交互。相比之下,Zigbee的設(shè)備兼容性較低,主要應(yīng)用于特定的物聯(lián)網(wǎng)領(lǐng)域。更高的傳輸速率:藍(lán)牙通信通常提供較高的數(shù)據(jù)傳輸速率,適用于音頻和視頻傳輸?shù)葘?duì)速率要求較高的應(yīng)用。藍(lán)牙5.0版本引入了低功耗倍增(LEAudio),提供更高質(zhì)量的音頻傳輸。簡(jiǎn)便的配對(duì)和連接:藍(lán)牙設(shè)備通常具有較為簡(jiǎn)單的配對(duì)和連接過程。用戶可以通過設(shè)備的設(shè)置界面或簡(jiǎn)單的按鈕操作進(jìn)行藍(lán)牙設(shè)備之間的配對(duì),實(shí)現(xiàn)快速連接。這使得藍(lán)牙在消費(fèi)電子產(chǎn)品中得到廣泛應(yīng)用。多功能性:藍(lán)牙技術(shù)提供了多種功能和應(yīng)用,包括音頻傳輸、數(shù)據(jù)傳輸、遠(yuǎn)程控制和位置服務(wù)等。它支持不同的藍(lán)牙協(xié)議棧和配置文件,適用于各種應(yīng)用場(chǎng)景。綜合比較本次設(shè)計(jì)選用藍(lán)牙模塊。圖2-3HC-06藍(lán)牙模塊實(shí)物圖
第3章系統(tǒng)的硬件部分設(shè)計(jì)3.1系統(tǒng)總體設(shè)??計(jì)本課題是一種基于STM32單片機(jī)的寵物智能喂食器系統(tǒng)設(shè)計(jì),系統(tǒng)采用STM32單片機(jī)對(duì)信號(hào)進(jìn)行分析處理,判斷每次投放的喂養(yǎng)時(shí)間以及當(dāng)時(shí)的溫濕度,達(dá)喂食時(shí)間,電機(jī)就會(huì)進(jìn)行反轉(zhuǎn),那么就會(huì)喂食,與此同時(shí)蜂鳴器還會(huì)提醒寵物去進(jìn)食。通過實(shí)驗(yàn)仿真驗(yàn)證了該方法可有效智能投喂寵物,安全飲食,防止寵物健康事故的發(fā)生。在設(shè)計(jì)系統(tǒng)里面主要有信息的接收模塊,還有控制的模塊以及執(zhí)行的模塊,在這當(dāng)中系統(tǒng)的一個(gè)核心部分就是控制的模塊。將傳感器的信號(hào)傳輸給單片機(jī)來去進(jìn)行相關(guān)的處理以后信息接收的模塊就可以通過放大的電路將單片機(jī)進(jìn)行連接,那么控制模塊的核心部件,就會(huì)運(yùn)用STM32系列的單片機(jī)來去分析這些信號(hào),從而去將執(zhí)行的部分進(jìn)行一定的控制運(yùn)作,而在執(zhí)行模塊當(dāng)中主要是傳感器模塊,可實(shí)時(shí)了解當(dāng)前溫濕度狀況,控制寵物的飲食??傮w原理圖如下所示:圖3-1總體原理圖3.2系統(tǒng)的主要功能模塊設(shè)計(jì)3.2.1電源供電模塊設(shè)計(jì)LM2576系列是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的3A電流輸出降壓開關(guān)型集成穩(wěn)壓電路,它內(nèi)含固定頻率振蕩器和基準(zhǔn)穩(wěn)壓器,通常具有完善的保護(hù)電路,包括電流限制及熱斷路器等,利用該器件只需要極少的外圍器件便可構(gòu)成高效穩(wěn)壓電路。LM2576芯片的內(nèi)部結(jié)構(gòu)分別有一個(gè)開關(guān)管、電感、二極管和一組濾波電容,由控制器連接,工作過程中將輸入端的高電壓接入芯片的輸入電源引腳VIN上,并將其轉(zhuǎn)化為輸出電壓。在保持輸出穩(wěn)定的同時(shí),芯片會(huì)利用會(huì)利用誤差放大器反饋引腳FEED來對(duì)輸出電壓進(jìn)行調(diào)節(jié),最終輸一個(gè)穩(wěn)定的直流電壓。圖3-2電源供電模塊原理圖3.2.2舵機(jī)模塊設(shè)計(jì)選用STM32微控制器:選擇適合的STM32微控制器,具備足夠的計(jì)算能力和GPIO引腳數(shù)量來控制舵機(jī)。將STM32的GPIO引腳與舵機(jī)驅(qū)動(dòng)電路的輸入引腳連接起來。通常使用PWM輸出引腳來控制舵機(jī)的位置。確保電路連接正確,舵機(jī)能夠接收到正確的控制信號(hào)。在STM32上編寫程序,使用適當(dāng)?shù)木幊陶Z(yǔ)言(如C或C++)來控制舵機(jī)的位置和速度。配置GPIO引腳為PWM輸出模式,設(shè)置適當(dāng)?shù)腜WM頻率和占空比來生成舵機(jī)控制信號(hào)。實(shí)現(xiàn)寵物智能喂食器的邏輯,例如根據(jù)預(yù)定的時(shí)間表或用戶的輸入控制舵機(jī)的動(dòng)作,以實(shí)現(xiàn)喂食器的自動(dòng)喂食功能。原理圖如下圖。圖3-3舵機(jī)模塊原理圖3.2.3溫濕度傳感器模塊設(shè)計(jì)DHT11數(shù)字溫濕傳感器是一種包含已經(jīng)校準(zhǔn)過的數(shù)字信號(hào)輸出的一種溫濕度的復(fù)合傳感器,這個(gè)主要運(yùn)用的就是一個(gè)專門的數(shù)字模塊,來去對(duì)技術(shù)進(jìn)行相應(yīng)的采集,不需要去運(yùn)用非常復(fù)雜的電路進(jìn)行處理。在這個(gè)傳感器里面,主要有電阻式的感知元件,還有一個(gè)NTC測(cè)溫元件,而且在這當(dāng)中會(huì)去和一個(gè)高性能的8位單片機(jī)進(jìn)行相應(yīng)的連接。單線制的串行接口會(huì)讓這個(gè)系統(tǒng)集成的時(shí)候變得非常簡(jiǎn)單,因?yàn)槠潴w積非常小,而且在功耗方面也不是特別高,對(duì)信號(hào)傳輸?shù)臅r(shí)候距離可以比20米以上還要長(zhǎng),所以說在那些比較苛刻的環(huán)境當(dāng)中使用的時(shí)候,這將會(huì)是最好的一個(gè)選擇。圖3-4溫濕度傳感器模塊原理圖3.2.4時(shí)鐘模塊設(shè)計(jì)DS1302時(shí)鐘芯片主要由震蕩電路、計(jì)數(shù)器、RAM和I/O端口等組成,可通過SPI接口與微控制器連接,實(shí)現(xiàn)時(shí)鐘系統(tǒng)的讀寫以及相關(guān)操作。時(shí)鐘計(jì)數(shù)原理采用32.768kHz的震蕩頻率作為時(shí)鐘源,由振蕩電路得到一定的脈沖數(shù)量,然后經(jīng)過計(jì)數(shù)器來生成實(shí)時(shí)的時(shí)鐘信號(hào)。時(shí)鐘芯片DS1302提供了BCD碼格式的時(shí)間存儲(chǔ),在設(shè)置和讀取式需要進(jìn)行相應(yīng)轉(zhuǎn)換。通過SPI接口可以直接對(duì)時(shí)間寄存器進(jìn)行寫入和讀取。本設(shè)計(jì)同時(shí)加入CR2032紐扣鋰電池,為時(shí)鐘芯片在意外掉電情況下,依舊可以提供電源,對(duì)時(shí)間做補(bǔ)償。圖3-5時(shí)鐘模塊原理圖
3.2.5繼電器模塊設(shè)計(jì)繼電器??也稱電??驛,是??一種電??子控制??器件,??它具有??控制系??統(tǒng)(又??稱輸入??回路)??和被控??制系統(tǒng)??(又稱??輸出回??路),??通常應(yīng)??用于自??動(dòng)控制??電路中??,它實(shí)??際上是??用較小??的電流??去控制??較大電??流的一??種“自??動(dòng)開關(guān)??”。故??在電路??中起著??自動(dòng)調(diào)??節(jié)、安??全保護(hù)??、轉(zhuǎn)換??電路等??作用。繼電器工作??時(shí),電??磁鐵通??電,把??銜鐵吸??下來使??D和E??接觸,??工作電??路閉合??。電磁??鐵斷電??時(shí)失去??磁性,??彈簧把??銜鐵拉??起來,??切斷工??作電路??。因此??,繼電??器就是??利用電??磁鐵控??制工作??電路通??斷的開關(guān)。繼電器控制??電路的??作用:??用低電??壓控制??高電壓??,遠(yuǎn)距??離控制??,自動(dòng)??控制。繼電器(??英文名??稱:r??ela??y)是??一種電??控制器??件,是??當(dāng)輸入??量(激??勵(lì)量)??的變化??達(dá)到規(guī)??定要求??時(shí),在輸出電路的時(shí)候,可以導(dǎo)致控量發(fā)生一定的變化的電氣。繼電器的主要作用如下:(1)擴(kuò)大控制范圍:在實(shí)際操作的過程當(dāng)中,當(dāng)多觸點(diǎn)繼電器達(dá)到某一個(gè)值的時(shí)候,可以按照不同的組成形式形成多種形態(tài)的電路狀態(tài)。(2)放大:可以通過使用一個(gè)靈敏型的繼電器或者是中間型繼電器,將一個(gè)很小的控制量放大成為大功率的電路。(3)綜合信號(hào):在實(shí)際操作的過程當(dāng)中,可以將多個(gè)控制信號(hào)按照規(guī)定的要求輸入到繼電器當(dāng)中,然后進(jìn)行一系列的操作,最終達(dá)到想要的效果。(4)自動(dòng)、遙控、監(jiān)測(cè):通常情況下可以將自動(dòng)裝置上的繼電器和其他的繼電器連接在一起,最終形成一個(gè)控制線路,從而實(shí)現(xiàn)整體的自動(dòng)化,保證運(yùn)行的時(shí)候更加的自動(dòng)流暢。本文采用兩個(gè)繼電器,分別控制溫度和濕度。原理圖如下圖。圖3-6溫濕度繼電器控制原理圖3.2.6藍(lán)牙模塊設(shè)計(jì)HC-06藍(lán)牙串口通信模塊是一種基于藍(lán)牙協(xié)議的數(shù)傳模塊,它的無線工作頻段為2.4GHzISM,調(diào)制方式是GFSK。該模塊使用的是郵票孔封裝方式,尺寸為27mm×13mm×2mm,板載PCB天線,可實(shí)現(xiàn)10米以內(nèi)的無線通信。同時(shí),該模塊直觀地展示了藍(lán)牙連接狀態(tài)的LED狀態(tài)指示燈,方便使用者體驗(yàn)。此外,該模塊采用了CSR的BC417芯片,支持AT指令,使用者可根據(jù)自身需求配置主從角色、串口波特率、設(shè)備名稱等參數(shù),從而實(shí)現(xiàn)更加靈活的應(yīng)用??傊琀C-06藍(lán)牙串口通信模塊是一款非常實(shí)用的數(shù)傳模塊,具有廣泛的應(yīng)用前景。圖3-7HC06藍(lán)牙模塊原理圖
3.2.7蜂鳴器模塊設(shè)計(jì)蜂鳴器一般分為線圈式和壓電陶瓷式。線圈式又分為有源和無源兩大類,有源線圈式蜂鳴器內(nèi)部集成有振蕩器,能夠直接驅(qū)動(dòng)蜂鳴器工作。該設(shè)計(jì)采用5V高電平觸發(fā)式蜂鳴器,僅有高電平信號(hào)輸入時(shí)才會(huì)響起。電阻R10為限流電阻,防止流過基極電流過大損壞三極管。三極管Q1起開關(guān)管的作用,其基??極的高電平使三極管??飽和導(dǎo)通,使蜂鳴器??發(fā)聲;而基極低電平??則使三極管關(guān)閉,蜂??鳴器停止發(fā)聲。圖3-8蜂鳴器模塊原理圖3.2.8OLED顯示模塊設(shè)計(jì)OLED,即有機(jī)發(fā)光二極管(OrganicLight-EmittingDiode),又稱為有機(jī)電激光顯示(OrganicElectroluminesenceDisplay,OELD)。OLED由于同時(shí)具??備自發(fā)??光,不??需背光??源、對(duì)??比度高??、厚度??薄、視??角廣、??反應(yīng)速??度快、??可用于??撓曲性??面板、??使用溫??度范圍??廣、構(gòu)??造及制??程較簡(jiǎn)??單等優(yōu)??異之特??性,被??認(rèn)為是??下一代??的平面??顯示器??新興應(yīng)??用技術(shù)。OLED顯示技術(shù)??具有自??發(fā)光的??特性,??采用非??常薄的??有機(jī)材??料涂層??和玻璃??基板,??當(dāng)有電??流通過??時(shí),這??些有機(jī)??材料就??會(huì)發(fā)光??,而且??OLE??D顯示??屏幕可??視角度??大,并??且能夠??節(jié)省電??能,從2003年開始MP3播放器就已經(jīng)運(yùn)用了這種顯示設(shè)備??墒荓CD的顯示屏幕都需要去背著光,OLED顯示屏就不需要去背著光,主要原因就是因?yàn)楹笳呤亲约哼M(jìn)行發(fā)光的,所以說進(jìn)行同樣顯示的時(shí)候,OLED的效果會(huì)比LCD更好,從現(xiàn)在我們所掌握到的這些技術(shù)來講,OLED的尺寸是沒有辦法去進(jìn)行擴(kuò)大的,可是OLED的分辨率卻可以變得非常高。OLED模塊默認(rèn)設(shè)??置是B??S0接??GND??,BS??1和B??S2接??VCC??(80??80模??式),即使用8080并口方式??,如果??想要設(shè)??置成其??他的模??式,則??需要在??OLE??D的背??面,用??烙鐵修??改BS??0-B??S2的??設(shè)置。OLED顯示模塊??原理圖如下圖。圖3-9顯示模塊原理圖第4章系統(tǒng)的軟件設(shè)計(jì)4.1單片機(jī)初始化流程圖在單片機(jī)中,初始化是指在程序開始執(zhí)行之前對(duì)相關(guān)寄存器、變量和外設(shè)進(jìn)行設(shè)置和配置的過程。單片機(jī)初始化的目的是確保系統(tǒng)的穩(wěn)定性和可靠性,以及為后續(xù)的程序執(zhí)行提供正確的環(huán)境和狀態(tài)。首先進(jìn)行單??片機(jī)初??始化,??流程圖??如下。圖4-1單片機(jī)初始化流程圖
4.2溫濕度檢測(cè)模塊設(shè)計(jì)當(dāng)溫濕度高于閾值時(shí)候,繼電器會(huì)動(dòng)作打開空調(diào)功能降低溫濕度,可以通過藍(lán)牙模塊連接上位機(jī)在手機(jī)端設(shè)置溫濕度的閾值。圖4-2溫濕度傳感器模塊流程圖
4.3舵機(jī)模塊設(shè)計(jì)由于喂食器分為手動(dòng)模式和自動(dòng)模式,所以舵機(jī)有兩種起動(dòng)方式:手動(dòng)模式下打開按鍵開關(guān),舵機(jī)起動(dòng);自動(dòng)模式下只有達(dá)到設(shè)定的喂食時(shí)間時(shí),舵機(jī)才會(huì)起動(dòng)。圖4-3舵機(jī)模塊流程圖
4.4繼電器模塊設(shè)計(jì)溫濕度傳感器分別檢測(cè)當(dāng)時(shí)環(huán)境的溫度和濕度,再由STM32單片機(jī)進(jìn)行處理,如果溫度超過閾值,則溫度繼電器動(dòng)作,進(jìn)行降溫,直到低于溫度閾值,溫度繼電器停止動(dòng)作。濕度繼電器工作模式同上。圖4-4繼電器模塊流程圖
4.5藍(lán)牙模塊設(shè)計(jì)可以使用藍(lán)牙來進(jìn)行連接,通過手機(jī)做為上位機(jī)打開藍(lán)牙進(jìn)行搜索,然后選擇相應(yīng)的藍(lán)牙HC-06名稱點(diǎn)擊連接,如果顯示連接成功的話,便可以在手機(jī)端進(jìn)行閾值更改設(shè)置。圖4-5藍(lán)牙連接模塊子程序流程圖
4.6蜂鳴器模塊設(shè)計(jì)首先初始化為后續(xù)程序提供正確的環(huán)境和狀態(tài),初始化成功開始喂食,同時(shí)蜂鳴器接響起,提醒寵物進(jìn)食。圖4-6蜂鳴器模塊流程圖
4.7OLED顯示模塊設(shè)計(jì)初始化成功后,OLED屏幕顯示模塊可以顯示由傳感器檢測(cè)出的當(dāng)前溫度,當(dāng)前濕度,提前設(shè)定的溫濕度閾值,實(shí)時(shí)時(shí)間,設(shè)定的喂食時(shí)間。圖4-7OLED顯示模塊流程圖
第5章系統(tǒng)測(cè)試5.1系統(tǒng)實(shí)物圖圖5-1系統(tǒng)完整實(shí)物圖5.2測(cè)試原理需要測(cè)試的方面主要包含了測(cè)試功能是否正常,以及輸入數(shù)據(jù)之后和應(yīng)該輸出的結(jié)果所產(chǎn)生的誤差,所以在選擇測(cè)試數(shù)據(jù)方面要選擇比較小并且高效的數(shù)據(jù)來進(jìn)行測(cè)試,以便進(jìn)行一套完整的測(cè)試結(jié)果。進(jìn)行測(cè)試的基本測(cè)試目標(biāo)就是進(jìn)行一組數(shù)據(jù)測(cè)試,然后檢查是否會(huì)發(fā)生特定的錯(cuò)誤或者是錯(cuò)誤情況,在測(cè)試的過程當(dāng)中主要包含著以下幾個(gè)方面,首先是輸入用戶的實(shí)際數(shù)據(jù)情況,然后再進(jìn)行系統(tǒng)的檢驗(yàn)但是必須要注意的是,選擇的數(shù)據(jù)一定要包含著實(shí)際應(yīng)用當(dāng)中所需求的所有的功能測(cè)試,并且結(jié)果是正常的。
5.3喂食功能測(cè)試待機(jī)狀態(tài)下舵機(jī)箭頭指向左側(cè),時(shí)刻準(zhǔn)備喂食圖5-2舵機(jī)實(shí)物圖按下喂食開關(guān)按鍵,舵機(jī)逆時(shí)針旋轉(zhuǎn)180度,蜂鳴器響起,舵機(jī)開始喂食。當(dāng)喂食結(jié)束時(shí),再次按下喂食開關(guān)按鍵,舵機(jī)順時(shí)針旋轉(zhuǎn)180度,停止喂食。圖5-3舵機(jī)實(shí)物圖
5.4繼電器功能測(cè)試當(dāng)溫度超過設(shè)定閾值30度時(shí),左側(cè)溫度繼電器動(dòng)作,控制空調(diào)降低溫度,并且紅色燈亮起提示溫度超過閾值。圖5-4溫度繼電器實(shí)物圖(左側(cè))當(dāng)濕度超過設(shè)定閾值相對(duì)濕度60%時(shí),右側(cè)濕度繼電器動(dòng)作,控制空調(diào)降低濕度,并且紅燈亮起提示濕度超過閾值。圖5-5濕度繼電器實(shí)物圖(右側(cè))
5.5溫濕度模塊功能測(cè)試當(dāng)接通電源后,溫濕度傳感器接通,測(cè)出溫濕度值在顯示屏上顯示。圖5-6溫濕度測(cè)試實(shí)物圖人為調(diào)節(jié)溫濕度(例如放一杯熱水在傳感器旁邊)并且當(dāng)超過溫濕度閾值,溫濕度傳感器可以檢測(cè)到并且紅燈閃亮報(bào)警提示。圖5-7溫濕度測(cè)試實(shí)物圖
5.6顯示功能測(cè)試通過上圖當(dāng)中的數(shù)據(jù),我們可以發(fā)現(xiàn)在第一行所顯示的是當(dāng)前時(shí)間的溫度以及濕度,溫度為28.6度,相對(duì)濕度為39.4%。在屏幕第二行顯示的數(shù)值是溫度和濕度的閾值,溫度的上限為30度,相對(duì)濕度的上限值為60%,然后第三行為當(dāng)前時(shí)間的顯示。第四行為設(shè)定的喂食時(shí)間。圖5-8OLED顯示屏幕5.7按鍵功能測(cè)試在手動(dòng)模式下,當(dāng)按下左邊按鍵,蜂鳴器檢測(cè)到高電平信號(hào)長(zhǎng)響一聲,舵機(jī)轉(zhuǎn)動(dòng),按下右邊按鍵舵機(jī)關(guān)閉。圖5-9按鍵功能測(cè)試實(shí)物圖
5.8藍(lán)牙功能測(cè)試5-6藍(lán)牙功能測(cè)試實(shí)物圖圖5-10藍(lán)牙功能測(cè)試實(shí)物圖打開手機(jī)藍(lán)牙進(jìn)行初始配對(duì),找到HC-06進(jìn)行藍(lán)牙連接,提示連接成功。進(jìn)行上限、喂食時(shí)間設(shè)置,點(diǎn)擊設(shè)置,則設(shè)置成功。點(diǎn)擊校對(duì)時(shí)間可以將喂食器與手機(jī)時(shí)間進(jìn)行校對(duì),同一時(shí)間。喂食器的溫濕度傳感器檢測(cè)到實(shí)時(shí)溫濕度也會(huì)通過藍(lán)牙模塊傳送到手機(jī)上。
第6章總結(jié)與展望6.1總結(jié)在設(shè)計(jì)過程中,主要針對(duì)硬件部分和功能模塊進(jìn)行了設(shè)計(jì)。在單片機(jī)選型時(shí)考慮到后續(xù)功能的增加,可能需要更高性能的STM32單片機(jī)。當(dāng)然后續(xù)過程中除了基礎(chǔ)的喂食功能,我們添加了藍(lán)牙控制,溫濕度檢測(cè),溫濕度控制等功能。在手機(jī)端也可以實(shí)時(shí)顯示喂食器所在位置的溫濕度。同時(shí)為時(shí)鐘模塊添加一塊紐扣電池,在掉電時(shí)為時(shí)間做補(bǔ)償。在設(shè)計(jì)過程中因?yàn)榭紤]到電源電壓不穩(wěn)定,于是加入降壓穩(wěn)壓模塊,以此適應(yīng)大多數(shù)環(huán)境。6.2展望在未來寵物的營(yíng)養(yǎng)搭配,也可以由寵物智能喂食器進(jìn)行搭配,為每一個(gè)寵物做定制的科學(xué)膳食。在平時(shí)智能喂食器可以在寵物進(jìn)食的時(shí)間內(nèi),采集寵物的身體數(shù)據(jù),例如體重,毛發(fā)顏色以及寵物飲食情況等。通過喂食器采集的數(shù)據(jù),我們可以成立一個(gè)大的數(shù)據(jù)庫(kù),請(qǐng)專業(yè)的營(yíng)養(yǎng)健康分析人員,為每一只寵物提供專門的飲食方案。這樣可以有效避免寵物的飲食安全,與身體健康等問題。并且因?yàn)閷櫸镉袑iT的飲食方案,并且日常的身體特征數(shù)據(jù)也被記錄,所以當(dāng)寵物生病時(shí),寵物醫(yī)生也可以第一時(shí)間做出專業(yè)判斷,避免錯(cuò)過最佳治療時(shí)間,而對(duì)寵物造成長(zhǎng)久的不可挽回的影響。在一般情況下,主人與寵物為雙向的情感奔赴,是互為家人的存在。那么喂食器,在可以解決例如主人出差寵物喂食等問題的情況下,是否可以解決主人與寵物的互動(dòng)呢?比如為寵物喂食器可以加入視頻溝通,語(yǔ)音交流等,但寵物畢竟不懂人類語(yǔ)言,更多的還是提示類的動(dòng)作或聲音等指令。那么智能家具將會(huì)顯得格外重要,比如寵物因?yàn)榫嚯x喂食器太遠(yuǎn),而無法獲得進(jìn)食指令時(shí),那么在寵物附近的智能家具可以在聯(lián)網(wǎng)情況下,該家具可以獲得寵物智能喂食器的提示寵物進(jìn)食的指令信號(hào),從而做出動(dòng)作提醒寵物進(jìn)食。在未來的幾十年發(fā)展過程當(dāng)中,寵物喂食器的生產(chǎn)和發(fā)展可以非常滿足人們未來的生活需要,不但節(jié)能環(huán)保,更加便捷人們的生活。在構(gòu)建寵物智能喂食器建設(shè)當(dāng)中一定要依靠堅(jiān)實(shí)的信息基礎(chǔ)和相關(guān)的體系保障,在構(gòu)建的過程當(dāng)中一定要結(jié)合信息基礎(chǔ)保障信息資源得到充分有效的利用,并且將信息化的好處覆蓋到更多個(gè)方面,促使人們的生活更加的便捷,享受到信息化社會(huì)帶來的便利條件。
參考文獻(xiàn)張世清,鐘麟,王許鵬.基于STM32的寵物喂食系統(tǒng)設(shè)計(jì)[J].無線互聯(lián)科技,2021,18(01):40-42.周錦榮,張振宇,袁忠強(qiáng).家居寵物智能喂食管理控制系統(tǒng)設(shè)計(jì)與應(yīng)用[J].家畜生態(tài)學(xué)報(bào),2019,40(04):77-80.鄺華款.遠(yuǎn)程智能的寵物照料系統(tǒng)開發(fā)與應(yīng)用[J].無線互聯(lián)科技,2022,19(08):40-41.王凝.關(guān)于寵物喂食器的智能化發(fā)展趨勢(shì)及設(shè)計(jì)方案研究[J].科技與創(chuàng)新,2022(11):93-95.洪熠,徐婷,何睿,羅彬,朱蒼璐.基于STM32單片機(jī)的智能寵物系統(tǒng)的未來發(fā)展[J].電腦知識(shí)與技術(shù),2021,17(14):199-200.長(zhǎng)虹產(chǎn)品設(shè)計(jì)中心.智能化時(shí)代的家電產(chǎn)品設(shè)計(jì)與管理[J].北京理工大學(xué)出版社,2015.夏進(jìn)軍,趙佳妮.基于情感化設(shè)計(jì)層次理論的智能寵物創(chuàng)新設(shè)計(jì)[J].包裝工程,2017,38(6):123-128.朱慶祥,潘鎖.家庭智能寵物喂食器造型設(shè)計(jì)[J].機(jī)械設(shè)計(jì),2016,33(4):130.2019(6).蔣一明.從專利視角分析寵物智能監(jiān)控技術(shù)的發(fā)展現(xiàn)狀[J].電視技術(shù),2017,41(9/10):92-95.曹妍.基于單片機(jī)的智能寵物喂食器設(shè)計(jì)[J].電子技術(shù),2021,50(09):32-33.胡名睿,郝曉健,王昊辰,李佳靜,周雨笛,張小輝.基于互聯(lián)網(wǎng)+及云存儲(chǔ)的寵物自動(dòng)喂食嵌入式系統(tǒng)[J].電子制作,2021(11):64-67.魏忠強(qiáng).智能化的家養(yǎng)寵物喂食器設(shè)計(jì)要點(diǎn)探討[J].新型工業(yè)化,2022,12(04):18-21+26.白亞梅.智能化的家養(yǎng)寵物喂食器設(shè)計(jì)[J].電子世界,2021(06):192-193.楊慶.以情感需求為導(dǎo)向的智能寵物貓喂食器設(shè)計(jì)研究[D].青島大學(xué),2020.孟艷艷,陳偉海,賈長(zhǎng)洪,趙敬芬.智能寵物喂食喂水系統(tǒng)研究與設(shè)計(jì)[J].中國(guó)高新科技,2020(21):137-141.Patents;"PetFeedingRobot.AutomaticPetWetFoodDispenserRobot"inPatentApplicationApprovalProcess[J].Robotics&MachineLearning,2013.Shyh-KuangUeng,Guan-ZhiChen.Visionbasedmulti-userhumancomputerinteraction[J].MultimediaToolsandApplications,2016,Vol.75(16),pp.10059-10076TaeHoWoo.NanoscopicdesignsofradiologicalprotectioninenvironmentalscalefortheFukushimanuclearaccident:Strategybydispersion,dissolution,andfiltration[J].AnnalsofNuclearEnergy,2016,87.ArduinobasedPETFeedingAutomation[J].InternationalJournalofInnovativeTechnologyandExploringEngineering,2019,8(11).G.Landsberg,W.Hunthausen,L.Ackerman.BehaviorProblemsoftheDogandCat[M].附錄電路圖源代碼#include"delay.h"#include"sys.h"#include"timer.h"#include"usart.h"#include"24l01.h"#include"spi.h"#include"oled.h"#include"bmp.h"#include"dht11.h"#include"ds1302.h"#definejdq1PBout(5)//PC13 #definejdq2PBout(6)//#definejdq3PBout(7)#definejdq4PBout(8)#defineLEDPCout(13)#definebeepPBout(9)//蜂鳴器#definePC15GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_15)#definekey5GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)//濕度+#definekey6GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)//濕度-#definekey7GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)//濕度+#definekey8GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)//濕度-#definekey1GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)//溫度+#definekey2GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)//溫度-#definekey3GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7)//溫度+#definekey4GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)//溫度-//unsignedcharsp_d[]="00%RH";unsignedcharU8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L;//unsignedcharwd[]="00.0c00.0%rh";;//unsignedcharset_wd[]="00s";//unsignedcharset_sd[]="80%RH";externunsignedchartime_buf[8];//????externunsignedcharreadtime[20];//當(dāng)前時(shí)間externunsignedcharly_dat;externunsignedcharly_dat2;unsignedintdq_time=0;//讀取到的時(shí)間換算成分鐘unsignedintnz_time=0;unsignedintmode_xz=0;u16hw=0;unsignedcharset_time[30]={0,0,0};unsignedintks_flg=0;unsignedintks_cot=0;u16msHcCount=0;//定時(shí)器中斷計(jì)數(shù)unsignedcharfm_flg=0;unsignedcharwd_xs[]="00.0c00.0%rh";unsignedcharfs_xs[]="溫度:00.0c濕度:00.0%rh";unsignedcharset_wd[]="30c60%";unsignedchards_time[]="12:20";unsignedcharsx_wd=30,xx_wd=10,sx_sd=60,xx_sd=30;unsignedintsetval1=0,setval2=80;unsignedcharxs_time[]="00:00:00";externunsignedcharrc_dat[20];externunsignedcharrc_dat2[10];voiddde(u16time){u16i=0; while(time--) {i=12000; while(i--); }}voidGPIO_Config(void)//配置PA2,PA3{GPIO_InitTypeDefGPIO_InitStructure;/*GPIOAclockenable*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);///*GPIOAConfiguration:TIM3channel1and2asalternatefunctionpush-pull*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復(fù)用推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; //LED0-->PC.13端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //IO口速度為50MHz GPIO_Init(GPIOC,&GPIO_InitStructure); //根據(jù)設(shè)定參數(shù)初始化GPIOC.13 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //??GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //50M????GPIO_Init(GPIOA,&GPIO_InitStructure); // GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15; //LED0-->PC.13端口配置// GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //推挽輸出// //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //IO口速度為50MHz// GPIO_Init(GPIOC,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; //LED0-->PC.13端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //IO口速度為50MHz GPIO_Init(GPIOB,&GPIO_InitStructure); //根據(jù)設(shè)定參數(shù)初始化GPIOC.13 // GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;//摁鍵初始化//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //??////GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //50M????//GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //??//GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //50M????GPIO_Init(GPIOB,&GPIO_InitStructure); beep=1;jdq1=0;jdq2=0;jdq3=0;jdq4=0;}voidsend(unsignedchardata){USART1->DR=data;while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束}voidsen3_str(unsignedchar*dat){while(*dat!='\0'){send(*dat); dat++;}}voidDelay_Ms(uint16_ttime)//毫秒延時(shí){uint16_ti,j;for(i=0;i<time;i++)for(j=0;j<10260;j++);}//voidqj_led()//{// OLED_ShowChinese(47,18,0,16);//?// OLED_ShowChinese(65,18,1,16);//?//OLED_Refresh();//}//voidzz_led()//{// OLED_ShowChinese(47,18,4,16);//?// OLED_ShowChinese(65,18,5,16);//?//OLED_Refresh();//}//voidht_led()//{// OLED_ShowChinese(47,18,2,16);//?// OLED_ShowChinese(65,18,3,16);//?//OLED_Refresh();//}//voidyz_led()//{// OLED_ShowChinese(47,18,6,16);//?// OLED_ShowChinese(65,18,7,16);//?//OLED_Refresh();//}//voidtz_led()//{// OLED_ShowChinese(47,18,8,16);//停// OLED_ShowChinese(65,18,9,16);//止//OLED_Refresh();//} unsignedcharwd_flg=0;unsignedcharsd_flg=0;voidbjhs(){if(U8T_data_H>sx_wd&&wd_flg!=1){jdq1=1;jdq2=0;wd_flg=1;}if(U8T_data_H<xx_wd&&wd_flg!=2){jdq1=0;jdq2=1; wd_flg=2;}if(U8T_data_H<=sx_wd&&U8T_data_H>=xx_wd&&wd_flg!=3){jdq1=0;jdq2=0; wd_flg=3;}if(U8RH_data_H>sx_sd&&sd_flg!=1){jdq3=1;jdq4=0;sd_flg=1;}if(U8RH_data_H<xx_sd&&sd_flg!=2){jdq3=0;jdq4=1; sd_flg=2;}if(U8RH_data_H<=sx_sd&&U8RH_data_H>=xx_sd&&sd_flg!=3){jdq3=0;jdq4=0; sd_flg=3;}}//voidjpsz()//{//if(key1==0)//{//if(sx_wd<50)// {// sx_wd++;// set_wd[0]=sx_wd/10+'0';// set_wd[1]=sx_wd%10+'0';// OLED_ShowString(0,18,set_wd,16);//// OLED_Refresh();// dde(200);// }//////}//elseif(key2==0)//{//if(sx_wd>xx_wd)// {// sx_wd--;// set_wd[0]=sx_wd/10+'0';// set_wd[1]=sx_wd%10+'0';// // OLED_ShowString(0,18,set_wd,16);// OLED_Refresh();// dde(200);// }//////}//if(key3==0)//{//if(xx_wd<sx_wd)// {// xx_wd++;// set_wd[4]=xx_wd/10+'0';// set_wd[5]=xx_wd%10+'0';// OLED_ShowString(0,18,set_wd,16);//OLED_Refresh(); // dde(200);// }//////}//elseif(key4==0)//{//if(xx_wd>0)// {// xx_wd--;// set_wd[4]=xx_wd/10+'0';// set_wd[5]=xx_wd%10+'0';// // OLED_ShowString(0,18,set_wd,16);// OLED_Refresh();// dde(200);// }//////}//if(key5==0)//{//if(sx_sd<99)// {// sx_sd++;// set_wd[8]=sx_sd/10+'0';// set_wd[9]=sx_sd%10+'0';// OLED_ShowString(0,18,set_wd,16);//// OLED_Refresh();// dde(200);// }//////}//elseif(key6==0)//{//if(sx_sd>xx_sd)// {// sx_sd--;// set_wd[8]=sx_sd/10+'0';// set_wd[9]=sx_sd%10+'0';// // OLED_ShowString(0,18,set_wd,16);// OLED_Refresh();// dde(200);// }//////}//if(key7==0)//{//if(xx_sd<sx_sd)// {// xx_sd++;// set_wd[12]=xx_sd/10+'0';// set_wd[13]=xx_sd%10+'0';// OLED_ShowString(0,18,set_wd,16);//// OLED_Refresh();// dde(200);// }//////}//elseif(key8==0)//{//if(xx_sd>0)// {// xx_sd--;// set_wd[12]=xx_sd/10+'0';// set_wd[13]=xx_sd%10+'0';// // OLED_ShowString(0,18,set_wd,16);// OLED_Refresh();// dde(200);// }//////}//}voidjdsj()//校對(duì)時(shí)間{time_buf[4]=((rc_dat2[0]-'0')<<4)+(rc_dat2[1]-'0'); time_buf[5]=((rc_dat2[3]-'0')<<4)+(rc_dat2[4]-'0'); time_buf[6]=((rc_dat2[6]-'0')<<4)+(rc_dat2[7]-'0'); ds1302_write_time();}voidsz_time(){//time_buf[0]=((set_time[0]-'0')<<4)+(set_time[1]-'0');// time_buf[1]=((set_time[2]-'0')<<4)+(set_time[3]-'0');// time_buf[2]=((set_time[4]-'0')<<4)+(set_time[5]-'0');// time_buf[3]=((set_time[6]-'0')<<4)+(set_time[7]-'0'); time_buf[4]=((set_time[0]-'0')<<4)+(set_time[1]-'0'); time_buf[5]=((set_time[2]-'0')<<4)+(set_time[3]-'0'); time_buf[6]=((set_time[4]-'0')<<4)+(set_time[5]-'0'); ds1302_write_time();}voidsj_dq()//讀取時(shí)間參數(shù){unsignedinti=0;ds1302_read_time();//????readtime[0]=(time_buf[0]>>4)+'0';readtime[1]=(time_buf[0]&0x0F)+'0';readtime[2]=(time_buf[1]>>4)+'0';readtime[3]=(time_buf[1]&0x0F)+'0'; readtime[4]=(time_buf[2]>>4)+'0';readtime[5]=(time_buf[2]&0x0F)+'0';readtime[6]=(time_buf[3]>>4)+'0';readtime[7]=(time_buf[3]&0x0F)+'0';readtime[8]=(time_buf[4]>>4)+'0';//小時(shí)十位readtime[9]=(time_buf[4]&0x0F)+'0';//小時(shí)個(gè)位readtime[10]=(time_buf[5]>>4)+'0';//分鐘十位readtime[11]=(time_buf[5]&0x0F)+'0';//分鐘個(gè)位readtime[12]=(time_buf[6]>>4)+'0';//秒十位readtime[13]=(time_buf[6]&0x0F)+'0';//秒個(gè)位dq_time=((readtime[8]-'0')*10+readtime[9]-'0')*60+((readtime[10]-'0')*10+readtime[11]-'0');// for(i=0;i<14;i++)//send(readtime[i]); xs_time[0]=readtime[8];xs_time[1]=readtime[9];xs_time[3]=readtime[10];xs_time[4]=readtime[11];xs_time[6]=readtime[12];xs_time[7]=readtime[13];OLED_ShowString(26,32,xs_time,16);//???? OLED_Refresh();}u8dz_flg=0;floataa=0;unsignedcharbb=0;intmain(void){ u8tmp_buf[33];unsignedcharws_flg=0; u8move_sta=0;floatjl=0;unsignedchartemp=0,sd_dat=0;shorttemperature;unsignedintbj_wd=0;unsignedintbj_sd=0; SystemInit();// delay_init(); //延時(shí)函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí) GPIO_Config(); //LED,PWM端口初始化,配置PA2,PA3PA4PA5 //TIM2_PWM_Init(47999,2); //分頻。最小單位鐘頻率=72000000/(2+1)=24MhzTIM2_PWM_Init(199,7199); uart_init(9600); //串口初始化為9600beep=0; dde(500); OLED_Init();OLED_ColorTurn(0);//0正常顯示,1反色顯示OLED_DisplayTurn(0);//0正常顯示1屏幕翻轉(zhuǎn)顯示OLED_ShowString(0,0,wd_xs,16);//???? OLED_ShowString(0,16,set_wd,16);//???? OLED_ShowString(46,48,ds_time,16);//???? OLED_Refresh(); DS1302_GPIOInit(); dde(300); //ds1302_write_time(); dde(200); while(DHT11_Init()); TIM_SetCompare3(TIM2,5); TIM3_Int_Init(499,7199);//設(shè)置定時(shí)器3中斷,50ms中斷一次; while(1) { if(mode_xz==0) { if(key6==0) {TIM_SetCompare3(TIM2,20); beep=1; ws_flg=1; } if(ws_flg==3) { beep=0; ws_flg=0; } if(key7==0) {TIM_SetCompare3(TIM2,5); beep=0; ws_flg=0; } } if(ly_dat==1) { mode_xz=rc_dat[0]-'0'; ds_time[0]=rc_dat[1]; ds_time[1]=rc_dat[2]; ds_time[3]=rc_dat[3]; ds_time[4]=rc_dat[4]; set_wd[0]=rc_dat[5]; set_wd[1]=rc_dat[6]; set_wd[6]=rc_dat[7]; set_wd[7]=rc_dat[8]; sx_wd=(rc_dat[5]-'0')*10+(rc_dat[6]-'0'); sx_sd=(rc_dat[7]-'0')*10+(rc_dat[8]-'0'); nz_time=((ds_time[0]-'0')*10+ds_time[1]-'0')*60+((ds_time[3]-'0')*10+ds_time[4]-'0'); ly_dat=0; OLED_ShowString(0,16,set_wd,16);//???? OLED_ShowString(46,48,ds_time,16);//???? OLED_Refresh(); } if(ly_dat2==1) { jdsj(); ly_dat2=0; } if(msHcCount>=20)//1秒鐘讀取溫濕度一次{ if(ws_flg>0&&ws_flg<20) ws_flg++; DHT11_Read_Data(&U8T_data_H,&U8T_data_L,&U8RH_data_H,&U8RH_data_L); wd_xs[0]=U8T_data_H/10+'0'; wd_xs[1]=U8T_data_H%10+'0'; wd_xs[3]=U8T_data_L%10+'0'; wd_xs[8]=U8RH_data_H/10+'0'; wd_xs[9]=U8RH_data_H%10+'0';wd_xs[11]=U8RH_data_L%10+'0'; fs_xs[5]=wd_xs[0]; fs_xs[6]=wd_xs[1]; fs_xs[8]=wd_xs[3]; fs_xs[9]=wd_xs[4];fs_xs[16]=wd_xs[8]; fs_xs[17]=wd_xs[9]; fs_xs[18]=wd_xs[10]; fs_xs[19]=wd_xs[11]; OLED_ShowString(0,0,wd_xs,16);//???? OLED_Refresh();if(U8T_data_H>=sx_wd) { jdq1=1; } else jdq1=0; if(U8RH_data_H>=sx_sd) { jdq2=1; } else jdq2=0; sj_dq(); if(mode_xz==1) {if(nz_time==dq_time) {TIM_SetCompare3(TIM2,20); beep=1; ws_flg=1; nz_time=0; } else {TIM_SetCompare3(TIM2,5); beep=0; } if(ws_flg==5) { beep=0; ws_flg=0; } } msHcCount=0;sen3_str(fs_xs);// bjhs(); } switch(ly_dat) { case'A':jdq1=1;break; case'B':jdq1=0;break; case'C':jdq2=1;break; case'D':jdq2=0;break; case'E':jdq3=1;break; case'F':jdq3=0;break; case'G':jdq4=1;break; case'H':jdq4=0;break; } //jpsz(); }}voidTIM3_IRQHandler(void)//TIM3中斷{ if(msHcCount<20) msHcCount++; if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)//檢查TIM3更新中斷發(fā)生與否 { //msHcCount++; TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除TIMx更新中斷標(biāo)志 }}/**/*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){}/******************************************************************************/#include"dht11.h"#include"delay.h"http://復(fù)位DHT11voidDHT11_Rst(void) { DHT11_IO_OUT(); //SETOUTPUTDHT11_DQ_OUT=0; //拉低DQdelay_ms(20); //拉低至少18msDHT11_DQ_OUT=1; //DQ=1 delay_us(30); //主機(jī)拉高20~40us}//等待DHT11的回應(yīng)//返回1:未檢測(cè)到DHT11的存在//返回0:存在u8DHT11_Check(void) { u8retry=0; DHT11_IO_IN();//SETINPUT while(DHT11_DQ_IN&&retry<100)//DHT11會(huì)拉低40~80us { retry++; delay_us(1); }; if(retry>=100)return1; elseretry=0;while(!DHT11_DQ_IN&&retry<100)//DHT11拉低后會(huì)再次拉高40~80us { retry++; delay_us(1); }; if(retry>=100)return1; return0;}//從DHT11讀取一個(gè)位//返回值:1/0u8DHT11_Read_Bit(void) { u8retry=0; while(DHT11_DQ_IN&&retry<100)//等待變?yōu)榈碗娖?{ retry++; delay_us(1); } retry=0; while(!DHT11_DQ_IN&&retry<100)//等待變高電平 { retry++; delay_us(1); } delay_us(40);//等待40us if(DHT11_DQ_IN)return1; elsereturn0; }//從DHT11讀取一個(gè)字節(jié)//返回值:讀到的數(shù)據(jù)u8DHT11_Read_Byte(void){u8i,dat;dat=0; for(i=0;i<8;i++) { dat<<=1; dat|=DHT11_Read_Bit();} returndat;}//從DHT11讀取一次數(shù)據(jù)//temp:溫度值(范圍:0~50°)//humi:濕度值(范圍:20%~90%)//返回值:0,正常;1,讀取失敗u8DHT11_Read_Data(u8*temp,u8*temp2,u8*humi,u8*humi2){ u8buf[5]; u8i; DHT11_Rst(); if(DHT11_Check()==0) { for(i=0;i<5;i++)//讀取40位數(shù)據(jù) { buf[i]=DHT11_Read_Byte(); } if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]) { *humi=buf[0]; *humi2=buf[1]; *temp=buf[2]; *temp2=buf[3]; } }elsereturn1; return0; }//初始化DHT11的IO口DQ同時(shí)檢測(cè)DHT11的存在//返回1:不存在//返回0:存在 u8DHT11_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能PG端口時(shí)鐘 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4; //PG11端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化IO口 GPIO_SetBits(GPIOA,GPIO_Pin_4); //PG11輸出高 DHT11_Rst();//復(fù)位DHT11 returnDHT11_Check();//等待DHT11的回應(yīng)}#include"oled.h"#include"stdlib.h"#include"oledfont.h" #include"delay.h"u8OLED_GRAM[144][8];//反顯函數(shù)voidOLED_ColorTurn(u8i){ if(i==0) { OLED_WR_Byte(0xA6,OLED_CMD);//正常顯示 } if(i==1) { OLED_WR_Byte(0xA7,OLED_CMD);//反色顯示 }}//屏幕旋轉(zhuǎn)180度voidOLED_DisplayTurn(u8i){ if(i==0) { OLED_WR_Byte(0xC8,OLED_CMD);//正常顯示 OLED_WR_Byte(0xA1,OLED_CMD); } if(i==1) { OLED_WR_Byte(0xC0,OLED_CMD);//反轉(zhuǎn)顯示 OLED_WR_Byte(0xA0,OLED_CMD); }}//起始信號(hào)voidI2C_Start(void){ OLED_SDIN_Set(); OLED_SCLK_Set(); OLED_SDIN_Clr(); OLED_SCLK_Clr();}//結(jié)束信號(hào)voidI2C_Stop(void){ OLED_SCLK_Set(); OLED_SDIN_Clr(); OLED_SDIN_Set();}//等待信號(hào)響應(yīng)voidI2C_WaitAck(void)//測(cè)數(shù)據(jù)信號(hào)的電平{ OLED_SCLK_Set(); OLED_SCLK_Clr();}//寫入一個(gè)字節(jié)voidSend_Byte(u8dat){ u8i; for(i=0;i<8;i++) { OLED_SCLK_Clr();//將時(shí)鐘信號(hào)設(shè)置為低電平 if(dat&0x80)//將dat的8位從最高位依次寫入 { OLED_SDIN_Set();} else { OLED_SDIN_Clr();} OLED_SCLK_Set();//將時(shí)鐘信號(hào)設(shè)置為高電平 OLED_SCLK_Clr();//將時(shí)鐘信號(hào)設(shè)置為低電平 dat<<=1;}}//發(fā)送一個(gè)字節(jié)//向SSD1306寫入一個(gè)字節(jié)。//mode:數(shù)據(jù)/命令標(biāo)志0,表示命令;1,表示數(shù)據(jù);voidOLED_WR_Byte(u8dat,u8mode){ I2C_Start(); Send_Byte(0x78); I2C_WaitAck(); if(mode){Send_Byte(0x40);}else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水產(chǎn)養(yǎng)殖基地土地使用權(quán)合同
- 公司技術(shù)服務(wù)采購(gòu)合同
- 豪華酒店廚師服務(wù)合同
- 電子產(chǎn)品購(gòu)銷合同標(biāo)準(zhǔn)版
- 房地產(chǎn)投資專項(xiàng)法律服務(wù)合同
- (完整版)農(nóng)村土地租賃合同書
- 光學(xué)玻璃的紫外光固化涂層技術(shù)考核試卷
- 醫(yī)療用品行業(yè)服務(wù)平臺(tái)拓展考核試卷
- 搪瓷原材料市場(chǎng)動(dòng)態(tài)與價(jià)格趨勢(shì)考核試卷
- 數(shù)字出版物的長(zhǎng)期保存與數(shù)字遺產(chǎn)考核試卷
- 圖書出版項(xiàng)目合作協(xié)議
- 部編版七年級(jí)歷史下冊(cè)全冊(cè)導(dǎo)學(xué)案
- 酒店住宿投標(biāo)方案(技術(shù)標(biāo))
- 2024風(fēng)力發(fā)電葉片維保作業(yè)技術(shù)規(guī)范
- 中建分供方資源管理辦法
- (人教PEP2024版)英語(yǔ)一年級(jí)上冊(cè)Unit 3 教學(xué)課件(新教材)
- 小小演說家演講技巧教學(xué)設(shè)計(jì)
- 住院患者跌倒、墜床、壓力性損傷的風(fēng)險(xiǎn)評(píng)估及管理
- 2024移動(dòng)電源車運(yùn)維管理技術(shù)規(guī)范柴油機(jī)類
- 2024年中國(guó)端側(cè)大模型行業(yè)研究:算力優(yōu)化與效率革命+如何重塑行業(yè)生態(tài)-22正式版
- 學(xué)校臨聘人員規(guī)范管理自查報(bào)告
評(píng)論
0/150
提交評(píng)論