描述
<p>注:* 为必填项
<strong><span class="colour" style="color:rgb(0, 147, 230)">请在报名阶段填写 ↓</span></strong></p>
<h3>* 1、项目功能介绍</h3>
<p>之前,我为了即将出生的小满做了一个麦轮小车。本项目是想给这个小车配套一个稍微炫酷一点的遥控器~</p>
<h3>*2、项目属性</h3>
<p>本项目以及另外做的麦轮小车感兴趣的话都可以开源。本项目未曾参加其他比赛、课题答辩等,纯粹是个人DIY。感兴趣的可以一起交流学习~</p>
<h3>* 3、开源协议</h3>
<p>本项目完全开源,遵从GPL3.0开源协议。</p>
<p><strong><span class="colour" style="color:rgb(0, 147, 230)">请在竞赛阶段填写 ↓</span></strong></p>
<h3>*4、硬件部分</h3>
<p><img src="//image.lceda.cn/pullimage/zg9FzBVIMWImWO1FJBjSp57G90WiVgYgajE9yohf.png" alt="image.png">
硬件部分比较简单,核心部件就是一堆按键。主要分为摇杆、按钮、nrf24l01无线传输、锂电池充电、蜂鸣器、振动马达、陀螺仪、oled、蓝牙等模块,主控使用的是STM32F103C8T6。</p>
<h4>4.1 摇杆</h4>
<p><img src="//image.lceda.cn/pullimage/GJfK6p1RT4asfPzyYHZdATiOgdRCWIu06O6Zcxgx.png" alt="image.png">
特别是摇杆的选型看了挺久,网上卖的一般是xbox手柄摇杆,pcb封装未知不太敢买,我就按照立创eda里有的封装去tb上找,后来发现网上一般是16*16和13*13两种大小,我这个封装买13的就行,尺寸都是通用的。
另外要注意摇杆adc采集时的正负极接线,一开始我还以为要按照说明书不能反接,后来自己试验发现,内部就是个滑动变阻器,反接正负极也就是采集到的电压正负而已,不影响adc数值的有效性。</p>
<h4>4.2 按钮</h4>
<p><img src="//image.lceda.cn/pullimage/wmJlMsfFFPTS8yT5gLx1wh1UsJHN5LYz1j0LFhe5.png" alt="image.png">
按钮这里比较有意思,普通的按钮硬件设计如左边所示,电阻进行限流,电容防止抖动。
而右边我用的三档开关,综合考虑了下,去掉了电容部分,因为我认为拨动开关抖动不严重,否则每个加上电容器件有点多。。</p>
<h4>4.3 震动马达</h4>
<p><img src="//image.lceda.cn/pullimage/bNCQODUxoJszAHQ9pKAsN3RDNRICh4TUqAqXtjXp.png" alt="image.png">
震动马达我是第一次使用,电路设计上心里没底,最终还是选了个最简单的电路验证一下,结果运行还良好。
二极管作用防止停转电流倒灌。</p>
<h4>4.4 蜂鸣器</h4>
<p><img src="//image.lceda.cn/pullimage/7uOrv5F25tcNTqtAUhkjSjdOUXDmibexyo0LwM50.png" alt="image.png">
之前踩过一个三极管的坑,蜂鸣器硬件设计还是有点讲究的。可以看看这个<a href="https://blog.csdn.net/weixin_42515561/article/details/116153786?spm=1001.2014.3001.5506" target="_blank">帖子</a>。</p>
<h4>4.5 稳压电路</h4>
<p><img src="//image.lceda.cn/pullimage/2kely595lohZrWJXN55lEnc2woyMhAN5etP9x7EO.png" alt="image.png">
使用的是me6211,就看中它体积小。</p>
<h4>4.6 充电电路</h4>
<p><img src="//image.lceda.cn/pullimage/O6mKjwfNe3A1ylcDjFvVs346CnJ32NJT5MLhGyYb.png" alt="image.png">
也是参考了立创项目库中的常用电路,注意R18封装使用1206,因为会发热。</p>
<h4>4.7 电源输入</h4>
<p><img src="//image.lceda.cn/pullimage/QLkObPTZeu78iYsm5RSdo8nv0S3AKYN5rfBf5dxf.png" alt="image.png">
通过两档拨动开关控制使用usb电源还是锂电池电源,这里不影响充电电路电源输入。
同时me6211的稳压能力对5v和3.7v都能稳压到3.3v。</p>
<h2></h2>
<p><span class="colour" style="color:rgb(149, 165, 166)">注:请前往<u><a href="https://lceda.cn/editor" target="_blank">嘉立创EDA</a> </u> 生成/上传设计文件,文件完成后,相关文稿将自动生成至项目详情;这里可以详细说明您的项目实现原理和机制、注意事项、调试方法、测试方法等。推荐图文并茂的形式向别人介绍您的想法。</span></p>
<h3>*5、软件部分</h3>
<p>代码详见:<a href="https://github.com/CharlesPu/TuTu_RC" target="_blank">https://github.com/CharlesPu/TuTu_RC</a>
各部分模块对应硬件部分,功能不复杂。主函数如下:</p>
<pre><code class="language-c">int main(void)
{
HAL_Init();
HAL_Delay(100); // for oled
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
MX_TIM4_Init();
MX_ADC1_Init();
MX_SPI1_Init();
BUZZER_init();
VIBMOTOR_init();
OLED_U8G2_init();
RC_init();
#ifdef MODULE_MPU6050
MPU_Init();
uint8_t res = 0;
do{
res = mpu_dmp_init();
ERR_LOG("mpu_dmp_init fail code: %d\r\n",res);
}while (res);
#endif
HAL_Delay(2000);
BUZZER_beep_twice();
VIBMOTOR_vibrate_once();
INF_LOG("tutu rc start!\r\n");
uint64_t loop_cnt=0;
while (1)
{
#ifdef MODULE_MPU6050
imu_data_t imu_data;
res= mpu_dmp_get_data(&imu_data);
if(res)
ERR_LOG("mpu_dmp_get_data fail: %d\r\n", res);
#endif
////////////////////////////// 1s /////////////////////////////////
if (loop_cnt % 100 == 0) {
HAL_GPIO_TogglePin(DOGGY_GPIO_Port, DOGGY_Pin);
#ifdef MODULE_MPU6050
OLED_U8G2_draw_mpu6050(&imu_data);
#endif
}
////////////////////////////// 50ms /////////////////////////////////
if (loop_cnt % 5 == 1) {
RC_control();
}
HAL_Delay(10);
loop_cnt++;
}
}
</code></pre>
<h4>5.1 摇杆数据采集</h4>
<p>采用ADC DMA模式进行采集,可以参考<a href="https://blog.csdn.net/m0_64551204/article/details/135296070" target="_blank">博客</a>。注意配置连续采集时,每个通道都要分别配置。DMA模式下要注意开启循环传输,字长要和程序中数组一致。</p>
<h4>5.2 无线传输自定义协议</h4>
<pre><code class="language-c">// 控制信号协议
// 10 Bytes ,大端序
// B0 | B1 B2 | B3 B4 | B5 B6 | B7 B8
// 'P' ( rk1-x ) ( rk1-y ) ( rk2-x ) ( rk2-y )
// | B9[ b7 b6 b5 b4 b3-b0]
// rk1-z rk2-z key_l key_r 0
// | B10[ b7 b6 b5 b4 b3 b2 b1-b0] | B11
// sw1-1 sw1-2 sw1-3 sw2-1 sw2-2 sw2-3 0 checksum
</code></pre>
<p>自定义的传输协议如上,可以nrf,也可以蓝牙。checksum使用了简单的求和取反算法,够用。</p>
<p><span class="colour" style="color:rgb(149, 165, 166)">注:若您的项目涉及软件开发,请在附件上传对应的工程源码。这里可以详细说明您的软件流程图、功能模块框图、相关算法的解释或科普、源码结构、编译环境的搭建和配置、源码编译方法、程序烧录方法等。推荐图文并茂的形式向别人介绍您的想法。</span></p>
<h3>*6、BOM清单</h3>
<p>实在是不知道怎么上传或者同步,官方也没有教程。。重新保存也没用,希望官方来解决下这个bug
<span class="colour" style="color:rgb(149, 165, 166)">请输入内容…</span><br>
<br>
<span class="colour" style="color:rgb(149, 165, 166)">注:项目涉及的BOM清单。在<u><a href="https://lceda.cn/editor" target="_blank">嘉立创EDA</a> </u> 生成/上传设计文件后,BOM将自动生成至项目详情;建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。</span></p>
<h3>*7、大赛LOGO验证</h3>
<p><img src="//image.lceda.cn/pullimage/wIvErbaVKg53keRxTLuBDV9NknFwuuwwa7f7gcgS.png" alt="1728477559351.png">
<img src="//image.lceda.cn/pullimage/oUeEsPhrDeRZZYFhuM8X2aROHL5WpQG3ezoBGQOE.png" alt="1728477657801.png">
<img src="//image.lceda.cn/pullimage/z1QjrQ2sX40Up7enw75fImpFQ0ezZjIy682SvpFG.png" alt="image.png">
<img src="//image.lceda.cn/pullimage/H9KvQpd3aW67OjRfhTyvaUBFScEI6DkdOFRMLnG7.png" alt="image.png"></p>
<p><span class="colour" style="color:rgb(149, 165, 166)">请上传包含大赛logo的项目图片,logo以丝印形式印刷在PCB上面。</span>
<span class="colour" style="color:rgb(149, 165, 166)">点击zip下载大赛logo标识! <u><a href="https://image.lceda.cn/easyedaResource/images/d1bbfd69f9404f56901a0e7b849b7245.rar" target="_blank">(大赛标识).zip</a></u></span></p>
<h3>* 8、演示您的项目并录制成视频上传</h3>
<p><span class="colour" style="color:rgb(149, 165, 166)">视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</span>
<span class="colour" style="color:rgb(149, 165, 166)">视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</span><br>
<br>
<a href="/posts/de460543d4cf4dacb5f0326612455578" target="_blank">前往查看更多详情 ></a></p>
评论(5)