
基于CW32f030利用android实现与循迹功能切换
简介
基于CW32的可实现手机控制前后左右以及切换循迹功能的小车,串口接收手机socket发送过来的数组,串口回传控制电机PWM输出控制小车速度和行走,循迹功能PID算法精准定位黑线,不再是摇头晃脑的小车。
简介:基于CW32的可实现手机控制前后左右以及切换循迹功能的小车,串口接收手机socket发送过来的数组,串口回传控制电机PWM输出控制小车速度和行走,循迹功能PID算法精准定位黑线,不再是摇头晃脑的小车。开源协议
:GPL 3.0
描述
## 基于CW32国产芯片的一款循迹以及android可控制小车
。
利用超性价比超值的芯源半导体公司的芯片引脚为48pin的芯片不仅在运行速度上快,而且关键便宜,可移植性高。拥有自己独立的固件库,可谓是国产的又一崛起。
## 制作的背景
本来打算作一个一个无刷电机版本的,而且这样跑起来更快,更加的顺畅,奈何在功率控制板方面的一个价钱方面稍稍贵了点,本着一个参加活动白嫖的心,所以硬是不愿意多出点钱,关键咋这也不富裕。所以成本有限,只能在软件上下下功夫,只用到了买主控板的少些部分原件,其余的都是直插,这样焊接不仅友好,但是,不是我焊接能力不行,是因为我上面说了,我的值班室只有直插原件,所以尽量能把钱少花就少花,想象一下50块不到就可以制作循迹小车和手机控制,是不是就很棒,而且最主要的是感觉很商业,不仅可以循迹运货,途中出现问题了,还可以切换到手机控制调整,虽然现在只是一个秉着一个试验来看效果不是很明显,但是假以时日加以改进,我相信还是可以达到想要的效果的。
致谢!!
起初做这个车也是刚好有这些模块东拼西凑找别人借的,因为实在没有办法,但是做到用有限的卷做到最大的限度效果,我觉得还是算可以了,凑回来的这些原件用完还是得还回去得。哈哈也值了,起码能做出东西了,也很感谢本次训练营给我带来得收获,起初只是一个小白。从零到现在参加了三次训练营,每次都足了面子,让我这个菜鸡从中获取到不仅也是知识,还包括很多板子,下载器、烙铁等等。同时也感谢这次得合作方芯源带来得技术支持,从本次用得芯片效果来看还是感觉很良好的。
## 外观
附带一下装车图吧,图片拍的比较少,简单看一看就好了
使用的原件
ESP8266一块 , 小车外架一个包括在四个电机, tb6612驱动电机芯片一块 反射式传感器5个 循环起来精度更好。CW32_48Pin主控芯片一块,还有就是电池,供电需要两个地方 ,一块是给芯片,芯片这边供电也是需要有足够得电的,因为有五个传感器。最好也是5v供电,然后降压到传感器供电,一个就是tb6612的电机供电最少要5v-12v,也不要超过12v,供电不够会导致电机转不动。
包括调试的过程中,已经耗掉了我两块锂电池了,还好自己有充电的,不然后面使用的时候就没有电演示了。
主控芯片这块功能还是挺多的,用起来也很够用 以下是官网的一个主要参数
内核:ARMCortex-M0+
64MHz
存储容量
64K 字节FLASH,
8K 字节RAM,
128字节OTP存储器
时钟管理
4~32MHz晶体振荡器
32KHz低速晶体振荡器
内置48MHz RC振荡器
内置32KHz RC振荡器
内置10KHz RC振荡器
内置150KHz RC振荡器
时钟监测系统
允许独立关断各外设时钟
支持39路I/O接口
所有I/O口支持中断功能
所有I/O支持中断输入滤波功能
• 五通道DMA控制器
• 模数转换器
12位精度,±1 LSB
最高1M SPS转换速度
内置电压参考
模拟看门狗功能
内置温度传感器
• 双路电压比较器
• 实时时钟和日历
支持由Sleep/DeepSleep模式唤醒
• 定时器
16位高级控制定时器,支持6路捕获/比较通道和3对互补PWM输出,死区时间和灵活的同步功能
四组16位通用定时器
三组16位基本定时器
窗口看门狗定时器
独立看门狗定时器
通信接口
三路低功耗UART,支持小数波特率
两路SPI 接口 12 Mbit/s
两路I2C 接口 1 Mbit/s
IR调制器
• 串行调试接口(SWD)
实现过程
主要就是在ESP8266的一个AP模式下,利用串口1的一个重定向发送AT指令到ESP8266的一个初始化过程,利用串口2在串口助手回传串口1接收到的显示回来起到一个可视化的这么一个调试的过程。主要是方便查看手机socket流发送过来的字符数组,然后边看边调试。
这就是一个调试的过程
自己写的这么一个app控制页面,比较单一,利用是ESP默认的地址连接192.168.4.1 端口:333
循迹这个功能就是,利用PID算法,这个可以多区去网上看一看,这个都是有一定的公式的,就是利用每次发生变化的比值相比较,然后逐渐缩小变化值,这样才能让车以一个平稳的状态来行走。
一个小问题。
在逐渐调试的过程中发现了一个问题,也算是比较严重的问题,因为数组是实时传输数据的,也是为了在控制车这方面利用的android的一个控件更好的实现,这个控件有三种识别的效果:按下、手起、还有按下移动。就是按下的时候车才会动,手移走就停下。所以这个实时传输的一个问题在车控制的方能是没有问题的,但是在循迹这方面就有一个小bug就是循迹起来由于传输的数据帧快是快了,但是在循迹要求这块这方面就不是很理想,所以最好就是利用控制板上的一个按键来切换这两个功能,这样才是最理想的。否则在手机上切换的话,实现起来不是太理想。达不到完美的效果。
下面附带了演示视频以及手机app和工程代码
设计图
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | BOOT | BOOT1 | SW-TH_DEALON_MS-12D19-G2 | 1 |
2 | QMB-09B-03 | BUZZER1 | BUZ-TH_BD9.0-P4.00-D0.6-FD | 1 |
3 | 100nF | C1,C2,C3,C5,C6,C8,C9,C10,C11,C12,C13,C14,C15 | RAD-0.2 | 13 |
4 | 20pf | C4,C7 | RAD-0.2 | 2 |
5 | 321034SG0ABK00A01 | CN4 | CONN-TH_321034SG0ABK00A01 | 1 |

评论