物联网 java(物联网java开发难么)
很荣幸有机会参与芯板坊开展的钛极小龟物联网开发板评测活动。该套件是北京钛云物联网推出的一套物联网评估套件--钛极小龟TiKit-T600-ESP8266B。
该硬件平台是一款专门针对初学者入门的开发套件,由WiFi模组和各样的传感器等组合,但与其他物联网公司不同的是,首先这家公司不是云平台服务商,其次该套件设计还是比较用心的,最后,也是最独特的是其使用java语言进行应用功能的开发。
也就是说,即便你不是精通C语言的嵌入式工程师,你或许是擅长java类的软件工程师,以前苦无机会进入嵌入式物联网行业分一杯羹,而现在机会就摆在你的眼前。
一.硬件介绍
钛极小龟物联网开发套件(以后简称:钛极小龟评估板)如下图1所示。拿到手后,相信你肯定会被其外包装色彩与图案设计所吸引,其设计显得极具科技味道。套件的硬纸盒质感非常好(就我目前拿到/买到的开发板包装里,该包装显得很用心,算是最好的了!之前大很多数采用透明塑料盒进行包装的。)
图1 钛极小龟物联网开发套件全家福照片
该包装盒分为上下两层,上部分用软塑料内嵌评估板,下部分装有一根MicroUSB线,一个红外遥控器,另外还有基本的使用说明文档。另外,随盒附送了一个钛云物联的宣传单(封面有句话,很触动我:是时候用Java开发智能硬件了。之前听说过有用javascript脚本语言进行应用开发的开发板,没想到这次有机会玩玩用Java进行开发的开发板,再次感谢芯板坊给我这次机会)。
仔细端详钛极小龟评估板,你会发现其做工非常精细,器件布局错落有致,设计风格独树一帜,有别于其他众多云平台厂商推出的开发板,让用户很容易识别各功能模块区域。该评估板上板载有液晶屏模块,温湿度传感器模块,麦克风模块,普通按键模块,光照度传感器模块,红外接收模块,继电器模块和触摸按键模块。实物图如下图2所示。
图2 钛极小龟评估板实物图
二.软件简介
钛极OS是一个支持 Java 语言开发嵌入式智能硬件的物联网操作系统,支持大部分的Java特性,与标准Java兼容,并通过Eclipse进行开发,同时钛极OS还支持多应用。它的实现机制更像安卓、由内核掌管底层硬件资源,软硬隔离,同时集成高效的Java虚拟机,通过对硬件抽象,异步IO, 多线程、沙盒运行,事件驱动以及面向对象的Java语言开发等多种技术,使物联网硬件应用开发变得轻松且高效。
钛极OS由操作系统(TOS)、Java虚拟机(TiJVM)、功能组件(TiRT)三部分构成。TOS负责提供任务调度和控制、文件操作、基准时钟、资源的分配、外设操作(GPIO/UART...)等基础服务。同时钛极OS的特点是内核OS支持第三方的RTOS,例如LiteOS、FreeRTOS等。TiJVM的作用是建立Java程序的运行环境,实现Java语言的各种特性,同时TiJVM也是TOS的一个任务。
TiRT是为用户开发应用程序提供的基础类支持,包括感知层控制、网络通信协议、为物联网的安全接入和身份鉴别提供的安全组件、图形组件包。其体系结构如下图3所示。
图3 钛极OS系统结构图
总体说来,钛云物联提供了丰富的例程资源供用户递进式的学习,由于时间有限,我此次没有连接公有云、在手机上体验和编写手机端的控制程序,稍感遗憾。将来时间允许的话,再进行系统功能扩展,相信会有另一番的体验。
三.项目简介
当时我的申请计划是用钛极小龟物联网开发套件搭建了一个移动式环境监测系统。在申请的时候,经过分析、研究相关资料,从原理图上可以得到结论:
若想将其安装到移动平台上,除了继电器接口外,别无它法(该套件没有外扩引出任何引脚!若想做更多扩展要么换个平台--钛极OS(TiJOS)物联网操作系统开发套件 ESP8266,当然也可以借鉴我此次的设计方法)。1. 系统功能简介。移动式环境监测系统具有的功能如下所示。
用户通过红外遥控器指定移动平台移动到预定地点的功能;具有SmartConfig配置联网功能;移动平台可以随时进行环境参数的采集功能;移动平台通过MQTT协议将采集到的环境数据上传到后台云上(这里我采用的是本地私有云,当然也可以扩展到诸如阿里云等公有云平台上)。2. 系统通信协议
为了完成该套件与移动平台间的通信,即将该套件安装到移动平台上,用户可以通过红外遥控器操作小车进行环境监测,因此制定了如下表1所示的通信协议。
表1 移动式环境监测系统通信协议
如前所述,因为该套件没有外扩对外的引脚,所以在此次项目中,我通过将套件板载的继电器与移动平台的GPIO引脚进行连接,从而完成两板子间的物理信道的连接。而实现逻辑上,移动平台上的主控系统通过统计EXIT接口接收到的中断申请的次数来识别用户的控制命令,命令编码如上表左侧所示。
比如,用户按下红外遥控器的按钮,希望移动平台右转时,该套件在识别键码后,通过吸合板载继电器4次后,引发与其相连接的移动平台上的引脚有4次高低电平的变化,而该引脚复用了EXTI外部中断功能,从而移动平台上的主控解析出相应的电机动作。套件与移动平台间硬件连线图如下图4所示。
互联网小常识:当DHCP服务器负责多个网段的IP地址分配时,使用如下原则:如果收到不是从DHCP中继发来的”DHCP 发现”消息,会选择收到“DHCP 发现”消息的子网所处的网段分配IP地址;否则会选择转发“DHCP 发现”消息的DHCP中继所处子网的网段(即有中继就分配中继所在网段)。
图4 套件与移动平台间硬件连线图
实物连接图如上图2中左上角红色文字1/2/3所示,1为NC常闭引脚,2为COM公共引脚,3为NO常开引脚。这里连接原理如上图4所示。
互联网小常识:OSPF使用分布式链路状态协议,当链路状态发生变化时用洪泛法向所有路由器发送此信息,一个区域内路由器的个数不超过200个。BGP-4采用了路由向量(path vector)路由协议。BGP发言人之间的通信需要先建立TCP连接。
注意,这里板载继电器电路是带有防反向电动势的二极管保护电路,所以我直接将2块板子直接相连结了。如果自行搭建继电器电路时,需要注意防反措施。原理图如下图5红色圈所示。
图5 带有二极管保护的继电器电路
四.硬件实物
硬件实物如图6所示。
五.软件设计
1. 钛极小龟评估板程序
为了完成信号的采集,本软件系统设计了3个线程,分别用于采集温湿度、光线、环境音。示例代码如下图7和8所示。
图7 线程的调用
图8 温湿度信号采集类的设计
而在主循环中每1秒将采集到的信息发送到本地私有云上(效果如视频所示),示例代码如下图9所示。另外采用监听器实时对红外遥控器进行解码分析,如下图10所示。
图9 向本地云发布MQTT消息
图10 红外解码部分代码
(2)小车的程序
这里小车主要有接收协议编码、解析协议、小车行进和壁障等四个功能,因为不是核心部分,其示例代码略过。
六.实物
1. 测试问题
(1)当网络信号不好时,日志会弹出如下图10所示异常。另外,当连接wifi模块创建的网络时,系统能连接上,但是无法向本地云上传相关数据。
(2)在系统运行时,有时日志会列举如下图11所示的异常,经查阅是与DHT11相关的,且评估板此时的DHT11是无法工作的,还没有查出问题。
六.使用心得
对于使用Eclipse进行开发时,没有连接硬件进行debug的功能,有些遗憾!从个人角度来说,每次都得Run as TiJOS Application,对于与硬件相关的应用开发,很难发现程序中潜在的逻辑/时序问题。
对我来说(大约花了3周时间里设计本项目),学习钛极小龟评估板相关示例程序还是有一些难度的(约20年前学过Java语言,看到Java代码确实有似曾相识的感觉,实则早已忘光了,所以还是花一些时间来慢慢熟悉和适应的),但是相信对于Java工程师而言,肯定没有问题!也就说该评估板确实可以说是一款颠覆传统开发的物联网开发套件,为不需懂硬件电路设计的Java工程师打开了物联网世界开发的大门。
总体说来,钛云物联有别于传统的云平台厂商,通过创新性地把Java语言应用到低资源、低成本的MCU开发中,从而降低了物联网产品的开发难度和开发成本。个人相信其应用前景将会非常广泛。
本次试用活动由芯板坊举办。带大家体验钛极物联开发板,大家可在芯板坊微信(xinzixun321),点击菜单栏免费申请。
互联网小常识:VLAN Trunk技术是交换机与交换机之间、交换机与路由器之间存在的一条物理链路,而在这一条物理链路上要传输多个VLAN信息的一种技术。VLAN Trunk采用帧标签的方式,每个帧标签指定一个唯一的VLAN ID。划分VLAN的方法分为基于端口、MAC地址、第三层协议类型或地址。
免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186