心想MQTT是基于TCP的,能否使用TCP转MQTT?因此就想使用TCP协议然后转MQTT协议连接阿里云物联网平台,经过试验证明是可以的。
首先我们先分析一下如何登陆接入Onenet平台。
先从它数据格式开始分析。首先我们要从后台取出三个信息,我们以这个为例。
我们把产品ID,设备名称,设备秘钥,简称三要素 (具体是什么看你自己的设备)
其实阿里云物联网平台的MQTT协议用的就是标准的,不过它加入了自己的认证方式。
MQTT协议需要上传四个参数,报活时间,clientID,用户名,密码。
那么阿里云的就在clientID,用户名,密码做了手脚。
clientID比较长,按照一定的格式
用户名:设备名和秘钥组成
密码:使用了加密串进行了加密,有sha1或者MD5加密方式
下面我们来介绍一下
MQTT接入都是发十六进制的数据。
么我们发送的时候就是这样子的一串数据
0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67
0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009
0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36
十六进制解释
数据长度:0x74
协议数据长度 0x00 0x04
协议类型: 0x4d 0x51 0x54 0x54
协议数据: 0x04 0xC0
keepAlive数据:0078
ClientID长度:0033
ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c
用户名:0009
用户名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34
密码长度:0028
密码: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36复制代码上面的就是连接服务器的连接包
下面呢,我们来做个发布包(上传数据到服务器)
0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d
十六进制数据解释
数据头:0x30
数据长度:0x1D
TopicName数据长度:0009
TopicName数据内容:2f7379732f706f7374
主体json数据: 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d复制代码以上就是连接阿里云的数据包格式及发布数据的格式,由于时间问题没有做订阅的数据包分析,下一次更新订阅的内容。
这里我们使用了一个库: PubSubClient
创建产品
创建新设备
(1) 产品ID, 用户ID,和登录key
(2) 设备名称, ID和 设备key
OneNet MQTTS用携带token的方式进行鉴权
访问者(可以为应用或者设备)固化访问密钥于软件中,在需要进行服务访问时,通过密钥计算临时token,通过临时token进行服务访问认证
访问者首先通过访问管理者获取临时访问token,访问管理者可根据需要自定义该token的访问有效期(即过期时间),访问者获取该token后方才能访问OneNET
访问管理者直接将密钥授权给访问者(例如,直接为设备烧写key),访问者通过密钥生成token进行访问
计算方法: >Arduino的IDE基本上都是以C语言为基础,实现C语言大部份的功能。因其开源第三方库(open source 3rd-party library)的丰富(如>
可以快速使用Arduino与Adobe Flash, Processing, Max/MSP, PureData, SuperCollider等软件结合,作出互动作品。 Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。 Arduino也可以独立运行,并与软件进行交互,例如:Adobe Flash, Processing, Max/MSP, Pure Data, VVVV或其他互动软件。 Arduino的IDE界面基于开放源代码,可以免费下载使用,开发出更多令人惊艳的互动作品。
Arduino的作用是能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。
下面对Arduino的特色与功能介绍:
特色。可开放源代码的电路图设计,程序开发接口免费下载,也可依个人需求自己修改。是使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to RS232线更新固件。可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等)。支持多种互动程序,如:Flash、Max/Msp、vvvv、PD、C、Processing等。应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。
功能。可以快速使用Arduino与Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider等软件结合,作出互动作品。 Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。 Arduino也可以独立运行,并与软件进行交互,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互动软件…。 Arduino的IDE界面基于开放源代码,可以免费下载使用,开发出更多令人惊艳的互动作品。
Arduino是一个开源嵌入式硬件平台,用来供用户制作可交互式的嵌入式项目。
此外Arduino作为一个开源硬件和开源软件的公司,同时兼有项目和用户社区。该公司负责设计和制造Arduino电路板及相关附件。
这些产品按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)许可的开源硬件和软件分发的,Arduino允许任何人制造Arduino板和软件分发。 Arduino板可以以预装的形式商业销售,也可以作为DIY包购买。
Arduino项目始于2003年,作为意大利伊夫雷亚地区伊夫雷亚交互设计研究所的学生项目,目的是为新手和专业人员提供一种低成本且简单的方法,以创建使用传感器与环境相互作用的设备执行器。适用于初学者爱好者的此类设备的常见示例包括传感器、简单机器人、恒温器和运动检测器。
特点
1、基于知识共享开源的电路图设计。
2、免费下载,也可依需求自己修改,但需遵照姓名标示。您必须按照作者或授权人所指定的方式,表彰其姓名。
3、依相同方式分享,若您改变或转变著作,当散布该派生著作时,您需采用与本著作相同或类似的授权条款。
4、Arduino可使用ICSP在线烧入器,将Bootloader烧入新的IC芯片。
5、可依据Arduino官方网站,获取硬件的设计档,加以调整电路板及组件,以符合自己实际设计的需求。
软件
在Arduino上执行的程序可以使用任何能够被编译成Arduino机器代码的编程语言编写,Arduino官方推荐使用集成了arduino库的C++进行编程。
多数Arduino电路板上MCU的制造商Atmel公司也提供了数个可以开发Atmel微处理机程序的集成开发环境,AVR Studio和更新的Atmel Studio。
目前微软在其Visual Studio 也有提供Arduino 的 SDK,在编译执行上更方便。
智能家居是以住宅为平台,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
智能家居就是方便,怎么方便?之前建配龙商场就有个活动,是个智能门锁,通过指纹识别开锁,通过钥匙开锁,通过手机APP开锁,你忘记带钥匙,不会忘记带手机,忘记带手机不会忘了带指纹。所以这就是智能家居的方便点。
问题太大。这个有成熟产品面世了。温度传感器、麦克风模块、雨滴传感器、红外传感器、通过类似的传感器进行判断,通过arinowifi模块继电器模块做个wifi控制。
不过现在成本很大价格很贵。再等2年左右绝对商业化。下面说个应用
这是一个很简单的单片机应用,但与一般单片机不同的是,本作品使用ArinoUNO单片机和Arblock软件编程来实现,所以很适合非专业的爱好者、中小学生来制作,其原理主要是利用超声波传感器检测头部与书本的距离,通过Led发光管和报警声音,提醒使用者,及时纠正不良读写姿势,保护眼睛,预防近视。
一、硬件介绍:
(一)ArinoUNO单片机:这是由一个开放源码的硬件平台和一套专门的软件开发环境组成。它可以用来开发交互产品,它可以读取开关和传感器信号,可以控制电灯、电机和其他物理设备。ArinoUNO(R3版本)采用的微处理器是ATmega328。该版本包括14个数字输入输出IO,6个模拟输入IO,16MHZ的晶体,USB接口,电源接口,烧录头,复位按钮等。
电路结构图
(二)传感器:
1、超声波传感器的引脚有5根,分别是:①VCC电源端②TRIG控制端③ECHO接收端④、⑤GND地线(也即电源的负极)
2、引脚连接:1脚VCC和arino板的VCC脚连接,5脚GND也和相应的GND连接,2脚TRIG可以连接到A板的任意一个数字端口,如3号口,3脚ECHO也一样,如连连至2号口。
3、使用方式——“电平触发”
(三)LED和蜂鸣器:
LED可以选用普通发光二极管,蜂鸣器用普通的就可以,没有特别要求。
二、编程语言的选择:
ArBlock是一款基于Arino爱好者的图形化编程软件,所有程序都可以通过搭积木的方式,把高级的计算机语言和专业的语法,简化为一个个模块,堆砌在一起。
主程序
超声波检测程序
三、功能说明与外观制作:
(一)实物面板图如上所示:
(二)功能说明:
1、开电源,系统自检,8个小灯一闪一闪,LED1亮,表示正常工作。
2、系统读取人头部与书本的距离作为参考数据。
3、系统进入检测状态
LED1——灯亮,电源工作中
LED2:闪烁,表示在检测状态中。
LED3——LED4:姿势正确
LED5——LED6:姿势不对,闪烁,轻轻发出“滴”声提醒。
LED7——LED8:要纠正姿势,闪烁,同时播放音乐,提醒调整距离。
(三)电路焊接与外观制作:
1、电路焊接:
本作品电路结构简单,通过制作这一作品,可以培养初学者焊接技术。焊接顺序是这样:首先用烙铁头给要焊接的地方加热,然后把焊锡丝送到焊接点,等锡熔化到所需要的量时,先移开焊锡丝,再拿开烙铁头,此时焊接点不能移动,否则会出现虚焊。
有一个说明,初学者可能会使用助焊剂来帮助焊接,实际上常用的焊锡丝内部就有松香,就是起到肋焊剂的作用,所以不需要再使用肋焊剂,有些肋焊剂还具有腐蚀性,所以建议不要使用。
2、外观结构制作:
本作品外观采用PVC线槽来设计,这一方法主要还是受PVCBOT-Jason的启发,主要是考虑PVC线槽具有方便切割的特点,因此本作品也算是PVCBOT的一个ArinoUNO单片机实现案例,同时也向Jason和他的团队表示感谢,感谢他们为大家提供那么多的PVCOBOT作品。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)