物联网工程学习路线

物联网工程学习路线,第1张

1 编程方面:C、汇编
2 嵌入式系统基础
3硬件器件与平台:节点器件(T-Mote Sky、TI MSP430等);平台(Arduino,树莓派等)
3无线传感器网络:基础知识、协议栈(ZigBee,IETF 6LowPan, CoAP 等)
4无线传感器网络 *** 作系统(TinyOS, Contiki等)
5在网上找典型应用案例,学术性综述等,这一工作实际上不是在最后进行,而是贯穿在前面4步中

实际上是串口读入字符串,再转换为int型数据
[C++] 纯文本查看 复制代码代码001002003004005006007008009while(Serialavailable() > 0) { intinChar = Serialread(); if(isDigit(inChar)) {inString += (char)inChar;}i=inStringtoInt();}}

这里我们使用了一个库: PubSubClient

创建产品

创建新设备

(1) 产品ID, 用户ID,和登录key

(2) 设备名称, ID和 设备key

OneNet MQTTS用携带token的方式进行鉴权

访问者(可以为应用或者设备)固化访问密钥于软件中,在需要进行服务访问时,通过密钥计算临时token,通过临时token进行服务访问认证

访问者首先通过访问管理者获取临时访问token,访问管理者可根据需要自定义该token的访问有效期(即过期时间),访问者获取该token后方才能访问OneNET

访问管理者直接将密钥授权给访问者(例如,直接为设备烧写key),访问者通过密钥生成token进行访问

计算方法: >

可以不用做物联网硬件开发,因为物联网系统可以分为两部分:硬件和软件。硬件通常包括传感器、节点、网关等,而软件则包括数据处理、分析和应用等。如果您不想进行硬件开发,可以考虑使用已有的硬件产品,例如Arduino、Raspberry Pi等,或者采购一些现成的传感器、网关设备等。

在软件开发方面,您可以选择使用一些物联网平台或开发框架,例如AWS IoT、Google Cloud IoT等,这些平台和框架提供了一些基础的组件和工具,帮助您更容易地实现物联网系统。同时,您也可以自己编写代码进行数据处理、分析和应用开发等。无论哪种方案,都需要考虑数据的安全性和可靠性,以及系统的扩展性和可维护性。

可以通过使用现有的物联网设备或者使用模拟器来实现物联网系统,而不需要进行物联网硬件开发。以下是一些实现物联网系统的常用方法:

使用现有的物联网设备:市场上已经有许多物联网设备可供选择,例如传感器、摄像头、智能家居设备等等。可以根据需求选择合适的设备并与系统进行集成。

使用模拟器:模拟器是一种可以模拟物联网设备行为的软件。通过使用模拟器,可以模拟多种物联网设备的行为和交互,并且可以测试系统的功能和性能。

使用云平台:云平台可以提供物联网设备的管理和数据存储等功能,例如AWS IoT、Google Cloud IoT、Azure IoT等等。使用云平台可以更加方便地管理物联网设备,并且可以通过云服务实现设备之间的数据交互和处理。

总的来说,可以通过选择适合的技术和平台,来实现一个完整的物联网系统,而不需要进行物联网硬件开发。

这个其实是在一块板子上集成了arduino和一个小型的linux系统,自带wifi模块,wifi通信的工作由linux来做,传感器的数据采集由arduino来做,他俩之间的数据交互通过Bridge库来做。不过板子较贵,大概480左右。意大利原产。适合玩,你需要学习的就是去官网看这款板子的文档,买一些杜邦线和传感器,选择一个物联网云平台,用来测试采集和传输数据!

要做一个偏远地区的物联网控制应用,考虑了多种通信方式,据我所知总共也就这几种:有线,WIFI,GPRS。其余的什么MQTT,XBEE,RFID等等也离不开网络,或者可以这样设计:用RFID做设备间信息传输,然后部署一台另外的设备负责把最终信息存储设备的信息通过网络发送到服务端,这样能减少一些联网设备,不过感觉意义不大。

首先是第一个坑 ,现在arduino gprs设备几乎都是使用的2G通信,而运营商的2G通道渐渐都关闭了,会伴随着速度缓慢,信号丢失,无反应等各种情况,所以有时候写出来程序调试半天发现是通信的问题,直接让人怀疑选型gprs是个错误,这时候就要在通信程序中加入各种判断,考虑各种情况,工作量大幅上升。

去V2EX发帖吐槽,总结了网友给出消息:摩拜单车锁用的通信方式是移动定制的4G物联网流量卡,公路上的抓拍摄像头使用的是有线连接,自动货物出售机普遍采用4G物联网卡,远洋船舶通信是卫星信号,流量费贵出天际。总之GPRS通信处于被淘汰的边缘了。

应该有人问,那为什么不选4G?一个字:“穷”,arduino官方有支持2G/3G/4G的模块,一个将近900元,在硬件领域,有时候1分钱都要比较,不是斤斤计较,因为大量的设备意味着造价数量级的升高,同样能给出解决方案,老板肯定会选择报价低的。自己做?我反正做不出。

第二个坑 ,arduino gprs通信模块便宜的有A6,SIM800,SIM900,这些模块发送一个>有很多通信模块只有TCP功能,没有MQTT功能,比如WIFI,W5500等模块,还有一些NBIOT模块,但是又想连接阿里云物联网平台,官方提供了 *** 作系统,需要自己移植,很麻烦,比较难看得懂。就在想有没有一些简单一定的方法。
心想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复制代码以上就是连接阿里云的数据包格式及发布数据的格式,由于时间问题没有做订阅的数据包分析,下一次更新订阅的内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/13286494.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-08
下一篇 2023-07-08

发表评论

登录后才能评论

评论列表(0条)

保存