2507| 6
|
[ESP8266/ESP32] 基于Beetle ESP32-C3的遥控小车设计(一) |
本帖最后由 肖申克 于 2023-6-7 20:26 编辑 基于Beetle ESP32-C3的遥控小车设计 一、背景与项目概述 在硬件漂流群看到了“Beetle ESP32-C3免费试用活动”,Beetle ESP32-C3是一款基于ESP32-C3 RISC-V 32位单核处理器芯片的主控板[1],看了介绍的文档,想利用他的蓝牙功能来做个遥控小车,想控制小车行动和机械臂,并且在小车上面安装传感器,实现环境监测反馈。通过遥控器两个摇杆六个自由度控制,oled屏幕显示温度湿度亮度。但是这过程中好多坎坷,最后我放弃了,只做了个遥控车,用摇杆控制移动。 二、困难与妥协 1.拓展板不适合,只能自制拓展板 申请了两片,很快就收到了。分别是两片Beetle ESP32-C3和拓展版。 拿到之后,首先面对的问题就是拓展版设计不方便。最开始想拓展版焊接母口,单片机焊接公口,然后在拓展版接线。 但是拓展版信号引脚集中在一起,估计是为了减小体积,但是这对接线造成不便。(后续可以考虑改进)。 因为我打算使用小车模块,根据我的需要,我自己用洞洞板做了一个简单的拓展版。 左边为接收端拓展版,参考了掌控板系列的排列(GND\VCC\S)方便连接小车模块。右边为发射段拓展版,增加了3v3和GND的引脚。 2.编程环境不熟悉,改成图形化编程 制作过程中,面临的最大困难就是编程环境的搭建。我打算用Arduino IDE 进行编程,因为示例多,兼容性强。计划使用手势识别采集控制,并使用oled显示状态和回传的温度。 根据官方文档的指引,在DFROBOT DFR0868 Beetle ESP32 C3 产品资料 使用教程 的指引下一步一步完成。 虽然最后成果搭建并且完成了“blink”。(这一行字花了一个多星期的时间,还用了“技术手段”) 但是,还是因为太多的状况,停止了尝试。(比如添加手势识别模块过程中的报错,其他模块也经常发生报错) 最后,选择用Mixly(米思齐)进行编程。Mixly(米思齐)是一款图形化编程软件。用户可以通过拼接积木块的方式来编写程序[2]。 另外,本来计划使用低功耗蓝牙进行信号传输,由于换了米思齐进行编程,改为使用“广播”进行信号传输,并取消了手势识别和oled,采用最简单的模块实现功能。 三、硬件与设计思路 1.硬件清单 Beetle ESP32-C3 *2 3PA三轮小车套件 *1 TB6612FNG微型双路直流电机驱动模块 *1 双轴按键遥杆传感器 *1 红黄绿led模块 *1 自制拓展板(洞洞板、排针、自锁开关) *2 3.7v锂电池 *2 杜邦线若干 2.设计思路 因为图形化编程的限制,遥控小车采用“广播”传输信号。在“遥控器”采用遥杆三个自由度采集信号,led模块显示模式。小车根据接收到的信号响应动作。 四、模块调试 1.“广播”通讯 本项目最核心的内容就是“广播”功能。图形化编程分为:初始化、发送消息、接收信息三种类型。查阅python代码,可以推测这个功能是基于“ESPNow”制作的库。 ESP-NOW 的消息的接收属于无阻塞的接收方式,不受延时函数影响,很适合做遥控器。具体看参考资料[3] 因此,我利用两个Beetle ESP32-C3一个作为遥控器发射端,一个作为小车接收端,利用字符串“UP”发射与接收验证“广播”功能。 此外,掌控板也有“广播”功能,查看源代码,我估计也是同个协议,也用Mind+做了掌控板的双向验证。具体如下图和演示视频。 (电脑浏览器可正常观看,手机浏览器切换成”电脑模式“可观看,确实无法观看复制视频地址通过浏览器观看) 视频地址:https://www.bilibili.com/video/BV1Su411p7sW/?spm_id_from=333.788&vd_source=70459f7369999ce0e18a8fef6dbab909 2.其他模块 解决了无线通讯的问题,其他部分相对比较熟悉,调试过程比较顺利。限于篇幅,下面做简单展示。 (1)遥杆模块 视频地址:https://www.bilibili.com/video/BV14M4y1e7TM/?vd_source=70459f7369999ce0e18a8fef6dbab909 (2)温湿度反馈模块 视频地址:https://www.bilibili.com/video/BV1Ys4y1i7QJ/?spm_id_from=333.788&vd_source=70459f7369999ce0e18a8fef6dbab909 这个部分的想法是想验证“广播”的双向传输信号,小车端在接收到信号后,完成响应并且向遥控器发送小车端搭载的温湿度传感器采集的数据。但是因为遥控器没有显示功能,最后这个功能探索成功之后没有采用。这也为后面的升级提供了思路。 (3)3PA三轮小车模块 因为本身工作比较忙,所以采用非常稳定的小车和电机驱动模块,减少工作量,请看参考资料[4]。 五、成品展示 1.遥控器 将遥杆、led模块、拓展板和电池固定在一块椴木板上(这块板是之前做作品剩下的)。 2.小车 将电池、拓展板利用螺丝固定在小车上。 3.装上电池,充电。 4.上电,启动! 默认黄色灯正常模式,红色灯运动模式,绿色灯平稳模式。 视频地址:https://www.bilibili.com/video/BV1Z14y1D7NC/?spm_id_from=pageDriver&vd_source=70459f7369999ce0e18a8fef6dbab909 六、收获与感悟 关于这个项目,作为一个业余爱好者,其实有很多想法,但是只停留在想法阶段。有工作的原因,忙碌的工作很难有大块时间学习。另外的一个原因就是技术,很多困难无法逾越,一些想法也就搁浅。本次的使用给了我一个契机,强迫自己做出一个东西,虽然是很普普通通的项目。 关于这块Beetle ESP32-C3,他的通讯功能和自带充电模块、体积小是亮点。如果在拓展板上改进,并且兼容Mind+,会有更多的发展空间。 关于小车,其实还有很多不足,比如两个电机在同个pwm的情况下功率不同,比如还没实现的其他功能。时间关系,先交作业吧。 后面还有很多事情忙,如果有时间会写个(二),把程序过程也来介绍一下。感谢大家阅读。请多多提宝贵意见。 因为预计接下来一个月很忙,所以直接上程序。请各位大佬多多指点; 参考资料 [1]Beetle ESP32-C3(RISC-V芯片)-Beetle微型控制器-DFRobot创客商城 https://www.dfrobot.com.cn/goods-3494.html [3]ESP-NOW:竟然还有如此好用的无线通信方式 | ESP32学习之旅-Arduino版 (zhihu.com) https://www.zhihu.com/tardis/zm/art/344109867?source_id=1005 [4]电机驱动、双路直流电机、微型、产品简介、产品参数、使用说明、应用样例 (dfrobot.com.cn) https://www.dfrobot.com.cn/goods-1634.html |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed