基于鴻蒙系統(tǒng)+Hi3861的WiFi小車(chē)
首先,我們得有一套WiFi小車(chē)套件,其實(shí)也是Hi3861加上電機(jī)、循跡模塊、超聲波等模塊。
小車(chē)安裝完大概是這樣:
電機(jī)驅(qū)動(dòng)
我們這里先只做最簡(jiǎn)單的,驅(qū)動(dòng)小車(chē)的電機(jī),讓小車(chē)跑起來(lái)。
電機(jī)的驅(qū)動(dòng)板如下圖,目前電機(jī)驅(qū)動(dòng)芯片用的是L9110S芯片。
典型的應(yīng)用電路如下圖:
我們可以看到,如果要控制電機(jī),我們芯片至少需要2路PWM信號(hào),一路用于控制正轉(zhuǎn),一路用于控制反轉(zhuǎn)。
然后我們小車(chē)有兩個(gè)輪子,需要兩個(gè)電機(jī),所以我們需要4路PWM信號(hào)。
查閱小車(chē)資料,可以知道,目前Hi3861芯片用來(lái)控制電機(jī)的4路PWM分別是:
知道了PWM通道和對(duì)應(yīng)的GPIO口,我們就可以開(kāi)始編程了。
首先PWM初始化部分:
voidpwm_init(void){GpioInit();//引腳復(fù)用IoSetFunc(WIFI_IOT_IO_NAME_GPIO_0,WIFI_IOT_IO_FUNC_GPIO_0_PWM3_OUT);IoSetFunc(WIFI_IOT_IO_NAME_GPIO_1,WIFI_IOT_IO_FUNC_GPIO_1_PWM4_OUT);IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9,WIFI_IOT_IO_FUNC_GPIO_9_PWM0_OUT);IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10,WIFI_IOT_IO_FUNC_GPIO_10_PWM1_OUT);//初始化pwmPwmInit(WIFI_IOT_PWM_PORT_PWM3);PwmInit(WIFI_IOT_PWM_PORT_PWM4);PwmInit(WIFI_IOT_PWM_PORT_PWM0);PwmInit(WIFI_IOT_PWM_PORT_PWM1);}控制小車(chē)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止的函數(shù):voidpwm_stop(void){//先停止PWMPwmStop(WIFI_IOT_PWM_PORT_PWM3);PwmStop(WIFI_IOT_PWM_PORT_PWM4);PwmStop(WIFI_IOT_PWM_PORT_PWM0);PwmStop(WIFI_IOT_PWM_PORT_PWM1);}//前進(jìn)voidpwm_forward(void){//先停止PWMPwmStop(WIFI_IOT_PWM_PORT_PWM3);PwmStop(WIFI_IOT_PWM_PORT_PWM4);PwmStop(WIFI_IOT_PWM_PORT_PWM0);PwmStop(WIFI_IOT_PWM_PORT_PWM1);//啟動(dòng)A路PWMPwmStart(WIFI_IOT_PWM_PORT_PWM3,750,1500);PwmStart(WIFI_IOT_PWM_PORT_PWM0,750,1500);}//后退voidpwm_backward(void){//先停止PWMPwmStop(WIFI_IOT_PWM_PORT_PWM3);PwmStop(WIFI_IOT_PWM_PORT_PWM4);PwmStop(WIFI_IOT_PWM_PORT_PWM0);PwmStop(WIFI_IOT_PWM_PORT_PWM1);//啟動(dòng)A路PWMPwmStart(WIFI_IOT_PWM_PORT_PWM4,750,1500);PwmStart(WIFI_IOT_PWM_PORT_PWM1,750,1500);}//左轉(zhuǎn)voidpwm_left(void){//先停止PWMPwmStop(WIFI_IOT_PWM_PORT_PWM3);PwmStop(WIFI_IOT_PWM_PORT_PWM4);PwmStop(WIFI_IOT_PWM_PORT_PWM0);PwmStop(WIFI_IOT_PWM_PORT_PWM1);//啟動(dòng)A路PWMPwmStart(WIFI_IOT_PWM_PORT_PWM3,750,1500);}//右轉(zhuǎn)voidpwm_right(void){//先停止PWMPwmStop(WIFI_IOT_PWM_PORT_PWM3);PwmStop(WIFI_IOT_PWM_PORT_PWM4);PwmStop(WIFI_IOT_PWM_PORT_PWM0);PwmStop(WIFI_IOT_PWM_PORT_PWM1);//啟動(dòng)A路PWMPwmStart(WIFI_IOT_PWM_PORT_PWM0,750,1500);}
最后,要使用PWM功能。
我們需要修改vendorhisihi3861hi3861uildconfigusr_config.mk文件,把PWM功能打開(kāi),增加一行CONFIG_PWM_SUPPORT=y。
如圖:
WiFi控制部分
我們?cè)谛≤?chē)上面簡(jiǎn)單編寫(xiě)一個(gè)UDP程序,監(jiān)聽(tīng)50001端口號(hào)。
這里使用的通信格式是json,小車(chē)收到UDP數(shù)據(jù)后,解析json,并根據(jù)命令執(zhí)行相應(yīng)的操作,例如前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等。
代碼如下:
電腦端,使用C#編寫(xiě)一個(gè)測(cè)試程序,可以手動(dòng)輸入小車(chē)的IP地址,也可以不輸入IP地址,這樣,電腦端程序會(huì)發(fā)送廣播包給小車(chē),也可以起到控制的功能。
小車(chē)的源碼,C#控制端的代碼均開(kāi)源,大家可以自由修改,發(fā)揮自己的想象,創(chuàng)造出更厲害炫酷的DIY產(chǎn)品。
責(zé)任編輯人:CC
-
wifi小車(chē)
+關(guān)注
關(guān)注
0文章
2瀏覽量
1774 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2642瀏覽量
68125 -
Hi3861
+關(guān)注
關(guān)注
1文章
63瀏覽量
7076
發(fā)布評(píng)論請(qǐng)先 登錄
盤(pán)點(diǎn)那些硬件+項(xiàng)目學(xué)習(xí)套件:Hi3861鴻蒙開(kāi)發(fā)板及入門(mén)常見(jiàn)問(wèn)題解答
【HarmonyOS HiSpark Wi-Fi IoT套件】基于鴻蒙系統(tǒng) + Hi3861 的wifi小車(chē),可以通過(guò)電腦、手機(jī)控制
怎樣去設(shè)計(jì)一種基于鴻蒙系統(tǒng)+Hi3861的WiFi小車(chē)
鴻蒙芯片Hi3861啟動(dòng)流程介紹
HI3861 鴻蒙開(kāi)發(fā)環(huán)境怎么搭建
HarmonyOS Hi3861 WiFi操作 熱點(diǎn)鏈接

如何使用 HiBurn 工具燒錄鴻蒙的 .bin 文件到 Hi3861 開(kāi)發(fā)板
Hi3861其他驅(qū)動(dòng)的開(kāi)發(fā)示例

基于鴻蒙系統(tǒng)+Hi3861的WiFi小車(chē)開(kāi)發(fā)

評(píng)論