设计展示视频连接:消防栓监测系统视频
驱动程序工程文件:消防栓监测系统驱动程序工程(全寄存器开发的)
消防栓监测系统所有设计资料:全栈设计,如下图所示
消防栓监测系统论文(图片看不清的可以下载文档看):论文文档

好消息:
关注加收藏加评论的同学,有几率获得该毕业设计的电路板一块(规则:关注收藏后,在评论区评论第一名、第十八名、第三十六名的可获得该电路板,注意“货到付款,小编不包邮费”)


抱歉:论文在移动到CSDN中,文章的数学公式出现了一些变形,大家可下载小编上传的论文查看,还有论文中有一些电路截图并没有修改过来,大家下载我上传的工程文件进行对照查看啦!
注意:本毕业设计提供给各位同学参考学习,未经本人许可,不得转发和相关的商业活动。

摘 要   物联网时代的到来,推动了智慧城市的逐步成形,智能消防栓监测系统作为智慧城市监管的一部分,极大解决了城市中消防栓设备难以监管的问题。本文设计了一款基于STM32为控制核心处理器,对各类传感器进行数据的采集、解析、响应处理,通过NB-IOT通讯模块上传数据,用于上位机查看与控制。消防栓监测系统设备拥有AD-DC反激式开关电源和太阳能两种锂电池充电功能,实现了室内外工作兼容,NB-IOT通讯模块大大降低了设备工作的能耗,同时太阳能充电实现可再生能源的利用。经多次测试,本次设计的消防栓监测系统能准确、实时对消防栓进行监测,效果好。

关键词: 物联网;智慧城市;消防栓监测系统;太阳能充电

目录

  • 1 前 言
    • 1.1 课题研究背景
    • 1.2 国内外发展现状
    • 1.3 课题研究的目的以及意义
    • 1.4 课题研究内容、方法、步骤与要求
  • 2 消防栓监测系统系统设计
    • 2.1 系统整体设计思路
    • 2.2 系统整体设计架构
  • 3 消防栓监测系统硬件设计
    • 3.1 整体硬件系统电路设计组成
    • 3.2 AC-DC反激式开关电源
    • 3.3 锂电池充电电路
      • 3.3.1 太阳能板锂电池充电电路
      • 3.3.2 直流锂电池充电电路
      • 3.3.3 双节锂电池保护电路
    • 3.4 电源电压转换电路
      • 3.4.1 锂电池及USB输入电源12V升压电路
      • 3.4.2 Buck降压电路
      • 3.4.3 LDO线性稳压电路
    • 3.5 电源切换电路
      • 3.5.1自动优先级切换输入电源电路
      • 3.5.2 锂电池选择输入电源充电电路
    • 3.6 单片机控制电路
      • 3.6.1 STM32F103C8T6最小系统电路
      • 3.6.2 Type C接口USB转串口电路
      • 3.6.3 外部拓展电源接口电路
      • 3.6.5 ADC模数转换电路
      • 3.6.6 继电器控制电路
    • 3.7 消防栓监测系统外壳
  • 4 消防栓监测系统软件设计
    • 4.1 下位机软件系统设计
  • 4.1.1 整体软件系统设计通用思路
      • 4.1.2 主程序程序流程图设计
      • 4.1.3 EEPROM获取设备ID号实现
      • 4.1.4 IMU901陀螺仪获取角度实现
      • 4.1.5 DS18B20温度传感器获取环境温度实现
      • 4.1.6 BC20物联网模块无线通信与GPS定位
    • 4.2 上位机软件系统设计
  • 5 消防栓监测系统测试
    • 5.1 SWD接口烧录程序测试
    • 5.2 USB接口烧录程序测试
    • 5.3 消防栓监测系统上电启动测试
    • 5.4 云智能APP无线远程观控设备测试
    • 5.5 蓝牙APP无线近程观控设备测试
    • 5.7 三种输入电源测试
  • 6 总结

1 前 言

1.1 课题研究背景

  自改革开发这30多年以来,我国的经济和科技得到了快速地发展,进而老百姓的生活质量也跟着不断地提高。而这些无线物联网技术的各类消费产品也已经渗入老百姓的日常生活中,使得老百姓在生活上对物联网智能产品产生依赖和对其质量及功能上有了更高的需求,因此像一些新生智能化的监测系统的无线物联网设备在智慧城市建设、智慧农场等受到相关政府和企业的十分看重。
近十几年来,我国的城市化规模不断扩展,人们的生活环境中的各种公共设施上也得到更大规模的覆盖。虽然人们在生活质量上得到了提高,但是也带来了许多烦恼,因为在新闻上频繁报道出某小区因消防栓故障导致错过最佳的救火时间。从这些相关的新闻报导可以看出,城市内的小区人口居住密集,生活质量的提高带来了各种各样的智能设备使用,而不规范的设备使用会引发了怕的火灾,又因为消防栓数量多和分布错综复杂导致难以监管维护,一旦发生消防栓被破坏、内部无水、内部欠压、非法盗水使用等各类事件就得不到及时的维护和修复了,进而导致新闻上的消防栓无法发挥救火的功能的悲剧发生。从以上结论可以得出消防栓监测系统设备可以解决消防栓设备监测维护的困难。
  在近期新闻报道中报道了我国北方出现用电紧张问题,随着经济的发展和科技的进步,电成了人类社会个个领域都或不可缺的能源。因此设计的这款监测系统设备不能只是实现无人远程监测等功能而不了了之,还要在确保设备可靠性上还要降低能耗和利用可再生能源来维护设备运行。

1.2 国内外发展现状

  传统的消防栓是没有附加任何的电子设备的,全靠相关部门的维护工作人员定期对设备进行检查维护,导致了消防栓设备一旦损坏可能会长时间得不到修复,这样大大增加了人们在生活上的安全隐患,而且在维护成本上消耗了大量的人力。
  在90年代,国外就有开始研究监测系统技术了。监测系统从最初的人工现场监护的模式中,慢慢发展到以传感器与网络为基础的的监测系统,也在慢慢的脱离人力的资源,进一步的实现智能化与商业化等模式。使用模拟组合仪表进行收集信息并执行指令、记录以及控制。而这些监测系统设备都是使用传感器进行检测采集人类能感知以及人类无法感知的气体、液体、固体等数据,进而对数据解析执行相对应的动作。而在这个智能时代,智能监测设备核心除了处理器外,那就是传感器了。
  在传感器的发展史中,对传感器的研发上我国是比较晚的。因为国外对我国传感器技术的封锁,所以我国对传感器研发上处处碰壁,就算研发出来的传感器在工艺上与国际标准也存在较大的差距。据网上和书籍上相关的数据分析,我国在传感器的研发技术、工艺等方面上与美、德、日、韩等这些工业发达的国家还是存在较大的差距。令人感到震惊的是,美、德、日本这三个国家的传感器产业约占全球市场的70%,然而我国对传感器的需求量是全球最高的国家之一,每年都会通过国外进口各种大量的传感器。
  因为传感器在工业、汽车等智能设备上发挥着重大作用,各个国家对传感器也是越来越重视。与美国、日本、韩国以及德国等技术发达的国家相比较,我国在传感器产业上面临着三个巨大的挑战:
  第一,对于独立知识产权的产品或者较新的产品在研发上的能力,都是相对比较差的;又因传感器设计方面对灵敏度和精度等都有严格的要求,然而中国在研发传感器上又很难达到国际要求,因此国内的中高档传感器产品有百分之九十以上进口国外的。因为中国大部分的中高档传感器是进口外国的,使得中国的传感器行业一直处在“被牵着鼻子走”的状态。
  第二,我国在传感器研发上没有切确的标准,模糊的标准使得在传感器研发方面无法进行统一,进而导致生产出来的传感器杂七杂八、不拘一格。不仅在传感器研发上标准模糊,而且我国在人才培养上不够重视,导致人才流失和核心技术缺乏,才进一步导致国内的传感器市场难以扩展,出现长期性被国外的传感器传感器市场压抑状态。
  第三,我国不仅大部分的地区的企业分布杂乱无章,而且国内的企业大部分还都是中小型企业,然而这些中小型的企业无论在资金上、技术上、结构管理上都是比较薄弱、欠缺的,因此造成了国内整体的企业综合能力被拉低。
  虽然我国在传感器研发技术方面上与那些发达国家要弱许多,但是有些发达国家因资金匮乏和通讯领域较为薄弱,例如日本、韩国,导致他们这些发达国家不能像中国那样发展大规模的智慧物联网,而美国这种国家地广人稀,美政府对物联网和军事之间的投入,两者更愿意在军事上投入更多,这导致其这种发达国家也无法大规模发展智慧物联网。
因为中国对智慧物联网上大量投入开发,因此对传感器的研发技术上也有了不少的突破。而像消防栓监测系统这种设备也是从中获取到红利,使用国内传感器成本低,性能上也可靠。

1.3 课题研究的目的以及意义

  从现况分析,我国的大部分城市等地区对消防栓设备的监测和维护管理上都存在比较大的不足,那么导致这些地区出现较多的消防安全隐患。消防栓监测系统可实现远程监测及其报警,大大减少了人力上的消耗。消防栓监测系统设备包含了水压采集、倾角采集、温度采集、GPS北斗定位的功能,从而解决了消防栓的基础数据监测和技术维护人员能通过定位坐标快速到达出了故障的消防栓设备附近,从而快速对设备进行维护,那么大大降低了地区的消防安全隐患和对设备监测维护上的成本。
  电子设备除了需要完成其设计的功能目的外,还需要符合当今绿色环保的主题,因此消防栓监测系统设备在能源消耗上使用了太阳能可再生能源作为设备供电能源。

1.4 课题研究内容、方法、步骤与要求

  通过对市场对此类常见的监测系统设备进行分析得出结论,市场上这类设备的功能有水压监测、出水流量监测、破坏或撞到监测、GPS定位、蓝牙通讯等这些比较常见普通的监测功能。
  根据上述调查,本课题采用循序涨进这个原则设计了一款基于STM32为数据处理中心的消防栓监测系统,实现室内外消防栓设备的监测和将该数据进行实时的上传并在上位机图形数据呈现给用户查看。该系统主要由STM32F103C8T6中央控制器模块、OLED液晶显示模块、BT04蓝牙模块、NB-IOT通讯模块、GPS北斗定位模块、IMU901九轴传感器、水压传感器、DS18B20温度传感器、AC-DC反激式开关电源以及各种电源拓扑等电路及模块组成。
系统实现的功能如下:

  1. 对水压、角度、环境温度、芯片工作温度、GPS定位等数据进行检测,然后采集数据,最后上传数据。
  2. 对采集的进行数据分析,如超过预设值触发报警。
  3. 蓝牙无线近程控制与串口调试打印。
  4. 手机客户端无线远程查看采集数据以及控制。
  5. 市电和太阳能对锂电池充电,实现室内外兼容。
    本设计步骤如下:
  6. 对整个系统做出大概的思路并根据该思路画出初步的设计骨架。
  7. 对使用到的电路和模块进行查阅、了解、筛选,最后确定初步的硬件设计。
  8. 对底层驱动程序和上位机蓝牙程序依据实现的功能进行梳理逻辑并根据梳理好的逻辑进行程序流程图的绘制,最终再根据绘制好的程序流程图来进行程序编写和根据实际调试情况进行修整等。
  9. 最后对下位机进行底层驱动程序的烧录,再结合硬件电路、上位机蓝牙APP及云智能APP进行对接并进行完整的系统调试,而调试过程中进行数据分析和整体的改进与优化,最终完成设计要求。

2 消防栓监测系统系统设计

2.1 系统整体设计思路

  该系统的整体设计思路:基于STM32处理器作为整个系统的处理中心,通过各种传感器对消防栓设备进行检测,如水压、角度、温度、定位等数据进行采集,然后通过STM32处理器对采集的数据进行处理,如若数值超过预设值,那么就会触发报警,同时STM32处理器会对处理后的数据进行实时上传到服务器并在手机上位机APP呈现图形数据便于用户查看。
  为了解决消防栓监测系统设备能兼容室内外的持续工作,本系统设计了两种电源供电电路,第一种是AC-DC反激式开关电源电路,它可将220V交流市电转换成直流电,第二种是太阳能开关电源电路,它可将太阳能(可再生能源)转换成直流电。这两种电源供电电路不仅解决了室内外兼容工作,而且增加了设备运行的稳定性和完全符合国家提倡的绿色环保主题。
  为了解决设备的安全和维修人员及工程师的户外调试,在设备外壳上增加了电子锁来保证设备的安全和配备蓝牙APP便与调试打印数据信息及完成无接触式开锁功能。

2.2 系统整体设计架构

  消防栓监测系统的整体设计框架图如图2-1所示,以框架图中的STM32F103C8T6单片机作为整个系统设备的主控制核心,其次框架图左侧作为整个系统设备的供电输入口及工作电压转换功能,通过右侧的供电输入对STM32单片机和各个模块的供电使得整个系统设备正常工作。
  消防栓监测系统的完整工作模式是先使用STM32单片机对各个模块进行初始化;其次对水压传感器、IMU901陀螺仪、DS18B20温度传感器、EEPROM、GPS北斗定位进行对应的数据采集和数据解析;再次通过BT04蓝牙及NB-IOT模块进行对解析后的数据上传、通过OLED显示时间和设备ID号等信息和通过对解析后的数据与预设值进行比较后对继电器、NB-IOT做出相应的响应;最后通过上位机云智能APP对阿里云物联网服务器获取数据和上位机安卓蓝牙APP获取数据来呈现到UI界面上提供客户查看信息。

3 消防栓监测系统硬件设计

3.1 整体硬件系统电路设计组成

  消防栓监测系统硬件电路由一下几部分组成:AC-DC反激式开关电源电路、USB_Type_C串口数据交互口电路、双节锂电池保护电路、双节锂电池充电电路、LDO线性稳压电路、太阳能多节锂电池充电电路、BOOST升压电路、BUCK降压电路、电源选择电路、ADC模数转换电路、BT04蓝牙模块、EEPROM模块、NB-IOT模块、IMU901陀螺仪模块、OLED显示屏、STM32单片机等电路组成。根据每个硬件模块之间关系的连接,并配合驱动程序完成消防栓监测系统整体的控制处理,最终达到预想的整体处理工作。
  下图3-1是消防栓监测系统的电源系统关系结构图,是为了提供消防栓监测系统有一个完整、稳定、可靠的供电系统,保证该系统工作的稳定性。

图 3-1 消防栓监测系统电源系统关系结构图

3.2 AC-DC反激式开关电源

  反激式电源的“反激式”之得名,是指输出端在将原边绕组切断时获得电能。而反激式电源在小功率的家用电器中比较广泛,其具备了电路简化、可高效进行多路直流输入输出、转换率较高、即使输入电流在较大的波动范围内都可保证比较平稳的输出功率的优点。
  反激式开关电源作用是将输入的220V交流市电转换为直流电输出。因为本系统需要设计的的是185V-265V范围的交流输入电压和12V输出电压与2A输出电流。而选择使用深圳东科半岛体有限公司的DK124-24W离线式开关电源IC正好可以满足设计要求。设计的电路图如下图3-2所示。

图 3-2 反激式开关电源主电路
实现步骤如下:

  1. 熔断丝:选择2A-250V,这是电气安全的最关键一个关口,它起到在短路和过载情况下快速切断电源从而保护后级电路。
  2. NTC热敏电阻:选择型号为5D-9热敏电阻,它有着3A最大稳态电流,可以防止刚上电的设备碰上市电输入的电源峰值产生的浪涌电流对后级电路带来无法修复的损坏。
  3. 压敏电阻:选择拥有2.2倍的交流有效工作电压的14D471K压敏电阻,它是一种限压型保护器件,在压敏电阻两极之间产生过电压的时候,它可以利用其自身的非线性特性,将电压钳位到一个相对固定的电压值,从而达到抑制电压浪涌保护后级电路的作用[1]。
  4. EMI电路:电路中的CX1的X类安规电容、LF2共模电感及R2、R5电阻组成EMI电路,它可以抑制噪声信号。X类安规电容称为差模电容器,用于L-N之间的电容器,0.47uF/275VAC的X类电容对交流电网中输入的交流电信号的差模电磁干扰信号起抑制作用;共模电感可以抑制共模电磁干扰信号,而较大电感量的电感抑制干扰信号的效果会更好一些。但是共模电感接在交流电源两端时,又希望共模电感上产生的电压压降要尽可能低(电压压降指共模电感中的差模电感量),所以连接到两端的交流电源线的共模电感绕组之间需要耦合,那么就使得共模电感量叠加,差模电感量相互抵消。电源滤波所需要抑制的频率需要比开关电源的开关频率大的,为了尽可能降低开关频率的电磁干扰,选择150KHz;串联电阻R2、R5的可以将在设备断电瞬间,排泄共模电感上产生反向的感生电动势的电流,起到保护作用。这里选择两个150K的1206封装的电阻,保证其不会超过额定功率。
  5. 整流器使用不超过额定功率的1N4007二极管。
  6. 为了稳定起见,整流滤波电容采用拥有低频滤波作用的47uF/400V的电解电容及拥有高频滤波作用的10nF/1000V的陶瓷电容,增加反激式变压器的输入电源稳定性和可靠性。
    整流滤波电容器选择:
      85-265V国际通用电压等级的交流输入状态下,整流滤波电容器承受约27mA/W的纹波电流有效值。
      220V交流电压等级输入电压状态下,整流滤波电容器承受约13.3mA/W的纹波电流有效值。
    根据承受的电流有效值即可选择出电容器。
  7. RCD箝位电路由图中R3、R4、C4、D6组成,其作用是为了将变压器漏感储能转移到电容器中。因为在开关管上含有变压器复位电压(反冲电压)、直流母线电压和变压器漏感的感生电动势。而前面变压器反冲电压和直流母线电压这两个电压都是已知的定值,并且这两个电压都是在计算以内。而变压器漏感产生的感生电动势是必然伴随出现的,但在设计中是不希望其出现的。因为开关管的开关速度是非常快的,这使得变压器漏感的感生电动势会随着开关管的开关速度变快而变的十分的高[2],这是十分危险的。本反激式开关电源电路采用型号为2A223J的22nF电容;电阻目的是将电容器箝位电能释放掉,为下一次箝位做准备,这里工作时不能超过电阻额定功率;二极管使用拥有反向恢复快的性能的整流二极管,并且二极管的额定电压不能低于直流母线电压。
    箝位电容器选择:C=(L_r×I_m2)/((V_22-V_1^2 ) ) , 其中L_r变压器漏感,I_m 开关管峰值电流,V_2箝位后箝位电容器电压,V_1箝位前箝位电容器电压。
  8. 反激式变压器使用EE25骨架,原边与绕边之比为90:12,原边与绕边引脚分别为1,3和6,8,电感量为0.6nH。
  9. 图中D3二极管选择拥有低压降和单向导通性的肖特二极管,使得变压器只有关断时才会将电能输出到输出端和在其损耗低。
  10. 图中C10、L1、C5组成了LCΠ型滤波电路,主要起输出滤波作用。
  11. 电压反馈电路由R7、D5、U2、C13、C14组成,此电压反馈电路是参考官方提供的方案,保证反馈环节不会出现太大的误差。
    其工作及设计原理:先将没有经过滤波的电压经过R7(限流保护光耦合器的作用)和有滤波后的电压经过稳压二极管分别接入到光耦合器输入端的正极、负极中,没有经过滤波的电压可以真实反馈输出电压的变化,而经过滤波后的电压可以让稳压二极管稳定在其额定电压之间,当没有输出电压发生增大或减小时就会影响到光耦合器输入端的发光二极管的电压,因此光耦合器中的发光二极管工作电流也会随之增大或减小,进而使发光二极管的发光亮度发生变化时导致光耦合器的输出端的三极管导通电流也随之发生变化,最终导致KD124的3引脚FB输入电流发生变化,当FB输入电流增大时,KD124的输出脉宽相应变窄,使得输出电压减小。(C13、C14起滤波作用)
  12. 图中CY1和CY2为Y类电容器(也称共模电容器),也是一种安规电容,作用是抑制共模电磁信号和将电路板上的地线分隔成安全隔离地(PGND)和高压地(GND)。
  13. 在上图电路输出后级增加了安全保护电路。如下图:

图 3-2-1 反激式开关电源后级输出保护电路 TVS是瞬态二极管,它可以在热拔插的时候产生的浪涌时,保护外后级电路不受损害;而电容C49起输出滤波作用和肖特二极管D13能利用其单向导通性来防止反接。

3.3 锂电池充电电路

3.3.1 太阳能板锂电池充电电路

  由于使用的是多节串并联的锂电池组进行电路板供电,因此经过反复的筛选后,选择了如韵电子公司的一款拥有自动调节太阳能板供电输入功能的IC,其型号为CN3795, 它是一种多节锂电池充电管理集成电路IC,具有PWM降压模式的和着6.6V-30V宽电压输入。令人惊讶的是,其充电电流可高达4A。因此使用它单独进行对多节锂电池充电管理是非常适合的。
  CN3795电源管理芯片具有涓流充电、恒流充电、恒压充电、睡眠等模式。CN3795电源管理芯片通过内置的比较器对电池电压、输入电源电压及充电电流进行分别与对应的内置基准电压、电路比较,从而自动进行切换到对应模式工作。
  CN3795电源管理芯片还有另外的优点,它具有追踪太阳能板的输入最大功率点的功能,当使用太阳能板作为输入电源时,其内部的电路能够自动地追踪到太阳能板的输入最大功率点,这样设计工程师就无须再去考虑最坏情况了。因为CN3795电源管理芯片能够将太阳能板输入电源最大化地转换为的输出电源,所以CN3795电源管理芯片在太阳能板电源的使用上是非常适合使用的。
  CN3795的充电工作模式和太阳能板最大功率跟踪功能这两个特点增加了锂电池的使用寿命和提高了室外的自我充电能力,从而在无监管情况下大大增大了室外设备的续航能力和自保证工作的稳定、可靠性。

图 3-3 太阳能充电电路 图3-3的太阳能充电电路设计如下:

  1. D19是SS34肖特二极管,目的是为了预防输入电源反接。
  2. C14、C16、C17为输入滤波电容,主要可以对输入电源进行滤除波纹和扼制寄生电感等在开关瞬间产生的高频振荡。根据DataSheet手册,C16、C17选择分别使用4.7uF/35V和68nF/50V的,而C14电解电容主要是起低频滤波作用,需要根据实际情况选择(不是电容值越大越好,还需要根据其等效电阻值ESR选择,不然就会物极必反了)。
  3. R22(15KΩ)和R20(1KΩ)这两个电阻是调节太阳能电池板最大功率点跟踪的。最大功率点电压由下式决定:V_MPPT=1.205×(1+R_22/R_20 ) ,因此设置的V_MPPT约为19.3V,配合使用的太阳能电池板(参数:18V1.1A20W)。
  4. R16为Rcs电阻,它是设置恒流充电电流的,而恒流充电电流由下式决定:I_CH=120mV/R_CS ,此电路设计的最大充电电流可以达到2A。
  5. R17、R18这两个电阻是设置恒压充电电压的,而恒压充电电压由下式决定:V_BAT=1205×(1+R_17/R_18 )+I_B×R_17 ,(I_B是FB管脚的偏置电流,其典型值为60nA)。
  6. L3是功率电感,根据上图电路分析,在正常工作阶段,电感上的瞬态电流变化是呈周期性的。当PMOS管的漏源极接通时,输入的电源向电感进行充电,电感上的电势能增大;当PMOS管漏源极断开时,电感释放电势能向电池充电。当功率电感上的电感值增大时,其电感上的纹波电流反向减小,呈正向线性关系;而输入电压与纹波电流则相反,呈反向线性关系。又因为电感上的纹波电流与纹波充电电流是呈正向线性关系的,所以电感的纹波电流需要控制在一个相对合理的范围内。电感的纹波电流可由下式估算:ΔI_L≡1/fL×V_BAT×(1-V_BAT/V_CC ),其中:f是开关频率(300KHz),L是电感值,V_BAT电池电压,V_CC是输入电压。在选取电感值时,可将电感纹波电流限制在ΔI_L≤0.3×I_CH ,其中I_CH是充电电流。除了满足上面限制外,还需要满足这个公式:L>5×(V_CC-V_BAT ) 。因此使用15uH的电感。
  7. U9是P沟道MOS场效应管,选择PMOS管需要注意MOS场效应晶体管的击穿电压BVDss必须大于最大的输入电压,其次需要考虑的因素包括导通电阻R_ds(on) ,栅极总电荷Q_g,反向传导电容C_RSS,输入电压和最大充电电流。P沟道MOS场效应晶体管的最大功耗可以用下式来近似:P_d=V_BAT/V_CC ×R_ds(on) ×I_CH^2×(1+0.05ⅆT),其中:P_d是MOS场效应晶体管的功耗,V_BAT是电池的最高电压,V_CC是最小输入电压,R_ds(on) 是P沟道场效应晶体管在室温(25℃)条件下的导通电阻,I_CH是充电电流,dT是P沟道MOS场效应晶体管的实际温度与室温(25℃)的温度差。除了导通损耗外,还存在开关损耗,开关损耗随着输入电压的增加而增加。在输入电压小于20V时,导通损耗大于开关损耗,优先考虑导通电阻比较小的MOS场效应晶体管;在输入电压大于20V时,开关损耗大于导通损耗,优先考虑反向传导电容CRSS比较小的MOS场效应晶体管[3]。一般C_RSS的值在MOS场效应晶体管的技术规格书都有列明,如果没有明确列明该电容值,可由公式C_RSS=Q_GD/V_DS ,来估算。
    综上考虑,选择了类型:型号AOD413A的PMOS管。

3.3.2 直流锂电池充电电路

  由于为了实现室内也能对锂电池充电,选择型号为EUP8209这一款恒流、恒压使用电流模式的锂离子电池充电器控制器,这里使用的这款控制器是8.4版本的,它具有电源电压宽输入范围(8.9V至20V)、12小时充电结束定时器、低功耗自动休眠、支持高达3A的充电电流等特点,因此它非常适合使用在室内充电设备中,能大大延长设备和锂电池的使用寿命。

图 3-4 直流锂电池充电电路   图3-4中直流锂电池充电电路是根据其DataSheet手册设计的一个输入范围5V-20V及输出8.4V、3A的锂电池充电电路,设计如下:

  1. 上图的电阻R13和R12组成的了电阻RSENSE,这个电阻是控制输出电流的大小的,而输出电流的决定式如下:R_SENSE=100mV/I_out ,因此得出RSENSE的电阻为33mΩ,本电路使用两个60mΩ并联来代替30mΩ电阻。
  2. L1电感的选择条件使用官方提供的参考方案,在最大输入电压情况的50%纹波条件下,电感量的决定式如下:L=(V_out/(500KHz×50%×I_out ))×(1-V_out/V_inMax ),其中:500KHz是开关频率,V_inMax是最大输入电压。经过计算得出L约为6.5uH。
  3. 因为没有6.5uH的电感,这里选择了6.8uH的电感代替,那么最大纹波电流的决定式如下:∆I_L=(V_out/(500KHz×L))×(1-V_out/V_inMax ),经过计算得出最大纹波电流ΔI_L约为1.433A。
  4. 考虑最大纹波电流,其决定式如下:V_(out(ripple))=((∆I_(L(Max))×ESR))/2,其中ESR为等效电阻,约为0.1Ω。经过计算得出最大纹波电流约为72mV。
  5. 计算峰值电感电流,留出裕量,防止输出电感过大多后级电路造成破坏,,那么峰值电感电流的决定式如下:I_LPK=I_out+((∆I_L)/2),经过计算得出峰值电感电流I_LPK大约为3.7A。
  6. 除以上电路必要元器件外,还外加了一些元件,使得锂电池充电电路的工作更稳定可靠。如D6为肖特二极管SS34,这是为了防止输入电源的反接;C9电容是为了怎去输入滤波作用;R15在电路图的标识是错误的,R15是一个10KΩ的NTC热敏电阻;电容C6、C8作用分别是高频滤波和低频滤波作用;磁珠L2作用是滤波和作为调试点。

3.3.3 双节锂电池保护电路

  富满微电子集团股份有限公司的TC2110系列双节串联锂离子可再充电池保护IC,其具有充电、过放电和过电流保护的机制。而下图是使用TC2120-CB这款IC设计的双节锂电池保护电路,根据DataSheet手册设计,如3-5所示。

图 3-5 双节锂电池保护电路

3.4 电源电压转换电路

3.4.1 锂电池及USB输入电源12V升压电路

  升压电路也叫Boost电路,在本电路系统中需要设计一款12V的升压电路, 型号为FP6296的IC是一款电流模式升压DC-DC异步转换器这款IC,支持2.7V-12V工作电压,基本满足设计要求。

图 3-6 锂电池及USB输入电源12V升压电路 图3-6锂电池12V升压电路能稳定输出在12V,最大输出电流可达2A,设计如下:

  1. 电阻R31是用来设置开关电路的峰值电流的,而电阻值51KΩ-150KΩ对应于2A-10A直接。所以这里使用51KΩ。
  2. 电阻R33和R34是设置输出电压的,其决定式:V_out=1.2×(1+R_33/R_34 ),经过计算得出输出电压Vout约为12.11V。
  3. 电感L4的选择式Boost电路选择的关键之一。下图为Boost拓扑电路,根据伏秒法则可知:开通时电感电压开通时间 = 关断时电感电压关断时间,其实这就是遵守能量守恒定律,由伏秒法则可得出:
    〖U(L)〗_on×T_on=〖U(L)〗_off×T_off
    使用基尔霍夫定律分析可知,〖U(L)〗_on=V_in,〖U(L)〗_off=V_o-V_in,又因为开关周期〖T=T〗_on+T_off和占空比D=T_on/T,结合以上条件得:D=(V_o-V_in)/Vo,这里是忽略肖特二极管分压等情况计算得出的。

图 3-6-1 Boost拓扑电路 因为U=L×d_i/d_t ,其中U为输入电压、L为电感、d_i为电感的纹波电流、d_t导通时间,根据这个式子为中心,计算出所需要的电感值L,步骤如下:

① 根据前面得出D=(V_o-V_inMin)/Vo可计算出,占空比约为0.43;根据T=1/f(这里f为开关频率400KHz)得出T为2.5us;根据T_on=DT得出d_t=1.083us。
② 因为d_i为纹波电流,所以di=ΔI_L。通常设定稳压电路的纹波为最大负载电流的0.4倍,而最大负载电流即为流经电感的最大平均电流I_Lmax,而电感的平均电流就是在开关断开时电感输出的电流,因此得出式子为:I_Lmax=I_outmax/(1-D),所以d_i=〖ΔI〗_L=0.4×I_Lmax=0.4×〖 I〗_outmax/(1-D),最后计算出d_i约等于1.4A。
③ 那么根据L=V_in×d_t/d_i =V_in×T_on/〖ΔI〗_L 得出电感值L约为5.26uH,这里因为漏了采购这类电感,所以使用了3.3uH的,那么当负载加大和输入电压过小都会使开关电源进入断流模式。
④ 而峰值电流决定式为:I_LPK=I_Lmax+(〖ΔI〗_L )/2=1.2〖I 〗_Lmax= 4.212A。

  1. 输入、输出滤波电容的选择的计算式子如下:
    输入滤波陶瓷电容公式:C_i≥V_i/(8×f^2×L×〖∆V〗_i )×(1-V_i/(V_o+V_d ))
    输入滤波电解电容公式:ESR≤(〖∆V〗_i×f×L)/V_i ×(V_o+V_d)/(V_o+V_d-V_i )
    输出滤波电容公式:C_o≥I_o/(f×〖∆V〗_o )×(1-V_i/(V_o+V_d ))
    输出滤波电解电容公式:ESR≤〖∆V〗_o/((V_o+V_d)/V_i ×I_o+V_i/(2×f×L)×(1-V_i/(V_o+V_d )) )
    由上面式子可以选择出较为合适的电容量的输入输出电容,而工作电压按实际工作电压的1.5倍选择即可。
  2. 电路图中的稳压二极管D10(12V稳压)、N-MOSFET场效应晶体管U11和电阻R27、R28、R26组成自动使能切断电路,当由反激式开关电源输入时,就会切断FP6296的升压工作。这里电阻R26只是起限流保护作用。
  3. 其它的电子元件选择在其DataSheet手册有提供参考。

3.4.2 Buck降压电路

  JW5060T这款Buck降压IC具有宽输入电压(4V-24V)、最大输出电流高达3A和高达95%的效率、同步转换工作。

图 3-7 Buck降压电路   图3-7 Buck降压电路是其DataSheet设计的,能稳定输出在5V,最大输出电流可达2A的Buck电路,设计如下:

  1. 根据电路分析和使用伏秒法则可得出D=V_out/V_in 。

图 3-7-1 Buck拓扑电路

  1. 因为U=L×d_i/d_t ,其中U为输入电压减去输出电压V_in-V_out 、L为电感、d_i为电感的纹波电流、d_t导通时间,根据这个式子为中心,计算出所需要的电感值L,步骤如下:
    ① 因为输入的电压为6.8V-12V范围内,所以D=5/12 和 D=5/6.8。
    ② 导通时间d_t=T_on=DT=5/(12×800KHz) 和 5/(6.8×800KHz)。
    ③ 电感上的纹波电流d_i=〖ΔI〗_L=0.4×I_Lmax=0.4×( I_outmax)/(1-D)大约为1.67A和10A。
    ④ 那么根据L=(V_in-V_out)×dt/di=(V_in-V_out)×T_on/〖ΔI〗_L 得出电感值L约为0.17uH-2.2uH这个范围。因此选择了4.7uH的电感,留出裕量。
    根据该IC的Datasheet上也给出了电感的计算方法,如下:
    L=V_out/(f_s×〖∆I〗_L )×(1-V_out/V_in )
    不难发现,该式子的计算和上述的计算是一样的,上式展开如下:
    L =1/〖ΔI〗_L ×(V_out-(V_out^2)/V_in )×1/f_s
    = 1/〖ΔI〗_L ×(V_in-V_out )×V_out/V_in ×1/f_s
    = ( 1)/d_t ×U× D×T
    以上说明前面的计算是没有问题的。
    ⑤ 峰值电流为:I_LPK=1.2I_Lmax≈28.8A。

  2. 输入、输出滤波电容的选择的计算式子如下:
    输入滤波陶瓷电容公式:C_i≥I_o/(〖∆V〗_i×f)×V_o/V_i ×(1-V_o/V_i )
    输入滤波电解电容公式:ESR≤〖∆V〗_i/(I_o+V_o/(2×f×L)×(1-V_o/V_i ) )
    输出滤波陶瓷电容公式:C_o≤V_o/(8×f^2×〖∆V〗_o×L)×(1-V_o/V_i )
    输入滤波电解电容公式:ESR≤(〖∆V〗_o×f×L×V_i)/(V_o×(V_i-V_o))

  3. 电阻R44、R45是用来设置Buck降压电路的输出电压的,其决定式为:
    V_FB=V_out×R_2/(R_2+R_3 )

  4. 其它的电子元件选择在其DataSheet手册有提供参考。

3.4.3 LDO线性稳压电路

  LDO线性稳压电路是一种低压差的降压电路,通过内部的开关管自身的损耗为代价而达到斩波降压的效果。这里要设计一个能将5V降压为3.3V的低压差的降压电路,经过多次筛选,选择比较普遍使用的ASM1117-3.3的LDO线性稳压4Pin的IC,它是一个具有静态电流低、输出电流可高达1A、输出电压稳定和低功耗的正电稳压器,它非常符合单独用来对STM32F103C8T6这款芯片供电。

图 3-8 LDO线性稳压电路   图3-8LDO线性稳压电路是一款非常精简和简单的LDO电路,它无调节电阻来对输入电压进行调节,它是已经固定输出电压为3.3V的。在输入输出电容的选取方面不需要过多的考虑,一般5V及以下的选取10到22uF电容即可,具体还需要根据实际情况进行更替;上图的FU1是保险丝,可以在CPU的过载和短路的情况迅速切断,起保护作用;电阻R46和LED灯D15目的是为了提示CPU已经通上电了;肖特二极管D24目的是和后备电源“纽扣电池隔离开”。

3.5 电源切换电路

3.5.1自动优先级切换输入电源电路

  自动优先级切换输入电源电路是电路板自动选择最小消耗自身后备电源(锂电池)的电源进行供电工作,这样符合最初的设计要求:降低能耗、加大续航能量、可以稳定可靠的持续性工作。

图 3-9 自动优先级切换电源电路   图3-9自动优先级切换输入电源电路是由P沟道MOS晶体场效应管和肖特二极管组成的,当栅极有输入电源时,P-MOSFET被切断(源极的电压小于栅极的电压:VGS>0.7V),此时源极输出的电源为栅极电源通过肖特二极管输出的;一旦栅极无输入电源时,P-MOSFET处于导通状态,那么源极输出的电源为漏极输入的电源。

3.5.2 锂电池选择输入电源充电电路

  由于直流锂电池充电电路和太阳能锂电池充电电路都需要对电池做检测与反馈的电信号处理,所以这里不能使用P沟道MOS晶体场效应管来做切换电路,需要使用继电器这种接触式的,因为继电器工作需要消耗一部分的能量,所以为了使室外进行太阳能锂电池充电的设备尽可能充分利用太阳能转换的电能,选择继电器常闭接口用在太阳能充电上,这样就可以消除继电器在室外对设备带来不必要的能源消耗了,而室内可以使用市电对设备供电和充电,所以继电器的电能消耗就可以忽略不计了。电路图如下图3-10所示,其中二极管D20为续流保护作用。

图 3-10 锂电池选择输入电源充电电路

3.6 单片机控制电路

3.6.1 STM32F103C8T6最小系统电路

  使用型号STM32F103C8T6增强型系列的MCU设计单片机最小系统。而单片机最小系统指使用最少的元器件组成的最小电路系统,并且它可以正常的工作的系统,它是最基本的功能单元[4]。
STM32单片机最小系统设计步骤如下:

  1. 为了让最小系统掉电后能继续保持其内部的RTC时钟正常工作,增加了纽扣电池电路作为掉电后继续为STM32内部RTC时钟续航,保证其正常运行。

图 3-11-1 后备纽扣电池电路   上图肖特二极管SS34是为了与线性稳压电路的3.3V输入电源隔离开,防止纽扣电池为整个STM32最小系统供电。

  1. 本最小系统是使用LDO线性稳压电源输入的3.3V的单电源供电的。如下图3-11-2电路图所示,本电路是参考官方STM32F103X8数据手册设计的。

图 3-11-2 单电源输入STM32F103C8T6处理器电路

  1. 单片机是通过复杂的时序电路完成不同的指令功能的,而时钟电路就是单片机的“脉搏”,它是控制着单片机的工作节拍的。根据官方数据手册,设计了两个时钟电路,分别是外部低速时钟电路和外部高速时钟电路。

图 3-11-3 外部时钟电路

  1. 复位是单片机最小系统必不可少的功能,它可以在单片机程序运行卡死或程序运行错乱的时候将系统复位,使其程序重新开始运行。而复位可以分为硬件复位和软件复位,硬件复位电路如下:

图 3-11-4 复位电路   当复位引脚RESET为低电平时就会触发系统复位,而上图电路中的电容C64的作用是在系统刚刚上电时不稳定的输入电源会使电容导通,使得复位引脚RESET为低电平触发系统复位,直至电源稳定后才会撤销系统复位,得以使单片机能够正常稳定工作。

  1. BOOT电路是STM32手动选择三种自举模式的电路。

图 3-11-5 BOOT电路

  1. SWD是串行总线调试接口,它具有将PC宿主机上编译好的程序下载到单片机和两种终端设备之间进行运行调试操作,SWD电路如下:

图 3-11-6 SWD电路
上图电路中的电容C73是为了滤除接入外部仿真器时涟起的纹波,保证仿真器工作稳定可靠。

3.6.2 Type C接口USB转串口电路

  Type C接口现在终端移动设备上比较普遍使用,在电路设计连接上不会太过复杂,而将Type C接口的USB信号转换为串口信号使用的现在嵌入式开发板上最为常见的CH340系类的芯片,它是一个USB总线的转接芯片,能实现USB转串口或者USB转打印口,并且它具有全速USB设备接口,兼容USB V2.0。经过筛选,选择使用CH340C这款IC,这款芯片已经内置了时钟信号发生器,无需要外部添加晶振及震荡电容了,因此可以节省一些成本材料。

图 3-12 Type C接口USB转串口电路   图3-12 Type C接口USB转串口电路在市面上很多设备都是比较普遍的,该电路的设计是从官方提供的手册及网上的资料参考设计的,设计如下:

  1. Type C连接如上图所示D+、D-分别是USB2.0差分信号的正和负,而VUSB是USB2.0的总线电源,也就是USB的输入电源。
  2. CH340C的是实现串口数据传输的关键,除了参考CH340官方的Datasheet提供的参考电路实现了串口数据传输外,经过查阅相关的嵌入式硬件开发书籍中参考一些USB转串口电路实现MCU的ISP连接,从而达到直接通过USB下载程序。实现USB下载程序电路设计步骤:
    ① 首先要知道STM32在启动时会通过自举引脚(BOOT)选择三种自举模式,这三种模式分别是:从程序闪存存储器自举、从系统存储器自举(ISP模式)、从内部SRAM自举[5]。当BOOT0接地时,STM32就会从程序闪存存储器自举,从而进入用户程序;当BOOT0接3.3V和BOOT1接地时,STM32就会从系统存储器自举,从而进入厂家预设定的Bootloader程序里实行更新程序。
    ② STM32的ISP连接过程:首先RTS输出低电平,此时电路中S8550就会导通,BOOT0被拉为高电平,配置为ISP模式;其次DTR输出高电平,此时电路中S8050也导通了,STM32的RESET复位引脚被拉为低电平,使得STM32重新启动进入ISP模式;当系统进入ISP模式后,RTS输出高电平和DTR输出电平,使其BOOT0和RESET恢复初始状态;最后程序下载完毕,自动运行用户程序。
    ③ 为了观察串口的数据传输和看起来比较好看,串口TX和RX传输线分别接了两个上拉了4.7K电阻的两种颜色的LED灯。

3.6.3 外部拓展电源接口电路

   为了保证设备能对拓展模块供电,这里增加了3类外拓展电源接口,分别为12V接口、5V接口和3.3V接口。电路图如下:

图 3-13 外拓展电源接口电路 外拓展电源电路有一些不足的地方,左边5V和3.3V接口电路除了需要需要TVS瞬态二极管解决热拔插带来的浪涌危害外,需要增加一组滤波电容进行滤波,保证后级电路正常稳定工作。而12V接口也需要增加增加TVS瞬态二极管和电容组。 ### 3.6.4 BT04蓝牙模块   蓝牙模块实现了设备短距离的无线通信,让消防栓检测系统与手机端的蓝牙APP上位机通信,方便工程师在室外进行无连接模式下查看运行调试信息。而蓝牙模块是串口形式与STM32对应的串口2引脚连接通信的。

图 3-14 蓝牙模块   蓝牙模块电路中的按键B2、B3分别是用于复位和选择模式的;而LED灯D25、D35分别为模式指示灯和通信指示灯。

此原理图是有引脚画错的地方,大家仔细观察,可对照已经修改的工程图

3.6.5 ADC模数转换电路

  ADC模数转换电路就是将具有连续值的电压模拟信号转换成计算机的二进制编码数字信号。由于STM32处理器内置了ADC转化器,它的模拟电压转换范围0-3.3V,因此当外部的模拟电压超过STM32规定的模拟电压转换范围的话,就需要使用外部分压电阻电路将外部输入的模拟电压控制在规定的模拟电压转换范围内,一般分压电路需要使用阻值在千欧姆以上和精度百分之一的电阻,保证外部输入的模拟电压可以精确地等比例转换。在外部输入模拟电压接口增加一个滤波电容可以有效过滤掉一些干扰电压信号。这里设计了水压传感器检测和电池电压检测的ADC模数转换电路,电路设计如下:

图 3-15 ADC模数转换电路

3.6.6 继电器控制电路

  继电器是一个使用通电的线圈控制开关的分合的控制器,它可实现弱的直流电信号控制强的直流电,甚至是强交流电。这里使用继电器控制电路实现电磁水泵阀和电磁锁的开关。继电器控制电路设计如下:

图 3-16 继电器控制电路   因为STM32不具备驱动继电器的能力,这里通过IO口控制三极管的基极进而控制继电器。而并联的二极管是防止继电器中的线圈在断电后产生反向高压对三极管造成不可逆的破坏,它可以起到续流作用,让电压通过自身慢慢释放完。

3.7 消防栓监测系统外壳

  本消防栓监测系统外壳是使用solidworks软件绘制的3D模型[6],然后通过3D打印机做出的,3D模型和外壳实物如下图3-17和3-18所示。

图 3-17 SolidWorks 3D模型

图 3-18 消防栓监测系统外壳

4 消防栓监测系统软件设计

4.1 下位机软件系统设计

4.1.1 整体软件系统设计通用思路

  一个系统设备中的软件系统是让一堆像无头苍蝇的硬件变得彼此之间有条有序的工作,最终完成设定的工作目标。而设计软件系统的编写是非常需要考虑每一个功能程序的之间的逻辑关系的,因此在编写软件系统程序前需要做大量的分析和整合工作,将每一个功能方面和每一个程序执行步骤都需要做到条理清晰,将这些考虑到的方方面面起草成一个软件系统的初步架构图。因为良好的程序编写习惯要先绘制程序流程图后进行程序编程,而程序流程图也就是参考软件体统的初步架构图而绘制出来的。在参考程序流程图编写程序前需要先将工程文件进行BSP工程管理,将编译生成的文件、调用的库文件、自己编写的每一种功能模块驱动程序文件进行文件夹归类,这样使得整个工程美观、各功能模块驱动程序清晰、易于阅读。BSP工程管理完后再进行库文件引进和有序进行每一种功能模块驱动程序编写、调试,尽可能将每一种功能模块的驱动程序错误率降到最低,促使在最后主程序将各个功能模块的驱动程序进行逻辑整合阶段的程序运行上BUG出现次数减少。

4.1.2 主程序程序流程图设计

  主程序是软件系统的“树干”,它是将“树根”(功能模块的驱动程序)程序到“树冠”(图形画界面等)中,而程序流程图则是将主程序的运行过程直观体现出来,能让人快速清除各个子程序与主程序之间的逻辑关系。主程序流程图如下图4-1所示。
  消防栓监测系统的主程序运行:当消防栓监测系统上电后,主程序第一步初始化STM32内部的底层驱动。第二步显示Logo。第三步初始化各个模块;第四步获取第一次的陀螺仪角度数据。第四步进入主循环体,在主循环内会根据循环体循环的次数轮流显示学号姓名和设备ID号,而时间是每一次循环体循环都会刷新的;然后获取环境温度、芯片温度、水压、陀螺仪角度、电池电压的数值,如果环境温度高于预设值就会触发降温设备的电磁阀门打开降温,如果当前陀螺仪角度与上一次的陀螺仪角度相差大于十度就会触发报警;最后将采集的数据进行上传到云端并开始新的循环。

图 4-1 主程序流程图

4.1.3 EEPROM获取设备ID号实现

  EEPROM这类可读写存储器在很多设备上都会有应用。实现步骤:第一步使能相应的时钟和引脚;第二步将STM32的IIC驱动初始化;第三步使用IIC驱动程序初始化型号为AT24C20的EEPROM存储器;第四步编写型号为AT24C20的EEPROM存储器的读写操作的驱动程序;第五步读取EEPROM内部的设备ID号,最后显示到OLED屏上。

图 4-2 获取设备ID号子程序流程图

4.1.4 IMU901陀螺仪获取角度实现

  IMU901陀螺仪是一种九轴的角度测量传感器[6],目的是通过检测角度来判断消防栓是否发生碰撞损坏和是否发生螺栓被拧开盗水,而其输入输出接口是采用串口形式的。实现步骤:第一步使能相应的时钟和引脚;第二步将STM32的USART2的驱动初始化;第三步编写IMU901解析处理获取角度驱动程序;第四步调用IMU901解析处理获取角度程序;第五步判断当前角度值和上一次角度值之差是否超出预设值;第六步保存当前角度值并重新获取新的IMU901角度。

图 4-3 获取IMU901陀螺仪角度子程序流程图

4.1.5 DS18B20温度传感器获取环境温度实现

  DS18B20温度传感器是一种数字型的传感器。实现步骤:第一步使能相应的时钟和引脚;第二步初始化DS18B20温度传感器;第三步编写DS18B20数据转换获取温度驱动程序;第四步调用DS18B20数据转换获取温度程序;第五步判断温度是否超过预设值并重新用DS18B20数据转换获取温度。

图 4-4 获取DS18B20温度传感器温度子程序流程图

4.1.6 BC20物联网模块无线通信与GPS定位

  BC20物联网模块是消防栓监测系统非常重要的组成部分[7]。实现步骤:第一步使能相应的时钟和引脚;第二步编写检测BC20物联网模块启动和通信是否正常的程序;第三步调用第二步编写的程序进行检测BC20物联网模块是否正常;第四步编写GPS激活连接的程序;第五步调用第四步编写的程序将GPS激活连接;第六步编写连接阿里云物联网平台的程序;第七步调用第六步编写的程序进行连接阿里云物联网平台;第八步编写获取GPS定位的程序;第九步调用第八步编写的程序进行获取GPS定位信息;第十步将采集的数据等信息上传至阿里云物联网平台上。

图 4-5 BC20无线通信与GPS定位子程序流程图

4.2 上位机软件系统设计

  该安卓蓝牙APP是使用JAVA及少部分的HTML语言在Android Studios开发软件平台所设计的。它主要是用于与下位机进行无线短距离通讯,方便调试和控制等功能[8]。
  因为在程序编写前一般都先画出的程序流程图,如4-6所示。
  安卓蓝牙APP的设计步骤:第一步添加所有相关的权限的程序;第二步编写确定手机是否支持蓝牙功能的程序;第三步编写打开与关闭蓝牙的程序,在打开蓝牙前先调用第二步编写的手机是否支持蓝牙功能的程序,确保不做无用功;第四步编写搜寻附近蓝牙设备程序;第五步进行调用第四步编写的搜寻附近蓝牙设备的程序,然后进行调试打印和日志查看,确保能正常搜寻出附件设备的名称和地址信息;第六步编写创建广播与对话框列表,将搜寻到的附近蓝牙设备的名称与地址信息一一地存放到对话框列表中呈现的程序;第七步调用第六步编写的程序进行观察搜寻到的附近蓝牙设备信息正常呈现到对话框列表中;第八步编写对话框列表每一行可点击触发的按键功能和将对话框列表中的每一行按键与其对应的蓝牙设备信息建立联系关系的程序;第九步调用第八步编写的程序进行观察两个设备之间是否真的连接;第十步编写将编辑框输入等数据进行发送的程序;第十一步调用第十步编写的程序查看接收方应用程序是否接收到发送的数据;第十二步编写实时接收数据的程序;第十三步运行整个应用程序,观察每个功能是否正常运行;第十四步编写发送相关控制命令的按钮;第十五步进行整机测试,确保上位机与下位机之间正常通讯。

图 4-6 蓝牙APP程序流程

5 消防栓监测系统测试

5.1 SWD接口烧录程序测试

  如下图5-1所示,通过杜邦线将ST-Link仿真器连接到SWD接口,然后使用IDE软件Keil进行程序编译,并进行烧录程序。从图中可以清晰看到,keil软件将编译出来的.hex文件无错误、无警告地烧录进了单片机中。

图 5-1 IDE软件Keil烧录程序

5.2 USB接口烧录程序测试

  如下图5-2-1所示,连接Type C类型的USB接口后,通过上位机来触发STM32进入ISP自举模式,进而进行烧录程序,在图中可以清晰知道,该烧录方式也是将编译出来的.hex文件进行烧录的,此时的进度条和日志可反映出程序烧录工作正在进行中。下图5-2-2所示,此时的进度条和日志反映出程序烧录工作已经完成

图 5-2-1 ISP模式烧录程序进行中

图 5-2-2 ISP模式烧录程序完成

5.3 消防栓监测系统上电启动测试

  当消防栓监测系统上电,设备进入各种内置外设及模块的初始化阶段,如下图5-3-1所示,该图为设备上电启动后初始化工作正常情况下打印输出的日志信息。而下图5-3-2为设备上电启动后初始化工作正常情况下各模块设备正常工作的状态,而OLED显示正常的时间也可说明设备的初始化工作是正常的。

图 5-3-1 设备启动输出日志

图 5-3-2 设备正常启动现象

5.4 云智能APP无线远程观控设备测试

  使用阿里云生活物联网平台提供的云智能APP远程观控消防栓监测系统设备,如下图5-5-1所示,图右边的APP已经显示出接收到设备上传的数据信息,当APP按下按键,下位机就会触发开锁等动作,从图右边的设备现象可知其远程控制功能正常,而其功能是实现无线开锁(一般使用近距离的无线蓝牙开锁)和在北方地区寒冷季节可以人为触发电磁阀释放防冻液或在高温地区洒水物理降温,保护消防栓设备。至于LED灯只是用来测试使用的,还未进行实际使用。图5-5-2为接收到上位机数据打印输出的日志及芯片温度记录曲线图(确保设备芯片运行正常)。

图 5-5-1 云智能APP无线远程控制设备

图 5-5-2 云智能APP无线远程控制输出日志及曲线图

5.5 蓝牙APP无线近程观控设备测试

  使用蓝牙APP实现近距离无线收发数据,如下图5-5所示,使用左图蓝牙APP发送打开电磁锁及电磁阀命令,并接收上位机返回的数据;右图是的下位机则打开了电磁锁和电磁阀,上边的中间两个指示灯也随之亮起,其目的除了是实现近距离的无线开锁和查看调试信息外,也是为以后无线升级等拓展功能做准备的。

图 5-5 安卓蓝牙APP无线近程观控

5.6 云智能APP获取GPS定位测试

  如下图5-6所示,云智能APP获取到智能消防栓上传的定位信息,其定位信息为经度和维度左边。在下图中也可以看到获取的坐标值是实际坐标值的100倍,这是因为云智能APP呈现的数据最多精确到小数点后两位,因此在下位机上传的定位坐标数据是进行扩大100倍后才上传的。
  从以下图测试表中可知,云智能获取到的下位机上传的GPS定位的经纬度数据与手机获取的GPS定位的经纬度数据只偏差在小数点后的第五位。实际测试中,误差在10米范围内,精度上还算十分可观的。

图 5-6 查看获取当前GPS定位坐标信息 获取下位机GPS定位的经纬度信息测试表

5.7 三种输入电源测试

  通过反激式开关电源、Type C类型的USB接口和太阳能板三种种输入电源对消防栓监测系统进行供电。如图5-7-1所示,当接入反激式开关电源时,反激式开关电源正常工作指示灯会打开,此时电路会优先选择使用该输入电源作为供电源,现象是双节锂电池电路充电指示灯打开,表示锂电池正在充电,并且设备正常运行中。如图5-7-2所示,当断开反激式开关输入电源,此时电路则会选择使用USB输入电源作为供电源。如图5-7-2所示,无USB输入电源时,太阳能板输入电源会作为最低优先级的输入电源,此时太阳能充电电路的指示灯会打开。

图 5-7-1 反激式开关电源供电

图 5-7-2 USB电源供电

图 5-7-2 太阳能供电 锂电池充1%电量需要的时间测试表


  由上面测试表可知,使用反激式开关电源作为输入电源,在剩余电量为56%时,充1%的电量需要68秒;在剩余电量为30%时,充1%的电量需要51秒;在剩余电量为80%时,充1%的电量需要80秒。以上原因是因为电源管理芯片具有检测输入电源电压、电流及电池电压来自动切换三种充电模式的功能,所以它有类似与水坝泄洪的功能,外部水面越高,泄洪速度越慢,这样起到包含锂电池的作用。而使用USB电源和太阳能板电源作为输入电源充电分析也如反激式开关电源作为输入电源分析类似,可以看出由于三种输入电源的输入功率:反激式开关电源>太阳能板电源>USB电源,所以充电速率受输入电源功率的影响。
  因此可以得出结论,充电速度的快慢不仅与电池当前的电量有关,而且与输入电源的功率有关。

6 总结

  消防栓监测系统的下位机系统是采用多种开关电源对其进行供电和使用C语言编写底层驱动实现系统各个功能模块来设计。消防栓监测系统的上位机是使用JAVA语言编写的安卓蓝牙应用程序和使用阿里云生活物联网提供的云智能APP。消防栓监测系统主要用于监测室外消防栓设备和室内消防栓的实时情况,其是运用水压传感器、温度传感器、陀螺仪等传感器完成设备的各种数据采集,并通过NB-IOT将数据上传到阿里云物联网服务器中进而使用云智能APP查看最新的数据;安卓蓝牙APP可以提供无线近距离的数据传输,方便工程师无线查看调试输出的数据与无线开锁等。经过多次的调试和修改,该消防栓监测系统这个设备能够长时间的、稳定的、可靠的进行其监测工作。
  消防栓监测系统的优点:
① 该系统的底层驱动程序全部采用寄存器开发,因此它的程序运行占用资源小,执行速度快。
② 拥有多种电源电路进行转换和供电,保证该系统的电源输入稳定[9]。
③ 多种锂电池充电电路使得该系统可以在室内外兼容长时间的工作。
④ 安卓蓝牙APP和蓝牙模块的配合使得该系统有较为全面的无线短距离通讯,全面的配套服务方便了工程师的户外调试、维修工作,显得更为人性化。
⑤ 拥有较为全面、完善的电路构成的消防栓监测系统,除了保证了该系统工作的稳定可靠性。而且还降低造价成本和提供全面的维护方案以降低了维护的成本及维护的时间。
⑥ GPS北斗米级误差定位使得工程师能够快速、精确地找到需要维护的设备,有效保证了新、老工程师能够快速交接工作。
消防栓监测系统的缺点:
① 在锂电池保护电路上存在硬件BUG,只有通过锂电池组负极与电路板地短路后才能进行正常的锂电池供电。
② 电路板的12V电源输出口的输出功率不足。
③ 该系统连接阿里云物联网平台上不是太过稳定,有时会出现连接不成功的现象。
④ 云智能APP在定位坐标显示上智能显示保留两位小数点后两位数。
⑤ GPS北斗定位只能在室外进行定位,那使得室内消防栓监测系统只能通过设备ID来指定固定的楼层区域位置了。
消防栓监测系统仍有一些功能在后续需要添加,例如:添加IAP程序自动升级驱动程序,使用安卓蓝牙APP无线短距离进行对消防栓监测系统的底层驱动程序替换升级,实现增加消防栓监测系统的稳定性和可靠性;添加EEPROM保持最新一次的GPS定位信息,防止GPS北斗模块突然损坏失去定位信息和乌云密集天气无法获取定位信息的突发情况。
  通过这次的设计拓展和提升了对STM32相关的底层驱动开发、硬件电路设计、基于JAVA语言开发安卓APP和使用solidworks软件3D设计等能力,使得在全栈开发上更上一层楼了。

基于STM32-消防栓监测系统毕业设计---论文(附加最全面的从硬件电路设计->驱动程序设计->阿里云物联网搭建->安卓APP设计)相关推荐

  1. 基于STM32温室大棚监测系统Protues仿真设计温湿度采集光照

    仿真演示视频 基于stm32温室大棚控制系统仿真设计温湿度采集光照采集protues设计物联网定制_哔哩哔哩_bilibili 开发软件Keil5+Protues8.9,温湿度传感器DHT11. 部分 ...

  2. 开题报告:基于java电子书阅读系统 毕业设计论文开题报告模板

    开发操作系统:windows10 + 4G内存 + 500G 开发环境:JDK1.8 + Tomcat8 开发语言:Java 开发框架:springboot 模板引擎:Thymeleaf 开发工具:I ...

  3. 文末赠书5本 | 附源码 | 三等奖作品 | 基于RA4M2和阿里云物联网平台的智能卧室小管家

    [RA4M2设计挑战赛]基于RA4M2和阿里云物联网平台的智能卧室小管家 摘要 本项目已RA4M2为主控,搭载了RT-Thread实时操作系统,配合Wi-Fi模块来提供网络通讯能力,外设接入了继电器. ...

  4. 单片机毕业设计 基于stm32的病房呼叫系统

    文章目录 1 简介 2 绪论 2.1 课题背景 3 系统设计 3.1 系统架构 3.2 主程序设计 3.3 语音模块程序设计 3.4 显示模块程序设计 3.5 键盘模块程序设计 3.6 无线传输模块程 ...

  5. 基于java的智能化停车系统ER图_终稿毕业设计基于jvw日语停车管理系统毕业设计论文.docOK版(样例3)...

    <[毕业设计]基于jvw日语停车管理系统毕业设计论文.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)[毕业设计]基于jvw日语停车管理系统毕业设计论文.doc(OK版)&g ...

  6. 基于php的网上鲜花销售系统论文,网上鲜花销售系统 毕业设计论文

    网上鲜花销售系统 毕业设计论文 (45页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 I 摘 要 我国的电子商务近年来发展很快, 在经济领 ...

  7. matlab控制系统仿真论文,基于MATLAB的过程控制系统仿真毕业设计论文.doc

    基于MATLAB的过程控制系统仿真毕业设计论文 毕业设计论文 基于MATLAB的过程控制系统仿真研究 摘 要 在水箱液位控制系统中,通过建立数学模型以及实验中对实验数据的分析,分别确定了单容.双容.三 ...

  8. c语言程序设计杨东芳答案,基于DDS的数发生器毕业设计论文.doc

    基于DDS的数发生器毕业设计论文 JIANGXI AGRICULTURAL UNIVERSITY 本 科 毕 业 设 计 题目: 基 于 DDS的 函 数 发 生 器 学 院: 工学院 姓 名: 学 ...

  9. 基于STM32的最小系统电路设计(手把手零基础教学)

    文章目录 前言 一.复位电路 二.晶振电路 三.电源转换电路 四.SWD下载电路 五.LED测试电路 六.芯片外扩引脚 七.STM32微控制电路 总结 前言    在上篇介绍完<STM32的核心 ...

最新文章

  1. 零基础掌握极大似然估计
  2. 【Mrak】C# 文本文件 ANSI编码格式 转 UTF8
  3. 留还是走?如何做不确定时代下的最难选择
  4. 喜报!第四范式助推百胜中国斩获2020 IDC数字化转型重磅大奖
  5. 【JavaScript脚本】——T1基本语法——重点笔记
  6. Spring 的动态数据源实现
  7. android web developer,Growth: 一个关于如何成为优秀Web Developer 的 App
  8. Java回调网址_极光短信- 回调接口 - 极光文档
  9. 应用层安全协议Kerberos
  10. VBscript读取excel表,中数据导入到SQLserver数据库里面
  11. 『词向量』用Word2Vec训练中文词向量(一)—— 采用搜狗新闻数据集
  12. c语言加加运算符是什么意思,c语言*p++是什么意思?
  13. ColdFusion mx 7.0 函数分类列表
  14. Clickhouse除数为0
  15. 取消Excel里面全部超级链接
  16. jQuery Mobile的学习时间botton按钮的事件学习
  17. edgex-ui中文版下载
  18. app免填邀请码安装如何实现?
  19. 开发人员用的提交测试环境的AutoIT脚本
  20. PostgreSQL 访问外部数据库之 postgres_fdw

热门文章

  1. 关于logcat的使用
  2. 区块链黑暗森林自救手册
  3. 空间分析建模目的_房产测绘与二三维一体化建模研究——以连云港市为例
  4. 如何将视频生成二维码?
  5. groovy入门-GString
  6. 【cocos2D-X】Plist使用 实现 移动精灵多图片动画
  7. future java get_关于 Future get方法的疑问
  8. Ae 入门系列之八:抠像
  9. Day02| 第四期-阿里巴巴股票行情分析(一)
  10. 实验记录 | 8/14