【摘要】在此設計了一種基于GSM的紅外遙控語音提醒系統,該系統采用STC89C52單片機為主控芯片,并使用紅外遙控控制整個系統。系統中ISD4004語音模塊可在用戶設定的時間播放預先錄制的語音信息。實現了將GSM技術融入到設計中,用戶即使不在語音提醒器的附近,一樣可以通過手機接收到語音提醒。創新點是打破以往提醒系統的提醒范圍的局限性,極大地提高了提醒系統的實用性和可靠性。
【關鍵詞】語音提醒GSM紅外遙控
由于現在人們生活壓力大,事務繁忙,經常會因為忘記東西而造成嚴重的后果;而一些老年人由于年老健忘,需要定時提醒吃藥和注意日常事務。本文論述了基于GSM的紅外遙控語音提醒器的研制,并且語音內容可根據使用者需要反復錄制及播放。如果使用者沒有在房間中收聽到提醒,提醒器還可以通過GSM實現遠程無線提醒,自動撥打預先設置的電話號,播放語音提醒錄音。
一、硬件電路設計
系統采用STC89S52單片機為主控芯片。紅外遙控模塊負責接收和處理紅外遙控器發出的紅外遙控信號;時鐘模塊負責顯示時間和設定提醒時間,DSl302提供的慢速充電功能,可在系統掉電后正常計時,不需重新設定時鐘時間,這使得時鐘的使用更加便捷;溫度模塊采用18B20芯片,它是單線數字溫度傳感器,測得的溫度在液晶上實時顯示;顯示模塊采用1602液晶屏,用來顯示時間、溫度和操作內容的提示;語音模塊使用了ISD4004語音芯片,單片機通過SPI總線發送操作命令控制語音芯片的錄放音操作;西門子公司的tc35i模塊作為GSM模塊,可傳輸語音和數據信號,和單片機之間的通信使用 9600bps波特率。系統的總體結構框圖如圖1所示。
遙控器用來產生遙控編碼脈沖,驅動紅外發射管輸出紅外遙控信號,遙控接收頭完成對遙控信號的放大、檢波、整形、解調出遙控編碼脈沖[1]。遙控編碼脈沖是一組串行二進制碼,由單片機完成對遙控指令解碼,并執行相應的遙控功能。
遙控器以專用發射集成電路TC9012組成,TC9012的一幀數據中含有32位碼,包含兩次8位用戶碼,8位數據碼和8位數據碼的反碼及最后位的同步位。引導碼由4.5ms的載波和4.5ms的載波關斷波形所構成,以作為用戶碼、數據碼以及他們的反碼的先導。同步位(SY)是標志最后一位編碼是“0”或“1”的標識位,它只有0.56ms的有載波信號構成。發射碼的格式如圖2所示。
DS1302是一種高性能、低功耗的實時時鐘芯片,附加31字節靜態RAM,采用SPI三線接口與單片機同步通信,它不僅要向寄存器寫入控制字,還需要讀取相應寄存器的數據。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小于31天時可以自動調整,且具有閏年補償功能。
DS1302接口電路如圖3所示。DS1302與單片機的連接也僅需要3條線:/RST引腳,在讀、寫數據期間,必須為高;SCLK串行時鐘引腳;I/O串行數據引腳,三線接口時的雙向數據線。外接32.768kHz晶振,為芯片提供計時脈沖。
美國ISD公司推出的ISD4000系列單片語音錄放電路,將每個采樣值直接存儲在片內的快閃存儲器中,能夠非常真實、自然地再現語音。ISD4004與單片機連接電路圖如圖4所示。該電路具有操作簡單、接口方便、錄音時間長、可任意分段錄放、不怕斷電及低功耗等優點[2]。
從圖4可以看出,P1.5接ISD4004的片選引腳/ss,控制ISD4004是否選通;P1.2接ISD4004的MOSI串行輸入引腳,語音芯片從該引腳讀入放音的地址;P1.7接ISD的串行輸出引腳MISO,單片機從該引腳接收從語音芯片傳來的信號;單片機的P1.4接ISD4004的串行時鐘輸入端SCLK,作為ISD的時鐘輸入,用于同步MOSI和MISO的數據傳輸;ISD4004音頻信號輸出引腳AUDOUT通過一可調電阻(調整輸出音量)和一濾波電容輸出至外部功放;AMCAP為自動靜音端,使用時通過一個電容接地。
西門子公司的tc35i模塊是一個支持中英文短信息的GSM模塊,可傳輸語音和數據信號。tc35i的數據接口通過AT命令可雙向傳輸指令和數據,可選波特率為300bit/s~115kbit/s,默認9600bps[3]。
整個模塊主要由電源電路、啟動電路、SIM卡接口電路和MAX232通信接口電路等幾部分組成。tc35i的第1~5引腳是正電源輸入腳;第6~10引腳是電源地;tc35i的15腳是啟動腳IGT,在系統中,直接將該腳對地短接來啟動模塊;tc35i使用外接式SIM卡,SIM卡通過卡座與tc35i的同名端直接相連,CCIN引腳用來檢測SIM卡是否插好,如果連接正確,則CCIN引腳輸出高電平,否則為低電平;tc35i的18、19腳直接連到單片機的串口;ISYNC端通過一個三極管和一個發光二級管連接到電源,用來指示系統的工作狀態。tc35i模塊結構示意圖如圖5所示[4]。
二、系統軟件設計
系統軟件也是采用模塊化設計,分為紅外收發模塊、時鐘模塊、測溫模塊、LCD顯示模塊、語音模塊、GSM模塊等。
主程序調用幾個模塊的子程序來完成系統任務,當有紅外信號時,單片機接收頭產生外部中斷請求信號,程序跳轉到紅外接收模塊執行相應的中斷服務程序。單片機首先判斷引導碼和系統碼是否正確,不對則直接退出;其次判斷數據碼與數據反碼是否一致,如果一致就根據數據碼調用子程序執行相應的操作。
DS1302時鐘模塊讀寫程序流程如圖6所示。單片機和DS1302進行數據交換時,要先發送命令字,命令字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入到DS1302中;位6為0,表示存取日歷時鐘數據,為1表示存取RAM數據;位5至位1(A5~A1)表示操作單元的地址;位0(最低有效位)為0,表示要進行寫操作,為1表示進行讀操作[5]。
在命令輸入后的下一個SCLK時鐘的上升沿時,數據被寫入DS1302,同樣,在命令輸入后的下一個SCLK脈沖的下降沿,讀出DS1302的數據,讀寫數據都是從最低位到最高位。
語音模塊設置從00地址處錄音,則按以下時序:發POWER UP命令,等待TPUD(上電延時);發POWER UP命令,等待2倍TPUD;發地址值為00的SETREC命令;發REC命令。器件便從00地址開始錄音,一直到出現OVF(存貯器末尾)時,錄音停止。
從00地址處放音,應遵循如下時序:發POWER UP命令,等待TPUD(上電延時);發地址值為00的SETPLAY命令;發PLAY命令。器件會從00地址開始放音,當出現EOM時,立即中斷,停止放音[6]。語音模塊錄放音流程圖如圖7所示。
GSM模塊初始化程序,他包含了單片機串行口的初始化、控制TC35i模塊開機、檢測整機工作狀態等工作;撥打電話子程序的作用是當用戶不在語音提醒器旁時,立即調用撥打電話子程序,用于實現遠程語音提醒功能。GSM模塊語音提醒流程圖如圖8所示。
三、結語
本設計最大的創新點在于使用了語音模塊,使用戶可以錄入和接收到語音提醒,較以往傳統的文字提醒更為方便直觀。紅外遙控作為系統的控制部分,可以提高系統的操控性。同時還將GSM技術融入到設計中,打破了以往提醒系統的提醒范圍的局限性,即使不在語音提醒器的附近,一樣可以通過手機等接收到語音提醒,極大地提高了提醒系統的實用性和可靠性。