前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >项目复刻 - STM32智能小车 笔记1

项目复刻 - STM32智能小车 笔记1

原创
作者头像
笃信好学
发布2023-03-06 03:33:01
9770
发布2023-03-06 03:33:01
举报
文章被收录于专栏:笃信好学笃信好学

核心能力和难点

  1. stm32或者嵌入式的核心,定时器,中断系统,通信,我掌握得不好
  2. 操作一些需要的模块,例如OLED模块,超声波测距模块,红外循迹模块,蓝牙模块,电机驱动模块,舵机等等
  3. c语言

小车的4个预期功能

功能1: 红外对管循迹

小车沿着地上粘贴着黑色胶带的路线行驶,

原理是4红外对管可以通过红外反射识别出小车和路径(黑色胶带的)的相对位置,来调节转向,实现循迹功能。

功能2: 蓝牙控制小车运动

HC-05蓝牙模块连接单片机,用已经被设计好的蓝牙操作安卓软件,去完成与小车的通信与交互,实现简单的控制运动。用usart文件控制。

功能3: 定距离跟随功能

小车与前方障碍物保持20-25cm距离,如果距离小于20cm,小车后退。如果距离大于25cm,小车前进,保持与障碍物的距离为20-25cm。原理是 HC-SR04 超声波测距模块 通过声波测距。

功能4: 结合舵机完成避障功能

小车正常直线行驶,如果前方25cm检测出来障碍物,舵机右转30度,检测右前方是否有障碍物,如果没有,右转,如果有障碍物,舵机左转60度,检测左前方是否有障碍物,如果没有,左转,如果有,倒退并直接右转。

我的小车
我的小车
小车总体设计方案 示意图
小车总体设计方案 示意图

硬件汇总和简单介绍

  1. 主控:STM32单片机 - STM32f103c8t6最小系统板,正点原子
  2. OLED显示屏模块 0.96寸 IIC/SPI
  3. HC-SR04 超声波测距模块
  4. 寻迹传感器 TCRT5000红外反射传感器
  5. HC-05 主从机一体蓝牙串口透传模块
  6. TB6612FNG电机驱动模块
  7. 电机马达 DC3V-6V直流减速电机
  8. SG90 9g舵机 固定翼航模遥控飞机 180度舵机
  9. 12v锂电池组18650充电带保护板大容量电瓶通用移动电源便携蓄电池

项目流程

  1. 下单,注意有两个版本v1.5 和v3,我的是v1.5
  2. 下载项目资源,下载【正点原子】精英STM32F103开发板的项目资源,里面有很多项目实例,可以直接复制粘贴某一模块。
  3. 组装,注意电机安装的注意事项,红黑线交叉。舵机那个斜孔螺丝太难拧了,得找个大的螺丝刀。
  4. 安装keil arm,这个和c51是不一样的。Keil v5安装新的器件pack时可能报错。发现报错:Cannotcopypsdcfileto “.download” folder。要管理员权限导入软件包或者网上直接搜下。
  5. 安装st-link驱动。St link upgrate 的时候不要打开单片机。到这里硬件和基础准备已经完成,剩下的就是软件编写了。
  6. 软件第1步,目的点亮小灯。先复制个正点原子的led 项目过来,然后在上面改。先改芯片类型,晶振频率,hd->md等等,然后点亮小灯。
  7. 端口初始化
    端口初始化
  8. 软件第2步,目的控制电机。两部分,第一部分GPIO 高低电平控制AIN和BIN端口,第二部分PWM控制PWMA和PWMB。第一部分和led小灯一样,改个端口名字。再复制个正点原子的pwm的文件过来,在上面改。定时器的计数器调节占空比,这个再好好理解下。另外可以通过逻辑分析仪观察波形输出、显示PWM波形。最后编写,前进,后退,左转,右转和停止的功能函数。
  9. PWM初始化部分代码
    PWM初始化部分代码
  10. 软件第3步,目的控制舵机。和电机pwm控制一样,调节占空比来调节舵机 转角
  11. PWM 函数
    PWM 函数
  12. 软件第4步,目的操作按键控制led。两部分 配置按键端和配置中断线和配置外部通道。这个我的第一次的keil文件可以实现,第二次又从头弄了新的keil文件,就怎么操作不了按键。记录一下,下次再试。
  13. 软件第5步,目的操作红外对管,做简单的识别。红外对管的原理可以总结为, 当前面是黑色的时候,容易接收到返回的红外线,二极管点亮,当前面不是黑色的时候,不容易接收到返回的红外线,二极管熄灭状态。我在这里卡了很久,测试了很多次,我的结论是,1我的pcb板子上面的第三个红外对管的接口失效,2我的4个红外对管的led会一直亮,除非把小车拿到距离地面差不多8cm左右的地方,根本没有识别效果,是不是我的地板原因还是我需要在一个阳光明媚的日子实验。再测。
  14. 软件第6步,目的串口接收发送,初始化usart,把TTL与单片机连接,通过串口软件发送接收数据,也可以出发usart的中端
  15. Usart初始化部分
    Usart初始化部分
  16. 软件第7步,目的测试蓝牙,安装安卓蓝牙app,实现发送给单片机信号的作用。初始化使用串口+编写中断服务函数。我的蓝牙app 可以发送信号给单片机,但是不能实现单片机发送信号给手机app,再测
  17. 软件第8步,目的操作OLED显示
  18. OLED 初始化 部分代码
    OLED 初始化 部分代码
  19. 软件第9步,目的ADC测量电池电压。锂电池电压12V左右,单片机ADC最大测量电压3.3V,这里我们需要分压电路分压。找个正点原子的adc文件复制过去。
  20. 软件第10步,目的超声波测距,原理是MCU给Trig脚一个大于10us的高电平脉冲;然后读取Echo脚的高电平信号时间,通过公式:距离 = T*声速/2 就可以算出来距离。定时器2通道2输入捕获配置需设置终端+定时器2中断服务程序
  21. 定时器2通道2输入捕获配置
    定时器2通道2输入捕获配置
  22. 软件第11步,目的实现定距离跟随功能.小车与前方障碍物保持20-25cm距离,如果距离小于20cm,小车后退。如果距离大于25cm,小车前进,保持与障碍物的距离为20-25cm。
  23. 软件第12步,结合舵机完成避障功能,小车正常直线行驶,如果前方25cm检测出来障碍物,舵机右转30度,检测右前方是否有障碍物,如果没有,右转,如果有障碍物,舵机左转60度,检测左前方是否有障碍物,如果没有,左转,如果有,倒退并直接右转。这两步都是C语言编写和场景应用,。
  24. 软件第13步,缝合上面功能:
  • 小车具有红外对管循迹、蓝牙遥控、定距离跟随、避障运动模式
  • 可以通过小车按键和APP进行切换小车的运动模式。
  • APP与OLED显示小车所处模式和超声波测量值、电池电压。

需要复习和理解代码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 核心能力和难点
  • 小车的4个预期功能
    • 功能1: 红外对管循迹
      • 功能2: 蓝牙控制小车运动
        • 功能3: 定距离跟随功能
          • 功能4: 结合舵机完成避障功能
          • 硬件汇总和简单介绍
          • 项目流程
          • 需要复习和理解代码
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档