首先先祝各位五一快乐!现在我讲一讲这个系统设计:
   基于STM32单片机设计的消毒小车主体构成由STM32单片机、红外传感器、超声波传感器、红外接收管、蓝牙通讯模块、OLED液晶显示、四驱小车、除尘模块、雾化加湿与消毒模块、串口和指示灯等模块构成。通过STM32F030C8T6单片机对各功能模块的控制或者处理探测以及通讯模块发送的信息,从而根据设定的程序去控制和使能红外避障、超声波测距、红外循迹、小车电机驱动、红外遥控、除尘、加湿、消毒等模块,实现了对消毒小车的智能控制,完成室内环境的清洁、加湿和消毒等工作。并且通过STM32F030C8T6主控芯片读取当前消毒小车的工作状态,并将读取的数据通过程序转化成可读字符,通过串口发送到OLED显示屏实时显示当前工作状态。消毒小车的总体设计基于STM32单片机处理设定程序和算法计算对消毒小车的各个模块进行控制,实现了无人智能的危险场所的消毒工作。如下图是消毒小车的总体设计方案
image.png

       本消毒小车集成了探测模块、清洁模块和消毒模块。探测模块的作用是用于探测和采集外界环境信息;清洁装置用于环境的除尘和加湿;消毒装置用于区域的消毒工作。其基本工作过程是启动消毒小车后,STM32单片机通过处理程序代码控制消毒小车的各个模块,首先根据规划路径自动循迹行驶,并且开始进行除尘和加湿工作,当清洁任务完成之后,开始对室内进行消毒工作,从而实现对危险区域的非人工消毒。所以任务完成之后消毒小车停止运行并等待工作人员重新发布指令,此时工作人员可以通过红外遥控或者蓝牙端控制消毒小车重新进行室内消毒或者驱动消毒小车驶出消毒的室内,进行消毒液的填充和储尘罐的清除工作。
1、STM32单片机主控模块
      本消毒小车设计采用STM32F030C8T6 单片机作为主控芯片,STM32F030C8T6单片机是基于ARM公司的 Cortex™-M0 32 位 RISC 内核。其程序闪存的容量高达64KB字节,CPU频率达到48MHz,提供高速嵌入式存储器,足以满足完成改设计的程序存储和通讯需求,其工作电压在2.4 至 3.6 V,可以在零下四十摄氏度至八十五摄氏度之间保持正常的工作,具有低电压和低功率和实时性能等特性,其包括各种外设和I/O口,如12 位的 ADC数据采集通道、16 位计时器和一个高级控制 PWM 计时器,以及SPI 、I2C和 USART(UART) 等通信接口,具有易于使用功能,足以满足完成对消毒小车的控制和通讯接口的需求。此主控芯片的主要作用是进行程序处理及执行并对外设电路进行控制和处理的采集信息等。在本次设计里我使用的是基于STM32F030C8T6芯片的最小系统开发板,所谓最小系统板就是满足单片机的正常工作的情况下,使用最少的元件让整个系统板的功能引脚引出,使其根据操作者需求来自由配置及使用进行开发。如下图是STM32F030C8T6 最小系统板:
image.png

       在这个STM32F030C8T6最小系统板上使用USB接口的5V通过线性稳压芯片AMS1117-3.3转换为单片机工作电压的3.3V给其供电,然后根据需求配置所需的单片机I/O引脚并烧录的程序使能各模块对应I/O引脚,即可通过单片机使能消毒小车电机驱动、消毒、除尘、加湿等模块,以及读取红外传感器、红外遥控、蓝牙通讯等模块输出数据,从而实现消毒小车各个模块的正常工作。作为主控芯片STM32F030C8T6是消毒小车整体功能实现的核心,对了解各模块的工作状态、控制各模块数据的输入输出发挥着关键的作用。
2、 L298N芯片电机驱动模块
      本消毒小车的电机驱动模块采用ST公司的L298N作为驱动芯片。该L298N驱动板的工作电压范围在6V至46V内,可持续稳定的提供2A的工作电流,具有抗干扰能力强、发热量低、驱动能力强等特性,并且具有反馈检测功能和过热自断安全保护等,满足了驱动消毒小车的动力,也保障了消毒小车的用电安全性。其内部有两个H桥,是专用驱动的IC芯片,其输入端可以直接与单片机相连,通过TTL逻辑电平信号对使能控制端进行控制输出端。其工作原理是通过STM32F030C8T6主控芯片的I/O输入对其控制电平进行设定,使能逻辑通道IN1,IN2,IN3,IN4分别控制out1,out2,out3,out4,利用out1与out2,out3与out4两者电位差(即电位的不同)就可以实现驱动电机进行正转或者反转。本设计使用四个电机分别控制消毒小车的左前轮、左后轮、右前轮和右后轮,而一片L298N芯片可以同时驱动两台直流电机,通过左前轮和左后轮电机并联,右前轮和右后轮电机并联的方式,对IN1,IN2,IN3,IN4不同组合搭配进行使能,从而满足实现控制消毒小车的左(前后)轮、右(前后)轮电机实现驱动消毒小车前进、后退、左转和右转等功能。本设计使用STM32F030C8T6的GPIOA3、GPIOA4、GPIOA5、GPIOA6引脚作为对应使能L298N驱动板的IN1、IN2、IN3、IN4的I/O口进行控制。如下图是STM32电机驱动接口原理图和 L298N芯片电机驱动模块原理图:
image.png

3、红外循迹和避障模块
       本设计用到的循迹及避障传感器采用TCRT5000红外光电传感器模块,TCRT5000光电传感器模块设计是基于一款红外反射式开关器件,工作电压为 3.3V-5V。传感器采用红外线对射管原理,发射功率红外光电二极管和光电接收管组成,其可通过调节模块上的电位器调节探测距离,即通过调节硬件外设就能实现检测距离的设定,极大程度的减少了程序开发的复杂性,具有使用方便、功能易使用的特点,用于消毒小车设计的避障及循迹模块足以满足需求,并且其模块价格便宜,具有很好的性价比。
       当用于循迹功能时,结合其高灵敏度,灵敏度可调以及感应的遮挡距离 0-3cm等特性,其工作原理是TCRT5000传感器的红外发射二极管不断发射红外线,通过比较器LM393芯片进行电压比较,当没有检测到物体出现在检测范围内时,发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,模块的OUT口输出端为高电平,指示二极管一直处于熄灭状态,此时主控芯片读取GPIOA11、GPIOA12引脚电平都为高电平,控制消毒小车保持正常行驶(即前进状态);当检测到物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管饱和,模块的OUT输出端为低电平,指示二极管被点亮,此时主控芯片读取GPIOA11、GPIOA12引脚电平为GPIOA11低电平或者GPIOA12为低电平或者两者都为低电平,分别控制消毒小车进行左循迹、右循迹和停止等状态,从而完成消毒小车的自主循迹功能。
      当用于避障功能时,首先根据其有效距离范围 2~8厘米的探测距离,通过调节电位器旋钮设定最佳检测距离,然后根据检测角度35度进行模块固定,达到有效检测物体的目的。其工作原理:一定频率的红外线通过红外光电发射管朝35度探测角发射,当探测方向检查到障碍物时,红外接收管接收到反射回来的红外线,经过LM393芯片组成的比较电路对红外接收管电压的变化进行比较,通过OUT输出接口输出低电平信号给到相连的单片机I/O口,此时主控芯片读取GPIOF6、GPIOF7的引脚电平状态,控制消毒小车进行左避障或者右避障或者停止及后退等状态。综上所述,该红外光电传感器模块满足了实现消毒小车自主循迹以及避障的功能需求。
      在本设计中使用STM32F030C8T6的GPIOA11、GPIOA12、GPIOF6、GPIOF7引脚分别连接4个TCRT5000红外光电传感器模块的OUT引脚进行数据的传输,并且使用VCC 3.3V进行供电。如下图是STM32红外循迹和避障接口和红外光电传感器模块所示:

image.png

image.png

4、JDY-30蓝牙模块
      本设计使用的蓝牙通讯模块是JDY-30蓝牙模块,JDY-30蓝牙模块基于蓝牙 3.0 SPP 设计,具有蓝牙2.1协议标准,支持 Windows、Linux、android 等数据透传, 其工作频段 2.4GHZ,最大发射功率 8db,最大发射离 30 米,具有数据传输快、信号器强、性能稳定等特性;其工作原理,首先需要主控芯片的串口通讯的波特率与蓝牙模块的波特率相一致,然后通过手机端安装的蓝牙调试助手进行蓝牙连接,客户端进行发送特定数据指令通过JDY-30蓝牙模块接收数据然后发送给主控芯片,主控芯片对数据指令进行读取并处理,即可对消毒小车进行远程的指令控制。该模块在消毒小车设计中用于实现消毒小车与客户端的无线通讯的功能,让用户通过手机端也能对小车进行控制,方便用户控制消毒小车驶出危险工作环境等,是实现消毒小车更好的减少人们对危险环境的人工介入可能,同时也是消毒小车与用户进行人机交互的重要途径之一。本设计用到STM32F030C8T6的GPIOB7引脚USART1_RX同步串口接收端、GPIOB6引脚USART1_TX同步串口发送端,JDY-30的两个引脚TXD发送端和RXD接收端,其中需要注意蓝牙模块和主控芯片引脚的接收与发送引脚的对应关系,STM32F030C8T6的USART1_RX引脚与JDY-30模块的TXD发送端相连,USART1_TX引脚与RXD接收端相连,以此实现JDY-30蓝牙模块接收客户端发送的数据指令并把接收的数据指令发送到主控芯片的接收端,然后主控芯片对数据指令进行处理,从而实现客户端对消毒小车的无线通讯。使用STM32F030C8T6最小系统板的VCC 3.3V进行供电,保持其供电的稳定性,以此保障了蓝牙无线通讯的稳定性。如下图是STM32蓝牙模块接口和 JDY-30蓝牙模块所示:
image.png

5、超声波测距模块
      本设计采用了HC-SR04 超声波测距模块,由于超声波在空气中传播途中碰到物体会发生反射和折射,可通过超声波接收装置接收超声波发射装置发射的超声波的时间差,计算得出跟障碍物的距离,其指向性强、检测比较方便且计算简单,非常适用于消毒小车对外界环境的测距,该模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm,足以满足消毒小车做出正常的避障反应。超声波测距模块电路包括超声波发射器、接收器以及控制电路等,其基本工作原理:首先通过主控芯片的GPIOB10引脚给超声波测距模块的I/O 口 Trig上拉10us以上的高电平触发信号和输出一个40kHz的脉冲信号,使其触发测距并驱动超声波发送器发出40KHz的脉冲,超声波超声波测距模块的发射器向一定方向发射超声波[15]。同时,单片机通过启动时设定的程序进行定时启动,超声波在空气中传播并在途中遇到障碍物时返回,此时超声波接收器会自动检测是否有信号返回,当超声波测距模块的接收器收到反射波后通过产生一个回应信号并通过模块 I/0 口 Echo 输出一个持续的高电平反馈给主控芯片的GPIOB11引脚,此时单片机就立即停止计时,高电平持续的时间就是超声波从发射到返回的时间T。如下图是超声波测距信号时序图。由于超声波在空气中的传播速度V为340m/s,根据计时器记录的时间T,就可以计算出发射点距障碍物的距离,即:S=VT/2,通过单片机来算出距离。该超声波测距模块能通过实时模拟最佳的设定消毒小车遇到障碍时的距离,确保消毒小车能及时有效的做出避障响应动作,该模块在消毒小车的避障设计中具有重要的意义。本设计用到STM32F030C8T6的GPIOB10、GPIOB11分别与超声波模块的Trig和Echo引脚相连。如下图是超声波测距模块原理图:
image.png

6、 红外遥控模块
       本次设计中为了使消毒小车能更加的方便移动和更多的趣味性,加入了红外遥控器远程控制的功能,可以直接通过遥控器发送指令对消毒小车进行控制。该红外遥控模块主要由一个红外发光管、信号调制电路、一体化红外接收头和按键等组成。其工作原理是,其红外遥控器将按键信息编码和调制之后,通过一个红外发光二极管,以红外光为载体的形式把按键信息传递到STM32最小系统板的一体化红外接收端,然后通过单片机对按键信息进行接收和解码。该红外遥控具有两种状态,分别是控制状态和学习状态,本次设计中用到控制状态对消毒小车进行远程的遥控。当遥控器处于控制状态时,按下一个按键,在处理器读取一系列二进制数串行输出并通过调制电路进行调制,通过红外LED发出一系列调制信号,该信号通过一体红外接收端接收,输出解调后的数字脉冲,因为每个按键对应的按键脉冲不同,故能通过程序对不同按键进行不同的控制编写,从而实现按键对消毒小车的控制。本次设计用到STM32F030C8T6的GPIOB2与红外接收管相连,如下图是STM32 红外遥控接口:
image.png

7、 除尘模块

      本次设计中对除尘模块的硬件选型,考虑到消毒小车可供电电压的大小、其装载空间以及与消毒小车整体结构适配等因素,故选择了5V供电的USB吸尘器作为除尘模块,以此可整合到其他模块实现消毒小车的设计要求。该吸尘器主要包括通风管、中间的储尘仓、抽气涡轮、马达和空气过滤网等,其工作原理就是通过驱动马达让抽气涡轮旋转,使其内部产生压差,然后其通风管的口径相对较小,因此通风管处产生较强的吸力,从而实现对灰尘和一些小垃圾的清除。除尘模块的使能采用ULN20001N驱动芯片构成的驱动电路进行控制,然后由单片机根据程序设定控制GPIO口的输出电平,对应的使能驱动芯片的使能控制引脚来达到对除尘模块控制。本次设计用到STM32F030C8T6的GPIOA7引脚(Dust)与ULN20001N驱动芯片的IN1使能引脚相连。

8、 雾化消毒及加湿模块
       本次设计采用了微孔雾化片来实现消毒小车消毒及加湿的功能,其采用不锈钢材质制作而成,使其表面光滑细腻,具有防腐蚀性和耐酸碱的特点,谐振频率在108KHz至110KHz之间,能够产生极其细小的水雾。该雾化消毒及加湿模块主要包括微孔雾化片、集成驱动电路板、雾化支架和海绵吸棒等。其工作原理就是将海绵吸棒通过雾化支架固定在浸泡在水里的容器中,然后雾化片中间的微孔与海绵吸棒接触,通过给集成驱动电路板使能上电让微孔雾化片产生高频的振荡运动,使其将水或者消毒水等液态水分子结构打散而产生非常多细小的水雾,通过中间的微孔区域飘散出去,从而实现雾化的作用。雾化消毒及加湿模块的使能采用ULN20001N驱动芯片构成的驱动电路进行控制,然后由单片机根据程序设定控制GPIO口的输出电平,对应的使能驱动芯片的使能控制引脚来达到对加湿和消毒模块的控制。本次设计用到STM32F030C8T6的GPIOB0引脚(Wet)、GPIOB1引脚(SAM)分别与ULN20001N驱动芯片的IN2、IN3使能引脚相连。如下图是STM32 除尘加湿消毒接口所示:
image.png

9、OLED显示屏模块
        本次设计采用OLED显示屏模块进行功能状态的中文显示,采用的0.96寸OLED显示屏具备自发光,具有反应速度快、对比度高和价格便宜等特点,该显示屏使用的是SSD1306集成芯片进行驱动,SSD1306具有128个列输出和64个行输出的,刚好驱动0.96寸OLED显示屏的128*64点阵大小,即分辨率为128*64,足以满足本次设计中消毒小车(除尘、加湿、消毒)三种工作状态的中文显示。其基于集成电路总线的通信屏幕,当我们读写集成电路总线时,必须使用IIC的通信协议,并根据协议的要求设置相应的值,通过程序控制SCL时钟控制引脚和SDA数据传输引脚的高电平和低电平的变化对OLED屏幕进行控制的。因此,根据IIC协议对单片机的GPIO口配置相应的输入输出,就可以实现对OLED显示模块的控制。该模块在消毒小车的设计中起到实时显示工作状态的功能,能让我们更好的观察和知晓消毒小车具体的工作模式等。本设计用到STM32F030C8T6的GPIOB8、GPIOB9分别与OLED显示模块的SDA和SCL引脚相连。如下图是 STM32 OLED显示屏接口所示:

image.png
10、 程序下载与调试模块
       本次设计采用ST-LINK V2进行STM32单片机的仿真烧录调试。其支持JTAG和SWD两种下载方式,在本设计里选择的是SWD下载方式,该编译器跟单片机连接的所需引脚数量较少,而且使用比较简单,只需要将其3.3V电源正极、电源负极、数据输出引脚SWDIO、时钟配置引脚SWCLK等四个引脚与STM32最小系统板对应连接。当程序烧录时,需要在Keil5 MDK 上选择使用ST-link Debugger为ARM编译器,然后勾选烧录模式为SW,即可将程序运行成功自动生成的.HEX文件烧录到单片机。如下图是 STM32 下载及调试接口所示:

image.png