4410| 4
|
[ESP8266/ESP32] 【连载-上篇】如果两片ESP32-C3做个遥控坦克可好? |
本帖最后由 yoyojacky 于 2023-4-27 10:47 编辑 前言 在之前和各位驴友一起开发漂移驴车(蚊车系列)的时候,每每在进行联合调试的时候,总是遇到需要开启多个Arduino IDE的需求,因为我们是想尝试使用ESP32-C3 来实现一个遥控器+一个接收机的操作。这时候在windows的系统中,设备的名称经常是COMX,例如:COM5, COM4这样,light在直播的时候就常常提到:”我晕了。拔掉一个ESP32我们再看看。。。。“, 编译上传代码的时候有时候要等好久。我说,我建议上树莓派, 用arduino-cli进行编译和上传,非常方便的。特别是当你需要批量烧录的时候..., light总是说: 我就喜欢用arduino IDE, 怼的我无言以对,但是我相信还是有人和我一样喜欢用命令行来解决问题的。哈哈 项目设想 采用任意一个树莓派作为编程主机,然后一根USB数据线(TYPE-C)口, 两个ESP32-C3, 商城有售,也可以积分零元购。 产品链接:https://www.dfrobot.com.cn/goods-3494.html 这小小的ESP32-C3 可是内有乾坤啊。 Beetle ESP32-C3是一款基于ESP32-C3 RISC-V 32位单核处理器芯片的主控板,专为物联网 (IoT) 设备而设计。 Beetle ESP32-C3在仅硬币大小的体积上引出了多达13个IO口,制作项目时不必再担心IO口不够用的情况,同时主控板还集成锂电池充电管理功能,可以直接连接锂电池,不需要外围模块,同时保证应用体积和安全性。 Beetle ESP32-C3配套的扩展板在未增加太大体积的情况下,引出了更多的电源,在制作项目时焊接更加方便,板载的GDI显示屏接口解决使用屏幕时的接线烦恼。 Beetle ESP32-C3支持Wi-Fi 和 Bluetooth 5 (LE) 双模通讯,降低了设备配网难度,同时还支持蓝牙 Mesh (Bluetooth Mesh) 协议和乐鑫 Wi-Fi Mesh可以实现更高的通讯稳定性和更大的覆盖面积,适用于广泛的物联网应用场景。 Beetle ESP32-C3拥有详细的示例教程,通过教程可以轻松的使用控制器的无线功能,连接阿里云、IFTTT等物联网平台,同时DFRobot商城提供了上千种传感器和执行器,这些传感器和执行器也有详细的教程,因此你可以轻松搭建出自己的物联网系统。 Beetle ESP32-C3可以使用Arduino IDE、ESP-IDF、MicroPython进行编程,C语言、python都可以轻松的操纵硬件。 它有什么特性呢?
哪些技术参数是我们需要的呢? 基本参数
硬件信息
WIFI
蓝牙
接口引脚
项目思路 之前的工作坊也给大家搭建过环境,也在各种开发夜分享过了,但由于网络的原因,经常会出现失败的情况,甚至在我写本篇文档的时候也是各种出BUG。 竟是没有合适的版本,对于我当前的操作系统。。 最近正好有Orange Pi 5在手,测试的间隙正好尝试一下是否OPI5 也能使用arduino-cli来给ESP32-C3 下载程序。 我这次想做的是一个mini的坦克,是Question之前送我的,放置了好久,都咩有尝试改造一下,正好昨晚翻出来了突发奇想,如果用ESP32-C3 来通过DRV8833驱动坦克的两个小电机从而带动履带运动,然后控制可以使用另一片ESP32-C3 结合一个小的mini摇杆读取ADC引脚的值,然后映射到一个固定的范围,然后两片C3 通过ESPNOW协议进行通信,这样自己就制作了一款基于ESPNOW的遥控坦克了? 坦克外观已经有了。剩下的就是搭建环境,编写代码了。 搭建环境 我有个思路就是死磕,手动下载总是失败,我就写个死循环, 成功再退出,否则就一直下,哈哈,有点儿不讲武德了,esp32的工程师不要怪罪我哦,谁让你们的开发环境这么大! 焊接DRV8833 接线图如下: DRV8833 和 ESP32-C3 连接
* DRV8833 接直流电机,坦克的直流电机很小,用电不大,所以直接驱动了,如果是12v的大功率电机,需要额外供电哦,不然USB口不保。
中间J1的焊盘连接起来就是EN, 表示enable,就是相当于有的板子上的STBY, 短接就行了。 硬件就搞定了,下面开始搞软件的环节。 下载arduino-cli 我在OPI5上通过终端执行:
下载,解压,拷贝,初始化变量一气呵成,然后就开始初始化:
编辑/home/orangepi/.arduino15/arduino-cli.yaml文件,修改这里添加两个URL: 改好了如图所示:然后保存退出后,执行: 接着进行安装所需要的编译器: 耐心等待,这里如果一直下载失败,类似这样: , 就可以尝试我下面的方法, 直接写个死循环,一直进行安装,如果失败了就继续,成功了就退出,死缠烂打思密达:
下载过程中还给服务器3秒喘息的机会。 在我不懈的努力下,哦,不是我,是Orange Pi 5的不懈努力下,它怕了,瞬间就让我下载完成了,回想起在工作坊翻车的经历,突然想起来,大家如果都开了ESPNOW,整个网络中都是广播, 会不会是导致5G网络不好用的原因呢? 这个问题有待研究,哈哈,找机会邀请圈圈大佬来做一次无线电分析。 失败了就重头再来,反正是非要安装好不行。。。 总共用时, 3分15秒 安装好了环境,我们尝试更新一下,顺手搞了个arduino的,以后也能用。 环境到这里就搭建完成了,是不是很简单。 创建sketch
然后进入目录就编辑文件即可。 先点个灯测试一下。
编译上传 只要执行一条命令就可以了,但是先要接好ESP32-C3 的模块,通过USB-C接口的线缆接入OPI5, 就会发现识别出来一个ttyACM0的设备,就是你的ESP32-C3。 执行下面的命令时,请确认自己在自己创建的项目目录里面,例如我创建的是mytank 的sketch,我就需要在这个目录中,然后执行下面的命令就可以编译上传刚才写好的代码了。
如果出现这个错误,不要着急,安装一个pyserial的库即可, 我顺带着升级了一下pip。
然后再次执行编译上传的命令,就会看到: 这时候就可以看到LED闪烁了,到这里,说明我们基本环境搭建好了,测试也正常了。 我们接下来就是要编写代码能够进行小车的控制。 ESP32-C3, 我贴了E1 作为坦克的主控制器,也是后期接收遥控信号的设备,因此在ESPNOW环境的角色中,它扮演的是client, 就是接收端 而另一片ESP32-C3 就是发射端,我们需要先获取当前这片esp32-c3的MAC地址信息,后期定义peer端时候需要。 我这里用esptool.py 工具直接读取,默认没有安装,直接安装即可,我安装的时候忘记截图了,就调出来看看最后一行。。
###读取MAC地址 esptool版本太低导致无法读取, 直接用pip3安装
4.5.1 版本的就来了。 读取mac瞬间丝滑:
编写坦克控制程序 思路:
今天就先写到这里,下一篇继续,喜欢的就点赞收藏,或者购买了ESP32C3后加入我们的行列哈哈。 未完待续.... |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed