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