通俗地讲,物联网就是“物物相连的互联网”,它包含两层含义:
第一,物联网是互联网的延伸和扩展,其核心和基础仍然是互联网;
第二,物联网的用户端不仅包括人,还包括物品,物联网实现了人与物品及物品之间信息的交换和通信。
物联网作为新一代信息技术的高度集成和综合运用,具有渗透性强、带动作用大、综合效益好的特点,是继计算机、互联网、移动通信网之后信息产业发展的又一推动者。
嵌入式的话首先把单片机玩顺了,从最简单的8位51单片机,到16位的MSP430,到32位的STM32这类都要比较熟悉。
同时也要熟悉单片机外围电路,这里用到模电数电知识。
可以利用单片机与各类模块(物联网常用蓝牙、WIFI、ZIGBEE等通信模块)搭配完成几个小项目这样掌握的更扎实一些。
接下来可以接触ARM,学LINUX,通过 *** 作系统来开发项目。
物联网 *** 作系统由内核、辅助外围模块(文件系统、图形用户界面、通信协议栈、各类常见设备的驱动程序等)、集成开发环境等组成,基于此,可衍生出一系列面向行业的特定应用。物联网 *** 作系统与传统的个人计算机 *** 作系统和智能手机类 *** 作系统不同,它具备物联网应用领域内的一些独特特点,现说明如下。
物联网 *** 作系统内核的特点
1、内核尺寸伸缩性强,能够适应不同配置的硬件平台。比如,一个极端的情况下,内核尺寸必须维持在10K以内,以支撑内存和CPU性能都很受限的传感器,这时候内核具备基本的任务调度和通信功能即可。在另外一个极端的情况下,内核必须具备完善的线程调度、内存管理、本地存储、复杂的网络协议、图形用户界面等功能,以满足高配置的智能物联网终端的要求。这时候的内核尺寸,不可避免的会大大增加,可以达到几百K,甚至M级。这种内核尺寸的伸缩性,可以通过两个层面的措施来实现:重新编译和二进制模块选择加载。重新编译措施很简单,只需要根据不同的应用目标,选择所需的功能模块,然后对内核进行重新编译即可。这个措施应用于内核定制非常深入的情况下,比如要求内核的尺寸达到10K以下的场合。而二进制模块选择加载,则用在对内核定制不是很深入的情况。这时候维持一个 *** 作系统配置文件,文件里列举了 *** 作系统需要加载的所有二进制模块。在内核初始化完成后,会根据配置文件,加载所需的二进制模块。这需要终端设备要有外部存储器(比如硬盘、Flash等),以存储要加载的二进制模块;
2、内核的实时性必须足够强,以满足关键应用的需要。大多数的物联网设备,要求 *** 作系统内核要具备实时性,因为很多的关键性动作,必须在有限的时间内完成,否则将失去意义。内核的实时性包涵很多层面的意思,首先是中断响应的实时性,一旦外部中断发生, *** 作系统必须在足够短的时间内响应中断并做出处理。其次是线程或任务调度的实时性,一旦任务或线程所需的资源或进一步运行的条件准备就绪,必须能够马上得到调度。显然,基于非抢占式调度方式的内核很难满足这些实时性要求;
3、内核架构可扩展性强。物联网 *** 作系统的内核,应该设计成一个框架,这个框架定义了一些接口和规范,只要遵循这些接口和规范,就可以很容易的在 *** 作系统内核上增加新的功能的新的硬件支持。因为物联网的应用环境具备广谱特性,要求 *** 作系统必须能够扩展以适应新的应用环境。内核应该有一个基于总线或树结构的设备管理机制,可以动态加载设备驱动程序或其它核心模块。同时内核应该具备外部二进制模块或应用程序的动态加载功能,这些应用程序存储在外部介质上,这样就无需修改内核,只需要开发新的应用程序,就可满足特定的行业需求;
4、内核应足够安全和可靠。可靠性就不用说了,物联网应用环境具备自动化程度高、人为干预少的特点,这要求内核必须足够可靠,以支撑长时间的独立运行。安全对物联网来说更加关键,甚至关系到国家命脉。比如一个不安全的内核被应用到国家电网控制当中,一旦被外部侵入,造成的影响将无法估量。为了加强安全性,内核应支持内存保护(VMM等机制)、异常管理等机制,以在必要时隔离错误的代码。另外一个安全策略,就是不开放源代码,或者不开放关键部分的内核源代码。不公开源代码只是一种安全策略,并不代表不能免费适用内核;
5、节能省电,以支持足够的电源续航能力。 *** 作系统内核应该在CPU空闲的时候,降低CPU运行频率,或干脆关闭 CPU。对于周边设备,也应该实时判断其运行状态,一旦进入空闲状态,则切换到省电模式。同时, *** 作系统内核应最大程度的降低中断发生频率,比如在不影响实时性的情况下,把系统的时钟频率调到最低,以最大可能的节约电源。
物联网 *** 作系外围模块的特点
外围模块指为了适应物联网的应用特点, *** 作系统应该具备的一些功能特征,比如远程维护和升级等。同时也指为了扩展物联网 *** 作系统内核的功能范围,而开发的一些功能模块,比如文件系统、网络协议栈等。物联网 *** 作系统的外围模块(或外围功能)应该至少具备下列这些:
1、支持 *** 作系统核心、设备驱动程序或应用程序等的远程升级。远程升级是物联网 *** 作系统的最基本特征,这个特性可大大降低维护成本。远程升级完成后,原有的设备配置和数据能够得以继续使用。即使在升级失败的情况下, *** 作系统也应该能够恢复原有的运行状态。远程升级和维护是支持物联网 *** 作系统大规模部署的主要措施之一;
2、支持常用的文件系统和外部存储。比如支持FAT32/NTFS/DCFS等文件系统,支持硬盘、USB stick、Flash、ROM等常用存储设备。在网络连接中断的情况下,外部存储功能会发挥重要作用。比如可以临时存储采集到的数据,再网络恢复后再上传到数据中心。但文件系统和存储驱动的代码,要与 *** 作系统核心代码有效分离,能够做到非常容易的裁剪;
3、支持远程配置、远程诊断、远程管理等维护功能。这里不仅仅包涵常见的远程 *** 作特性,比如远程修改设备参数、远程查看运行信息等。还应该包涵更深层面的远程 *** 作,比如可以远程查看 *** 作系统内核的状态,远程调试线程或任务,异常时的远程dump内核状态等功能。这些功能不仅仅需要外围应用的支持,更需要内核的天然支持;
4、 支持完善的网络功能。物联网 *** 作系统必须支持完善的TCP/IP协议栈,包括对IPv4和IPv6的同时支持。这个协议栈要具备灵活的伸缩性,以适应裁剪需要。比如可以通过裁剪,使得协议栈只支持IP/UDP等协议功能,以降低代码尺寸。同时也支持丰富的IP协议族,比如Telnet/FTP/IPSec/SCTP等协议,以适用智能终端和高安全可靠的应用场合;
5、对物联网常用的无线通信功能要内置支持。比如支持GPRS/3G/HSPA/4G等公共网络的无线通信功能,同时要支持Zigbee/NFC/RFID等近场通信功能,支持WLAN/Ethernet等桌面网络接口功能。这些不同的协议之间,要能够相互转换,能够把从一种协议获取到的数据报文,转换成为另外一种协议的报文发送出去。除此之外,还应支持短信息的接收和发送、语音通信、视频通信等功能;
6、内置支持XML文件解析功能。物联网时代,不同行业之间,甚至相同行业的不同领域之间,会存在严重的信息共享壁垒。而XML格式的数据共享可以打破这个壁垒,因此XML标准在物联网领域会得到更广泛的应用。物联网 *** 作系统要内置对XML解析的支持,所有 *** 作系统的配置数据,统一用XML格式进行存储。同时也可对行业自行定义的XML格式进行解析,以完成行业转换功能;
7、支持完善的GUI功能。图形用户界面一般应用于物联网的智能终端中,完成用户和设备的交互。GUI应该定义一个完整的框架,以方便图形功能的扩展。同时应该实现常用的用户界面元素,比如文本框、按钮、列表等。另外,GUI模块应该与 *** 作系统核心分离,最好支持二进制的动态加载功能,即 *** 作系统核心根据应用程序需要,动态加载或卸载GUI模块。GUI模块的效率要足够高,从用户输入确认,到具体的动作开始执行之间的时间(可以叫做click-launch时间)要足够短,不能出现用户点击了确定、但任务的执行却等待很长时间的情况;
8、支持从外部存储介质中动态加载应用程序。物联网 *** 作系统应提供一组API,供不同应用程序调用,而且这一组 API应该根据 *** 作系统所加载的外围模块实时变化。比如在加载了GUI模块的情况下,需要提供GUI *** 作的系统调用,但是在没有GUI模块的情况下,就不应该提供GUI功能调用。同时 *** 作系统、GUI等外围模块、应用程序模块应该二进制分离, *** 作系统能够动态的从外部存储介质上按需加载应用程序。这样的一种结构,就使得整个 *** 作系统具备强大的扩展能力。 *** 作系统内核和外围模块(GUI、网络等)提供基础支持,而各种各样的行业应用,通过应用程序来实现。最后在软件发布的时候,只发布 *** 作系统内核、所需的外围模块、应用程序模块即可。
物联网 *** 作系统集成开发环境的特点
集成开发环境是构筑行业应用的关键工具,物联网 *** 作系统必须提供方便灵活的开发工具,以开发出适合行业应用的应用程序。开发环境必须足够成熟并得到广泛适用,以降低应用程序的上市时间(GTMT)。集成开发环境必须具备如下特点:
1、 物联网 *** 作系统要提供丰富灵活的API,供程序员调用,这组API应该能够支持多种语言,比如既支持C/C++,也支持Java、Basic等程序设计语言;
2、 最好充分利用已有的集成开发环境。比如可以利用Eclipse、Visual Studio等集成开发环境,这些集成开发工具具备广泛的应用基础,可以在Internet上直接获得良好的技术支持;
3、 除配套的集成开发环境外,还应定义和实现一种紧凑的应用程序格式(类似Windows的PE格式),以适用物联网的特殊需要。通过对集成开发环境进行定制,使得集成开发环境生成的代码,可以遵循这种格式;
4、 要提供一组工具,方便应用程序的开发和调试。比如提供应用程序下载工具、远程调试工具等,支撑整个开发过程。
可以看出,上述物联网 *** 作系统内核、外围模块、应用开发环境等,都是支撑平台,支撑更上一层的行业应用。行业应用才是最终产生生产力的软件,但是物联网 *** 作系统是行业应用得以茁壮生长和长期有效生存的基础,只有具备了强大灵活的物联网 *** 作系统,物联网这棵大树才能结出丰硕的果实。有很多通信模块只有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复制代码以上就是连接阿里云的数据包格式及发布数据的格式,由于时间问题没有做订阅的数据包分析,下一次更新订阅的内容。
在蓝牙模块选型前期,一定要了解应用场景以及需要实现的功能(应用框图),以及功能实现过程中所能提供调用的接口(主从设备,功能),考虑模块供电,尺寸,接收灵敏度,发射功率,Flash,RAM,功耗(广播,连续传输,深度睡眠,待机状态),连接距离,接口,天线,性价比等。
根据蓝牙标准,SKYLAB的BLE蓝牙模块大致分为BLE42模块,BLE50模块,BLE52模块;如果蓝牙方案中需要的是支持主从一体的蓝牙模块,则可以选择BLE42模块SKB369,BLE50模块SKB501,BLE52模块SKB378,如果是想要找高性价比且做从的蓝牙模块,则优先考虑蓝牙42模块SKB376。
BLE蓝牙模块选型之参数:
传输速率:传输速率通常是设计人员首要考虑的,因为它关系到传送的信息类型。因此在进行蓝牙模块选型的时候务必要清楚蓝牙模块的应用,并以工作状态下所需要的数据传输速率为选型标准,毕竟把高质量音乐传送到耳机所需的数据速率,与心跳监护仪所需的数据速率有着很大的差别。
连接距离:根据距离的远近来选择,根据蓝牙方案的实际应用中的距离来确定哪个BLE蓝牙模块更能够满足数据传输需求。传输距离也是一个重要的考虑因素,当然距离越远越好,SKB369的传输距离可以达到30米,SKB501的传输距离可以达到50米,SKB378的传输距离可以达到50米+;
功耗:功耗主要由传输速率和距离来决定。一般蓝牙设备通过电池供电,功耗的高低直接决定着产品的续航能力。BLE蓝牙模块本身就是以低功耗著称,但是因为其拥有多种工作状态:广播(100ms间隔),连续传输(20ms间隔),深度睡眠(μA),待机状态(μA);各个状态下的功耗值也是有区别的,这个就需要工程师根据实际的蓝牙方案来确定了。BLE52蓝牙模块SKB378拥有极低功耗:TX 41mA@0dBm, RX 36mA@1Mbps, Sleep current<18uA);适合对于功耗有着严苛要求的产品,如智能手表、智能手环表等产品;
通讯接口:模块产品本身就是为了缩减产品上市周期了,为了方便蓝牙模块的使用,现有的BLE蓝牙模块都提供灵活的硬件接口,支持UART/SPI/GPIO/I²C/I²S/PWM接口,用户可以根据蓝牙方案的实际需求入手,如果只是数据传输,采用串行接口(TTL电平)就好了。
芯片方案:芯片决定着蓝牙模块的运算能力,没有一颗强劲的“ 芯 ”,蓝牙模块的性能无法保证。SKYLAB BLE42/50蓝牙模块都是基于Nordic方案研发推出,参数性能稳定可靠。SKYLAB BLE52蓝牙模块SKB378主频768MHz,32位ARM Cotex-M33处理器,同时内置32kB RAM和512kB Flash,支持模拟或者数字外设;
工作方式:BLE蓝牙一般分主、从机、主从一体/主从同连,一个主机目前最大可以与7个从机通讯,支持点对点通信;
目前市场中SKYLAB的BLE蓝牙模块主要是基于Nordic方案的蓝牙模块,分别是基于Nordic nRF52832芯片制作的SKB369和基于Nordic nRF52840芯片制作的SKB501,以及基于EFR32BG22蓝牙无线收发芯片的SKB378。可应用于互动娱乐设备:遥控、3D眼镜、游戏控制器;个人区域网络:健康/健身传感器和监护仪、医疗设备、钥匙扣+手表;遥控玩具;蓝牙信标;蓝牙网关;室内定位。
wifi芯片和WIFI模块区别为:组成不同、功耗不同、用途不同。
一、组成不同
1、wifi芯片:wifi芯片是嵌入式Wi-Fi模块,主控芯片一般为功能简单的32位单片机(MCU),内置Wi-Fi驱动和协议,接口为一般的MCU接口如UART等。
2、WIFI模块:WIFI模块集成了射频收发器、MAC地址、WIFI驱动、所有WIFI协议。
二、功耗不同
1、wifi芯片:wifi芯片在功耗上做了很大的改善,比较适合对功耗控制比较严格的无线家电设备。
2、WIFI模块:WIFI模块需要非常强大的电脑CPU来完成应用才能正常工作,功耗比较高。
三、用途不同
1、wifi芯片:wifi芯片适合于各类智能家居或智能硬件中,比如带WiFi功能的电视、空调、冰箱等。
2、WIFI模块:WIFI模块适合用在笔记本、平板电脑上的USB接口或者SDIO接口上。
利用局域网网络转串口模块可以方便进行自动控制系统的搭建以及相应的调试。比如手头现在存在的已经停产的 USR-WiFi-232-T [1] 模块,可以比较方便通过手机进行设置,完成UDP-232的转换。
这款模块现在也被应用在无线调试情境中:
图11 USR-WiFi 模块
MicroPython在很多平台上都有着应用,包括 STM32F40x,ESP32,ESP8266,PicoPy等。利用 Thonny软件 [4] 比较方便利用串口完成对于MicroPython的开发与调试。可否使用WiFi转串口来完成对于MicroPython模块的调试呢?
这其中需要使用到 UDP-COM的虚拟软件,这样便可以利用WiFi模块完成对于普通的MicroPython模块的开发。
相关的前期工作包括:
VSPM是一款可以被将TCP/IP, UDP转换成串口的虚拟串口软件。VSPM 虚拟串口软件可以将TCP/IP 连接映射成本机的虚拟COM 口,应用程序通过访问虚拟串口,就可以完成远程控制、数据传输等功能。对于调试串口相关的程序非常方便。下面将详细介绍该软件的使用方法。
在 虚拟串口软件VSPM使用手册 [10] 给出了VSPM应用的一般说明。
您下载的该文件来自于华军软件园(>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)