这段日子,准备把智能车的程序准备一套教程。
主要的思路是:
利用stc15单片机,完成循迹避障小车,包含走直线,曲线,T型路口,交叉路口等,熟悉小车的转弯算法等,能用无线进行遥控;包括PWM循迹,AD循迹,超声波避障,或者OPENMV跟踪物体等功能。
后面整理下资料,一年成熟后可以考虑出一本教程。
于是,整理下相关资料,包括硬件和软件。
硬件部分,主要是利用带编码的直流电机两个,加上一个万向轮,做一个包含循迹、视觉openmv模块,做一个数格子或者是有十字交叉等的循迹,附加任务是加上舵机机械手搬运物体。
需要的硬件模块包括:
1、stc8a或者stc15系列单片机最小系统模块;
2、0.96"OLED模块1个,spi接口;
3、TB6612模块一个;
4、5个独立按键(至少5个),利用内置的AD做按键识别;
5、红外通信的红外遥控模块(含发送和接收头)一个;
6、18650电池两个以及电池底座一个。
7、STM32F103RCT6最小系统一个(因为主要是学习51单片机的编程,因此这个仅仅作为两个电机编码器读取,然后串口发送相关数据的作用,当做一个传感器。)
需要的软件编程知识包括:
1、51单片机部分:
基础知识:
(1)stc8a的IO口输入输出,需要设置工作模式,推挽输出,准双向输出等;
(2)定时器的定时模式;
(3)定时器产生波特率的作为串口波特率来源;
(4)外部中断;
(5)(定频调宽方式)PCA模块产生PWM控制电机,或者是利用定时器产生PWM,或者是用增强版的PWM发生器;
(6)串口接收,串口发送数据;
(7)校验和的算法原理(或者CRC校验的原理);
(8)学会读懂寄存器,能对一个字节的某一位进行处理,不能位寻址,包括清0,置1。
(9)内置AD转换,包括设置寄存器,取结果;这个主要用到按键识别,以及循迹模块的AD获取;
(10)红外通信的内容,读懂代码,运用,用遥控器实现,按下某个按键,单片机接收到那个按键,然后用OLED显示;
(11)循迹模块的使用,单个模块能够正确用AD获取电压值以及黑白线的传感数值;5个模块,读取5路AD转换数值,进行循迹,基本的直线循迹,曲线循迹,T型路口循迹,十字路口循迹;
(12)利用stm32制作的编码器模块,51单片机通过串口和stm32单片机进行通信,包括接收编码器的消息,以及控制stm32停止测速等,用OLED显示;
(13)利用OPENMV进行基本的颜色读取,等案例学习(官网资料例程),通过串口和51单片机通信;
(14)超声波测距避障模块,学习超声波测距,可以1路测距,或者是3路测距,研究其中的算法;
(15)例外:学习蓝牙通信,用手机控制小车运行;
(16)基本的滤波算法代码,用于采集的数据整理,包括AD采集的数据,电机的采集数据等;
目前基本的模块的知识已经基本汇总,主要有
1、红外遥控;
2、PWM产生模块,
3、UART2串口发送、接收模块;
4、电机运动模块;
5、超声波模块;
6、校验和模块;
7、AD模块读取红外测距传感器;(可以改造为读取循迹模块);
8、校验和的程序知识;
9、stm32F103RCT6制作的传感器模块,可以发送出电机的运动方向,电机的相对脉冲量,电机的速度数值;
10、
下一步需要做下面的工作:
1、电机运动的脉冲数标定,速度标定,计算出来的速度需要进行标定,这个工作需要制作一个简单的实验用具,比如指针,速度计;可以用速度计作为毕业设计题目;
2、循迹模块的使用;
3、PWM模块的矫正,利用示波器,做实验,验证下波形的正确与否;
4、电机测量模块的整理,争取写一篇小论文;重点在滤波算法以及标定;
5、走直线,曲线,等。
6、分配好IO口之后,绘制stc8A的最小系统板的电路板,PCB板,制作。
7、小车的智能控制各个模块的整合。
分配给其他小伙伴进行整理实验。不然没那么多时间。整理下,看下能不能出一个教材。一个论文。