【硬核】5分鐘讓你全面了解設(shè)備開發(fā),鴻蒙新手必點!
一、避障小車簡介
這是一款基于OpenHarmony系統(tǒng)和小凌派-RK2206開發(fā)板的避障小車。同時,小車上搭載了超聲波測距模塊、舵機(jī)模塊、紅外尋跡模塊、直流電機(jī)模塊。具體實驗成果展示如下:
二、避障小車模塊介紹
小凌派-RK2206開發(fā)板的示意圖
小凌派配置了一個E53外接拓展口,這是E53接口的原理圖:

這是E53模塊的原理圖:

1. 直流電機(jī)模塊
直流電機(jī)模塊由E53模塊上的L9110S驅(qū)動芯片進(jìn)行驅(qū)動。L9110S驅(qū)動芯片所引出的引腳對應(yīng)接口的GPIO0_B7、GPIO0_B6,另一塊驅(qū)動芯片對應(yīng)GPIO1_D0、GPIO0_A5。我們對相應(yīng)的GPIO引腳進(jìn)行初始化并設(shè)置為上拉模式。

通過閱讀L9110S的芯片手冊可以得到以下真值表:

通過真值表,我們可以通過對IO口的輸出來控制直流電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)還有停止:

模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;有信號返回,通過IO口ECHO輸出一個高電平,同時開定時器計時,當(dāng)此口變?yōu)榈碗娖綍r就可以讀定時器的值,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。
模塊Trig對應(yīng)引腳GPIO_B0,Echo對應(yīng)引腳GPIO_B1,對這兩個引腳進(jìn)行初始化

通過真值表,我們可以通過對IO口的輸出來控制直流電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)還有停止:

2. 超聲波測距模塊
超聲波測距模塊用來計算出模塊到前方障礙物的距離。采用IO口TRIG觸發(fā)測距,給最少10us的高電平信號。模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;有信號返回,通過IO口ECHO輸出一個高電平,同時開定時器計時,當(dāng)此口變?yōu)榈碗娖綍r就可以讀定時器的值,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。
模塊Trig對應(yīng)引腳GPIO_B0,Echo對應(yīng)引腳GPIO_B1,對這兩個引腳進(jìn)行初始化

觸發(fā)信號:

獲取定時器計數(shù)器當(dāng)前值:

上升沿和下降沿的節(jié)拍數(shù)差計算距離。其中,系統(tǒng)時鐘為40MHz,超聲波速度為340米/秒,高電平時間寬度為超聲波的往返之和。
所以實際距離 = 節(jié)拍數(shù)差 / 40MHz / 340(米/秒) / 2(往返2次)。具體計算代碼如下:
所以實際距離 = 節(jié)拍數(shù)差 / 40MHz / 340(米/秒) / 2(往返2次)。具體計算代碼如下:

3. 舵機(jī)模塊
舵機(jī)模塊用來控制超聲波測距模塊測量左右方向的距離,舵機(jī)引腳為GPIO0_B4,對GPIO0_B4進(jìn)行初始化。
通過模擬PWM波讓舵機(jī)工作。具體代碼如下:
4. 紅外尋跡模塊
紅外尋跡模塊,在避障小車中的功能是防止小車意外掉落。紅外尋跡模塊與小凌派的GPIO0_A2、GPIO0_C4連接,對這兩個引腳進(jìn)行初始化。
三、避障小車功能實現(xiàn)
通過小凌派開發(fā)板自帶的按鍵啟動小車的避障功能
通過超聲波測距模塊測量前方距離來判斷小車接下來要運動的方向。若距離大于等于20cm繼續(xù)前進(jìn)。
若距離小于20cm,先停止再后退0.5s,再繼續(xù)進(jìn)行測距,再進(jìn)行判斷。
通過兩個紅外尋跡傳感器可以防止小車掉落,當(dāng)紅外傳感器輸出為高電平時,小車就會停止前進(jìn),并且重新尋找安全方向。
若距離小于20cm,先停止再后退0.5s,再繼續(xù)進(jìn)行測距,再進(jìn)行判斷。
通過兩個紅外尋跡傳感器可以防止小車掉落,當(dāng)紅外傳感器輸出為高電平時,小車就會停止前進(jìn),并且重新尋找安全方向。


通過使用OpenHarmony操作系統(tǒng) + 小凌派-RK2206開發(fā)板來控制小車完成距離檢測、前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、判斷算法等功能,實現(xiàn)了避障小車的基本功能。
經(jīng)過這一次實驗測試,加強(qiáng)大家對OpenHarmony的理解,實在是一次不錯的學(xué)習(xí)體驗,老王建議大家收藏起來!
文章提供:福州市凌睿智捷電子有限公司
標(biāo)簽: