电子说
基于鸿蒙系统+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
全部0条评论
快来发表一下你的评论吧 !