劉靜波,蘇格諾,劉燁楠
(南京工程學(xué)院 信息與通信工程學(xué)院,江蘇 南京 211167)
電子信息工程專業(yè)綜合訓(xùn)練是重要的實(shí)踐性教學(xué)環(huán)節(jié),是對(duì)學(xué)生進(jìn)行專業(yè)基礎(chǔ)訓(xùn)練,培養(yǎng)實(shí)踐動(dòng)手能力,掌握分析問題、解決問題能力的重要課程。在訓(xùn)練過程中,學(xué)生以團(tuán)隊(duì)合作形式,形成分工協(xié)作、互相討論、相互促進(jìn)的氛圍[1],能夠?qū)⑺鶎W(xué)知識(shí)正確應(yīng)用到綜合訓(xùn)練中,實(shí)現(xiàn)綜合訓(xùn)練課題提出的要求和功能,達(dá)到學(xué)以致用的教學(xué)目的,提升學(xué)生工程實(shí)踐能力和創(chuàng)新能力[2]。
STM32是目前常用的主控芯片,具備資源豐富、高性能、高性價(jià)比特點(diǎn)[3],本文選擇STM32F103RCT6為主控單片機(jī),設(shè)計(jì)基于阿里云的遠(yuǎn)程數(shù)據(jù)采集與控制系統(tǒng),作為綜合訓(xùn)練的教學(xué)案例。通過該案例,把STM32相關(guān)知識(shí)點(diǎn)和傳感器技術(shù)等貫穿其中;同時(shí)將STM32終端設(shè)備與物聯(lián)網(wǎng)平臺(tái)結(jié)合,實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸與控制。相比于以往單一功能訓(xùn)練課題,該案例具備較強(qiáng)的綜合應(yīng)用特點(diǎn),對(duì)提高學(xué)生的綜合應(yīng)用能力有較好的促進(jìn)作用[4]。
系統(tǒng)組成如圖1所示,STM32F103RCT6為主控單片機(jī),該芯片主頻達(dá)72 MHz,具備串口、定時(shí)器(PWM)、外中斷、SPI、DMA、AD轉(zhuǎn)換等豐富資源[5],是理想控制器。LCD顯示部分采用2.0寸8位數(shù)據(jù)并口的顯示屏,分辨率為320×240,具備分辨率高、占用單片機(jī)數(shù)據(jù)線少的優(yōu)點(diǎn)。字庫芯片作為可選擇添加系統(tǒng)的芯片,可以接在SPI1接口,用以顯示漢字,當(dāng)然也可以省略;溫濕度傳感器HDC1080、存儲(chǔ)芯片AT24C02和時(shí)鐘芯片DS3231是I2C接口,因此規(guī)劃一組IO端口作為I2C接口,程序通過不同的器件地址訪問,讀取溫濕度數(shù)據(jù)和時(shí)間信息等,云平臺(tái)下發(fā)的設(shè)置報(bào)警閾值存放于AT24C02中;遠(yuǎn)程訪問通過WiFi模塊ESP8266連接物聯(lián)網(wǎng)云平臺(tái),實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸與控制。
圖1 系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)
系統(tǒng)實(shí)現(xiàn)以下功能:終端裝置采集溫濕度數(shù)據(jù),讀取時(shí)間等參數(shù);在LCD顯示溫濕度數(shù)據(jù)、時(shí)間和閾值、狀態(tài)信息等;通過WiFi模塊連接阿里云飛燕平臺(tái)后,創(chuàng)建手機(jī)可視化頁面,接收溫濕度數(shù)據(jù)和終端裝置狀態(tài)信息;手機(jī)端可設(shè)置報(bào)警閾值,下發(fā)到終端裝置,當(dāng)測量的溫度或濕度超過閾值后,啟動(dòng)語音提示,同時(shí)控制對(duì)應(yīng)風(fēng)扇運(yùn)行,風(fēng)扇轉(zhuǎn)速根據(jù)溫濕度數(shù)據(jù)高低分不同的轉(zhuǎn)速擋位運(yùn)行。
圖2是硬件設(shè)計(jì)原理圖,硬件設(shè)計(jì)主要是綜合考慮STM32的外部資源合理分配,LCD接在PB端口,其中有8位數(shù)據(jù)線和若干控制線;WiFi模塊接入串口2,PA12控制WiFi模塊復(fù)位;PC10和PC11作為I2C接口接入時(shí)鐘DS3231、溫濕度模塊HDC1080和存儲(chǔ)芯片AT24C02;語音播報(bào)可以選擇JQ8900模塊,占用兩個(gè)IO端口控制對(duì)應(yīng)的語音播報(bào),可以自行選用未被占用的IO口,分別提示溫度和濕度報(bào)警;兩路風(fēng)扇驅(qū)動(dòng)采用L298,其中PC0、PC1和PC6控制風(fēng)扇1,PC2、PC3和PC7控制風(fēng)扇2,PC6和PC7是STM32的定時(shí)器8的PWM輸出通道CH1和CH2的控制端,用不同輸出占空比控制風(fēng)扇的轉(zhuǎn)速。SPI1接口如果接入字庫芯片,通過SPI總線訪問并讀取字庫數(shù)據(jù),取出漢字字模,方便顯示中文字符;如果系統(tǒng)中字庫芯片未采用,程序設(shè)計(jì)中可以自己取字模,顯示必要的中文信息提示。PC4端口接入DS3231的秒信號(hào),配置PC4為外中斷引腳,作為外中斷控制端,在程序中讀取數(shù)據(jù)、顯示數(shù)據(jù)和狀態(tài)信息等都在外中斷服務(wù)程序中實(shí)現(xiàn)[6],提高了主程序效率。
圖2 硬件電路設(shè)計(jì)
圖3是主流程。首先是終端裝置與服務(wù)器建立連接;當(dāng)連接成功后,完成報(bào)文訂閱并確認(rèn)訂閱是否成功。單片機(jī)每隔5 s在定時(shí)器中斷發(fā)送溫濕度數(shù)據(jù)和狀態(tài)信息,當(dāng)終端裝置接收到下發(fā)的數(shù)據(jù)或命令后,則對(duì)接收的數(shù)據(jù)或命令進(jìn)行處理。這實(shí)際上是對(duì)接收到的字符串進(jìn)行解析并提取和下發(fā)數(shù)據(jù)信息或命令關(guān)鍵字。主程序中,對(duì)測量的溫濕度數(shù)據(jù)與閾值進(jìn)行比較,當(dāng)超過設(shè)定的閾值后,則會(huì)分別進(jìn)行報(bào)警提示和啟動(dòng)對(duì)應(yīng)的風(fēng)扇運(yùn)行。當(dāng)前狀態(tài)信息也會(huì)上傳至云平臺(tái),用戶在手機(jī)端實(shí)時(shí)掌握所有數(shù)據(jù)和狀態(tài)信息。終端裝置讀取溫濕度數(shù)據(jù)和時(shí)間信息、顯示數(shù)據(jù)和閾值以及狀態(tài)信息等都在外中斷服務(wù)程序中進(jìn)行,不占用主程序運(yùn)行。
圖3 主流程
在教學(xué)過程中,首先對(duì)與本系統(tǒng)案例相關(guān)的軟件程序作必要講解與分析。本案例是一個(gè)綜合應(yīng)用,涵蓋了關(guān)于STM32的重要知識(shí)點(diǎn),同時(shí)加入了云平臺(tái),構(gòu)成遠(yuǎn)程數(shù)據(jù)傳輸和控制系統(tǒng),進(jìn)一步拓展了應(yīng)用范圍。其中包括:LCD顯示、I2C接口的傳感器應(yīng)用等,串口2連接WiFi的遠(yuǎn)程訪問,定時(shí)器主要應(yīng)用于定時(shí)發(fā)送數(shù)據(jù)和配合WiFi模塊接收數(shù)據(jù)以及外中斷讀取并顯示數(shù)據(jù),定時(shí)器產(chǎn)生PWM波等很多方面。因此,應(yīng)該逐步理解各方面的知識(shí)點(diǎn),對(duì)每個(gè)方面的軟件進(jìn)行模塊化編程與測試,這也可以在進(jìn)行硬件設(shè)計(jì)時(shí)同步開展。在此過程中,可以看到不少同學(xué)學(xué)習(xí)過相關(guān)課程,也會(huì)有一些相關(guān)的軟件包,但應(yīng)該對(duì)此進(jìn)行細(xì)致分析,特別是管腳定義、時(shí)序狀態(tài)等細(xì)節(jié)方面,確認(rèn)是否可以應(yīng)用到本案例中,這樣才能保證軟件設(shè)計(jì)的正確性。軟件設(shè)計(jì)時(shí)應(yīng)該對(duì)每一個(gè)單元模塊單獨(dú)進(jìn)行測試,這樣才是事半功倍的做法。
學(xué)生綜合訓(xùn)練小組內(nèi)部自行分工,負(fù)責(zé)硬件設(shè)計(jì)的同學(xué)重視硬件電路設(shè)計(jì),硬件電路是基礎(chǔ),保證硬件電路的正確性才能為軟件調(diào)試打下良好基礎(chǔ)。鼓勵(lì)在綜合訓(xùn)練過程中自己設(shè)計(jì)電路并完成實(shí)物制作,硬件設(shè)計(jì)同樣是模塊化設(shè)計(jì)方式,推薦的做法是把單片機(jī)芯片、LCD顯示、字庫芯片集成設(shè)計(jì)到一塊開發(fā)板上,開發(fā)板留有WiFi模塊接口并引出所有IO端口,另外I2C接口的時(shí)鐘、溫濕度模塊和存儲(chǔ)芯片可以單獨(dú)做成一個(gè)三合一的模塊,最后連接到開發(fā)板上,開發(fā)板只保留基本的單元,不必把所有的芯片或傳感器都集成到開發(fā)板上。這樣做的優(yōu)點(diǎn)在于:開發(fā)板相對(duì)獨(dú)立,可以更換不同接口的模塊,適用于不同的應(yīng)用系統(tǒng)。
負(fù)責(zé)軟件編程和硬件設(shè)計(jì)的學(xué)生在綜合訓(xùn)練時(shí)應(yīng)加強(qiáng)溝通,編寫若干個(gè)獨(dú)立單元的軟件模塊測試開發(fā)板,查看硬件與軟件是否都能正確運(yùn)行。例如編寫LCD顯示、串口2收發(fā)、溫濕度數(shù)據(jù)讀取、DS3231時(shí)鐘芯片驅(qū)動(dòng)、PWM波形產(chǎn)生等子模塊程序并分別測試一下,一方面驗(yàn)證開發(fā)板功能,另一方面也是提前對(duì)每一個(gè)軟件部分的模塊化編程進(jìn)行測試。這樣通過軟硬件設(shè)計(jì)結(jié)合達(dá)到綜合訓(xùn)練的目的。
在實(shí)際指導(dǎo)過程中,預(yù)先設(shè)計(jì)制作了整套系統(tǒng),并測試完成;成功運(yùn)行后,用照片和視頻方式展示出來。圖4是手機(jī)端接收數(shù)據(jù)與運(yùn)行狀態(tài)的界面。一方面完整展示系統(tǒng)實(shí)現(xiàn)的功能;另一方面激發(fā)學(xué)生學(xué)習(xí)興趣,指導(dǎo)學(xué)生按步驟、有計(jì)劃地實(shí)施,對(duì)每一個(gè)單元、模塊分別進(jìn)行測試,最后再組合進(jìn)行整體調(diào)試,這是必然要經(jīng)歷的過程。通過這個(gè)方式,能夠讓學(xué)生學(xué)習(xí)如何設(shè)計(jì)與調(diào)試項(xiàng)目。物聯(lián)網(wǎng)云平臺(tái)選擇阿里云的飛燕平臺(tái),該平臺(tái)與終端裝置采用MQTT協(xié)議進(jìn)行遠(yuǎn)程訪問數(shù)據(jù)傳輸。很多文獻(xiàn)資料以及網(wǎng)絡(luò)資源對(duì)該部分內(nèi)容都有詳細(xì)分析[7-8],綜合訓(xùn)練期間,在進(jìn)行遠(yuǎn)程訪問的功能測試時(shí)應(yīng)先用一個(gè)最小化的遠(yuǎn)程數(shù)據(jù)測試軟件系統(tǒng)進(jìn)行測試。例如遠(yuǎn)程控制一個(gè)開關(guān)的通斷,或遠(yuǎn)程發(fā)送一個(gè)固定的數(shù)據(jù)等,這樣對(duì)遠(yuǎn)程連接完成測試后,就掌握了數(shù)據(jù)上傳與接收等各個(gè)環(huán)節(jié),這對(duì)后續(xù)采集上傳變量數(shù)據(jù)是很有幫助的。其中遠(yuǎn)程訪問的一個(gè)關(guān)鍵點(diǎn)是變量數(shù)據(jù)與飛燕平臺(tái)物模型的相互對(duì)應(yīng)關(guān)系,學(xué)生理解了這些知識(shí)后,可以方便地嵌入到自己的綜合訓(xùn)練項(xiàng)目。最后,再把測試的每一個(gè)模塊軟件統(tǒng)一整合到綜合訓(xùn)練項(xiàng)目,從而實(shí)現(xiàn)綜合訓(xùn)練的功能任務(wù)??傮w來說,無論是硬件設(shè)計(jì)還是軟件編程,都是經(jīng)歷從單元模塊到整體調(diào)試的過程,如果不單獨(dú)對(duì)軟硬件進(jìn)行模塊化測試,是很難達(dá)到整體功能實(shí)現(xiàn)的。學(xué)生通過綜合訓(xùn)練,逐步掌握了軟硬件設(shè)計(jì)分析方法,對(duì)模塊化設(shè)計(jì)有了較深的理解[9]。
圖4 實(shí)際運(yùn)行的手機(jī)界面
本文的綜合訓(xùn)練案例包含了軟硬件設(shè)計(jì)與調(diào)試等多個(gè)方面的知識(shí),體現(xiàn)了綜合訓(xùn)練具備的基礎(chǔ)性、綜合性、創(chuàng)新性和提高性的特點(diǎn)。通過案例教學(xué)的方法,極大地激發(fā)了學(xué)生的學(xué)習(xí)興趣,提高了綜合訓(xùn)練教學(xué)的效率,使學(xué)生綜合能力有了較大程度的提高[10],有效地培養(yǎng)了學(xué)生的分析學(xué)習(xí)能力、團(tuán)隊(duì)協(xié)作能力、工程應(yīng)用能力和創(chuàng)新能力。在綜合訓(xùn)練過程中,采用循序漸進(jìn)的方式,引導(dǎo)學(xué)生既要有整體設(shè)計(jì)思維,又要具備從單元模塊到整體調(diào)試的能力。綜合訓(xùn)練期間進(jìn)行硬件開發(fā)板設(shè)計(jì),并完成軟件編程調(diào)試,這些都能為后續(xù)進(jìn)一步應(yīng)用拓展很大的空間。綜合訓(xùn)練培養(yǎng)學(xué)生掌握系統(tǒng)設(shè)計(jì)方法,鍛煉其實(shí)踐應(yīng)用能力,為今后的發(fā)展打下良好的基礎(chǔ)。
物聯(lián)網(wǎng)技術(shù)2023年11期