張保新,黃閩華
(廣東嶺南職業(yè)技術(shù)學(xué)院,廣東廣州,510663)
隨著電子信息化與各行各業(yè)的不斷融合,特別是物聯(lián)網(wǎng)應(yīng)用不斷深入,對(duì)掌握嵌入式、通信、信息處理等廣泛綜合知識(shí)和技能人才的需求快速增加。但相關(guān)領(lǐng)域的人才培養(yǎng)所需要的教學(xué)與創(chuàng)新實(shí)踐條件卻無法跟上快速發(fā)展的步伐,現(xiàn)有教學(xué)平臺(tái)及環(huán)境,過于程式化、缺少靈活性和適應(yīng)性,民辦院校中問題尤為突顯。如何利用現(xiàn)有的主流設(shè)備、器件、開發(fā)手段,綜合設(shè)計(jì)開發(fā)出針對(duì)性強(qiáng)、靈活性好、便于獲得的物聯(lián)網(wǎng)綜合實(shí)驗(yàn)平臺(tái),成為迫切需要?;诖?,通過大量實(shí)踐活動(dòng)及綜合分析,設(shè)計(jì)開發(fā)了本平臺(tái)。該平臺(tái)(也可以看成是一種理念平臺(tái))可以由最基本的部分搭建,隨著學(xué)生的知識(shí)不斷豐富,該平臺(tái)也可以進(jìn)行擴(kuò)展。通過購(gòu)買各種元件、組件來構(gòu)建本平臺(tái),從最底層開始,鍛煉學(xué)生的自主解決問題的能力。與物聯(lián)網(wǎng)應(yīng)用技術(shù)相關(guān)的三層體系中,該平臺(tái)可用于嵌入式系統(tǒng)的學(xué)習(xí)開發(fā)、傳感器的使用、執(zhí)行機(jī)構(gòu)的控制、通信的建立、應(yīng)用軟件開發(fā)設(shè)計(jì)等多個(gè)方面的教學(xué)與創(chuàng)新活動(dòng)。本平臺(tái)與常見的多功能試驗(yàn)箱相比,更側(cè)重于實(shí)踐性、創(chuàng)新性及易獲得性。
本平臺(tái)的機(jī)械結(jié)構(gòu)基于四驅(qū)小車套件構(gòu)建,通過控制兩組(左、右各一組)減速直流電機(jī),實(shí)現(xiàn)平臺(tái)的移動(dòng)性,包括前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、駐車等運(yùn)動(dòng)狀態(tài),速度可調(diào)。這些工作,受控于通過藍(lán)牙通道無線連接的,位于移動(dòng)智能終端(遙控器)上的APP。移動(dòng)平臺(tái)的運(yùn)動(dòng)狀態(tài)和溫度(或其它類型)數(shù)據(jù),顯示在信息顯示模塊的同時(shí),也可以通過藍(lán)牙無線通道,傳遞給APP顯示。由于直流電機(jī)驅(qū)動(dòng)和主要邏輯電路所需的電壓、電流均不同,本平臺(tái)使用由三只鋰電池構(gòu)成的電池組,經(jīng)電源適配模塊處理后分別供電。其總體邏輯框圖如圖1所示。
圖1 移動(dòng)平臺(tái)總體邏輯框圖
下述的硬件設(shè)計(jì)過程中,不包括信息顯示、傳感器、電池適配模塊。這些基礎(chǔ)性和通用性強(qiáng)的模塊設(shè)計(jì),可參考通用資料。
基于STC89C52(替代AT89C52)型號(hào)單片機(jī)設(shè)計(jì)。該單片機(jī)具有片內(nèi)Flash存儲(chǔ)器,用于程序及數(shù)據(jù)表格的存儲(chǔ),可通過在線編程(ISP)實(shí)現(xiàn)了程序下載及運(yùn)行,方便單片機(jī)硬件的開發(fā)調(diào)試,使環(huán)境擁有門檻降低。使用包括時(shí)鐘電路、復(fù)位電路的STC89C51的最小系統(tǒng)+CH340芯片構(gòu)成的USB-TTL接口,可以滿足本系統(tǒng)要求。為方便裝配,盡可能將P0~P3端口通過接插件輸出。可增加通過P0口+P2口構(gòu)建的LCD并行驅(qū)動(dòng)接口。如圖2所示。
圖2 控制中心電路
USB-TTL(UART/CH340)接口電路,除了具備程序下載、調(diào)試功能外,還可以用作為供電接口,電源參數(shù)為:電壓+5V,電流: 不小于500mA。 單片機(jī)資源的分配參見各分模塊設(shè)計(jì)說明。
由四驅(qū)小車機(jī)械套件構(gòu)建移動(dòng)平臺(tái)。為了簡(jiǎn)化設(shè)計(jì),采用電機(jī)獨(dú)立驅(qū)動(dòng)、同側(cè)同步運(yùn)行的設(shè)計(jì)方案。通過L298專用驅(qū)動(dòng)芯片將單片機(jī)的驅(qū)動(dòng)命令轉(zhuǎn)換成高壓、大電流驅(qū)動(dòng)信號(hào),控制直流電機(jī)按需運(yùn)轉(zhuǎn),具體電路連接如圖3所示。通過IN1~I(xiàn)N2,IN3~I(xiàn)N4的控制信號(hào)的不同組合,經(jīng)L298通過差分驅(qū)動(dòng)電機(jī)正轉(zhuǎn)、停止、反轉(zhuǎn),實(shí)現(xiàn)移動(dòng)平臺(tái)的停止、前進(jìn)、倒退、左轉(zhuǎn)、右轉(zhuǎn)等行為狀態(tài);電機(jī)速度調(diào)控電路參見圖3中的enx信號(hào),該信號(hào)使用PWM脈寬調(diào)制格式,信號(hào)的周期采用500Hz。通過改變PWM的占空比,經(jīng)過L298的使能端ENA、ENB對(duì)電機(jī)提供不同的電能,達(dá)到調(diào)速的目的。L298正常工作需要+5V和+12V電源,分別給邏輯電路及驅(qū)動(dòng)電路供電,驅(qū)動(dòng)電路的瞬時(shí)電流可達(dá)3A,確保了電機(jī)具備良好工作性能。
受AppInventor2(簡(jiǎn)稱AI2)軟件開發(fā)工具限制,選用2.0版的藍(lán)牙模塊進(jìn)行設(shè)計(jì)。這些模塊出廠時(shí)缺省設(shè)置為直連模式,只需將單片機(jī)的UART接口按需設(shè)置,即可實(shí)現(xiàn)藍(lán)牙通信。設(shè)計(jì)過程中,要注意接口電平之間的匹配(TTL 5V<-->LVTTL3.3V),具體設(shè)計(jì)如圖3所示。
圖3 直流電機(jī)驅(qū)動(dòng)及藍(lán)牙模塊連接電路
使用KeiluVision+C51軟件工具編寫由多文件(模塊)構(gòu)成的嵌入式程序。
3.1.1 主程序設(shè)計(jì)
在初始化部分,定義了結(jié)構(gòu)類型Car、對(duì)應(yīng)的變量(smartCar)及指針(pCar),用于表示平臺(tái)運(yùn)動(dòng)部分?jǐn)?shù)字模型,參考程序如下:
嵌入程序?qū)@該變量展開設(shè)計(jì)。主流程圖如圖4所示。
圖4 嵌入式主程序流程圖
3.1.2 200μs定時(shí)中斷及驅(qū)動(dòng)函數(shù)程序設(shè)計(jì)
基于51單片機(jī)定時(shí)器1實(shí)現(xiàn)。自動(dòng)裝載為200μs的周期性定時(shí),在計(jì)數(shù)溢出時(shí)發(fā)出中斷申請(qǐng);對(duì)應(yīng)的中斷處理程序完成時(shí)基的累積(為系統(tǒng)提供節(jié)拍器)及調(diào)用平臺(tái)驅(qū)動(dòng)函數(shù),根據(jù)smartCar參數(shù)(如收到的操作指令)來改變平臺(tái)的運(yùn)動(dòng)狀態(tài)。Timer1中斷處理流程圖參看圖5,關(guān)鍵程序參考如下:
圖5 Timer1中斷處理流程圖
3.1.3 串口通信程序設(shè)計(jì)
使用藍(lán)牙模塊出廠默認(rèn)設(shè)置(直連模式);在通信連接之前,需要事先完成藍(lán)牙設(shè)備之間的配對(duì)工作。所有對(duì)通信口的編程工作,均僅對(duì)單片機(jī)UATR接口展開,共包括三部分:其一:初始化,將串口按9600-8-N-1的格式設(shè)置;其二:數(shù)據(jù)發(fā)送部分,由于其實(shí)時(shí)性要求不高,使用查詢方式進(jìn)行;數(shù)據(jù)接收部分:移動(dòng)平臺(tái)的實(shí)時(shí)性,在本平臺(tái)中具有最高級(jí)別,因此采用中斷方式進(jìn)行處理,并對(duì)smartCar變量進(jìn)行賦值。其三:數(shù)據(jù)格式設(shè)計(jì),由于來自APP的指令比均由單byte數(shù)據(jù)組成(單ASCII字符),加之藍(lán)牙通信的特點(diǎn),數(shù)據(jù)接收部分,未做特殊處理;發(fā)送信息由字符型數(shù)組構(gòu)成,長(zhǎng)度為18,具體信息如圖6所示。
圖6 發(fā)送數(shù)據(jù)幀結(jié)構(gòu)
3.1.4 傳感器相關(guān)程序設(shè)計(jì)
BS18B20傳感器采用1wire的接口方式,其初始化過程和數(shù)據(jù)采集讀取去方式采用常規(guī)方式即可。這里需要注意兩點(diǎn):其一是時(shí)隙配置問題。使用軟件來模擬來1wire接口,通過軟定時(shí)加上適當(dāng)?shù)膮?shù)配置可較好滿足要求。其二是數(shù)據(jù)處理的問題,下面程序可作為參考:先將兩個(gè)8bits數(shù)據(jù)合成為有符號(hào)的int型數(shù)據(jù),再乘以加權(quán)值“0.0625”。
這種算法適用于12bits溫度數(shù)據(jù)格式,此時(shí)的采樣間隔最好大于1秒。
移動(dòng)平臺(tái)的遙控及數(shù)據(jù)顯示APP,使用圖形化的AI2編程工具設(shè)計(jì)開發(fā)完成。非常適合非軟件專業(yè)的人員快速開發(fā)特有移動(dòng)應(yīng)用APP。
使用ProteusEDA工具繪制主要功能電路圖(51系列),如圖7所示。
圖7 平臺(tái)主要功能仿真電路
示波器(T2)用于電路工作波形觀察;虛擬終端(T1)可用于仿真串口通信,RS232仿真器件(P1)可實(shí)現(xiàn)與PC機(jī)物理串口連接,實(shí)現(xiàn)虛擬與現(xiàn)實(shí)相結(jié)合,再配合“串口助手”等工具,可以完成與通信相關(guān)的功能測(cè)試及故障定位。
通過獨(dú)立的藍(lán)牙模塊+串口助手,直接觀察各種收發(fā)數(shù)據(jù)傳遞的過及其正確性。
模塊裝配布局優(yōu)先考慮平臺(tái)移動(dòng)時(shí)的穩(wěn)定性、方便安裝維護(hù)及美感。如電池組盡量放置在移動(dòng)平臺(tái)的幾何重心上、兩塊帶有散熱片的L298組件放置在平臺(tái)頭部,LCD顯示器放置在尾部等布局,藍(lán)牙模塊的天線部分不要被遮擋。使用杜邦線按設(shè)計(jì)圖連接各模塊,通過熱熔膠對(duì)各模塊進(jìn)行固定。實(shí)物圖如圖8所示。
圖8 移動(dòng)平臺(tái)實(shí)物圖(右側(cè) APP界面)
實(shí)際電路與仿真電路存在著一定差別,實(shí)物參數(shù)的離散性,可能導(dǎo)致各模塊之間的配合失當(dāng),這主要是程序運(yùn)行時(shí)間分配不合理造成的。通過適當(dāng)調(diào)整定時(shí)器、中斷選則及處理、時(shí)延函數(shù)的偏差等方式,來滿足各模塊實(shí)時(shí)性要求,直至全部模塊能夠正常穩(wěn)定工作。
由于51單片機(jī)的資源限制,增加過多功能,可導(dǎo)致系統(tǒng)設(shè)計(jì)失敗。如需要可更換性能更強(qiáng)的單片機(jī)做控制中心(如增強(qiáng)型51系列、arduino系列、Cortex-Mx系列、RISC-V系列等);也可以增加通信和應(yīng)用處理能力(如WIFI+中移物網(wǎng)OneNet/阿里云Iot等),以適應(yīng)更廣的需求。
本平臺(tái)還何以用于產(chǎn)品安裝工藝的訓(xùn)練。一個(gè)良好的產(chǎn)品,沒有必要的生產(chǎn)安裝工藝作保障,是達(dá)不到預(yù)期目的的。貼近產(chǎn)品開發(fā)設(shè)計(jì)的實(shí)戰(zhàn)過程,也是初衷之一。