基于云服务的短程低功耗智能用电管控装置调试第三天
Posted 皇甫春云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于云服务的短程低功耗智能用电管控装置调试第三天相关的知识,希望对你有一定的参考价值。
基于云服务的短程低功耗智能用电管控装置
这个工程是一个简单的项目复现过程,算是旧词新提,都是为了混加分项呀!这是博主3年以前项目,当时还是在实验室和小伙伴两个人一起努力的结果,虽然自己心里有数,这点小玩意,很难达到自己的期望的高度,但是从这个小工程里,也学到了一些无线通信、IC卡片、LCD屏、功率计和F1的一些常用的开发过程,那么具体的功能我会用一个流程图进行展示,算是这个项目的任务书吧。头一次见到把任务书做成程序框图的项目吧!哈哈
任务书
器件选型
经过仔细阅读上述的任务书,可以发觉,需要具备如下这样一些功能:
- IC卡+识别模块 MFRC-522 RC522 RFID射频 IC卡感应模块 购置
- 蜂鸣器 板载的即可 板载
- 继电器 支持3.3V控制220V~260V的即可 手头有
- 功率检测计 IM1253B交直流电能计量模块(艾锐达光电) 需购置
- LCD屏显 板载
- NRF24L01模块 手头有,手头有
- 用电负载(电灯) 需要购买
- 普通的用电插排 需要购买
- 两块正点原子的STM32F1核心板 一个模拟本地,一个模拟云端处理 手头有
从上述的模块中,有一个模块比较繁琐,就是功率计模块,需要采集到用电系统的电功、电压和电流信息,并且实现串口通信,将数据采集到单片机内部,在内部实现数据的分析和显示。
开发步骤
按照博主之前的研发思路,肯定是优先调试每个模块,然后再进行系统的联合调试,针对这个项目,先调试好本地的数据收发,比如IC卡的识别,继电器的通断,蜂鸣器的发声、LCD屏的显示和NRF24L01板间建立通信。
第一步:调试上述提到的各个功能模块,并预留出最后联合调试的数据接口;
第二步:所有模块的联合调试;
第三步:进行系统的装配和加固;
按照自顶向下的设计思路,这里给出我的设计方案:
至于负载、继电器和功率计三者的接线方式如下所示:
其中继电器需要接在交流采集接线部分中的交流电输入部分。
详细开发流程
为了能正常的进行项目的开展,需要先进行器件的选型,特别是对于功率计的选择。这里补充一点关于家庭用电中的短路情况发生后的一些变故:
由于电流迅速由工作电流增大到短路电流,电流增加几倍或几十倍,在短路点以上的设备,一直到变压器,都会出现大电流冲击,一般的熔断器要熔断,一般的空气开关会跳闸,影响继续用电,如果出现越级跳闸事故,还会影响其他人家的正常用电。
发生短路时,电路中电阻很小,根据I = U / R可知,在家庭电路中电压一定的情况下,电路中的电流很大;
当电路中的总功率过大时,根据I = P / U可知,在家庭电路中电压一定的情况下,电路中的电流很大.因此为了安全用电,我们在平时的生活用电中要避免短路现象发生,不能随便插接大功率用电器.
故通过检测系统中采集到的电流值的变化时间和变化量从而可以作为短路情况一个判断条件。在使用这个模块的时候,务必要小心,必竟是家庭用电,一定要注意安全用电和测试。
功率模块的通信需要对采集的数据进行包解析,发送端包含命令字、寄存器地址和数目(十六进制形式),而数据包里有数据量和具体的数据值(十六进制形式)。
这里备注一下这个模块的一些默认参数:
- 地址:0X01
- 波特率:4800
- 电源隔离:模块供电和通信供电要隔离
其中继电器的位置将会被安排到火线的输入端,通过阅读手册,这个模块是交直流均可测量的模块。上图是这个模块的接线特写图。
上述图表是所有寄存器的地址和对应的每一位所代表的取值范围。下面再给出这个模块的功能码。
这里给出每一帧数据所包含的数据的具体格式:
结合我们的需求,需要测量电流、电压、用电功率和电能值三个参数的值。故需要用单片机发送一路串口。接下来我补充一点Modbus-RTU相关的理论知识:
Modbus-RTU通信理论
Modbus协议包括RTU、ASCII、TCP。其中RTU是单片机中使用最多的一组。
这里两个缩略词以前不知道,但是现在要明白指的是什么,“ADU”“PDU”
- ADU: 应用数据单元
- PDU: 协议数据单元
这里举一个简单的读和写的例子,来认识这种协议:
硬件设计
首先给出整个系统最终的电路拓扑连接图,如下图所示:
从图中可以清晰地看到整个系统中的数据运行方式,从中也可以领悟“up to down”设计思想对于全局设计思想的培养是多么有意义的事情。下面会逐一展开系统中各个模块的具体引脚分配和对应的驱动程序的编写。就先完成系统中模块引脚的分配吧。
IC识别模块
蜂鸣器
NRF24L01模块
lCD显示屏
功率计模块
继电器模块
软件设计
此处的软件设计并不是对所有功能进行全新的设计,目前的代码已经完成了两个板子间的通信和用户端的IC卡号识别及屏显调试,评估下来,是已经搭起了大体系统框架。重点任务是完成如下的一些附加功能的开发。
- RC522和NRF24L01模块
经过阅读之前所写的一些代码,发觉,当时不知道是出于什么原因,对RC522和NRF24L01模块共用了一个SPI通信接口,所以每次接收到外部的变化后,都需要对模块进行初始化,难道正点原子是配置的硬件接口的SPI,而不是像51单片机那样,是IO口模拟的通信协议吗?确实这样,用的是硬SPI通信。
- 异常卡检测
这个功能可以通过专门将一张卡定义为异常卡,来触发蜂鸣器的发声,从而实现异常警报。
- 丢失检测和继电器开合
这个功能是考虑到如果正常唤醒用电系统后,在使用过程中,如果卡被撞出了识别区,系统并不会立刻断电,而是会延迟一段时间,并且用蜂鸣器进行五声警报提示用户,是否是人为断电。实际使用中,需要保障卡片一直是可以被系统检测到的,这样在每次卡片检测正确后,设定一个标志位,标志位满足条件使触发继电器,从而实现系统供电,而一旦卡片检测不到,即标志位不满足,此时会短暂停留5秒,而蜂鸣器一秒钟发声一次,用于提醒是否是主动断电的。在5秒过后,如果还检测不到卡片,则系统会彻底断电,即继电器关闭。
- 电压电流电能功率采集
这个功能需要借助一路串口进行通信,所采用的通信协议是modebus协议标准,其中读和写功能有对应的数据帧格式。以此完成对主从机的通信。
总结
设计参考
参考一:http://bbs.gkong.com/archive.aspx?id=340353
[参考二:(3条消息) MODBUS-RTU数据帧格式、报文实例_欧阳鑫-CSDN博客_modbus报文]((3条消息) MODBUS-RTU数据帧格式、报文实例_欧阳鑫-CSDN博客_modbus报文)
[参考三:IM1253B交直流电能计量模块(艾锐达光电)_杏林洁白的博客-CSDN博客](IM1253B交直流电能计量模块(艾锐达光电)_杏林洁白的博客-CSDN博客)
[参考四:IM1253B电能计量模块,直流计量模块,交流计量模块,电量模块, (ireader-opto.cn)](IM1253B电能计量模块,直流计量模块,交流计量模块,电量模块, (ireader-opto.cn))
以上是关于基于云服务的短程低功耗智能用电管控装置调试第三天的主要内容,如果未能解决你的问题,请参考以下文章