汪躍萍 朱云國



摘要:該文是基于Cortex-A8處理器進行鬧鐘設備控制系統設計,以此緊跟社會發展的步伐,滿足人們對電子產品的需求。該設計首先介紹硬件平臺的搭建,然后進行軟件平臺的服務器搭建和開發板參數設置、硬件電路的設計、軟件模塊的設計,最后在Linux系統下進行項目測試。利用開發板中的LM75數字溫度傳感器采集溫度,通過PWM變頻技術實現定時鬧鐘功能,并可以實現時鐘顯示功能,用戶還可以利用App來控制鬧鐘的添加、刪除、更新等功能。相信在嵌入式技術不斷更新的背景下,這項技術必將給人們的生活帶來便利,以后的鬧鐘等電子產品必將向著智能化和數字化方向發展。
關鍵詞:Cortex_A8;鬧鐘;智能化
中圖分類號:TP273 文獻標識碼:A
文章編號:1009-3044(2020)15-01 12-03
1背景
嵌入式技術經過30多年的發展,各類電子產品層出不窮,滿足了人們的生活需求。嵌入式技術的產品已經遍及到我們的生活、學習、工作等方方面面。在軍事、科學、商業、工程、娛樂文化等領域均涉及嵌入式技術。伴隨著集成電路技術、信息技術、網絡技術的發展,可以明顯地發現嵌人式應用市場將十分廣闊。嵌入式技術代表了今后的發展趨勢。本次設計就是基于Cortex-A8鬧鐘設備控制系統。選擇Cortex-A8作為開發條件是因為ARM處理器系列十分豐富,從最開始的ARM7處理器發展到如今的Cortex-A8處理器甚至是Cortex-A9、Cot-tex-A15等一系列在社會生產上應用十分廣泛的產品來看,選擇ARM處理器是十分正確的。雖然ARM系列的開發板功能都十分強大,但從性價比上來看Cortex-A8處理器最高,它能夠使用戶可以享受到更高水準的用戶體驗。在處理器當中它是能效最高、尺寸最小的處理器。
由于嵌入式技術的發展日新月異,因而人們對于電子時鐘的精度要求以及一些附加功能要求也越來越高。本次設計的電子鬧鐘不僅僅能精準地實現年、月、日、時、分、秒,還可以對用戶所處室內溫度進行檢測,而且可以利用App操控鬧鐘。
2總體結構
本次設計的總體流程圖主要分為兩部分:主控程序和守護進程。在主控程序中有溫度讀寫模塊、時鐘顯示模塊、鬧鐘顯示模塊、用戶處理指令模塊。在用戶處理指令模塊中有三個功能添加鬧鐘功能、刪除鬧鐘功能、更新鬧鐘功能。對于鬧鐘顯示模塊利用守護進程去監控。一旦用戶設定的鬧鐘時間到時,守護進程就會響應實現鬧鐘功能,項目總的流程圖如圖1所示。
3硬件設計
3.1溫度模塊
溫度檢測功能的實現用到了數字溫度傳感器LM75,LM75芯片依靠兩條12C總線協議來監控環境溫度,LM75對溫度監控的精度達到0.5℃。并且LM75芯片對檢測到的溫度有自主校對功能,當然LM75對于溫度的檢測是有范圍的,范圍值在-55到125℃。當超出這一范圍會提醒用戶發出報警。LM75內部有五個寄存器,當通電后寄存器設為00時,芯片被設置為溫度寄存器,這時候會采集用戶環境溫度。通過FC總線接口對芯片發出一條指令,將采集到的環境溫度返回給用戶,這時候LM75就會返回寄存器檢測到的溫度,如圖2所示。
圖2中利用的是LM75芯片數字溫度傳感器。LM75芯片中的1號引腳SDA具有串行數據輸出輸入的功能,當通上電后它可以用來讀取環境溫度以及將讀取到的溫度給發送出去。2號引腳SCL是一個FC接口,用來采集時間的。3號引腳OS在環境溫度不在LM75芯片檢測范圍內時發揮作用,具有數據超值便發生信號中斷的功能。4號引腳GND和8號引腳VCC是電源引腳。5號引腳A0和6號引腳A1以及7號引腳A2可以進行地址設定,比如對溫度的采集可以通過這三個引腳設定。
3.2 PWM模塊
利用PWM模塊的功能來實現定時鬧鐘,利用PWM產生方波序列,之后經過三極管的放大,將放大后的電信號傳遞給蜂鳴器,蜂鳴器再轉化成自身所帶的聲音信號以此發出聲響,從而實現鬧鐘設備的定點報時功能。其電路圖如圖3。
圖3主要是由PWM信號波、三極管、蜂鳴器組成。PWM可以說是一種變頻技術,它通過改變周期大小來控制輸入的頻率大小以及通過改變脈沖的寬度來對輸出電壓進行控制。三極管的作用在這里是放大,三極管能夠把基極微小的電流,在集電極得到一個很大的電流。三極管中有一個參數叫作電流放大系數B,在集電極得到的電流就是基極電流的B倍。每次基極電流微小的變化都會在集電極得到一個大電流。蜂鳴器的作用是把從三極管得到的電信號轉換為自身所帶的聲信號,同時它也具有把信號放大的作用。由上述分析看出來PWM不斷產生變化的信號,在三極管的基極得到不斷變化的電流信號,導致在集電極產生很大且連續變化的電流,放大后的電流信號再經過蜂鳴器的放大且轉換成聲信號,這一階段便實現鬧鐘。
4軟件設計
4.1時鐘與溫度模塊
對于溫度檢測與時鐘顯示功能的流程圖如圖4所示。當時鐘功能開始工作時,為了使得本次設計的各個功能夠相互之間不會阻塞,所以為溫度讀寫功能設置了一個線程,為時鐘顯示功能設置一個線程。這樣系統在檢測用戶所在環境的溫度的同時也可以進行時鐘顯示的功能。
4.2鬧鐘(PVVM)模塊
定時鬧鐘功能的模塊流程圖如圖5所示,從流程圖可以看出鬧鐘功能的實現需要守護進程來監控。這里利用了守護進程的特點,在系統后臺運行一直監視著鬧鐘功能,當用戶設定的鬧鐘時刻t2到時,這個時間t2存放在crontab里,守護進程會先讀取當前系統時間t1,t1和t2較。t1=t2時表明鬧鐘時刻到了,然后進入鬧鐘模塊線程,讀取crontab模塊里的信息開始鬧鐘功能。最后并把鬧鐘時刻給顯示到液晶顯示屏上。
調用void alarm(void)函數來配合硬件部分的PWM模塊來實現鬧鐘報警功能。對于用戶設定的鬧鐘時間還要顯示在屏幕上給用戶看,這里調用Lcd__ClearAlarm(Black)函數來顯示鬧鐘背景圖片,調用函數顯示鬧鐘響起的時刻用函數Lcd_Put-string。調用while(fgets(ret,sizeof(ret)來循環控制用戶設定的多個鬧鐘。對于While()里的參數意思是當用戶設定的時間到的時候就循環執行里面的鬧鐘程序。
4.3 LCD模塊
圖6是LCD顯示設計實物圖的背景圖,對于LCD顯示部分是通過圖片形式顯示的,每次在液晶屏上出現的年、月、日、時、分、秒以及溫度實際顯示的是對應的圖片。
4.4用戶指令處理模塊
對于用戶指令處理功能是對鬧鐘顯示模塊的控制。為了確保各個模塊之間的工作能夠獨立工作,要在主函數里設置一個線程即用戶指令線程來專門為它服務。用戶指令模塊可以控制的功能有(A/a添加鬧鐘、D/d刪除鬧鐘、U/u更新時鐘)。
當用戶輸入對應的指令時,如輸入A來添加鬧鐘,也就是設定了鬧鐘被執行的時刻,程序會對用戶輸入的指令進行解析判斷從而執行相應的功能。在這里執行相應的功能之前會修改crontab里的文件,當crontab里的文件被修改后,守護進程被喚醒后獲取到crontab文件里的內容,解析出鬧鐘執行的時刻然后進入到鬧鐘顯示模塊。用戶指令處理流程圖如圖7。
5結束語
提出了基于Cortex-A8的鬧鐘設備控制系統設計,硬件設計方面首先進行開發板與筆記本的搭建,軟件設計方面完成了時鐘顯示模塊、定時鬧鐘模塊、溫度采集模塊、用戶指令模塊的設計。完成了基本的運行和調試,達到了預期目標。操作實物圖如圖8。