我的订单购物车(0)联系客服 帮助中心供应商合作 嘉立创产业服务群
领券中心备货找料立推专区爆款推荐TI订货PLUS会员BOM配单PCB/SMT工业品面板定制

ESP32-C3蓝牙小车#第八届立创电赛#

2024-01-18 15:54:54阅读量:2910

瑞萨MCU杯第八届立创电子设计开源大赛正式落幕,最终获奖项目正式出炉!本文介绍的是:本届大赛三等奖项目ESP32-C3蓝牙小车

本文作者:瑞萨MCU杯第八届立创电子设计开源大赛选手@PY学习笔记禁止商用,未经许可禁止转载


1、项目功能介绍

目前网络上智能小车方案非常多,大多采用的是主控芯片ESP32,电机驱动L298N,单路电源供电等方案,成本较高、体积较大、稳定性较差。

本项目基于合宙的ESP32-C3开发板、DRV8833、麦克纳姆轮、锂电池等元件,采用两路电源供电,避免小车四轮启动时,ESP32-C3开发板电流不足重启;主板尽可能采用较少的贴片电子元器件,方便焊接、组装;整套成本不足50元,具有成本低、体积小、稳定性高等特点,适合中小学生学习、二次开发。

 

2、硬件部分

本项目的硬件采用低成本方便,锂电池使用小米电动牙刷拆下来的小电池,整套小车成本不超过50元。


1、主控芯片:采用合宙ESP32-C3开发板,价格12.9元。支持以下功能:

——1路SPI FLASH,板载4MB,支持最高 16MB

——2路UART接口,UART0~UART1,其中下载口为UART0

——5 路 12 比特 ADC,最高采样率 100KSPS

——1路低速SPI接口,支持主模式

——1路IIC控制器

——4路PWM接口,可使用任意GPIO

——GPIO外部管脚15路,可复用

——2路贴片LED指示灯

——1路复位按键+1路BOOT按键

——1路USB转TTL下载调试口

——2.4G PCB板载天线


 ESP32-C3


2、电机驱动:两块国产小体积DRV8833电机驱动模块,价格1.8元/块。每个模块可驱动2个直流减速电机。

 小体积DRV8833


3、电源方案:采用两路电源方案,一路为ESP32-C3供电,一路为电机供电,避免互相干扰。ESP32-C3的供电采用一个3.7V锂电池通过LDO(HT7333-A)降压稳压到3.3V供电。电机供电采用一个3.7V锂电池通过DRV8833直接供电。如果要让小车的速度更快,可以考虑采用2个3.7V锂电池供电,7.4V的电压能让小车速度更快。

 

4、设计的主板

主板尽可能采用较少的贴片电子元器件,成本详见BOM表。ESP32-C3、DRV8833等模块采用2.54排针固定,电池、电机采用XH2.54插件连接,方便焊接、组装,以及元件重复利用。

主板原理图如下:


原理图

初学PCB设计,画得丑了点。

 

PCB图

PCB图

 


效果图

效果 


实物图:

主板

 

焊接图

焊接


PCB板只有HT7333-A和3个贴片电容比较难,其他都简单。

 

 5、电机和麦克纳姆轮

某宝上买的成套材料,25元。结果发过来2个电机是坏的,重新买的2个颜色和速度还和前面的不一样,导致小车横向行走有点弯。


麦轮


麦轮2

 

6、遥控器

手机APP,节省成本。

 

7、成果图

组装好的成品


成品


背面


背面


小车加上舵机和超声波模块:

超声波

 

 

3、软件部分


合宙ESP32-C3支持Lua、MicroPython、乐鑫IDF等开发方式,本项目采用MicroPython开发。

1、手机蓝牙APP

蓝牙区分为经典蓝牙(Classic Bluetooth)和低功耗蓝牙(BLE),低功耗蓝牙一般为蓝牙4.0及以上的。合宙ESP32-C3配备的蓝牙5.0属于BLE,不向下兼容经典蓝牙。所以要通过手机蓝牙APP遥控ESP32-C3小车,则需要支持BLE的APP,我测试了好多APP才找到这个可用的。(iOS请自搜)

Bluefruit Connect:https://cnas.lanzoum.com/ivoGu0pre7xc,密码:4phz

注:文件为Android/HarmonyOS版,IOS版请自行搜索。这个APP有提供四向按键,且按下按键和放开均有发送消息。


APP

 

2、蓝牙遥控原理

要通过手机蓝牙APP控制ESP32-C3小车,原理分三步:

① 实现蓝牙广播和连接。

② 手机蓝牙APP按下按键,通过蓝牙向ESP32-C3发送数据,需要测出每个按键发送的数据。

③ 蓝牙发送的数据被存入到BLE_MSG全局变量中,根据BLE_MSG决定小车行动(前后左右停止)。

 

3、测试轮子转向

小车每个轮子由两个引脚控制,通过引脚的高低电平控制轮子转动的方向。编写代码前,需要先测试,出每个轮子的转向。测试代码如下:

from machine import Pin

from time import sleep_ms

 

# 定义GPIO引脚,L表示左,R表示右,fw表示前轮,bw表示后轮,1表示向前,0表示向后

Lfw1 = Pin(10,Pin.OUT)     # GPIO10引脚,左前轮电机向前

Lfw0 = Pin(7,Pin.OUT)      # GPIO7引脚,左前轮电机向后

Rfw1 = Pin(19,Pin.OUT)     # GPIO19引脚,右前轮电机向前

Rfw0 = Pin(8,Pin.OUT)      # GPIO8引脚,右前轮电机向后

Lbw1 = Pin(3,Pin.OUT)      # GPIO3引脚,左后轮电机向前

Lbw0 = Pin(2,Pin.OUT)      # GPIO2引脚,左后轮电机向后

Rbw1 = Pin(6,Pin.OUT)      # GPIO6引脚,右后轮电机向前

Rbw0 = Pin(18,Pin.OUT)     # GPIO18引脚,右后轮电机向后

 

Lfw1.value(1)

Lfw0.value(0)

Rfw1.value(1)

Rfw0.value(0)

Lbw1.value(1) 

Lbw0.value(0)

Rbw1.value(1)

Rbw0.value(0)

 

4、完整代码

详见我们的微X公众号文章:基于MicroPython的蓝牙遥控小车2.0来了!

 

 

4、BOM清单



bom

 

 

5、大赛LOGO验证



LOGOlogo2



广告图片