用Java语言开发物联网设备应用(4)

本文介绍了使用Java语言开发物联网设备应用,特别是通过Java对外设接口如UART、GPIO、SPI和IIC的支持。讲解了GPIO控制LED灯和UART串口通信的示例,提供了相关代码下载链接,并预告了下一步将探讨物联网设备的网络访问。

认识外设

外设通常指输入输出设备,是计算机系统最重要的组成部分之一。物联网设备往往要和五花八门的外设打交道,比如传感器、GPS、按钮、摄像头、显示屏、麦克风、扬声器······凡此种种,不一而足。除了要和网络服务器交互以外,从各种外设上取得数据,或是通过外设进行各种控制,是物联网设备的主要特点。

常见的外设接口

物联网设备的外设虽然五花八门,但是外设和主控芯片(CPU)的接口类型,通常就是那么几种:

UART

就是我们常说的“串口”,主要用来用作通讯。很多物联网常用外设,比如GPS模组、蓝牙模组、2G/4G模组等等,都支持使用UART来和主控芯片通讯。

GPIO

通常叫做“通用IO接口”,这里的IO(或说I/O)是指输入/输出。GPIO的操作非常简单,就是高低电平的输入或者输出,比如点亮一个LED灯,或者从一个开关按钮读取按下状态等等。

SPI

串行外设接口,比起UART,SPI接口能支持很高的数据吞吐率,比如网络控制器、FLASH存储器这些需要高速和CPU交换数据的外设,通常是使用SPI接口的。不过SPI是分主从设备的,数据交换是由主SPI设备发起的从SPI听命于主设备的控制。

IIC

是Inter-Integrated Circuit Bus的简称,通常翻译成“集成电路总线”。IIC的特点是需要的连线少,控制逻辑简单易实现,也适用于一主多从的总线式外设连接布局。实际使用中,很多种类型的传感器产品都支持IIC接口,比如温度传感器、加速度传感器等等。

PWM

Pulse Width Modulation,即“脉冲宽度调制器”,或者不那么准确但是简单地理解为“脉冲波发生器”。在机械控制中用的最多,比如步进电机。也可以用来控制简单的喇叭发声。

ADC/DAC

即“模数/数模转换器”。像电压这样的模拟量,计算机需要将其数字化才能够处理,这就是“模-数”转换。反之则是“数-模”转换。

IIS:

Integrate Inte**ce of Sound。从名字就可以看出来,这个接口是接声音输入输出设备的。一般的音频采集芯片、音频编解码芯片或是音频播放芯片都支持IIS接口。

Java对外设接口的支持

Java在外设控制这方面,以前并没有专门的接口。从OpenJDK 7开始,OpenJDK加入了DeviceIO作为外设控制的标准接口,对物联网设备常见的外设接口做了标准化支持。
JOSH针对小型物联网设备,对DeviceIO进行了小幅改动。通过JOSH DeviceIO API(org.joshvm.j2me.dio.* ),目前支持的接口类型有UART、GPIO、SPI和IIC,Java程序员可以实现用Java语言控制外设,比如控制电平开关、读取传感器数据等等。换言之,可以实现用Java语言编写物联网设备的外设驱动程序,并实现驱动程序的动态安装。
下面,我们通过一些示例,看看是如何通过JOSH DeviceIO API实现外设访问功能的。

输出高低电平——GPIO控制篇

首先创建一个GPIO端口配置。这段代码的主要意思,是配置GPIO#2号端口为输出模式。

GPIOPinConfig cfg1 = new GPIOPinConfig(GPIOPinConfig.UNASSIGNED, 2, 
									   GPIOPinConfig.DIR_OUTPUT_ONLY,
					                   GPIOPinConfig.MODE_OUTPUT_OPEN_DRAIN,
					                   GPIOPinConfig.TRIGGER_NONE, false);

然后通过DeviceManager打开GPIO#2端口

GPIOPin gpioPin 
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值