朱克武,林金妹,袁小放
(廣東食品藥品職業學院,廣州510520)
隨著醫療技術的發展、生活水平的提高,人們的壽命不斷提高,人口老齡化不可避免,人老了,身體的各方面機能都會下降,老年人護理是一個新興產業。社會上需要一大批有豐富經驗的護理人員。護理工作比較累臟,很多年輕人不愿從事這份職業。開發一些護理設備,能夠減輕護理人員的勞動強度,這樣會吸引不少年輕人從事這份有愛心的職業。開發一個能夠運送垃圾或者貨物的小車顯得非常有必要,該產品有實際的市場需求。
智能小車采用輪式行走機構,主要硬件有車輪、電池、機架、串口-Wi-Fi模塊、攝像頭等部件,組裝成一輛能夠行走的小車。使用手機控制小車的運動,需要在手機上實時顯示小車當前的狀態,通過手機界面上的控制鍵(前進、后退、左轉、右轉),向小車發送指令,控制小車的行走,達到對小車遠程控制的目的。
目前,全社會都注重節能環保,人們的日常出行,都經常使用電動車、節能車代步,鋰電池具有高存儲能量密度;使用壽命長,可以使用6年以上;額定電壓高,單體工作電壓為3.2V;具備高功率承受力;自放電率低;重量輕等優點,它的這些優點,使得鋰電池被廣泛應用。本系統的電源,使用5V電壓供電,如果使用普通的電池,電池的電量不足以長時間給小車供電。隨著鋰電池技術的發展,鋰電池的體積做的很小,容量大,因此,選用5V的鋰電池給小車的供電。
采用四輪驅動的方式,四個電機分別驅動四個車輪。小車的行走的原理是電機驅動小車行走,電機由STM32的GPIO管腳控制的,通過PWM的導通時間來控制GPIO口,這樣,就實現了小車的行走控制。例如:左右兩個電機的PWM導通時間相同,則直線行走;導通的時間長,則速度快;導通的時間短,則速度慢;設置電機正轉,則前進;設置電機反轉,則后退;左邊電機導通時間長,右邊電機導通時間短,則右轉;左邊電機導通時間短,右邊導通時間長,則左轉。
本系統采用ST M32F103芯片,該芯片有串口模塊、GPIO管腳、定時器模塊、DMA控制器等,芯片的功能非常強大,可以實現很多功能,滿足本系統控制的要求。電機的控制采用PWM技術。PWM是脈沖寬度調制,對脈沖的寬度進行控制。PWM的工作原理如圖1所示,CNT是定時器的計數值,ARR是自動重裝載寄存器,CCR是捕獲比較寄存器。設定定時器工作在向上計數PWM模式,當定時器的計數值小于CRR(捕獲比較寄存器)的數值,輸出0,低電平;當計數值大于CRR的時候,輸出1;當計數值等于ARR的數值的時候,重新歸零,一個計數周期結束。然后,定時器重新向上計數,依次循環。PWM就輸出一個矩形波。使用PWM波形控制GPIO口,就控制了電機的轉動,實現行走的控制。
改變CRR的數值,就可以改變PWM輸出的占空比,改變ARR的值,可以改變PWM的輸出頻率。

圖1 PWM原理示意圖
串口-以太網-無線網模塊有多種產品,價格多在400元以內,串口-Wi-Fi設備硬件組成主要有RS-232串口模塊、Wi-Fi模塊。設備內部內置TCP/IP協議,能夠實現用戶串口、以太網、無線網(Wi-Fi)3個接口之間的通訊。
串口-無線網模塊工作在AP模式下,Wi-Fi功能使能,通過Wi-Fi無線網絡,將串口數據通過無線網絡發送出去。AP模式下,模塊就是一個標準的無線路由器,手機等設備通過Wi-Fi連接到該設備上,成為Wi-Fi局域網下的設備。單片機的串口和手機外部設備,通過串口-Wi-Fi設備(相當于一個橋梁),進行數據的收發,實現單片機串口和手機的通訊。
本系統的軟件系統分為單片機下位機系統和手機App上位機系統。采用模塊化設計,以小車行走為設計核心,各模塊分工明確,便于程序的調試和運行,以及后期系統的維護升級。串口-Wi-Fi模塊不需要編程,只需要設置串口的波特率等參數、TCP服務器的地址、端口號等參數,相關的參數設置完成后,就自動在單片機串口、手機App之間進行數據傳遞,不需要用戶干預。單片機下位機系統的模塊主要是GPIO模塊、PWM模塊、串口模塊。手機App上位機系統的模塊主要是按鈕事件、Socket網絡通訊。
STM32單片機程序的主程序是main函數,首先,初始化工作,包括初始化時鐘、GPIO管腳、定時器、串口。其次,while循環,讀取中斷的數據,判斷是否有串口數據,如果沒有,則執行行走函數。如果有,則判斷是前進、后退、左轉、右轉,執行行走函數。
在定時器初始化中,使用定時器5的通道1來PWM方波。設置定時器的預分頻、定時器向上計數模式、ARR自動重裝載數值,通過使用TIM_OC1Init函數,設置PWM的輸出方式,設置完成后,使能定時器5,定時器開始工作。通過修改定時器的CCR1來控制通道1的輸出占空比。
初始化串口后,開啟串口中斷。只要串口-Wi-Fi設備發送數據到串口,串口中斷就會響應,設置串口中斷標志,接收數據,串口中斷是一次接收一個字節,因此,應當給串口的接收設置一個聯絡信號,如“ ”,使用回車換行作為數據接收結束的標記。
串口的發送直接使用串口的發送指令即可,不需要使用中斷發送數據。串口的接收是無法預測的,不知道在哪個時間段,有數據到來,因此,必須使用中斷的方式,來接收數據。串口數據的發送,是可以控制的,可以直接調用串口發送指令,靈活方便。
手機端App設計,首先是界面設計,在界面上,放置6個按鈕,1個編輯控件,分別對應小車的“前進”、“后退”、“左轉”、“右轉”、“加速”、“減速”。給 6 個按鈕添加單擊事件,onClick事件。因為,要將控制信號發送給單片機的串口,涉及網絡通訊,因此,在按鈕的單擊事件中,添加線程,在線程中,調用Socket對象,收發數據。將接收的數據,顯示在界面上。
Socket網絡通訊,首先,創建Socket對象,指定服務器的IP地址、端口號,連接到服務器。設置要發送的數據到發送區,Socket通訊一般是byte字節數組的形式,發送和接收的數據都在byte字節數組里面。創建OutputStream輸出流,使用write函數、flush函數,將字節數組中的數據發送給串口-Wi-Fi設備,通過透傳的方式,將字節數據,發給串口。Socket發送結束,關閉Socket連接。
App網絡通訊的流程是,在按鈕事件中,創建一個線程,在線程中,將控制信息添加到發送區數組中,創建Socket對象,連接服務器,創建OutputStream輸出流對象,將數據發送出去。關閉Socket,如果不關閉,客戶端一直連接服務器,導致后面的套接字可能連不上服務器,套接字不釋放,會一直占用資源,因此,套接字使用完成后,要及時關閉,釋放它占用的資源。
Android的網絡編程,需要配置網絡的權限,能夠使用Internet權限。
通過小車控制系統的研究,掌握小車的硬件組成,包括電機的選型、電源的選型、STM32芯片的選型等,為后續添加新的硬件設備提供經驗積累。小車軟件系統圍繞小車的行走控制開展,App上位機發送指令,提供串口-Wi-Fi設備,將指令發送給STM32單片機,串口接到數據后,根據指令的類型,進行處理。通過本項目的研究,實現了對小車的控制,為后續開發小車的智能行走,提供了一些理論積累。