当前位置: 首页 > 科技观察

基于鸿蒙系统 + Hi3861 的wifi小车,可以通过电脑、手机控制

时间:2023-03-14 13:52:27 科技观察

基于鸿蒙系统+Hi3861的wifi小车可以通过电脑或者手机控制Hi3861wifi小车首先我们得有一套wifi小车套件,其实就是Hi3861加上电机、跟踪模块、超声波等模块。小车安装好之后是这样的:3.13.1电机驱动我们这里只做最简单的事情,就是驱动小车的电机让小车跑起来。电机驱动板如下图所示。目前电机驱动芯片采用L9110S芯片。一个典型的应用电路如下图所示:可以看出,如果要控制电机,我们的芯片至少需要2路PWM信号,1路控制正转,1路控制反转。那么我们的车有两个轮子,需要两个电机,所以需要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);//StartchannelAPWMPwmStart(WIFI_IOT_PWM_PORT_PWM3,750,1500);PwmStart(WIFI_IOT_PWM_PORT_PWM0,750,1500);}//Backvoidpwm_backward(void){//StopPWMPwmStop(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功能,我们需要修改vendor\hisi\hi3861\hi3861\build\config\usr_config.mk文件,打开PWM功能,添加一行CONFIG_PWM_SUPPORT=y如图:3.13.2WiFi控制部分我们简单的在车上写一个UDP程序来监听50001端口.这里使用的通讯格式是json。小车收到UDP数据后,解析json,根据指令执行相应的操作,比如前进、后退、左转、右转等。代码如下:电脑端,用C#写一个测试程序,可以手动输入小车的IP地址,也可以不输入IP地址,让电脑程序向小车发送广播包,也可以起到控制的作用。小车的源代码和C#控制端的代码都是开源的。你可以自由修改它们,发挥你的想象力,创造出更强大、更酷的DIY产品。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区