「撲滿」相信是許多人不可磨滅的兒時記憶之一,尤其是剖開豬公那一剎那間的成就與喜悅更是無法以筆墨形容!科技的進步日新月異,然而反觀現今的撲滿,除了造型與材質上的變更之外,在功能上似乎並未跟上科技脈動的腳步!因此,本文期望藉由微控制器的運用,增加傳統撲滿的功能,以提昇其附加價值,讓撲滿儲蓄變得更加生動有趣、儲蓄的金錢更易於管理。
就目前市面上常見的撲滿而言,其主要的缺點有:
- ●無法統計金額:使用者無法掌握目前所儲蓄的金額狀況,因此無法妥善、有效的運用儲蓄的金錢。
- ●附加功能太少:一般的撲滿只有存錢的功能,太單調。使用起來相當的無趣,導致儲蓄的念頭大大的降低。
- ●缺乏互動性:缺乏與使用者之間的互動;若能讓『撲滿儲蓄』變得更加生動有趣,相信必能激起使用者更高的儲蓄意願。
針對上述之缺點進行改善,設計出能統計金額、有良好互動性及高附加價值的存錢系統-多功能智慧型語音撲滿,讓使用者能清楚的了解當前儲蓄的狀況。本文以LCD為顯示裝置,將目前儲蓄的金額顯示出來,讓使用者能隨時掌握儲蓄狀況。為增加使用者儲蓄的興趣,因此提供了能讓使用者設定存錢目標的功能,讓存錢目標顯示在LCD上提醒使用者。此外,也加上時鐘與鬧鐘及重要事件提示的選項,以增加撲滿的附加功能,讓撲滿使用起來更加的實用、有趣。在互動性方面,也加入語音功能,使用語音來告知使用者目前的儲蓄金額、投入金額、與預設目標金額差距等儲蓄的狀況。另外,還提供整點報時、鬧鈴及語音提示重要事件,縮短撲滿與使用者之距離。最後,還特別為學齡前的小朋友設計了一套字卡教學系統,讓小朋友可以多認識一些單字、圖形等,使撲滿擁有更豐富、有趣的功能,提高幼童的儲蓄意願、養成儲蓄的良好習慣。
功能概述
本作品功能規劃,可分為以下幾個部份:
- ●撲滿功能:統計目前所存金額並顯示在LCD上、預設存錢目標並以語音告知目前所存金額與存錢目標金額的差距,此外在投入硬幣時會以語音報出投入金額、目前所存金額,在達到預設之存錢目標時也會以語音告知使用者。
- ●鬧鐘功能:時間顯示、時間設定、整點報時,可設定不同的語音提示方式。
- ●字卡學習功能:插入字卡或圖卡後,以語音方式唸出字卡上的單字或圖案名稱。
- ●資料的保存:透過I2C介面將儲蓄狀況儲存在E2PROM中,即使電源關閉後資料也不會消失,在系統重新啟動後會自動載入儲蓄金額、使用者之相關設定等等。
本設計的特色在於改善市面上撲滿功能過於單調的缺點,所以將各種不同的功能整合在一個撲滿上。以LCD顯示出目前所存金額、時間及功能選單,能讓使用者清楚的知道目前儲蓄的狀況,而進一步對自己的財務作最佳的運用與規劃。再加上鬧鐘功能及創新的字卡學習系統,提升原本只有單一用途的撲滿之功能與實用性,這些都是目前市面上相關產品所沒有的功能。
系統架構與工作原理
(圖一)為本設計之系統方塊圖,以HT46R24做為整個系統的控制樞紐再搭配上相關的週邊硬體,茲將各個單元分別敘述如下:
- ●MCU:以HT46R24微控制器為系統之核心,其內部除了RAM(384×8Bits)、ROM(8192×16)、Timer/Event Counter等一般微控制器的基本配備之外,尚提供PWM、ADC等周邊資源;本設計的卡片圖案偵測就是利用ADC搭配簡單的分壓電路完成的;此外,有關時鐘計時的功能、投幣器投幣時的立即反應以及用以判定幣值的脈波寬度的統計工作,則是由其Timer/Event Counter與外部中斷(External Interrupt)搭配完成。
- ●LCD:為了搭配中文的語音輸出及儲存金額、時間等相關資訊的顯示,採用中文LCD模組做為顯示裝置;其控制方式與一般文字型的LCD類似,所以關於其原理部分不再於此贅述,僅提醒讀者相當重要的注意事項:本設計採用9×2的中文顯示型LCD(編號:P-14B32CT),此液晶顯示器共有兩行,每行可以顯示九個中文字型(或十八個英文字型),其顯示位置與DD RAM位址之對應關係如(表一)所示:
表一 9×2中文顯示型LCD顯示位置與DD RAM位址之對應關係
|
0
|
1
|
2
|
…
|
7
|
8
|
顯示位置
|
第一行 |
00h |
01h |
02h |
… |
07h |
08h |
DD RAM位址 |
第二行 |
10h |
11h |
12h |
… |
17h |
15h |
DD RAM位址 |
請注意第一行最後一個位置(08h)與第二行第零個位置(10h)的DD RAM位址並不連續。而每一個位置可以顯示一個中文字型或是兩個英文字型,這表示在中文顯示型LCD上,一個DD RAM位址是可以存放兩個Byte的資料;當顯示中文時,只需將中文的BIG-5碼(2 Bytes)分成兩次寫至LCD之DD RAM即可;而顯示英文時,則與一般LCD之控制方式相同。不過要注意在寫入中文時,要確定寫入的BIG-5碼一定要在同一個DD RAM位址內。
●Push-Button Input:提供四個按鈕開關做為輸入控制,讓使用者進行時間、鬧鈴、儲蓄目標等功能設定,因為使用HT46R24微控制器Port D的Pull-High功能,所以就不需額外再連接提昇電阻。
●Coin Detector:錢幣幣別辨識裝置,採用一般自動販賣機所使用的投幣器,可分辨自行設定的數種幣別,設定有50元、20元、10元、5元及1元等五種不同的硬幣,根據不同的幣值投幣器會送出不同的脈衝訊號,此訊號數入至HT46R24後再經由程式的分析,即可分辨出所投入的幣值。
●E2PROM:資料儲存裝置,為避免停電導致目前累計金額、目標金額、鬧鈴時間等資料消失,採用I2C介面之HT24LC16 E2PROM來儲存使用者的相關設定以及系統內之重要資訊。
●Card Detector:字卡(或圖卡)辨識裝置,此裝置主要是以分壓的觀念搭配HT46R24微控制器內建的類比-數位轉換電路(ADC)來達成。HT46R24配備高達10Bit解析度(Resolution)的ADC,理論上一個通道的輸入就可以辨識1024張不同的圖卡;但是,因為所需的分壓阻值不易尋找,因此目前只使用了6Bit辨識64張不同的圖卡。如果卡片的數目要增加,尚可利用其他ADC通道來達成,若以兩個通道各取6Bit搭配為例,就可以分辨出4096張不同的圖卡。
●Text-To-Speech:採用中文Text-To-Speech IC-SD178A作為發聲的音源;SD178A的內部系統結構如(圖二)所示,其主要特色如下:
- (a)單晶片解決方案:只要單一晶片即可轉換Big-5中文碼定義所有文字(約一千三百字)為中文語音、ASCII字符的大小寫英文字母a-z、A-Z(共52字)轉為英語語音、及數字0~9的中文語音輸出。
- (b)單一系統時脈,採用RC振盪方式:SD178A的系統時脈來源是採用最經濟的RC振盪方式,除了在OSC1和GND間必需連接一電阻(Rosc)外,不需要其它元件。Rosc的建議值是100KΩ,此時其系統頻率可望為4MHz,當系統時脈頻率為4MHz 時,SD178A會有最佳的工作性能。
- (c)內建12位元高品質D/A轉換器:可發揮12位元高品質D/A轉換器提供真人錄音的音質,只要再配合一外部放大電路即可推動8Ω的喇叭。
- (d)省電模式及喚醒功能,減少電源耗損:SD178A不只提供命令碼讓其進入省電模式,另外還提供PWDN這根接腳,讓連接於SD178A的元件也可於SD178A進入待機狀態的同時關閉其動作。進入省電模式時,SD178A會關閉系統振盪器,只要外部重新啟動或內部負緣訊號即可喚醒。
表二 SD178A命令碼
命令碼 |
功能 |
0x80(停止) |
停止撥放,並將所有參數重新設定為初始設定值 |
0x81(暫停) |
暫停撥放,之後SD178A僅接受 0x80和0x82的命令碼 |
0x82(繼續) |
繼續SD178A停止前的下一個動作 |
0x83 |
增加音節間靜音的時間長度,增加S_STEP |
0x84 |
減少音節間靜音的時間長度,減少S_STEP |
0x85 |
增加標點符號靜音的時間長度,增加P_STEP |
0x86 |
減少標點符號靜音的時間長度,減少P_STEP |
0x8A |
後接8位元資料,b7, b6, …, b0,b7~b0分別送至PA7~PA0 |
0x8B |
後接8位元資料,b7, b6, …, b0,b5~b0分別送至PC5~PC0 |
0x8C |
設定SD178A進入省電模式 |
- (e)提供命令碼:停止、暫停、繼續、增減音節間靜音長度、增減符號靜音長度、省電模式設定、輸出接腳控制等功能,讓使用者在文字轉語音執行中可輕易操作控制。(表二)為SD178A所提供之命令,所有的命令或資料傳送都是由/SCLK(Serial Clock)與SDI(Serial Data Input)兩支接腳控制完成。當然,在開始傳送之前必須先確認SD178A的/RDY(Ready)已處於「Low」狀態,否則將無法完成正確之傳輸動作。而當SD178A每處理完一筆資料或命令時,會由/FOCC腳送出一個「Low」的脈衝,使用者也可藉由此一信號瞭解目前SD178A處理的進度。這幾支控制腳位之時序關係,如(圖三)所示。
程式流程電路原理
投幣器(Coin Detector)會依據投入錢幣幣值的不同,在Pulse Out端輸出不同寬度與不同個數的脈波。為了能即時反應使用者投幣的動作,故運用HT46R24的中斷功能來偵測脈波,並以Timer計算其寬度再搭配上內部程式統計脈波總數量,如此就完成了單一投幣事件的幣值判斷。卡片座(Card Socket)是提供字卡(或圖卡)的插入,每張卡都配有不同的電阻值,因此在AN0就會產生不同的壓降,經由HT46R24的ADC轉換之後再由預先建好的對照表即可測知使用者所插入的卡片,最後再控制SD178A唸出對應的名稱。按鍵輸入主要是提供使用者設定存錢目標、系統時間、鬧鈴時間以及鬧鈴提醒語等,搭配LCD的顯示,使用者只要按左(Key Left)、右(Key Right)、離開(Exit)、確認(Enter)等按鍵即可完成各項設定。
現代人工作壓力大、事務繁瑣,有時鬧鐘響了卻忘記該做什麼事,鬧鈴提醒語設計之主要目的,就是希望當時間到時可以用語音的方式提醒使用者該做的事。在設計之初也曾思考提供使用者自行錄音的方式,不過由於錄放音IC的價格不斐,再加上字卡、圖卡多種語音內容的需求,最後選擇便宜、實用的SD178A TTS IC。此外為了避免斷電時造成儲蓄總金額資料的遺失,在電路中也加上了HT24LC16 E2PROM作為停電時資料保存之用,HT24LC16的容量為2K×8Bit,實際上大約只用了256Byte,但若基於成本因素的考量,可以替換為容量較小的E2PROM。
結語
本產品設計的主要目的是想改善傳統撲滿的缺點,希望透過增加撲滿的功能、方便使用的人機介面以及互動式的語音輸出,來提高使用者儲蓄的念頭,讓使用者可以養成良好的儲蓄習慣並加強對金錢的控管能力。另外,專門為幼童設計的字卡學習功能,讓小朋友可以從小培養儲蓄的習慣,並進行一些學齡前的基礎學習。對父母而言,撲滿不再只是個培養小朋友儲蓄習慣的玩具,多功能智慧型語音撲滿同時也是提供幼童進行基礎學習的工具。(作者就讀於明新科技大學電子工程系;本文由盛群半導體提供)
<參考資料:
[1]「HT46xx微控制器理論與實務寶典」鍾啟仁 編著,全華圖書
[2]SD178A Datasheet翔音科技股份有限公司 www.sounding.com.tw
[3]HT46x24 Datasheet 盛群半導體股份有限公司 www.holtek.com.tw>