物联网常见通信模块介绍
最近在帮导师做一个物联网项目,对于物联网系统来说,通信模组是其中最重要的一环,以下介绍几种常见的通信模组设备,另外我本次项目使用的是ESP8266 WiFi模块,所以会重点以这个为例介绍通信模组原理。
常见物联网通信模组
1、蓝牙
这个大家很常见,手机里就有。蓝牙是一种低速率低功耗近距离通信模组,通信距离最多只有几十米,并且蓝牙是不能接入互联网的。一般为一对一连接,所以常用于手机和智能手环之间这种场景。
2、ZigBee
ZigBee是一种低速短距离传输的无线通信设备,跟蓝牙很像,低速率低功耗近距离通信模组,通信距离最多只有几十米,但是ZigBee可以连上互联网,所以ZigBee多用于饭店的点餐系统。ZigBee跟WiFi功能性质一样,但速率远低于WiFi,所以价格也远低于WiFi,ZigBee可以看成是WiFi的低端互补吧。
3、WiFi
这个就不用介绍了,大家都知道,WiFi通信距离差不多也就几十米(当然有些超级WiFi设备传输上百公里的也有)。我这次项目选用的就是WiFi模块
以上三种都是短距离通信模组,所以常用于固定式场所,像室内这种情况,下面两种就用于长距离场景。
4、4G或者5G模组(NB-loT)
4G通信模组那就跟我们手机一样,手机也是靠这种通信模组通信,所以使用NB-loT通信模组需要插电话卡。这种模组没有通信距离限制,只要有基站就能通信连上互联网,当然价格也在这几种中最贵,毕竟流量费也要钱的。
5、LoRa
这种估计大家很少见,但玩过无人机的应该知道,LoRa之前常用于无人机上,LoRa通信距离一般为几公里至几十公里。LoRa需要成对使用,一发一收,当然也可以多发一收,一发多收。LoRa类似于广播,不能接入互联网,并且功耗低,成本低,所以现在常用于城市的水表电表的远程读取。
ESP8266 WiFi模块
ESP8266简介
ESP8266是目前市场上最常用的物联网WiFi模块,关于这个模块的介绍,大家自行百度就行,以下说一下开发原理。
常见使用场景如下图所示:
模块通过串口连上单片机或者上位机,单片机通过串口控制ESP8266模块。
ESP8266里有一个32位的通信处理器,这个芯片内置TCP/IP协议栈。模块将从串口接受的数据打包处理,再从天线发射出去。或者从天线接受数据,解包处理后,从串口发送出去。流程如下图所示
所以我们只能看到一些串口数据,看不到原始数据帧,其实ESP8266的数据帧是标准的TCP/IP的数据帧。数据帧如下图所示:
模块固件开发
光看到串口数据没有多大意义,如果真想做通信开发,需要研究数据帧的设置。ESP8266将功能全部集成在内部,对外只保留一个串口接口,要想研究内部数据处理原理,需要研究ESP8266的固件。
大家可以直接从官网下载源码和固件开发教程。ESP8266的官网如下:https://www.espressif.com/zh-hans/products/socs/esp8266.
固件源码是用C语言写的,工具包都在工程里,直接编译即可生成bin固件,烧录进去就OK。
固件源码工程跟Linux内核的工程很像,里面包含了各种驱动和应用程序,像http、mqtt、客户端、服务器端的都有。例如物联网常见协议mqtt的部分源码: