基于鸿蒙系统+Hi3861的WiFi小车详解

电子说

1.2w人已加入

描述

基于鸿蒙系统+Hi3861的WiFi小车

首先,我们得有一套WiFi小车套件,其实也是Hi3861加上电机、循迹模块、超声波等模块。

小车安装完大概是这样:

电机驱动

我们这里先只做最简单的,驱动小车的电机,让小车跑起来。

电机的驱动板如下图,目前电机驱动芯片用的是L9110S芯片。

典型的应用电路如下图:

鸿蒙系统

我们可以看到,如果要控制电机,我们芯片至少需要2路PWM信号,一路用于控制正转,一路用于控制反转。

然后我们小车有两个轮子,需要两个电机,所以我们需要4路PWM信号。

查阅小车资料,可以知道,目前Hi3861芯片用来控制电机的4路PWM分别是:

鸿蒙系统

知道了PWM通道和对应的GPIO口,我们就可以开始编程了。

首先PWM初始化部分:

voidpwm_init(void){GpioInit();//引脚复用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);} 控制小车前进、后退、左转、右转、停止的函数: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);}//前进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);//启动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);//启动A路PWMPwmStart(WIFI_IOT_PWM_PORT_PWM4,750,1500);PwmStart(WIFI_IOT_PWM_PORT_PWM1,750,1500);}//左转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);//启动A路PWMPwmStart(WIFI_IOT_PWM_PORT_PWM3,750,1500);}//右转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);//启动A路PWMPwmStart(WIFI_IOT_PWM_PORT_PWM0,750,1500);} 

最后,要使用PWM功能。

我们需要修改vendorhisihi3861hi3861uildconfigusr_config.mk文件,把PWM功能打开,增加一行CONFIG_PWM_SUPPORT=y。

如图:

WiFi控制部分

我们在小车上面简单编写一个UDP程序,监听50001端口号。

这里使用的通信格式是json,小车收到UDP数据后,解析json,并根据命令执行相应的操作,例如前进、后退、左转、右转等。

代码如下:

电脑端,使用C#编写一个测试程序,可以手动输入小车的IP地址,也可以不输入IP地址,这样,电脑端程序会发送广播包给小车,也可以起到控制的功能。

小车的源码,C#控制端的代码均开源,大家可以自由修改,发挥自己的想象,创造出更厉害炫酷的DIY产品。

责任编辑人:CC

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分