物联网的技术体系主要分为大三层:
1.感知层:
1.1终端设备:
物联网芯片 Arduino,Raspberry Pi,ESP32,C51,Stm32系列,华为NB-IOTstm32I4开发板,cc2530开发板;
1.2.终端设备搭载的嵌入式操作系统:VxWorks、FreeRTOS(多任务实时操作系统)、LiteOS、mbed
1.3.IoT 开发平台:Ruff、Tessel、JerryScript、Johnny-Five,PTC Thingworx,Software AG Cumulocity、GE Predix、 thingsboard
1.4.常用物联网智能设备技术:二维码、RFID、GPS、眼球与虹魔识别、听觉、嗅觉、触觉、味觉识别、VR/AR、SLAM、行为与复合特征识别、面部识别、指纹、手型
1.5常用传感器设备:温度/湿度传感器、力觉传感器、加速度传感器、光传感器、测距传感器、磁性传感器、微机电传感器、生物传感器、智能传感器、传感器与传感器网络
1.6.物联网常见协议:TCP/IP、TCP、UDP、HTTP、Websocket、wifi、蓝牙、NFC
MQTT:是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议;
最大优点:可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用.
应用场景:
技术架构:
mqtt协议实现方式分为:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
mqtt协议数据包结构:一个MQTT数据包由固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。
MQTT数据包结构如下:
Payload消息体位MQTT数据包的第三部分,包含CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE四种类型的消息:
RTSP(Real Time Streaming Protocol):实时流传输协议,是cs模式的流媒体播放协议(视频播放协议)
Modbus:一个请求/应答方式的串行通信协议,目前存在用于串口、以太网以及其他支持互联网协议的网络的版本,通常用来连接监控计算机和远程终端控制系统
nb-lot(窄宽带物联网):基于蜂蜜的窄宽带,具有大容量、低功耗、低成本
coap:物联网世界的类web协议,使用在资源受限的物联网设备上。物联网设备的ram,rom都通常非常小,运行TCP和HTTP是不可以接受的。
LoRa:基于蜂窝的长距离、低功耗、低成本,应用在智慧社区、智能家居和楼宇、智能表计、智慧农业、智能物流等多个垂直行业。
城镇可达 2-5 Km , 郊区可达 15 Km;一个 LoRa 网关可以连接上千上万个 LoRa 节点。
基于REST,server的资源地址和互联网一样也有类似url的格式,客户端同样有POST,GET,PUT,DELETE方法来访问server,对HTTP做了简化;
COAP是二进制格式的,HTTP是文本格式的,COAP比HTTP更加紧凑;
轻量化,COAP最小长度仅仅4B,一个HTTP的头都几十个B了;
支持可靠传输,数据重传,块传输。 确保数据可靠到达;
支持IP多播, 即可以同时向多个设备发送请求;
非长连接通信,适用于低功耗物联网场景;
COAP协议有4种消息类型:
CON—— 需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。这有点像TCP,对方必须给确认收到消息,用以可靠消息传输。
NON—— 不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。这适用于消息会重复频繁的发送,丢包不影响正常操作。这个和UDP很像。
用以不可靠消息传输。
ACK —— 应答消息,对应的是CON消息的应答。
RST —— 复位消息,可靠传输时候接收的消息不认识或错误时,不能回ACK消息,必须回RST消息。
BLE:低功耗蓝牙
主要应用领域:1、移动扩展设备 2、汽车电子设备 3、健康医疗用品:心跳带、血压计等 4、定位应用:室内定位、井下定位等 5、近距离数据采集:无线抄表、无线遥测等 6、数据传输:智能家居室内控制、蓝牙调光、打印机等
zigbee:低速短距离传输的无线网上协议,特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全
opc协议:利用微软的COM/DCOM技术来达成自动化控制的协定,采用典型的C/S模式,针对硬件设备的驱动程序由硬件厂商完成,提供统一OPC接口标准的Server程序,软件厂商只需按照OPC标准接口编写Client程序就访问Server程序进行读写,即可实现与硬件设备的通信