最新的蓝牙4.2低功耗(BLE),也称为蓝牙智能,专为物联网(IoT)而打造。每个主要操作系统对蓝牙技术的原生支持使得移动应用程序的开发变得简单。
使用PSoC Creator 3.2,Xcode 6和Swift应用程序开发环境,可以开发一款应用程序来处理简单的遥控车使用iPhone,演示在嵌入式BLE系统开发中使用GATT配置文件和GAP外设。该车由两台电机和一台带正交编码器的H桥和赛普拉斯半导体公司的PSoC4200 BLE器件构成。
图1:PSoC4200来自赛普拉斯半导体可以使用蓝牙低功耗4.2来控制机器人汽车。
该项目从简单的LED和触摸板控制开始,指示连接状态。初始CAPSense滑块用于控制红色LED,当未连接电路板时,蓝色LED用于蓝色LED。
为PSoC4100 BLE创建新项目,可将组件添加到简单原理图中。 BLE组件添加到图形设计工具并链接到CapSense组件。需要PWM来驱动LED,并且因为蓝色LED为低电平有效,所以需要反转PWM,因此库中使用了非门。
PWM配置需要是单输出,需要库中的时钟组件。对于闪烁的LED,时钟配置为1 kHz。复位连接到逻辑低电平(因为它是高电平有效),更改PWM的名称使其更容易连接。该项目增加了一个线性滑块来处理评估板上的五个传感器。
在原理图中配置BLE组件需要自定义配置文件,并且该板充当带有GAP(通用访问配置文件)外围设备的GATT服务器。 iPhone是GAP Central与电路板通信,作为GAP外设进行连接。
GATT服务器是BLE上的一个数据库,用于存储与iPhone作为GATT客户端共享的信息。
自定义配置文件实质上是创建GATT数据库,创建一个LED和CapSense的定制服务;这些都有UUID(通用唯一ID),以便iPhone可以找到这项服务。这使固件能够与该服务通信。 1字节LED特性表示可以远程写入和读取的LED状态,因此需要激活读取和写入标志。 CapSense特性(无符号16个2字节格式)只能读取,不能远程写入。为了在有变化时得到通知,激活通知标志。此时可以添加自定义的人类可读通知。
每个特性都需要一个128位的UUID,而Creator工具为它提供了一个默认值,可以在最低有效位进行修改。
GAP设置包括设备名称和广告设置。在此示例中,它通过关闭超时来一直通告。在每隔20到30毫秒发送一次的广告包中,有一些信息可以帮助识别设备,例如设备的名称和可用的服务。
设置BLE,CapSense,PWM和LED后,需要设置引脚。第一个要设置的引脚是CapSense端口4的pin0调制电容。然后将CapSense滑块连接到电路板上的P21至P25引脚。蓝色LED连接到Port3 pin7,RED LED连接到port2,pin6。然后,该工具会自动为固件生成应用程序。
固件
使用Xcode在Github项目中实现固件,第一个变量是表示LED状态的无符号全局变量,第二个变量是CapSense通知。
update_LED函数使用LED的当前状态更新GATT数据库。如果连接了BLE(来自GetState函数),则CYBLE_LEDCAPSENSE_LED_CHAR_HANDLE读取引脚的值,并在LED为低电平时将其反转。使用GATT WriteAttribute函数将1字节写入数据库。这可以在源代码中的任何位置调用,以读取LED的状态。
下一个功能与CapSense相同。这将使用CYBLE_LEDCAPSENSE_CAPSESNE_CHAR_HANDLE和2字节值进入GATT数据库。这也使用BLE中的notify函数,因此当CapSenseNotify变量发生更改时,会自动发送通知。
接下来是BLE事件处理程序。这将处理来自BLE的所有事件,例如堆栈打开或断开连接。这使用蓝色LED显示连接正在发生或正在关闭,因此这些调用会触发PWM并使用LED状态和CapSense值更新GATT数据库。这由堆栈固件自动处理。
下一个事件是写事件,当远程端想要写入GATT数据库时调用该事件。这里,堆栈给出了需要编写的特性。
然后可以使用Xcode为设备编译所有这些。
机器人
建造汽车本身相对简单,因为两个电机连接到H桥,该H桥映射到电路板上的连续引脚。设备上的开关显示在应用程序中,每个电机的速度可以通过应用程序控制以引导汽车。
图2:机器人车板结合了BLE芯片,两个轮子和一个H桥。
有四个关键特性,左右电机的转速计使用正交编码器,两个PWM驱动两个电机。 iPhone上有两个开关可以快速将特性切换为零。
原理图与初始LED项目具有相似的元素。 PWM很简单,周期为100,比较50,占空比为100,在iPhone上映射0到100比例。正交编码器使用TCPWM,它可以在1X模式下解码来自左右脉冲中的每一个的正交信号,从而计算脉冲而不是前沿和下降沿。
PSoC引脚足以直接为H桥供电,另一个引脚是软件控制的开关,通过软件控制电机的方向。最后一个是用于LED连接的PWM。
正交编码器每转计数64个脉冲,并且每187 ms触发一次中断以查找已发生的脉冲数并缩放以给出RPM编号。
自定义MOTOR_SERVICE配置文件具有四个特性,即8位整数,可写和可读,从-100到+100,速度左和速度右。这还包括人类可读的表格和通知。这会更新GATT数据库并发出通知。
BLE是具有机器人和电机服务UUID名称的外围设备。这简化了连接过程。
从工具生成固件,包括通知标志,左右转速计值以及左右速度。每次按下电路板按钮关闭电机时都会触发ISR,速度存储在GATT数据库中。
下一步是将固件链接到智能手机应用程序。
构建应用程序
在Swift中构建iOS应用程序有两个视图控制器,在赛普拉斯学院中有说明。第一个是表视图控制器,它显示手机可以看到的所有设备。当该类启动时,它会中继所有与其听到的服务相匹配的设备。在这种情况下,只有一个遥控车,因此表中只有一件事,但这可用于控制许多外围设备。
第二个视图控制器本身就是遥控器。这对左右转速计使用两个标签,在左右电机上使用两个开关。对于左右电机,选择器视图从-100到+100。
该模型有三个类:
RCcar.swift,它跟踪左右电机的连接和速度;
跟踪设备的BT.neighborhood类。
BLE连接类处理连接,以便RC对象具有与之关联的邻域和连接。该类记录了它对更改感兴趣的事实,并将选择器设置为两个滑块。
最后发生的事情是如果更新了转速计,那么它会更新屏幕上的左右文本值。在视图消失之前,您需要在按下后退按钮时禁用设备和连接。这些都通过Swift中的应用程序编程接口(API)连接到固件。
结论
PSoC 4100设备中最新的蓝牙低功耗4.2技术与简单的H桥,电机和编码器使得简单的iPhone应用程序易于开发。使用最新版本的PSoC Creator,Xcode和Swift开发工具允许开发人员为机器人创建原理图,固件和应用程序。
-
机器人
+关注
关注
210文章
28205浏览量
206525 -
蓝牙
+关注
关注
114文章
5767浏览量
169810 -
遥控器
+关注
关注
18文章
829浏览量
65973
发布评论请先 登录
相关推荐
评论