天天看點

公交語音播報調試第三天

任務書

公交報站器由控制子產品STC89C52單片機作為控制核心,硬體電路分為12864液晶屏、ISD1730語音晶片、溫濕度傳感器和紅外傳感器等子產品。該系統的功能是:首先可以通過八個按鍵實作“上行報站”、“下行報站”、“語音重播”、“報站器複位”四個功能以及完成時鐘參數設定等功能,其次可以實作站點資訊語音組合播報和溫濕度檢測及相應提示;最後可以通過紅外傳感器自動感應公共汽車是否到達站台,檢測到站台後,自動觸發報站器語音播報站點資訊,和提示語資訊。

開發思路:

這個系統的設計需要完成硬體平台和軟體平台的搭建,主要的一個特點是涉及的外設比較多,是以對于程式部分的邏輯設計顯得尤其重要,另外使用的51單片機,是以性能不一定夠用,而且其内部的資源也确實少的可以,

硬體平台:

根據題目的要求,我打算采用以核心闆為中心,分别通過外部引線的方式,将不同的子產品進行連接配接,實作這個系統的功能,也就是最後會将各個子產品用杜邦線的形式進行連接配接,因為考慮到任務的時間太短,不能最更高程度的內建化處理,是以打算采用子產品化設計。而不是這個做一個內建化的實物。

note:初步的設想是有兩個比較重大的節點,如果程式調試進展順利,在時間允許的條件下,我會選擇使用PCB做一個底闆,将所有的子產品放在一個闆子上;但是如果程式調試不順利,那我我會把時間更多的配置設定到功能的實作上,而不是做系統的美化處理。

需要購置的子產品:

  • Stc89c52核心闆:

    擔心内部資源不夠使用,時序滿足不了外設的執行過程,進而影響系統的實時性。提到這個實時性響應,一般提升系統實時性響應的方式有如下三種:

    • 最簡單粗暴的方式,直接更換高性能的CPU,愛玩遊戲的同學不都是這麼搞的嘛
    • 在程式中加入中斷,将一些關鍵性的操作,放在中斷中完成,但是也不能在中斷中持續操作,因為有可能會因為操作時間過長,而幹擾下一次的中斷觸發。
    • 第三種方式是主動降低系統中不需要時時響應的部分,降低程式的重新整理率。比如:OLED螢幕中長時間不變的部分,溫濕度采集的數值,GPS的信号等,均可以降低到一分鐘重新整理一次的速度。

      note:如何降低重新整理率呢,這個非常簡單,就是在程式中加入一個标志位,在執行以前,先判斷标志位是否達到了設定的值,達到後,才開始執行程式,這個标志位也可以了解為知道目前整個系統已經執行了多少次。

公交語音播報調試第三天
  • Oled顯示屏: iic接口(2個)

    對于這個模組,可以通過對漢字的取模,來實作對對漢字的顯示。

  • 矩陣按鍵子產品:實作掃描顯示(占用的引腳數目至少是8個)

    這個子產品特别占用引腳數目,單純不走協定的話,對于4*4的引腳,需要至少8個引腳,來完成電平信号的識别,需要自己對采集的資料進行編碼,才可以完成按鍵鍵值的确定。(家裡有)

  • rtc時鐘子產品:iic接口(2個)

    根據剛才查閱的資料可以知道,它需要注意的就是對于任務書中的星期的處理。剩下的也都還是可以的。(家裡沒有)

  • ds18b20: spi接口(2個)

    這個算是一個可選的方案,對于比較老套設計方案,或者目前的單片機開發闆上都是闆載的資源。通過一個spi接口,需要兩個引腳接口來完成對于資料的采集。(家裡也有)

  • 溫濕度子產品:iic接口(內建化的一個溫濕度采集模組)(2個)

    這是我第一次發現的子產品,可以一次性完成濕度和溫度的資料采集,需要調研的就是對于資料的采集和處理過程。(家裡沒有)

  • 語音播放子產品:序列槽接口(2個)

    經過調研,已經知道這個子產品使用的文字轉語音模組,可以通過序列槽将需要說的文字,轉化為語音播報。(家裡也有)

  • 紅外傳感子產品:(1個)

    需要占用一個引腳,當檢測到外部的障礙物後,發送一個高電平,是以需要配置一個引腳作為外部輸入檢測。(考慮使用外部中斷引腳)來提升系統的響應速度。(家裡有)

系統框圖

公交語音播報調試第三天

器件選型

  • 紅外子產品:正常的子產品 資料有 一個普通IO
  • OLED顯示屏:帶有IIC接口的子產品 (手頭沒有) 資料有 IIC接口
  • 4*4矩陣鍵盤:普通的4乘4矩陣鍵盤 資料有 八個普通IO
  • RTC時鐘:PCF8563T帶有IIC接口 (手頭沒有) 資料有 IIC接口
  • 語音播報子產品:中文TTS文字轉語音子產品 (這個是重點啊。。) 資料有 序列槽接口
  • 溫濕度采集子產品:GY-SHT30-D帶IIC接口的子產品 (手頭沒有) 資料有 IIC接口
  • 電源模組:帶有至少5路以上的3.3V和5V的電源子產品 (手頭有一個,再買一個備用)

經過反複的更正和設想,暫時性完成硬體的選型和設計規劃,對于資料也已經收集的很多了。感謝普中的前期工作:

普中開發闆

軟體調試

開發環境:

  • keil4軟體
  • 序列槽調試助手

軟體設計思路:

分子產品單獨進行子產品的調試,一方面是驗證子產品的功能性,另一方面是是按照任務書的要求,對子產品的獨立程式進行探索性開發,預期是達到和任務書的資料接口類型相一緻的設計目标。具體的執行計劃如下安排:

1)第一步先基于單片機開發闆完成初步的功能驗證,尋找最優布局和合理的程式架構,因為用開發闆,初期不用兼顧硬體的接觸不良這個問題。在程式設計中,優先調試邏輯部分,通過序列槽列印輸出需要顯示的内容,然後才是通過外設進行脫機處理,比如顯示屏顯示啊,語音播報等。

(1)序列槽通信(語音播報)

目前已經可以成功發送字元串了。

公交語音播報調試第三天

51單片機實作字元串的列印輸出,在程式實作上是在考驗對于C語言中對于字元串操作的部分的了解和掌握。因為序列槽每次隻能發送一個位元組(按照編碼,一個漢字是采用兩個位元組進行編碼),是以需要先定義一個字元串數組,然後進行發送,需要注意的一點是,字元串的結束标志是‘\0’,當發送函數檢測到結束符時,則結束發送。

公交語音播報調試第三天

按照任務書的要求,可以通過定義不同的字元串,進而實作不同的語音播報,具體在程式中則是通過發送不同的字元串,來實作不同的語音播報。

語音資訊的資料類型:

  • 起步階段
    • 車輛起步請扶好站好注意安全
    • 請主動給老弱病殘讓座
  • 到站階段
    • 站點資訊+到了
    • 請依次從後門下車下車請注意安全

      note:站點資訊包括8個站點,打算用ABCDEFGH +站代替。

  • 突發狀況
    • 目前溫度過高請注意防暑降溫

(2)矩陣鍵盤

公交語音播報調試第三天

上圖是矩陣鍵盤的原理圖,在程式中,先進行列掃描,設定鍵值為0~3,然後再進行行掃描,發現每一行的加4.進而通過确定列和行,得到最終的鍵值。然後根據鍵值的不同,實作不同的功能。比如任務書中的上下行切換,重複播報,初始化。

在程式中加入按鍵釋放功能,其意義是确定隻有當按鍵釋放後,程式才接着往後執行。

目前總共有16個按鍵,根據任務書的要求,對不同的鍵值的功能配置設定如下:

  • 鍵值0

    主要是實作站點資訊的上行播報功能

  • 鍵值1

    主要是實作站點資訊的下行播報功能

  • 鍵值2

    主要是目前站點資訊語音的重複播報

  • 鍵值3

    主要是實作對站點資訊的複位,暫定從初始位置開始播報語音

  • 鍵值4

    實作時鐘顯示中對年的加操作

  • 鍵值5

    實作時鐘顯示中對年的減操作

  • 鍵值6

    實作時鐘顯示中對月的加操作

  • 鍵值7

    實作時鐘顯示中對月的減操作

  • 鍵值8

    實作時鐘顯示中對日的加操作

  • 鍵值9

    實作時鐘顯示中對日的減操作

  • 鍵值10

    實作時鐘顯示中對小時的加操作

  • 鍵值11

    實作時鐘顯示中對小時的減操作

  • 鍵值12

    實作時鐘顯示中對分鐘的加操作

  • 鍵值13

    實作時鐘顯示中對分鐘的減操作

  • 鍵值14

    實作時鐘顯示中對秒的加操作

  • 鍵值15

    實作時鐘顯示中對秒的減操作

(3)紅外子產品

紅外線遙控就是利用波長為0.76~1.5μm之間的近紅外線來傳送控制信号的。目前大量的使用的紅外發光二極管發出的紅外線波長為940nm左右,外形與普通φ5發光二極管相同。

公交語音播報調試第三天

常用的有通過脈沖寬度來實作信号調制的脈寬調制(PWM)和通過脈沖串之間的時間間隔來實作信号調制的脈時調制(PPM)兩種方法。

公交語音播報調試第三天

數字量電平信号輸出(白線高電平,黑線低電平)

(4)RTC子產品

(5)OLED 螢幕

對于顯示内容的分析,重點包括三種資訊的顯示:

  • 時鐘資訊,标準的的顯示格式:2017年2月23日 星期4 08:45:10

    note:注意對于星期的顯示需要用一個算法進行實作,判斷出初始當天的星期幾,然後計算和目前相距的天數,把天數對7取餘,将餘數和初始的星期相加,即為目前的星期,然後将星期顯示到OLED上。

  • 站點資訊的提示,即目前所處的站點資訊
  • 語音提示的流動顯示

    因為螢幕太小,而顯示的内容過多,是以需要将資訊利用流動的形式顯示到OLED螢幕上。

  • 目前的溫度和濕度資訊

    由于采用的的是一體化的子產品,是以溫濕度可以放在螢幕中的一個固定位置。

為了提升系統的實時性,需要對于不用長時間顯示的内容,降低重新整理率,比如溫濕度,年月日,星期,站點辨別符(station),隻需要初始化的時候,将這些資訊更新到螢幕上即可。

(6)溫濕度子產品

2)第二步是進行脫機程式的調試,考慮程式能否在既定的程式架構中完成運作。如果不可以,則需要考慮調整系統的響應速度,提升系統的實時性;或者更改系統的執行次序。

3)第三步是将調試完成的系統,從單片機上轉移到核心闆上,進行最終的産品包裝。

note:考慮到産品的目的地需要經過快遞這個流程,是以保險起見,我想将調試完成的裝置,用兩塊15*20cm的洞洞闆和螺栓進行固定,最後用膠帶将四周完全密封。隻留出需要互動的界面即可。

繼續閱讀