一、科技馆物联云开发背景和所用技术
(一)为什么要学物联网?
物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。物联网是互联网的应用拓展,与其说物联网是网络,不如说物联网是业务和应用。因此,应用创新是物联网发展的核心,以用户体验为核心的创新2.0是物联网发展的灵魂。

随着互联网技术的深入发展和成熟,“物联网时代”到来的呼声日益高涨,国家“十二五”规划中也明确将物联网作为战略性新兴产业来培育发展。而国内外各大家电生产厂商生产的各种高端家电也开始预留信息控制接口,准备着迎接物联网时代的到来。智能家居也是物联网产业的一部分,也是物联网在明生应用领域的重点部分,加之近年来房地产的迅猛发展和媒体宣传造势,智能家居呈现耳熟能详化,为此智能家居必将得到高速发展。
国内外的一些技术厂商都在进行市场推广和技术储备,以便在合适的时机推出自己的智能家居产品。虽然各种产品的功能标准和应用接口不太一样,但是不难想象,智能家居的功能都会基本涵盖一下几个方面:
(1) 灯光控制:不管哪个家庭都会有需要更加方便的对家中灯光进行控制。
(2) 家电控制:为了更加便捷的生活,人们可以在家中方便的对热水器,空调等进行控制,也希望需要时能通过有网路接入的设备对电器进行远程控制,如出差回来的路上打开热水器,回到家可以舒服的洗个热水澡。
(3)数据采集:常见的比如温湿度采集、PM2.5数据采集等
(4) 安防预警:居家生活,平安是最大的愿望,通过对家中烟感,入侵、气体检测传感器等安防信息进行实时监测,免去后顾之忧。
(5)智能设置:比如定时开关设置、室内恒温设置、指定条件下免人工干扰功能实现、远程控制等。
(6)减速电机+控制器+智能模块,实现智能机械操作,比如:智能窗帘,早晨自动打开窗帘,晚上自动关闭;加上温度传感器实现指定温度下放风机等。
为此设计出一套既有通用性,又可以方便的进行扩展的智能家居系统是前提,我们希望能简化家中控制系统的复杂性,降低安装成本和提高信息传送的安全性,解决实际推广中可能会出现的问题,为智能家居的大规模应用提供一定的借鉴和助推作用,真正的使高效便利的生活触手可及。
(二)、实现科技馆物联云所用到主流(芯片)技术
Wi-Fi(8266)
Wi-Fi被广泛用于许多物联网应用案例,最常见的是作为从网关到连接互联网的路由器的链路。然而,它也被用于要求高速和中距离的主要无线链路。大多数Wi-Fi版本工作在2.4GHz免许可频段,传输距离长达100米,具体取决于应用环境。流行的802.11n速度可达300Mb/s,而更新的、工作在5GHz ISM频段的802.11ac,速度甚至可以超过1.3Gb/s。
而WiFi无线通信技术主要有
路由器和WiFi设备这两方面组成,如果我们想使用WiFi技术作为
物联网解决方案,那么我们的物联网设备必须支持WiFi协议。物联网设备通过路由器连接到广域网之后,那么无论你身在何处,都可以对设备进行远程控制。
WiFi的优势:
1.普及面比较广,基本上每家都有路由器设备,设备价格相对低廉,使用起来成本会比较低。
2.WiFi组网方便,连接就行,协议统一,使用TCP/IP协议。
3.传输速度具体要根据WiFi
信号强度和连接设备来定,不过相对于ZigBee来说,还是比较可观的。
4.网络带宽比较大,家用目前在推广200Mbps。企业内网可达到1000Mbps。
5.能够无缝与
手机进行通信。
6.能够直接接入互联网。
7.传输距离在20-200米之间,远远高于其他无线技术
WiFi的劣势:
1.安全性比较低,比较容易被攻击破解。
2.无线稳定性比较差,房间大了,可能收不到无线网。
3.对硬件要求比较高,WiFi模组需要大量周边电路辅助工作,对硬件内存要求也比较大。
4.最多只能连接几十台设备,可能满足不了过多的电器连接。
5.功耗比较大,不适合用电池供电设备。
6.通信延迟比较大,反应时间比较长.
CC2530(ZigBee)
ZigBee是物联网的理想选择之一。
虽 然ZigBee一般工作在2.4GHz ISM频段,但它也可以在902MHz到928MHz和868MHz频段中使用。在2.4GHz频段中数据速率是250kb/s。它可以用在点到点、星形 和网格配置中,支持多达216个节点。与其它技术一样,安全性是通过AES-128加密来保证的。ZigBee的一个主要优势是有预先开发好的软件应用配 置文件供具体应用(包括物联网)使用。最终产品必须得到许可。
ZigBee的优势:
1.安全性比较高,ZigBee通信过程采用AES128加密算法进行加密,目前没有破解先例
2.可以连接多台设备,数量可多达65000台。
3.在工业领域打磨数年,所以技术相对成熟,安全性能也比较好。
4.功耗比较低,一节干电池可供ZigBee
模块工作1-2年
5.反应时间比较短,控制家电设备开关的等待时间比较短。
6.ZigBee组网方式灵活度比较大。
7.对硬件要求比较低。
ZigBee的劣势:
1.设备成本比较高,采用ZigBee技术作为物联网解决方案,需要ZigBee网关配套使用,ZigBee网关价格不便宜
2.产品开发难度比较大,项目周期比较长,所以后期企业压力会比较大。
3.通信速率比较低,网络带宽比较小,小于250Kbps。
4.抗干扰能力比较弱,比较容易受周边环境影响。
5.不能直接接入互联网,必须通过ZigBee网关才能接入互联网。
6.通信距离在2-20米之间,有很大的局限性
NB-IoT
窄带物联网(Narrow Band Internet of Things, NB-IoT)成为万物互联网络的一个重要分支。NB-IoT构建于蜂窝网络,只消耗大约180KHz的带宽,可直接部署于GSM网络、UMTS网络或LTE网络,以降低部署成本、实现平滑升级。
NB-IoT是IoT领域一个新兴的技术,支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网(LPWAN)。NB-IoT支持待机时间长、对网络连接要求较高设备的高效连接。据说NB-IoT设备电池寿命可以提高至少10年,同时还能提供非常全面的室内蜂窝数据连接覆盖。
二、如果独立完成这个物联云创客平台,我们能做那些事情?
开发这个物联云平台初衷可以理解为物联网技术应用开发实验平台,把cc2530、8266芯片以及各种传感器通过计算机数字化编程整合到一个平台,通过INTERNET链接起来实现我们所需要的应用功能,比如远程控制或数据采集等。如果从芯片固件开发到电脑上位机和手机A:PP程序所有环节打通的话,就类似和国内小米,天猫等物联网企业一样掌握了核心技术可生产物联网应用产品,比如:
1、
各科研机构、院校物联网专业或各学校创客室建设实验平台。
比如CC2530是美国TI开发的物联网芯片,目前主流应用智能家居等运用TI公司技术,ZIGBEE协调栈的推出极地降低了CC530应用门槛,可以先建立起CC530实验平台,各传感器数据采集,继电器控制,根据我三年来学习经验,
兴趣是排在第一位,比如先看到无线点亮一盏灯现象,再让学生寻找的原理是如何实现的,实现这一功能你得具备那些知识?这不正是开启学生学习起点吗?一开始就学习枯燥难懂C语言芯片程序可能把很多学生学习积极性打没了,很少有人能坚持下来,物联网应用说的简单些就两点:一是通过电脑上位机或手机APP通过网络发送指令到芯片,芯片再控制传感器(继电器),二是芯片上传感器获取的数据再通过芯片程序上传到电脑或手机,实现双向通讯,基本上就是之么个应用原理。所以说
我强列建议这些部门或机构先投资把创客平台建设起来,先实现功能再研究原理,这个平台也是以后完善和学习提高的模板,在这个基础上不断地创新,开发新的项目和功能。现在很多学校花10万或更多主要花在装修上,购一些工具类等华而不实形象工程,根本就是拍脑壳决定。比如我们这个平台基本上实现了智能家居所有应用功能,可以根据菜单一样选择自己目前先学习的功能。
2、
学校智能化管理兼创客室建设平台
创客室智能化应用展示平台,远程控制开关灯、电视、窗帘、空调等,学校教室灯光控制完全可以实现根据传感器光照度决定是否自动开灯,晚上安防关键地方灯自动开关,厕所智能冲洗、两操音乐自动播放,有草坪地方定时智能灌溉,智能门锁等,可以根据实际需要开发。
3、
智能家居应用
这个物联平台主要就是实现这一功能,家庭智能化应用基本上全覆盖,如如:智能门锁(远程开关),智能照明(定时开关灯)智能窗帘,晚上自动关闭,早晨自动打开,空调恒温控制,指定26度,传感器可根据检测室内温度决定是否打开或关闭空调,电饭煲可以在下班前打开可以提前煲汤或蒸大米饭;厨房煤气、漏水、着火检测等功能,实现一体化APP管理。(2020年上半年,准备以我房间进行智能化改造,如果不包括我的软件程序知识产权费用,费用是商用大牌十分之一费用能实现)
4、 智能灌溉:
智能灌溉实质就是智能模块+电磁阀的应用,这其实是智能农业中一个分支,在2019年我已经在我的菜园实现了智能化改造,10路水,5路是灌溉,5路是喷淋,根据种植不同蔬菜种类决定,再加上摄像头实现远程管理,效果很明显,比如草莓,改造前采摘期2周多点就没了,改造到延长增三个周,其它蔬菜长势也很好,有机会大家可以云参观一下。网站上《
智能菜园》。
5、
智能中控:
中央控制系统一般应用在多媒体会议室、电化教室、监控及指挥中心,新闻发布室等、环境控、场馆设备自动化控制、智能大棚等。以多媒体会议室为例,中央控制器作为所有电教设备的控制中心。教室内所有的电教设备如:录像机,影碟机,投影机,电动屏幕,音响,还有室内灯光,窗帘都可以与中央控制器相连,受其控制。用户只需要坐在触摸屏前,便可以直观的操作整个系统,包括系统开关、各设备开关、灯光明暗度调节、信号切换、信号源的播放和停止、各种组合模式的进入和切换、音量调节,以及对用于扩声的会议音响系统;用于讨论、表决、投票的数字会议及同声传译系统;用于远程会议的视频会议系统;用于视频、VGA信号显示的大屏幕投影系统;用于提供音视频信号的多媒体周边设备;用于全局环境设施、系统设备控制等系统的全自动综合控制等等。
6、
自动化应用:
中控是工厂自动化中的一个重要组成部分。它负责全厂的数据采集汇总、处理、监控,以达到控制、优化、调度、安全、管理的目的。一般主要由集散控制系统(DCS)、电视墙、数据服务器、操作工作站等组成。
中控是工厂自动化的核心,将有利于工厂增加生产的安全性,降低能耗和原料消耗,提高设备利用率和劳动生产率,提升综合竞争力。
7、
多媒体
中控是多媒体会议室和多媒体电教系统设备,它主要的作用就是通过RS232、RS485、红外、网络(含WIFI)等协议来控制周边设备,比如投影机、大屏幕电视、音响、摄像头、电动吊架、灯光、窗帘等。一般的控制端为无线触摸屏、有线触摸屏、控制面板、墙装面板、电脑端软件和遥控器。
2019年底,利用ESP8266+CC2530开发一套智能远程中控,主要应用于电力部门远程控制设备、适合工厂车间设备自动化管理、各种场馆智能化管理、包括智能大棚、智能养殖等方面稍加改造就能应用,详细见《
智能中控制系统》
三、科技馆物联云总体概况和呈现形式
(1)功能拓扑图:

在科技馆物联平台上,集成了物联网常用的传感器:继电器、DHT1、PM2.5、MQ_2气体、红外射频、步进电机、光敏、超声波、红外对管等,实现数据的采集、设备的远程控制。
(2)电脑上位机

实现如下功能:电磁锁门控、顶灯开关、电风扇、电视和投影红外开关、智能窗帘、红外对管统计进馆人数、音乐远程或定时播放、有害气体检测报警、以及室内外温度、湿度和PM2.5数据的采集。
开发电脑上位机所需要环境语言:MicroSoft Visual Stadio 2017专业版,需要熟悉语言c#,熟悉网络通讯协议:MQTT、Socket等
如何配置c#语言开发平台及详细步骤,在网站上有专门的专题有详细说明,资料涉及版权,网友自行从网上下载,只提供如何使用,不提供软件下载,希望理解。
(3)Android手机APP

开发平台
谷歌平台:Android Stodio 3.4开发平台,需要熟悉Java语言,以及网络通讯协议如MQTT Soket等
如何配置Java语言开发平台及详细步骤,在网站上有专门的专题有详细说明,资料涉及版权,网友自行从网上下载,只提供如何使用,不提供软件下载,希望理解。
五、科技馆物联云项目关键功能点实现过程
1、墙盒改造灯控制:
功能:控制顶灯开关
改造目标: 墙壁开关
终端编号: EndDeviceID = 0x0001
器材芯片: CC2530+继电器
芯片程序代码: S1键+继电器通用2530程序
具体改造过程如下:(前提是墙盒多加一条护套线提供弱电)
ZIGBEE关键代码:
1、初始化继电器P0_5IO口
#if defined WSN_Relay //继电器 P0_5
//-------------------------------------------
P0SEL &= ~0x20; //设置P0.5口为普通IO
P0DIR |= 0x20; //设置P0.5为输出
//-------------------------------------------
#define Relay_PIN P0_5 //定义P0.5口为继电器输入端
Relay_PIN = 1; //高电平继电器断开;低电平继电器吸合
#endif
2、手动按S1键开关灯代码
if ( keys & HAL_KEY_SW_6 ) //S1键
{
if(LedState == 0x30)
{
Relay_PIN = 0x31;
LedState = 0x31;
}
else
{
Relay_PIN = 0x30;
LedState = 0x30;
}
3、模块智能(远程)控制代码:
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
该cc2530无线接收函数收到协调器开关灯指令后
门控(电磁锁+模块)远程控制实现方方案
(一)、实现智能门锁原理
在现有电磁锁基础上,增加了CC2530+断电器远程控制电磁锁开关,根据电磁锁PUSH和GND短路来实现电磁锁开关,实现方法CC2530给继电器发送间隔0和1实现PUSH和GND短路开(接通是关)的原理实现智能控制。
电磁锁根据门的类型来选择不同型号电磁锁,原来怎么安装按说明书安装即可,只不过是电源盒按上述原理加装 CC2530+继电器实现,再加一个DC12转5V或3.3V模块,继电器控制线路分别接PUSH和GND
(二)、电磁锁购买及预算
电磁锁:分木门和玻璃门或双门价格(180-350元)
模块+继电器:68+15=83元
(三)、电磁锁与模块接线图

四、CC2530源码实现详见U盘指定目录
关键代码:
if(EndDeviceID == afRxData[2] || afRxData[2]==0xFF)
{
if(afRxData[4] == 0)
{
Relay_PIN = 0;
HalLedSet ( HAL_LED_2, HAL_LED_MODE_ON );
//---------------------------------------------
//电磁门控制发送双指令
dht11_delay_us(2000000); //延时2秒
Relay_PIN = 0;
HalLedSet ( HAL_LED_2, HAL_LED_MODE_ON );
//---------------------------------------------
}
else
{
Relay_PIN = 1;
HalLedSet ( HAL_LED_2, HAL_LED_MODE_OFF );
//---------------------------------------------
dht11_delay_us(2000000); //延时2秒
Relay_PIN = 0;
HalLedSet ( HAL_LED_2, HAL_LED_MODE_ON );
//---------------------------------------------
}
智能窗帘(减速电机+模块)远程控制实现方案
(一)、实现智能窗帘原理
在现有电动遥控窗帘基础上,增加了CC2530远程控制窗帘的开关,根据减速电机开关停协议,CC2530串口发送给减速电机串口指令实现窗帘智能控制。
电动遥控窗帘减速电机(不支持ZIGBEE控制),主要根据实际情况选择定制不同类型轨道和尺寸大小,原来怎么安装按说明书安装即可,只不过是在减速电机下面盒中加装 CC2530实现。
(二)、智能窗帘购买及预算
减速电机:带遥控器但支持zigbee支持(560元),轨道每米50元
模块 CC2530:68元
(三)、智能窗帘协议指令与模块接线图
uint8 TxBuffer[7]={0x55,0xFE,0xFE,0x03,0x01,0xB9,0x24}; //电机顺时针转
uint8 TxBuffer1[7]={0x55,0xFE,0xFE,0x03,0x02,0xF9,0x25}; //逆时针转电机
uint8 TxBuffer2[7]={0x55,0xFE,0xFE,0x03,0x03,0x38,0xE5}; // 电机停止

(四)、CC2530源码实现详见U盘指定目录
空调/电视(模块+红外控制板)远程控制实现方方案
(一)、实现空调或电视远遥控原理
红外控制板先学习电视或空调开关或调温等数据存储到系统芯片中,记下每个频道存储电视或空调开关指令序号,CC2530模块串口发送相对应的指令实现红外控制板远程开关空调和电视的功能。如果加上DHT11可以实现低于或高于设定温度自动开关空调功能。
(二)、红外控制板购买及预算
红外控制板:(60元)
模块+5V电源:68+15=83元
(三)、红外模块与CC2530模块接线图

采集红外设备开关码,详细见《IR03F红外学习模块--使用手册》
主要操作步骤:
1、修改波特率为115200bps:{A1,FD,03,05,DF} //默认波特率为9600
2、学习按键2:{A1,FD,01,02,DF} //第二频道学习记忆红外按键码
3、发射按键2:{A1,FD,02,02,DF} //发射第二频道存储红外按键码
四、CC2530源码实现详见U盘指定目录
关键代码如下:
else if( afRxData[3] == 0x0C ) //控制电视或投影机
{
if(EndDeviceID == afRxData[2] )
{
uint8 TxBuffer[7] ={0xA1,0xFD,0x02,0x01,0xDF}; //电机开关指令
uint8 TxBuffer1[7]={0xA1,0xFD,0x02,0x02,0xDF}; //投影开
uint8 TxBuffer2[7]={0xA1,0xFD,0x02,0x03,0xDF}; // 投影关
if(afRxData[4] == 1) //tv
{ HalUARTWrite(MY_DEFINE_UART_PORT, TxBuffer, 5); }
else if(afRxData[4] == 2)
{
HalUARTWrite(MY_DEFINE_UART_PORT, TxBuffer1, 5); //投影开
dht11_delay_us(100000);
HalUARTWrite(MY_DEFINE_UART_PORT, TxBuffer1, 5); //投影开
}
else if(afRxData[4] == 3)
{
HalUARTWrite(MY_DEFINE_UART_PORT, TxBuffer2, 5); // 投影关
dht11_delay_us(100000);
HalUARTWrite(MY_DEFINE_UART_PORT, TxBuffer2, 5); // 投影关
}
}
break;
}
设定温度阀值智能控制风扇或空调开关保持恒温
(一)、设定温度阀值控制恒温原理
CC2530模块集成继电器来控制风扇或空调的开关。CC2530通过DHT11传感器随时采集的温度来判断与指定温度阀值,如果当前温度高于指定的阀值,就自动打开继电器开关接通风扇或空调实现降温来,来操持恒温。
(二)、保持恒温所需要购买及预算
继电器:(15元)
模块+5V电源:68+15=83元
(三)、恒温模块实现拓扑图

四、CC2530源码实现详见U盘指定目录
关键代码如下:
初始化继电器和DHT11IO口
#if defined WSN_Relay //继电器 P0_5
//-------------------------------------------
P0SEL &= ~0x20; //设置P0.5口为普通IO
P0DIR |= 0x20; //设置P0.5为输出
//-------------------------------------------
#define Relay_PIN P0_5 //定义P0.5口为继电器输入端
Relay_PIN = 1; //高电平继电器断开;低电平继电器吸合
#endif
#if defined WSN_DHT11 //温湿度传感器 P0_7 在加载头文件DHT1
P0SEL &= ~0x80; //P0_7配置成通用io接温湿度 DHT11
#endif
//接收协器无线传来温度阀值数据,参数为接收到的数据
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
…
else if(EndDeviceID == afRxData[2] && afRxData[3] == 0x0D)
{//发送:3A 00 01 0D 12 24 23 设置终端1 DHT11温度阀值为18
TempAlert = afRxData[4]; //温度阀值
break;
}
if (wendu != 0 )
{
if( wendu > TempAlert )
{ Relay_PIN=0; }
else
{ Relay_PIN=1; }
} if (wendu != 0 )
{
if( wendu > TempAlert )
{ Relay_PIN=0; }
else
{
Relay_PIN=1;
}
}
有害气体检测蜂鸣器报警和光敏控制开关灯
(一)、气体检测报警及光敏控制开关灯原理
CC2530模块通过MQ-2传感器检测是否存在有害气体控制蜂鸣器声响。CC2530通过光敏传感器感知光亮度,来决定是否自动打开继电器来控制灯的开关。
(二)、所需模拟和传感器要购买及预算
继电器:(15元),光敏传感器:(10元),蜂鸣器:(10元)
模块+5V电源:68+15=83元
三、有害气体检测实现拓扑图

(四)、CC2530源码实现详见U盘指定目录
关键代码如下:
#if defined WSN_Relay //继电器 P0_5
//-------------------------------------------
P0SEL &= ~0x20; //设置P0.5口为普通IO
P0DIR |= 0x20; //设置P0.5为输出
//-------------------------------------------
#define Relay_PIN P0_5 //定义P0.5口为继电器输入端
Relay_PIN = 1; //高电平继电器断开;低电平继电器吸合
#endif
#if defined WSN_Gas //气体传感器
#define GAS_PIN P0_0 //定义P0.6口为烟雾传感器的输入端
P0SEL &= ~0x01; //设置继电器P0.0口为普通IO,p0_5给灯带用了
P0DIR |= 0x01;
#endif
#if defined WSN_photosensitive //光敏传感器
P0SEL &= ~0x10; //设置P0.4口为普通IO
P0DIR &= ~0x10; //设置P0.4定义为输入口
#define photosensitive P0_4
#endif
#if defined WSN_Buzzer //蜂鸣器传感器
P0SEL &= ~0x40; //设置P0.6为普通IO口
P0DIR &= ~0x40; //P0.6定义为输入口
start_pwm(); //配置T1输出PWM
TIMER1_STOP(); //默认关闭蜂鸣器
#endif
MQ-2传感器判断环境是否存在有害气体,来打开或关闭蜂鸣器关键代码
if( GAS_PIN == 0 ) //检测到可燃气体过高时时蜂鸣器响
{
TIMER1_RUN(); //检测到过高时时蜂鸣器响
}
else
{
// Relay_PIN=1;
TIMER1_STOP(); //默认关闭蜂鸣器photosensitive
}
温湿度和PM2.5数据采集
(一)、温湿度和PM2.5数据采集原理
CC2530模块通过DHT11传感器和PM2.5传感器,通过驱动程序采集到数据无线发给协调器网关,网关通过8266和MTQQ云服务器,再更新到电脑上位机或手机APP来实现传感器数据有采集。DHT11传感器和PM2.5传感器驱动程序在专门章节下载共享。
(二)、所需模拟和传感器要购买及预算
DHT1:(15元),PM2.5传感器:(40元)
模块+5V电源:68+15=83元
(三)、温湿度和PM2.5数据采集实现拓扑图
(四)PM2.5传感器专门接线图
(五)
、CC2530源码实现详见U盘指定目录
关键代码如下:
#if defined WSN_DHT11 //温湿度传感器 P0_7 在加载头文件DHT1
P0SEL &= ~0x80; //P0_7配置成通用io接温湿度 DHT11
#endif
#if defined WSN_PM25 //PM2.5传感器
P0SEL &= ~0x40; //设置P0.6为普通IO口
P0DIR &= ~0x40; //P0.6定义为输入口
#endif
采集数据关键代码:
#if defined WSN_PM25
//PM2.5驱动程序
uint16 nVuale,nPM2_5;
float dustDensity;
char strBuf[5];
nVuale = getPm25Vuale();
//经过多次测试GP2Y1010AU0F比例系数为800 GP2Y1014为200比较合适
dustDensity = (float)nVuale * (3.3 / 2047.0)*180.0;
nPM2_5 = (uint16)dustDensity; //(uint16)dustDensity;
strBuf[0] = nPM2_5 / 1000 % 10+0x30;
strBuf[1] = nPM2_5 / 100 % 10+0x30;
strBuf[2] = nPM2_5 / 10 % 10+0x30;
strBuf[3] = (nPM2_5 % 10)+0x30;
strBuf[4] = '';
#endif
//----------------------------------------------------
#if defined WSN_DHT11
//DHT11驱动
unsigned char temp[3],humidity[3]; //, strTemp[18],strBuf[4];
char r_val = dht11_value(temp , humidity , DHT11_STRING);
temp[2] = '';
humidity[2] = '';
int wendu = atoi(temp); //温度
int shidu = atoi(humidity); //温度
#endif
CC2530终端通过传感器采集数据无线发给协调器:
SendBuf[0] = 0x3A;
SendBuf[1] = HI_UINT16( EndDeviceID );
SendBuf[2] = LO_UINT16( EndDeviceID );
SendBuf[3] = 0x02; //FC
SendBuf[4] = HI_UINT16( shortAddr ); //存放短地址高8位
SendBuf[5] = LO_UINT16( shortAddr ); //存放短地址低8位
#if defined WSN_DHT11
SendBuf[6] = atoi(temp); //温度
SendBuf[7] = atoi(humidity); //获取湿度
#else
SendBuf[6] = 0; //atoi(temp); //温度
SendBuf[7] = 0; //atoi(humidity); //获取湿度
#endif
SendBuf[8] = GetLamp(); //获得继电器1的状态
#if defined WSN_PM25
SendBuf[9] = nPM2_5; //获得PM2.5
#else
SendBuf[9] = 0; //获得PM2.5 //获取气体传感器的状态
#endif
SendBuf[10] = XorCheckSum(SendBuf, 10);
SendBuf[11] = 0x23;
RGB彩带模块控制7种颜色
(一)、RGB色彩控制原理
上位机(APP)发送RGB彩带颜色控制指令,通过MQTT云服务中转给CC2530协调器网关,协调器模块通过无线发送给彩带终端模块,模块根据RGB驱动程序接口,执行改变彩带色彩。彩带驱动程序有专门章节下载共享。
(二)、所需模拟和传感器要购买及预算
RGB彩带:(30元/米)
模块+5V电源+继电器:68+15+15=98元
(三)、RGB彩带模块控制拓扑图
(四)、CC2530源码实现详见U盘指定目录
关键代码如下:
#if defined WSN_Lightbelt //彩色灯带
#define LAMP_PIN P0_0 //定义P0.0口为继电器输入端
LAMP_PIN = 1; //高电平继电器断开;低电平继电器吸合
P0SEL &= ~0x01; //设置继电器P0.0口为普通IO,p0_5给灯带
P0DIR |= 0x01;
InitT1(255, 255, 0); //默认为红色 参数顺序为 R G B
#endif
终端接受到APP发送的(RGB)指令执行代码:
else if(afRxData[3] == 0x09) //灯带控色 功能码为09
{
//RGB光带 EndDeviceID为03
if(EndDeviceID == afRxData[2] || afRxData[2] == 0xFF)
{
SetT1(afRxData[4], afRxData[5], afRxData[6]);
}
break;
}
创同科技物联云通讯协议
1、概述
本协议适用于本公司所生产的所有无线通信模块,实现数据在模块之间的传递。
本协议对无线模块内的参数和硬件资源标准化,从而可以采用相同的方法来访问和控制模块内部的资源;串口控制协议为用户提供了对模块的控制访问通道,用户设备可以通过串口对无线通信进行控制,完成数据的传递,参数的访问等。
2、帖格式
2.1查询单个终端
报文组成单元 |
开始 |
地址 |
功能码 |
校验码 |
结束 |
字节数 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
描述 |
3A(:) |
|
|
|
23(#) |
缩写 |
SD |
ADDR |
FC |
XOR |
ED |
响应
报文组成单元 |
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
字节数 |
1字节 |
2字节 |
1字节 |
n字节 |
1字节 |
1字节 |
描述 |
3A(:) |
|
|
|
|
23(#) |
缩写 |
SD |
ADDR |
FC |
DA |
XOR |
ED |
2.1控制单个终端
报文组成单元 |
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
字节数 |
1字节 |
2字节 |
1字节 |
n字节 |
1字节 |
1字节 |
描述 |
3A(:) |
|
|
|
|
23(#) |
缩写 |
SD |
ADDR |
FC |
DA |
XOR |
ED |
响应
报文组成单元 |
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
字节数 |
1字节 |
2字节 |
1字节 |
n字节 |
1字节 |
1字节 |
描述 |
3A(:) |
|
|
|
|
23(#) |
缩写 |
SD |
ADDR |
FC |
DA |
XOR |
ED |
响应报文中数据如果等于0表示:操作失败,1则操作成功。数据还可分高四位和低四位,高四位保存操作的标志,低四位保存原始数据。商业版可以这么做增加安全性。
功能码FC |
描述 |
数据长度 |
01 |
查询所有终端传感器的数据 |
|
02 |
查询单个终端上所有传感器的数据 |
|
03 |
协调器配置在线Zigbee网络参数(切换新的信道 |
|
04 |
保留 |
|
05 |
协调器通过上位机在线配置在线Zigbee网络参数 |
|
06 |
协调器配置在线Zigbee网络参数后重新启动 |
|
07 |
关闭所有设备 |
|
08 |
保留 |
|
09 |
灯带控色 功能码为09 |
|
0A |
控制继电器开关 |
|
0B |
控制减速电机窗帘开关 |
|
0C |
控制电视或投影机 |
|
0D |
设置终端 DHT11温度阀值为 |
|
0E |
音乐播放功能码用)0E |
|
0F |
按键控制蜂鸣器0:打开;1:关闭 |
|
例子:
查询单个终端上的灯开关状态,报文组成如下 :
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
查询时为空 |
1字节 |
1字节 |
3A(:) |
0001 |
03 |
空 |
38 |
23(#) |
响应
开始 |
执行状态 |
数据 |
校验码 |
结束 |
1字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A(:) |
01 |
00 |
3B |
23(#) |
发送: 3A 00 01 38 23
返回: 3A 01 00 3B 23 (执行成功)
返回数据:00表示状态为灭,01表示状态为亮
2、开关单个终端上的灯:
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
0001 |
0A |
01 |
30 |
23 |
响应(原样返回)
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
0001 |
0A |
01 |
30 |
23 |
点亮终端地址为0001的灯
发送:3A 00 01 0A 00 31 23 点亮终端地址为0001的灯
返回:3A 00 01 0A 00 31 23 (执行成功)
3、开关所有终端上的灯,报文组成如下:
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
FFFF |
04 |
01 |
3F |
23 |
响应(原样返回)
开始 |
执行状态 |
数据 |
校验码 |
结束 |
1字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
FF |
01 |
C4 |
23 |
点亮所有终端的灯
发送:3A FF FF 04 01 3F 23 点亮终端地址为0001的灯
返回:3A FF 01 C4 23 (执行成功)
关闭所有终端的灯
发送:3A FF FF 04 00 3E 23 点亮终端地址为0001的灯
返回:3A FF 00 C5 23 (执行成功)
4、由于采用打包机制,查询数据只需查询所有终端上所有传感器的数据即可,节省网络带宽。单个传感器
查询命令并没有实现,有兴趣的可以参考查询命令自己添加哦。
查询所有终端上所有传感器的数据:科技馆物联云采用自己开发的通用ZIGBEE系统设计:一个协调器+18个终端的模式,而且每个终端只能上传有效数据位6位:
NodeData[afRxData[2]-1][0] = afRxData[4]; //shortAddr_Hi
NodeData[afRxData[2]-1][1] = afRxData[5]; //shortAddr_Lo
NodeData[afRxData[2]-1][2] = afRxData[6]; //温度(DHT11)
NodeData[afRxData[2]-1][3] = afRxData[7]; //湿度(DHT11)
NodeData[afRxData[2]-1][4] = afRxData[8]; //继电器1
NodeData[afRxData[2]-1][5] = afRxData[9]; // 继电器2
发送: 3A 00 FF 01 C4 23
响应: 3A 00 FF 01 +(
shortAddr_Hi1 shortAddr_Lo1 温度1 湿度1 继电器1 其它
1)
+(
shortAddr_Hi2 shortAddr_Lo2 温度2 湿度2 继电器2 其它
2)
+
…
+(
shortAddr_Hi 18 shortAddr_Lo18 温度18 湿度18 继电器18 其它
18)
+ XOR 23
目前按通用ZIGBEE设计方案,18个终端打包机制,共有 18*6+6=114(6: 3A 00 FF 01 xor 23)
5、开关继电器:
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
0001 |
0A |
01 |
30 |
23 |
响应(原样返回)
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
0001 |
0A |
01 |
30 |
23 |
开继电器设备
发送:3A 00 01 0A 00 31 23 点亮终端地址为0001的灯
返回:3A 00 01 0A 00 31 23 (执行成功)
6、打开关闭窗帘:
打开窗帘
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
0006 |
0B |
02 |
35 |
23 |
发送:3A 00 06 0B 02 35 23 打开终端地址为0006的窗帘
关闭窗帘
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
0006 |
0B |
01 |
36 |
23 |
发送:3A 00 06 0B 01 36 23 关闭终端地址为0006的窗帘
7、打开关闭蜂鸣器:
打开蜂鸣器
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
000D |
0F |
00 |
38 |
23 |
发送:3A 00 0D 0F 00 38 23 打开终端地址为000D的蜂鸣器
关闭蜂鸣器
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
000D |
0F |
01 |
39 |
23 |
发送:3A 00 0D 0B 01 39 23 关闭终端地址为000D的蜂鸣器
8、打开关闭电视或投影:
打开电视或投影
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
0012 |
0C |
02 |
26 |
23 |
发送:3A 00 12 0C 02 26 23 打开终端地址为0012的电视或投影
关闭电视或投影
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
1字节 |
1字节 |
1字节 |
3A |
0012 |
0C |
03 |
27 |
23 |
发送:3A 00 12 0C 03 27 23 关闭终端地址为0012的电视或投影
9、彩带颜色控制:
彩带绿色
开始 |
地址 |
功能码 |
数据 |
校验码 |
结束 |
1字节 |
2字节 |
1字节 |
R |
G |
B |
1字节 |
1字节 |
3A |
0003 |
09 |
00 |
FF |
00 |
CF |
23 |
发送:3A 00 03 09 00 FF 00 CF 23 终端地址为0003的彩带变绿色
科技馆物联云各功能模块功能及分布明细
终端编号 |
功能 |
传感器 |
位置 |
0x0001 |
顶灯 |
继电器 (通用终端程序) |
物联室 |
0x0002 |
门控 |
继电器 (专用终端程序) |
物联室 |
0x0003 |
灯带 |
彩带 (专用终端程序) |
物联室 |
0x0004 |
大风扇 |
继电器(通用终端程序) |
物联室 |
0x0005 |
小风扇 |
继电器、DHT11、PM2.5 (专用终端程序) |
物联室 |
0x0006 |
窗帘 |
串口通讯(专用终端程序) |
物联室 |
0x0007 |
|
|
|
0x0008 |
温湿度pM2.5 |
DHT11、PM2.5(通用终端程序) |
一楼展厅 |
0x0009 |
进馆人数统计 |
红外对管(专用终端程序) |
一楼展厅 |
0x000A |
温湿度pM2.5 |
DHT11、PM2.5(通用终端程序) |
科技馆室外 |
0x000B |
8266开发板 |
|
物联室 |
0x000C |
继电器+光敏+气体+蜂鸣器 |
继电器、光敏、mq-2、蜂鸣器(专用终端程序) |
物联室 |
0x000D |
继电器+开关蜂鸣器+温度控制风扇 |
继电器、DHT11、蜂鸣器(专用终端程序) |
物联室 |
0x000E |
水泵开关 |
继电器(通用终端程序) |
物联室作品 |
0x000F |
一号电磁阀 |
继电器(通用终端程序) |
物联室作品 |
0x0010 |
二号电磁阀 |
继电器(通用终端程序) |
物联室作品 |
0x0011 |
三号电磁阀 |
继电器(通用终端程序) |
物联室作品 |
0x0012 |
电视投影 |
红外射频模块(专用终端程序) |
物联室作品 |
路由器1 |
Zigbee通讯 |
(专用终端程序) |
二楼门口 |
路由器2 |
Zigbee通讯 |
(专用终端程序) |
一楼门口 |
|
|
|
|