基于单片机的列车车厢LED照明控制系统设计【毕业设计】

摘要

随着现代交通运输的发展,列车交通在人们的出行中扮演着越来越重要的角色。而列车车厢照明作为列车运营的重要组成部分,如何改良优化现有设备使其变得更便捷成为了一个重要研究内容。

本设计基于STM32F103C8T6单片机,由单片机模块、温湿度检测模块、光照采集模块、显示模块组成。STM32F103C8T6单片机具有丰富的外设和强大的性能,能够适用多种应用场景。论文中将对主要研究内容,系统总体方案设计,系统硬件电路设计,系统软件设计,实物及调试过程,调试结果进行详细的阐述。本文通过各个方案的对比来确定硬件设备,最终决定使用STM32F103C8T6单片机、DHT11温湿度传感器、BH1750光照采集传感器、OLED屏来实现设计系统的功能。

基于STM32F103C8T6的列车车厢照明控制系统应能完成不同环境下的温湿度及光照采集并在OLED屏上显示出来,通过系统处理使模拟灯光亮起,该系统具有自动光照调节,多种车厢环境数据参数的实时监控功能。

关键词:照明控制系统;环境数据采集;自动调节;节能;调光

Abstract

With the development of modern transportation, train traffic plays an increasingly important role in people's travel. As an important part of train operation, how to improve and optimize existing equipment to make it more convenient has become an important research content.

 This design is based on STM32F103C8T6 single-chip microcomputer, which consists of single-chip microcomputer module, temperature and humidity detection module, light acquisition module and display module. STM32F103C8T6 microcontroller has rich peripherals and powerful performance, which can be applied to a variety of application scenarios. In this paper, the main research content, system overall scheme design, system hardware circuit design, system software design, physical object and debugging process, debugging results will be elaborated in detail. This paper determines the hardware equipment through the comparison of various schemes, and finally decides to use STM32F103C8T6 microcomputer, DHT11 temperature and humidity sensor, BH1750 light acquisition sensor, and OLED screen to realize the functions of the design system.

The train carriage lighting control system based on STM32F103C8T6 should be able to complete the temperature and humidity and light collection in different environments and display it on the OLED screen, and make the simulated lights light up through system processing, the system has automatic light adjustment, a variety of real-time monitoring functions of carriage environmental data parameters.

Keywords: Lighting control system; environmental data acquisition; automatic adjustment; energy saving; dimming

1  绪论

1.1 选题背景及意义

随着时代的变迁,人们的出行方式发生了翻天覆地的变化。从过去的私家车和电动车,到如今的公共交通工具如公交车、地铁和轻轨,我们的出行方式变得更加多样化和便利化。在地铁和轻轨乘坐过程中,车厢的环境对于乘客的舒适度至关重要。特别是在南方,潮湿的气候和人流拥堵常常导致车厢内部湿度过高,给乘客带来不适甚至安全隐患。因此,监测车厢的温湿度变得尤为重要,温度和湿度对人的感受有着重要影响。当我们身处一个环境中时,感受到的温度可能与实际温度不同,这是由于空气中的湿度也会影响体感温度。在相对湿度较高的情况下,人们会感到空气更加潮湿,体感温度也会升高,让人感觉闷热;相反,在相对湿度较低的情况下,空气中的水分子含量较少,人们的汗液蒸发速度较快,体感温度则会降低。在这种趋势下,地铁和轻轨作为快速、高效、环保的城市交通工具正逐渐受到人们的青睐。然而,地铁和轻轨的竞争日益激烈,各个城市都在努力提升乘客的出行体验,以吸引更多的人选择地铁和轻轨作为他们的首选交通方式。在这个背景下,列车车厢的舒适性成为了一项重要的考量指标。传统列车照明系统普遍采用荧光灯或白炽灯等传统照明方式,存在着能耗高、寿命短、光线质量差、开关不便等问题。为了解决这些问题,近年来,越来越多的列车照明系统开始采用LED灯作为替代方案,其具有节能、长寿命、光线质量好、开关便捷等优点,成为了列车照明领域的主流方案。然而,传统的列车LED照明系统还存在着控制精度低、反应慢、调节不灵活等问题,无法满足不同用户和使用环境的需求和要求。因此,设计一种高效、可靠、节能的照明系统对于提高列车乘车体验和保障安全具有重要意义。LED照明控制系统是一种新型照明系统,具有很多优点,如高效节能、寿命长、光色可调等,因此在列车车厢中应用越来越广泛。乘客们希望在列车上能够感受到舒适、温馨的氛围,而LED照明控制系统的应用在列车车厢中正是为了满足这一需求。LED照明控制系统在列车车厢中的应用可以为乘客带来多重好处。首先,LED照明系统能够提供柔和、舒适的照明效果,创造出宜人的环境。通过调整照明亮度和色温,可以营造出不同的氛围,例如在夜间行驶时,可以调暗照明以营造出安静、放松的氛围,帮助乘客入睡;而在白天,可以增加照明亮度,提供明亮的工作或阅读环境。这样的舒适照明环境可以提升乘客的心情和体验。其次,LED照明控制系统还可以提高列车的安全性。LED照明具有快速启动和响应的特点,可以迅速调整照明亮度。在突发情况下,如紧急停车或疏散时,通过调整照明亮度来引导乘客并提供必要的照明支持,有助于确保乘客的安全。此外,LED照明系统的节能性能也是其重要优势之一,能够降低列车的能源消耗和运营成本,符合节能减排的环保理念。

1.2 国内外发展现状

随着时代的变迁,人们对出行方式的需求也在不断变化。在现代社会中,私家车、电动车、公交车以及地铁等成为人们常用的出行工具。其中,地铁和轻轨作为城市快速交通工具的地位不可忽视,而提升乘客体验成为了发展的重要方向。为了提供乘客良好的乘坐体验,LED照明控制系统在列车车厢中应运而生。LED照明控制系统在车厢照明中的应用是一个研究热点,国内外均有相关的研究和应用. 在国内外,LED照明控制系统在车厢照明中的研究和应用得到了广泛关注。许多研究团队致力于提升LED照明的光效和色彩品质,通过优化芯片设计、改进封装技术和发光材料,不断提高LED的亮度、色温准确度和一致性。例如,德国的西门子公司开发了一种车厢LED照明控制系统,该系统使用了红外传感器来检测车厢内的人流量,从而根据乘客数量自动调节车厢内的光照强度和亮度。此外,美国的通用电气公司也开展了LED照明控制系统的研究,他们使用了光传感器和温湿度传感器来自动调节车厢内的光照强度和温湿度,以提高乘客的乘坐舒适度。国外的研究人员致力于提高LED的光效能和亮度,通过改进芯片设计、优化封装技术和发光材料等方面的研究,使LED照明具有更高的能效和更出色的照明效果。研究人员注重提高LED的色彩品质,特别是色温、色彩准确度和色彩一致性方面的研究。通过调整材料配比、光学设计和颜色管理等方法,改善LED照明的色彩表现。同时,智能照明控制成为研究的热点,通过集成传感器、通信技术和智能算法,实现自适应调节、人体感应和远程控制等功能,提升照明系统的智能化水平。此外,纳米技术在LED照明领域的应用也备受关注。研究人员通过纳米材料的制备和应用,改善LED的光效能、发光效果和色彩控制能力,推动LED照明技术的突破。国内的LED照明技术也在不同方向上取得了快速发展,研究机构和企业在LED芯片设计、封装技术、发光材料等方面进行了大量研究和创新,提高了LED照明的亮度、寿命和可靠性。同时,他们注重LED照明系统的整体设计与优化,包括光学设计、散热管理和电源控制等方面的研究。

1.3 主要研究内容

本文设计了一种基于STM32单片机的列车LED照明控制系统,旨在提高列车照明系统的控制精度、反应速度和灵活性,同时降低能耗和维护成本。该系统采用了先进的STM32单片机作为控制核心,利用PWM技术实现对LED灯的调光和色温调节,具有高精度、高速度、稳定性好等优点。同时,系统还采用了CAN总线通信技术,实现了对多组LED灯的集中控制和管理,提高了系统的可靠性和灵活性。按照系统总体方案设计、系统硬件设计、软件设计、原型搭建及测试开展以下内容:

(1)针对车厢观景的主要检测对象,设计可搭载的照明控制系统系统;

(2)制定自动照明调节控制方案;

(3)制定车厢数据采集显示技术方案;

(4)开展系统的软硬件设计,搭建单片机硬件原型,开展各功能的测试与实验。

本论文主要章节包括:

第一章,讲述了LED照明控制系统在列车车厢中的应用可以为乘客带来的好处,给人们带来更好的出行体验,简要的分析了LED照明控制技术、LED控制技术的研究现状,指出本设计的主要内容、创新点和特色,说明了设计列车车厢LED控制技术的意义和价值。

第二章,给出了LED照明控制系统的总体设计方案、各功能模块的硬件选型,使得硬件电路设计和后续的软件程序设计能够正常进行。

第三章,主要介绍了STM32F103C8T6最小系统硬件电路设计、各传感器硬件电路设计,在制作实物原型时将按照设计的方案进行电路连接。

第四章,主要介绍了系统的软件设计流程,系统总体程序设计、各传感器程序设计。

第五章,主要介绍了所设计制作的列车车厢LED照明控制系统的硬件原型、各个模块的调试[1]。

1.4 特色与创新点

本论文的LED照明控制系统的设计工作有以下创新点:

(1)多种车厢环境数据参数的实时监控功能

通过采用多种环境数据监测器件,如温湿度传感器和光照强度传感器,对车厢环境的实时数据进行采集。采集到的数据会被传输到显示电路中,从而可以实现对车厢环境的实时显示。相较于传统的检测方法,这种方法具有快速性和准确性,能够快速检测出车厢内的温湿度和光照强度数据[2]。这为进一步实现智能照明调节提供了有力的基础。

(2)自动照明强度调节功能

该系统还具备自动照明强度调节功能。通过对外界环境数据的实时监测和分析,让系统智能感知环境数据的变化,实现智能照明调节,从而达到减少能源损耗的目的。这种自动调节功能可以根据车厢内外环境的变化,实时调整LED灯的亮度和色温等参数,使得灯光在不同时间段、不同区域的照明效果最佳,同时节省能源。

1.5 设计该系统的意义和价值

在车厢智能照明系统中,人们将较多的关注点集中在对整个车厢中数量巨大的灯光的智能控制控制方面,尤其是对车厢、走廊等公共场所灯光的自动控制,以减少人为控制的负担,和减少电能消耗,以达到自动、高效、节能、环保的目的。然而,虽然科学技术不断的更新与发展,但是目前的照明系统大多还停留在触摸和声控阶段,发展先进的新型智能照明系统已是必然趋势。但是很多新型智能照明系统长期保持照明会引起照明成本的增加,不符合国家节能的理念;但局部或短期照明又会导致进出人员安全感的降低,权衡这两种情况,需要设计开发一个节能省电、人性化的智慧照明系统[3]。本课题研究列车照明控制系统会根据外界环境光照在区域调节周围环境的灯照亮度,一方面满足人从亮度上获取的安全感,又能通过智能调节灯照亮度,减少电能的消耗与浪费。长期保持照明会引起照明成本的增加,不符合国家节能的理念;但局部或短期照明又会导致进出人员安全感的降低,并且现有一些智能照明系统节能效率不高,而且没有考虑人员对安全感的心理需求。权衡这些情况,需要设计开发一个节能省电、人性化的照明系统。在目前大部分轨道车辆车厢内使用的还是传统的荧光灯作为光源,其能耗大,使用效率低。LED具有效率高、绿色环保、寿命长、能量转换效率高、抗振性能好等优点,其在轨道车辆领域的应用也越来越受到关注。考虑到轨道车辆车厢照明系统在冲击震动、电磁兼容、温度及供电范围等方面都有特殊要求,现有的LED照明系统硬件不能直接应用于轨道车辆车厢当中,研究开发抗干扰能力强、散热性好、工作稳定的轨道车辆车厢LED照明系统硬件对于改进轨道车辆车厢照明系统具有非常重要的意义。另外,随着生活质量的提高,人们对轨道车辆舒适性的要求也越来越高,实现轨道车辆照明系统的自动调光将会大幅提高能源利用率,改善车厢照明条件,提高轨道客车的照明舒适性[4]。

2  系统总体方案设计

2.1 需求及指标分析

随着人们的出行需求不断增加,铁路列车是每天运送大量乘客的主要交通方式。列车照明系统在确保乘客的安全和舒适方面发挥着重要作用。火车上的传统照明系统使用白炽灯泡,消耗大量能源,需要频繁维护。随着LED技术的进步,现在可以用LED代替白炽灯泡,该技术可通过智能算法控制照明亮度,根据不同时间和天气情况自动调节灯光,从而实现节能减排的效果。同时,LED照明寿命长,可减少更换灯泡的次数和费用,这也降低了列车维护成本。随着LED技术的不断进步,相信未来LED照明控制系统将会在列车照明领域中发挥更加重要的作用,为乘客提供更加舒适、智能的旅行体验。

1. 舒适性需求:

调光功能:系统应具备调节LED照明亮度的能力,以满足不同乘客的舒适性需求。

色温调节:系统应能够实现色温的调节,以提供不同场景下的适宜光线。

色彩表现:LED照明系统应能够准确还原颜色,提供自然且舒适的照明效果。

2. 安全性需求:

照明稳定性:LED照明系统应保持稳定的照明输出,避免闪烁或突然熄灭的情况,确保乘客的安全感。

紧急照明功能:系统应具备紧急照明功能,在紧急情况下能够提供足够的照明,方便乘客疏散和应对突发事件。

3. 节能性需求:

能效比:LED照明系统应具备高能效特性,以降低能源消耗并减少对车辆电力系统的负荷。

智能控制:系统应采用智能控制算法,根据车厢内的人流量、光照条件和时间等因素,自动调节照明亮度和开关状态,实现节能控制。

4. 可靠性需求:

抗振动性能:车厢LED照明系统应具备良好的抗振动性能,以适应列车运行中的震动和颠簸环境。

长寿命:LED灯具和控制器的设计应考虑长时间运行的要求,以减少更换和维护频率。

5. 系统集成需求:

兼容性:系统应具备良好的兼容性,能够与列车车辆的其他系统进行无缝集成,如列车控制系统、车载网络等。

扩展性:系统设计应具备一定的扩展性,能够满足未来可能的功能扩展和升级需求。

2.2 系统总体方案设计

图2.1是列车车厢LED照明控制系统总体方案示意图。

本文拟设计的列车照明控制系统由光照检测模块、温湿度检测模块、显示电路模块组成,模块程序设计包括: 温湿度监测数据的采集、光照监测数据的采集,显示电路的采集数据实时监控。系统启动先进行各个模块的初始化,初始化完成后进行气体数据的采集和位置信息的采集,经单片机处理之后通过将数据输送至显示电路进行显示。如图1所示。

各模块主要功能如下:

(1)单片机模块:单片机模块可以通过各种传感器和输入设备,如温湿度传感器、光照传感器、开关按钮等,对车厢环境和用户操作进行实时数据采集。它可以接收和处理这些数据,并进行必要的计算、判断和决策[5]。

(2)温湿度检测模块:温湿度检测模块可以实时监测列车车厢内的温度和湿度水平。这有助于了解车厢内的实际环境状况,包括热舒适度和湿度舒适度。通过监测环境参数,系统可以根据实际需求进行相应的照明调节,提供更加舒适的乘车体验。

(3)光照检测模块:光照检测模块可以实时监测列车车厢内的光照强度。通过获取光照数据,系统可以了解车厢内的实际照明情况,包括光线亮度和均匀性。这有助于评估当前的照明状态以及乘客的视觉舒适度。

(4)显示模块:显示模块可以用于展示车厢环境的实时数据,如温度、湿度、光照强度等。通过显示模块,乘客可以直观地了解当前的环境状况,提高乘车的舒适度和安全性。

2.3 单片机模块的硬件选型

方案一:STM32系列单片机

STM32系列单片机是STMicroelectronics推出的一系列高性能、低功耗的单片机产品。对于列车LED照明控制系统而言,STM32系列单片机是一个理想的选择,如图2.2所示为STM32系列单片机实物图。以下是几个主要原因:

1. 强大的处理能力:STM32单片机采用ARM Cortex-M内核,具有高性能的处理能力。它们能够处理复杂的算法和逻辑,满足列车LED照明控制系统的要求。

2. 丰富的外设接口:STM32单片机提供了多个GPIO引脚、通用定时器、PWM输出、ADC等丰富的外设接口。这些接口可以与LED驱动电路、传感器和其他设备进行连接,实现灵活的控制和监测功能。

3. 多种通信接口:STM32单片机支持多种通信接口,如UART、SPI、I2C和CAN等。这使得它们能够与其他系统组件进行通信,例如列车控制系统或监控系统,实现信息的传输和集成。

4. 丰富的开发工具和资源:STMicroelectronics提供了全面的开发工具和资源支持,包括集成开发环境(IDE)、调试器、软件库和示例代码。这些工具和资源有助于开发人员快速进行系统设计和开发[6]。

5. 高可靠性和稳定性:STM32系列单片机经过严格的测试和验证,具有高可靠性和稳定性。它们适用于列车环境的振动、温度和电磁干扰等复杂条件。

方案二:ESP系列单片机

ESP系列单片机是一种基于Wi-Fi或蓝牙的物联网芯片,由Espressif Systems推出。对于需要实现远程控制和监测的列车LED照明控制系统,ESP系列单片机是一个合适的选择,如下图2.3所示为ESP系列单片机实物图。以下是几个主要原因:

1. 内置无线通信功能:ESP单片机内置了Wi-Fi或蓝牙通信模块,使其能够与其他设备或互联网进行无线通信。这样,列车LED照明控制系统可以实现远程控制、监测和数据传输,提高系统的灵活性和便利性。

2. 强大的处理能力:ESP单片机采用高性能的Tensilica Xtensa处理器,具有较强的处理能力。它们能够处理复杂的算法和逻辑,支持实时的LED照明控制和反馈。

3. 丰富的开发资源和社区支持

综上所述,考虑到车厢led照明控制系统的性能需求和资源可用性等因素,选择stm32单片机更有利于实现高效、可靠灵活的led照明控制系统。

2.4 温湿度模块的硬件选型

方案一:SHT11温湿度传感器

SHT11是一款数字温湿度传感器,具有以下特点:

(1)高精度:SHT11具有高精度的温湿度测量能力,能够提供稳定和准确的温湿度数据,适应车厢LED照明控制系统对于温湿度的精确要求[7]。

(2)宽温度范围:SHT11可以在-40°C至125°C的温度范围内测量温度,适应各种车厢环境条件下的温度变化。

(3)高湿度测量范围:SHT11可以测量0%至100%的相对湿度范围,适应不同湿度条件下的车厢LED照明控制系统需求。

(4)快速响应时间:SHT11具有快速的响应时间,可以实时监测车厢内温湿度的变化,并及时反馈给控制系统进行调节。

(5)数字输出接口:SHT11采用数字输出接口,与单片机模块通信方便,能够快速传输温湿度数据。

(6)低功耗设计:SHT11具有低功耗特性,可以降低能源消耗,延长电池寿命。如图2.4为SHT11温湿度传感器实物图。

方案二:DHT11传感器

DHT11是一款经济实用的数字温湿度传感器,以下是DHT11的主要特点:

(1)基本精度:DHT11具有适度的温湿度测量精度,可以满足车厢照明控制系统对于温湿度的基本要求。

(2)适用温度范围:DHT11能够在0°C至50°C的范围内准确测量温度,适应一般车厢内的温度变化。

(3)适用湿度范围:DHT11可以测量20%至90%的相对湿度范围,适用于一般湿度环境下的车厢LED照明控制系统需求。

(4)数字输出接口:DHT11采用数字输出接口,与单片机模块的数字通信兼容性好,能够方便地进行数据传输和通信。

(5)成本效益高:DHT11是一种经济实用的温湿度传感器,价格相对较低,适合对成本有限的车厢LED照明控制系统选型。

如图2.5为DHT11传感器实物图。

综上所述,根据具体的应用需求和预算考虑,选择DHT11传感器。虽然其精确度较SHT11略低,但它仍然能够满足一般车厢LED照明控制系统的温湿度监测需求,同时具有适用的温湿度范围和数字输出接口的优势。

2.5 光照检测模块的硬件选型

方案一:BH1750光照传感器

(1)测量范围广:BH1750具有广泛的测量范围,从较低的光照强度到较高的光照强度都可以准确测量。

(2)数字输出:BH1750采用数字输出接口,方便与微控制器或其他数字电路进行连接和通信。

(3)高精度:BH1750具有较高的测量精度,可以提供准确的光照强度数据。

(4)低功耗:BH1750的功耗较低,适合于电池供电或对功耗要求较高的应用场景。

(5)成本较低:BH1750的价格相对较低,适合预算有限的项目。

如图2.6为BH1750光照传感器实物图。

方案二:TSL2561光照传感器

(1)高分辨率:TSL2561具有高分辨率,可以提供更精细的光照强度测量结果。

(2)宽动态范围:TSL2561具有宽广的动态范围,可以同时测量较低和较高的光照强度。

(3)数字输出:TSL2561也采用数字输出接口,方便与数字系统进行通信和集成。

(4)环境光抑制:TSL2561具有内置的环境光抑制功能,可以减少来自周围环境的干扰,提高测量精度。

(5)适用于各种照明条件:TSL2561适用于不同照明条件下的应用,包括室内和室外照明。

如图2.7为TSL2561光照传感器实物图。

综上所述,由于项目对成本敏感,同时需要较广范围的测量和低功耗特性,选择BH1750传感器。

2.6显示模块的硬件选型

方案一: LCD显示模块

LCD(Liquid Crystal Display)是一种广泛应用于各种电子设备的显示技术,具有低功耗、高对比度、可视角度广等特点。在车厢LED照明控制系统中,LCD显示模块可以用于显示温湿度数据、系统状态、菜单选项等信息,如图2.8为LCD显示屏实物图。具有一下优点:

(1)高对比度:LCD显示模块具有高对比度的特点,能够在各种光照条件下清晰显示信息。

(2)可视角度广:LCD显示模块的可视角度较大,乘客可以从不同角度方便地观察显示内容。

(3)低功耗:LCD显示模块的功耗相对较低,有利于延长系统的电池寿命。

(4)易于集成:LCD显示模块可以通过串行或并行接口与单片机进行通信,集成方便。

方案二: OLED显示模块

OLED(Organic Light Emitting Diode)是一种新型的显示技术,具有自发光、高对比度、快速响应、宽视角等特点[8]。在车厢LED照明控制系统中,OLED显示模块可以用于显示温湿度数据、系统状态等信息,并提供更鲜明的图形和文本显示效果,如图2.9为OLED显示屏实物图。具有以下优点:

(1)自发光:OLED显示模块可以实现自发光,不需要背光源,能够在低亮度下显示清晰内容。

(2)高对比度:OLED显示模块具有高对比度的特点,可以呈现细节丰富、色彩鲜艳的显示效果。

(3)快速响应:OLED显示模块具有快速响应的特性,可以实现实时更新和动画效果。

(4)薄型轻便:OLED显示模块非常薄型轻便,适合于空间有限的应用场景。

(5)视角宽广:OLED显示模块具有宽广的视角,即使从不同角度观察,图像仍然清晰可见。

综上所述,由于项目对显示清晰度、视角和响应时间要求较高,并且空间有限,所以选择OLED显示模块。 

3  系统硬件电路设计

3.1 控制芯片最小系统电路设计

本设计使用STM32F103C8T6作为控制芯片,需要一个外部主频振荡器来提供时钟信号。选择一个8MHz的晶振,并连接到芯片的OSCIN和OSCOUT引脚。为了提高稳定性,可以在晶振两端连接一个20pF的电容。复位电路用于保证系统的可靠启动和复位功能,使用一个电源复位芯片将其RESET引脚连接到STM32F103C8T6芯片的NRST引脚上。同时,还需连接一个10KΩ的上拉电阻到VCC3.3电源。如附录一所示。

3.2 温湿度传感器电路设计

DHT11是一款温湿度传感器,在使用前需要等待1秒钟,然后开始测试环境温湿度数据,并记录数据。此时,DHT11的DATA数据线保持高电平,时刻检测外部信号。我们需要将微处理器的I/O设置为输出,并输出低电平,保持时间不低于18毫秒,然后再将I/O设置为输入状态。这样就会让DATA数据线变为高电平,等待DHT11的回答信号。当DATA数据线检测到外部信号有低电平时,等待低电平结束后,DHT11会输出83微秒的低电平作为应答信号,接着输出87微秒的高电平通知外设准备接收数据。此时,微处理器的I/O处于输入状态,等待DHT11的数据接收[9]。DHT11会输出40位数据,其中每一位的“0”是由54微秒的低电平和23-27微秒的高电平组成,而“1”则是由54微秒的低电平和68-74微秒的高电平组成。当DHT11输出40位数据后,会继续输出低电平54微秒后再转为输入状态,等待下一次的数据读取,其引脚分布如表3.1所示,硬件电路如图3.1温湿度采集电路图所示。

表3.1DHT11引脚分布

Pin

名称

注释

1

VCC

供电3.3V

2

DQ

数据传输

3

NC

空脚

4

GND

接地

3.3 光照传感器电路设计

光照传感器选用BH1750传感器,传感器内部包含一组光电二极管阵列,这些二极管可以感知环境中的光线并将其转换为电信号。当光线照射到光电二极管阵列上时,二极管会吸收光的能量,产生电流使得该电流的大小与光照的强度成正比。BH1750传感器内置了16位的模数转换器,它将光电二极管阵列产生的电流转换为相应的数字值,能将转换后的数字值通过串行接口传输给连接的主控制器。主控制器接收到BH1750传感器的数字输出后,可以通过解析转换后的数值来获取环境中的光照强度数据。其引脚分布如表3.2所示,硬件电路如图3.2光照采集硬件电路图所示。

表3.2BH1750引脚分布

Pin

名称

注释

1

VCC

供电5V

2

GND

接地

3

SCL

串行时钟线

4

SDA

串行数据线

3.4 显示电路设计

OLED是一种新型的显示技术,由有机材料构成,具有自发光特性。与传统LCD(液晶显示)屏幕相比,OLED屏幕具有许多优点,包括更高的对比度、更快的响应时间、更广的视角和更薄轻的设计。它们也不需要背光源,因此能够节省能源并实现更高的能效。OLED屏幕的工作原理是通过在有机材料中注入电流来激发发光。当电流通过发光层时,有机材料会发射出光,形成图像[10]。OLED屏幕在显示领域具有广泛的应用,包括消费电子产品、汽车显示、虚拟现实和增强现实设备等。其优势之一是能够实现柔性和可弯曲的设计,因此在可穿戴设备和可折叠屏幕等领域具有巨大潜力,其硬件电路如图3.3OLED显示电路图所示。

3.5 按键电路设计

按键电路通常由按键和电源组成,其作用是检测按键的变化并将按键的信号传递给目标系统。每个按键都被连接到一个特定的IO引脚上,当按键被按下时,IO的引脚电平会发生变化,STM32F103C8T6检测到这个变化后会执行相应的操作。在本设计中,设计了四个按键,K1用于进入调节界面,K2用于选择选项,K3、K4用于调整数值,其硬件电路如图3.4按键电路图所示。

3.6 系统整体电路设计

本设计是基于STM32F103C8T6的列车车厢LED照明控制系统,使用了STM32F103C8T6单片机,DHT11温湿度传感器、BH1750光照采集传感器、OLED显示屏、按键组成。其整体电路设计如图3.5整体电路设计图。

4  系统软件设计

4.1 系统软件总体设计

列车照明控制系统由光照检测模块、温湿度检测模块、显示电路模块组成,模块程序设计包括: 温湿度监测数据的采集、光照监测数据的采集,显示电路的采集数据实时监控。系统启动先进行各个模块的初始化, 初始化完成后进行气体数据的采集和位置信息的采集,经STM32F103C8T6处理之后通过将数据输送至显示电路进行显示, 程序设计流程图如图 4.1所示。

4.2 各传感器程序设计

4.2.1温湿度传感器程序设计

本设计使用DHT11温湿度传感器测量车厢里的温度和湿度,DHT11是一款数字信号输出的传感器,不需要通过A/D转换,DHT11的数据端口引脚接STM32F103C8T6的PB7引脚,开始工作时,读取车厢内的温度和湿度,数据读取完成后传输到STM32F103C8T6模块,如图4.2温湿度传感器程序设计流程图所示。

4.2.2光照采集传感器程序设计

本次选用数据获取方便的BH1750光照检测电路,该电路是一种用于测量环境光照强度的电路。它采用单片机控制,可以测量环境光照强度,并将测量结果以数字形式输出。它采用I2C总线接口,可以与单片机或其他控制器进行通信,以获取环境光照强度的数据,如图4.3光照采集传感器程序设计流程图所示。

4.2.3 OLED显示程序设计

本文选用OLED显示模块进行数据显示任务,该电路是通过发光二极管进行数据的显示工作,不需要通过额外的光源进行显示。模块具有较高的稳定性,适用不同的工作环境,不受温度、电磁场变化的影响。并且其分辨率比较高,兼容图片、数字、中文、英文的实时显示。能够兼容3.3、5v的工作电压,适合不同单片机的使用,OLED显示模块兼容并行数据、IIC、SPI多种接口方式,整个接口方式通过硬件进行设置。通过不同的控制信号进行模式的设定,不同的模式需要传输的引脚数量也不同。通过BSO0-2管脚进行不同标志位设置,实现接口的定义。最常使用的是SPI接口传输,BSO0-2管脚设置为(0、1、1),该总线模式基本适配各种显示模块。CS引脚用于OLED片选信号,WR管脚控制数据的写入,RD管脚用于数据的读出。D0-D7用于单片机和显示模块的双向数据传输,RST引脚用于显示模块的复位还原工作。DC引脚用于命令/数据标志(0/1---读写命令/读写数据)的设置,如图4.4OLED显示程序设计流程图所示。

5  实物及系统测试

经过研究和设计,确定了列车车厢LED照明控制的硬件电路设计方案和系统软件设计方案,将根据这些方案制作出列车车厢LED照明控制的模型并对模型经行测试前的调试、信息采集测试、功能测试,根据方案制作出来的模型实物如图5.1所示。

5.1 LED照明控制电路的调试

本设计LED照明控制电路基于STM32F103C8T6模块,初次使用需要对其进行调试。首先,确保所有原件和部件都已经正确连接,包括LED灯、电源、控制芯片等。检查电路板上的焊接质量和连接线路的连通性。确定电源的电压和电流符合设计要求后,确保电源供电正常,以此来为LED控制电路提供稳定可靠的电力供应。接上电源后,观察OLED屏是否正常显示,检查控制模块的调节是否正常,如图5.2 LED照明控制电路正常运行图所示。

经过调试,接通电源后LED能正常点亮,OLED屏幕正常显示所设计内容,控制模块能够正常控制采集阈值的调节。当前为其中Light代表光照强度,Temp代表温度,Humi代表湿度。

5.2 温湿度采集模块的调试

本设计使用了DHT11温湿度传感器,在使用前对其进行初始化设置,包括将DATA引脚设置为输出模式并拉低至少18毫秒,然后将DATA引脚设置为输入模式等待DHT11模块的响应。通过主控芯片的I/O引脚读取DHT11模块发送的温湿度数据,在DATA引脚拉低54微秒后,DHT11模块会发送40位的数据,其中包括温度和湿度值,主控芯片需要正确解析数据,并将其转换为实际的温度和湿度数值。对采集到的温湿度数据进行校准和校验,通过与其他可靠的温湿度测量设备进行对比,或使用标准温湿度环境进行验证,以确保采集到的数据的准确性和可靠性。进行长时间的数据采集和监测,观察温湿度数据的稳定性和重复性。验证DHT11模块在不同环境条件下的表现,并评估其稳定性和性能,如表5.1所示

表5.1温湿度数据采集

名称/单位

第一次数据

第二次数据

第三次数据

第四次数据

第五次数据

温度/℃

26

25

25

26

25

相对湿度/%

64

65

67

65

66

名称/单位

第六次数据

第七次数据

第八次数据

第九次数据

第十次数据

温度/℃

26

26

26

25

25

相对湿度/%

66

65

67

67

66

由表可知,DHT11所测得的温湿度数据在误差范围内,符合研究和设计的要求。

5.3 光照采集模块及显示模块的调试

本次选用数据获取方便的BH1750光照检测电路,该电路是一种用于测量环境光照强度的电路。它采用单片机控制,可以测量环境光照强度,并将测量结果以数字形式输出。它采用I2C总线接口,可以与单片机或其他控制器进行通信,以获取环境光照强度的数据。

室内一般照明条件下光照强度为100到1000LX之间,室外自然光照条件下一般为1000到10000LX之间,为检测BH1750传感器的光照采集能力是否正常,使光源从远到近的移动,OLED屏上显示从76LX逐渐增大到938LX随着光照强度的增加,能够正常采集光照并将数据传输到STM32F103C8T6,最后在显示屏上显示出来,如图5.3光照阈值图所示。

OLED屏上显示了光照强度对应的档位。当光照强度小于L1 300LX时亮三盏灯,如图5.4光照强度小于300LX所示。

当光照强度大于300LX小于或等于600LX时亮两盏灯,如图5.5光照强度大于300LX小于或等于600LX所示。

当光照强度大于600LX小于或等于900LX时亮一盏灯,如图5.6光照强度大于600LX小于或等于900LX时亮一盏灯。

当光照强度大于900LX时不亮灯,如阈值图5.7光照强度大于900LX所示。

总结与展望

总结

本设计基于STM32F103C8T6单片机、OLED液晶显示屏、轻触按键、DHT11温湿度传感器和BH1750光照采集传感器,实现了列车车厢照明系统的智能控制和环境数据采集。通过LED进行列车灯光模拟,为乘客提供舒适的照明环境。

(1)该设计利用STM32F103C8T6单片机作为控制器,具备强大的处理能力和丰富的外设接口,能够灵活控制LED照明系统,具有稳定可靠的性能,能够持续运行和响应各种指令和操作,确保系统的稳定性和可靠性。通过与其他硬件设备的通信,实现对照明系统的精准控制。同时,单片机还负责采集和处理DHT11温湿度传感器和BH1750光照采集传感器的数据,实时监测车厢内的环境参数。

(2)OLED液晶显示屏作为用户界面,能够实时显示温湿度数据、光照强度以及照明系统的工作状态。乘客和运维人员可以通过观察显示屏,了解车厢内部的环境状况和照明状态。通过轻触按键进行操作和设置,可以调节LED灯的亮度、切换照明模式等。

(3)DHT11温湿度传感器采集车厢内的环境温度和湿度数据,提供对车厢内部环境的实时监测。传感器通过与单片机的通信,将采集到的数据传输给控制器进行处理。根据温湿度数据,系统可以智能地调节LED照明的亮度和色温,提供舒适的照明效果。

(4)BH1750光照采集传感器负责测量车厢内的光照强度。传感器能够实时采集光照数据,并传输给单片机进行处理。根据光照数据,系统可以智能地调节LED灯的亮度和光照模式,以实现合适的照明效果[11]。

本设计通过与OLED显示屏、轻触按键、DHT11温湿度传感器和BH1750光照采集传感器的配合,实现了对照明系统的灵活控制和车厢环境的实时监测。

展望

经过研究和设计,完成了系统的硬件电路设计和软件程序设计以及最后的调试,最终将列车车厢LED照明控制系统原型做了出来,并进行了一系列的测试,实现了对光照强度以及温湿度的采集数据以及对数据的处理显示。虽然在一定程度上实现了论文的研究目的,但在以下几个方面还需要做进一步的研究。

(1)该设计还具备一定的扩展性和可升级性。基于STM32的开发平台,开发者可以进一步扩展系统的功能和性能,满足不同列车照明需求。例如,可以增加更多的传感器模块,如气体传感器、人体红外传感器等,实现更全面的环境监测和控制。另外,还可以考虑与车载网络通信系统的集成,实现对照明系统的远程监控和管理。

(2)可以通过算法的优化和调整,进一步提升照明系统的节能性能,实现更高效的能源利用。

(3)可以考虑引入更先进的照明技术,如RGB LED灯光控制、全彩LED矩阵显示等,提供更丰富多样的照明效果和乘车体验。

(4)还可以加强系统的自动化功能,通过定时控制和智能场景设置,提供更智能化的照明方案,提高乘客的舒适度和满意度。

参考文献

  1. 郝光健. 基于LabVIEW和单片机的室内环境监测预警系统的设计[D].山东农业大学,2014.
  2. 党婵娟.基于STM32的智能环境监测小车的设计[J].电子技术与软件工程,2017,No.113(15):246.
  3. 郝亚非. 节能智慧照明系统设计与实现[D].内蒙古大学,2018.
  4. 张邦成,谭海东,郝明亮等.基于WTB/MVB总线的轨道车辆LED照明控制系统设计[J].电子技术应用,2014,40(05):49-51+58.DOI:10.16157/j.issn.0258-7998.2014.05.010.
  5. 彭爱梅,尹玉军,毛晓英.基于ZigBee的温室WSN监测系统的设计与实现[J].江苏农业科学,2014,42(12):445-447.DOI:10.15889/j.issn.1002-1302.2014.12.149.
  6. 张帆. 嵌入式系统在机器人视觉中的应用[D].重庆大学,2005.
  7. 樊建明,陈渊睿.基于SHT11的温室多点测量系统设计[J].国外电子测量技术,2006(11):4-8.DOI:10.19652/j.cnki.femt.2006.11.002.
  8. 张素萍,李朝强,张建芬.基于单片机的OLED显示系统设计[J].福建电脑,2015,31(08):15-16+61.DOI:10.16707/j.cnki.fjpc.2015.08.047.
  9. 郭亮,王冠南,孙红静等.基于Raspberry Pi的可视化温湿度测量系统设计[J].单片机与嵌入式系统应用,2016,16(09):57-60+68.
  10. 手持设备中的无源OLED显示供电方案[J].电子技术应用,2008,34(11):12-14.
  11. 何震,黄小容.基于单片机的智能环境质量监测系统[J].电子世界,2016,No.497(11):72.DOI:10.19353/j.cnki.dzsj.2016.11.049.
  12. How to realize the intelligent LED display in the future[J]. M2 Presswire,2020.
  13. Fu X,Fu L,Ma T. Design of Indoor Temperature and Humidity Detection System Based on Single Chip Microcomputer[C]//AEIC Academic Exchange Information Centre(China).Proceedings of 2nd International Workshop on Advances in Energy Science and Environment Engineering(AESEE 2018) (Advances in Energy Science and Environment Engineering II).AIP Publishing,2018:186-190.
  14. Patents; "Led Illumination Control Systems and Methods" in Patent Application Approval Process (USPTO 20170284639[J]. Journal of Engineering,2017.

附录

附录一 STM32最小系统电路设计图

附录二 主程序

#include "sys.h"

#include "delay.h"

#include "usart.h"

#include "timer.h"

#include "string.h"

#include "oled.h"

#include "keya.h"

#include  "bh1750.h"

#include "dht11.h"

#define  Led1 PAout(7)

#define  Led2 PAout(6)

#define  Led3 PAout(5)

#define  SaveAddr (0x08000000+0x7900) //保存地址

typedef struct{

u32 lightL1;

u32 lightL2;

u32 lightL3;

}set_t;

set_t setVal;

u8 lcdPage = 0;

u8 lcdFlag = 0;

u16 realLight;

//从Flash中读取参数

void readDat(void)

{

u8 i = 0;

u32 *dat = (u32 *)&setVal;

for(i=0;i<sizeof(setVal)/4;i++){

dat[i] = *(u32*)(SaveAddr + 4*i);

}

if(setVal.lightL1>30000){

setVal.lightL1 = 1000;

}

if(setVal.lightL1>10000){

setVal.lightL1 = 100;

}

if(setVal.lightL2>10000){

setVal.lightL2 = 300;

}

if(setVal.lightL3>10000){

setVal.lightL3 = 500;

}

}

//保存设置参数

void Flash_Write(void)

{

u8 i=0;

u32 addr;

u32 *p = (u32 *)&setVal;

addr=SaveAddr;

/* 解锁FLASH编写擦除控制器 */

FLASH_Unlock();

/* 清除FLASH待处理标志位 */

FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);

/* 擦除一个FLASH页面 */

if(FLASH_ErasePage(addr) != FLASH_COMPLETE)

{

/* 未擦除完成,则锁定FLASH编写擦除控制器,退出 */

FLASH_Lock();

  return ;

}

for(i=0;i<sizeof(setVal)/4;i++)

{

/* 写一个数据 */

FLASH_ProgramWord(addr, p[i]);

addr+=4;

}

/* 锁定FLASH编写擦除控制器 */

FLASH_Lock();

}

void Io_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE ); //使能GPIOB时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

Led1 = 1;

Led2 = 1;

Led3 = 1;

}

void OledShowCursor(u8 flag)

{

OLED_ShowString2(8*15, 0, " ", 16, 0);

OLED_ShowString2(8*15, 2, " ", 16, 0);

OLED_ShowString2(8*15, 4, " ", 16, 0);

OLED_ShowString2(8*15, 6, " ", 16, 0);

OLED_ShowString2(8*15, 2*flag, "<", 16, 0);

}

u8 realTemp;

u8 realHumi;

int main(void)

{

u8 keyVal = 0;

char showBuf[50];

delay_init(); //延时函数初始化

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); // 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); // 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能

delay_ms(1000);

Io_Init();

bh1750_iic_init();

// uart_init(9600);

TIM2_Init(999, 7199); //100ms定时中断

keyInit();

DHT11_Init();

OLED_Init(); //初始化OLED

OLED_ShowString2(8*0, 0, "Light:", 16, 0);

OLED_ShowString2(8*0, 2, "Temp:", 16, 0);

OLED_ShowString2(8*0, 4, "Humi:", 16, 0);

readDat();

DHT11_Read_Data(&realTemp, &realHumi);

while(1){

if(lcdPage == 0){

if(time2Flag1 >= 10){

time2Flag1 = 0;

realLight = readLight();

sprintf(showBuf, "Light:%05dLX", realLight);

OLED_ShowString2(8*0, 0, showBuf, 16, 0);

DHT11_Read_Data(&realTemp, &realHumi);

sprintf(showBuf, "%03d~  ", realTemp);

OLED_ShowString2(8*5, 2, showBuf, 16, 0);

sprintf(showBuf, "%03d%%  ", realHumi);

OLED_ShowString2(8*5, 4, showBuf, 16, 0);

if(realLight <= setVal.lightL1){

Led1 = 0;

Led2 = 0;

Led3 = 0;

}

else if(realLight>= setVal.lightL1 && realLight<=setVal.lightL2){

Led1 = 0;

Led2 = 0;

Led3 = 1;

}

else if(realLight>= setVal.lightL2 && realLight<=setVal.lightL3){

Led1 = 0;

Led2 = 1;

Led3 = 1;

}

else if(realLight>= setVal.lightL3){

Led1 = 1;

Led2 = 1;

Led3 = 1;

}

}

}

keyVal = KEY_Scan(0);

if(keyVal == 1){

lcdPage++;

lcdFlag = 0;

OLED_Clear();

if(lcdPage > 1)

lcdPage = 0;

if(lcdPage == 0){

OLED_ShowString2(8*0, 0, "Light:", 16, 0);

OLED_ShowString2(8*0, 2, "Temp:", 16, 0);

OLED_ShowString2(8*0, 4, "Humi:", 16, 0);

Flash_Write();

}

else if(lcdPage == 1){

OLED_ShowString2(8*0, 0, "Light L1:", 16, 0);

OLED_ShowString2(8*0, 2, "Light L2:", 16, 0);

OLED_ShowString2(8*0, 4, "Light L3:", 16, 0);

OledShowNum(8*9, 0, setVal.lightL1, 0, 4);

OledShowNum(8*9, 2, setVal.lightL2, 0, 4);

OledShowNum(8*9, 4, setVal.lightL3, 0, 4);

OledShowCursor(lcdFlag);

}

}

if(lcdPage == 1){ //页面1的设置调节  按键控制处理

if(keyVal == 2){ //选择按键

lcdFlag++;

if(lcdFlag > 2)

lcdFlag = 0;

OledShowCursor(lcdFlag);

}

else if(keyVal == 3){ //加按键

if(lcdFlag == 0){

if(setVal.lightL1 < setVal.lightL2-10)

setVal.lightL1 += 10;

OledShowNum(8*9, 0, setVal.lightL1, 0, 4);

}

else if(lcdFlag == 1){

if(setVal.lightL2 < setVal.lightL3-10)

setVal.lightL2 += 10;

OledShowNum(8*9, 2, setVal.lightL2, 0, 4);

}

else if(lcdFlag == 2){

if(setVal.lightL3 < 10000)

setVal.lightL3 += 10;

OledShowNum(8*9, 4, setVal.lightL3, 0, 4);

}

}

else if(keyVal == 4){ //减按键

if(lcdFlag == 0){

if(setVal.lightL1 >= 10)

setVal.lightL1 -= 10;

OledShowNum(8*9, 0, setVal.lightL1, 0, 4);

}

else if(lcdFlag == 1){

if(setVal.lightL2 > setVal.lightL1+10)

setVal.lightL2 -= 10;

OledShowNum(8*9, 2, setVal.lightL2, 0, 4);

}

else if(lcdFlag == 2){

if(setVal.lightL3 > setVal.lightL2+10)

setVal.lightL3 -= 10;

OledShowNum(8*9, 4, setVal.lightL3, 0, 4);

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下饭的王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值