首先在制作esp32智能车基础款前我们一定要先要确定项目的目标与目的,我对智能小车要求并不高,他只要能正常的进行全方位的行动。并且能进行一个实时的视频反馈就足够了。所以在小车硬件部分核心开发板上ESP32-CAM成为了首选,安信可(Ai-Thinker)公司开发的ESP32-CAM开发板集成了ESP32S处理器模组和200万像素摄像头模组,低功耗双核32位CPU,内置 520 KB SRAM,外置8MB PSRAM,支持WiFi和蓝牙连接。同时还支持影像识别等多种AI处理模式,便于未来功能的拓展。尽管许多人反映传输过来的视频质量稍显模糊,但考虑到这款开发板仅售20多块钱的价格,其实已经相当实惠了。即使在使用过程中因为烧录等原因出现损坏,也不会让人感到心疼。因此,这款开发板确实成为了学习互联网嵌入式开发入门的首选工具之一。
如果想要了解开发版的一个具体情况,大家可以点击下面链接进去查看。
https://docs.ai-thinker.com/esp32-cam
在选择完核心开发板之后,下一步是考虑如何为小车选择适当的动力源,即需要确定采用哪种类型的电机来为小车提供动力。基于过往的经验和了解,我首先锁定了每分100转的N20减速电机(N20电机有很多种减速比的子型号,我手边有的就是100转。大家也根据自己对小车速度快慢的要求选取其他不同减数比的电机)。这款电机转速适中,拥有出色的转矩,而且它只需要3.3V的电压即可驱动,这与ESP32-CAM开发板的供电电压吻合,可以省去额外的降压或升压模块。电机与板子共用一个电源。
通过两颗电机并列式地分别驱动小车斜对角的两个轮子,就可以赋予小车转向和前进两个方向的自由移动能力。
但如果想用Esp 32 cam上的io口控制减速电机还需要驱动芯片,所以我就又画了一个扩展板,扩展板上面结合了一块ams1117稳压芯片以及2路L9110电机驱动芯片(这款电机驱动芯片的控制操作相当简便,只需调整两个IO口的高低电平输出,即可轻松控制电机的运转。然而,它并不直接支持电机调速功能。)扩展板并且可以用排针直插的方式与esp32 cam连接。再板子给配一块3.7v 200mAh的锂电。
最后再进行车体设计,画一个车壳。我偏爱简约的设计风格,并热衷于将每个细节做到极致的压缩。因此,在设计这款小车时,我并未将车体设计得过于庞大,而是尽可能地贴合开发板、电机以及摄像头的尺寸,确保每个部分都达到最小的占用空间。整体上看,小车呈现出方方正正的外观,显得有点儿不大聪明。
那这一部分的设计都用到了Solidworks三维绘图软件。想了解如何学习进行此类的结构硬件设计,三维建模。可以点击下方链接。
小车的主体部分就已经完成了,其实这时候绝大部分人都开始进行上位机的制作或者说是软件方面的一个设计(绝大部分项目是做一个手机端的APP,上面有视频回传窗,虚拟摇杆或按钮控制小车移动。那当然我也利用APP inventor设计了一个APP用于控制小车,后文会聊到)。但我算是一个实体党,其实并不太喜欢那种虚拟摇杆儿的控制手感,所以我就又设计了一个小型的三通道遥控器。给硬件制作部分又加了一步。这个三通道的实体摇杆儿遥控器,mcu采用的是esp32C3,支持WiFi和蓝牙连接,并拥有很强大的功能拓展能力,之后又连接一个小的OLED显示屏显示一些基础的控制信息(采用iic通讯的显示屏)。
那现在基础款的全部硬件就已经全部设计完了。最后给大家看一下散件图以及成品图。
程序控制上设计了两个方案。一个是比较常见的用手机上的APP进行控制。另一个就是用之前硬件制作出来的遥控器进行控制。我们先来讲一下这个项目比较有特点的控制方式,用遥控器控制的一个设计思路。
小车自身的一个运动上的控制其实非常简单。只需要通过调整两个电机的2组一共4个io口的高低电平就可以调整小车运动或停止,一颗电机的两个管脚中,一个为高电平而另一个为低电平时,电机将开始转动。若这两个管脚的电平状态发生改变(即一个由高变低,另一个由低变高),电机的转动方向也会随之改变。若两个管脚的电平状态相同(均为高电平或低电平),则电机将停止转动。这样的话,两个电机同时正转小车前进,同时倒转小车后退。一个电机正转,一个反转就可以实现小车的左右转弯。
而软件上最关键的一部分在于我们如何将控制命令有效地发送给小车。这就涉及到了如何选用一个合适的通讯协议来确保遥控器与小车之间能够稳定、高效地取得联系。我在这里运用的是espnow通讯协议。这种协议使小车主板上的esp32Cam与实体遥控器上的esp32c3建立起Now低功耗双向通讯,从而精准控制小车的运动。而在小车的采集画面的实时传输方面,我采用了WiFi技术。通过构建一个局域网络,esp32cam的视频流能够发送至路由器,随后手机客户端进入这个局域网络,获取视频流,实现实时的视频观察。这样的设计不仅提升了传输效率,还确保了画面的清晰度和流畅性。当然这些程序也全部都是在arduino开发环境中完成的。
第二种方案使用APP控制。通讯模式采用的是WiFi下的UDR通讯,APP的一个开发与制作以及这种通讯技术的使用的详细内容我会放在Esp 32智能车系列3(Pro max版)中详细介绍。