|
在本篇文章中,我们使用博世的XDK110无线传感器开发套件将传感器数据传输到MQTT消息传递服务。我们将简单介绍一下XDK110无线传感器开发套件,描述其板载的硬件器件,探索其软件开发环境,并演示将该节点连接到MQTT消息传递服务。
XDK110开发套件 博世XDK110是一款多功能设备,包含多个MEMS传感器: ● 加速度计 ● 声学传感器 ● 陀螺仪 ● 磁力仪 ● 光传感器 ● 湿度/压力/温度传感器 ● 惯性测量单元
它还包括一个microSD卡插槽、两个瞬时开关、三个可编程LED,并支持无线网络和蓝牙低功耗(BLE)连接。设备的编程和配置通过XDK-Workbench IDE完成。
XDK110允许用户编程设备以通信事件或传输原始传感器数据,允许传感器在新设备中的功能或将其添加到旧设备。
以上显示的是博世XDK110内部的单电路板。
上面的gif标识了电路板上的部件,如下所示: 1. 电源开关 2. MicroUSB数据 3. 德州仪器CC3100 SimpleLink™Wi-Fi®网络处理器,用于MCU应用的物联网解决方案 4. 0.05“2×5 JTAG编程头 5. RFI屏蔽覆盖蓝牙芯片和周围的无源组件。 6. SD卡插槽 7. 用于扩展连接器的ESD或电平转换IC 8. 扩展连接器 9. 标有APH的IC 10. 标有“157 1433”的IC 11. 麦克风 12. 标有“036 DA”的IC 13. 标有“1A”的IC 14. 环境光传感器 15. 标有“007 A533 030”的IC 16. 标有“021 TS”的IC 17. 标有“ZVK 58J”的IC 18. 标有“WK”的IC 19. EFM32 Gecko 32位微控制器 20 标有“CKP TI 571”的IC
传感器IC非常小,没有充分的识别信息空间。顶端标记可能是IC标识符,也可能是批次或日期代码。如果您使用博世Sensortec集成电路并在具有上述类似顶部标记的传感器上运行,请在下面评论,我会更新列表。
PCB完全由表面贴装元件构成,并可在板的内部层上布线几乎所有信号线。顶层和底层铜箔与照片中不可见的一系列通孔缝合在一起。围栏通过两个离地间隙区域延伸穿过电路板的所有层。在电路板的顶部是两个连接到BLE和WiFi IC的芯片天线。
设计人员决定放弃丝网印刷零件定位和标记,而是使用印刷在铜上的阻焊剂和文字印制板上出现的少量标记。
缺少标记是早期设计阶段的一个危险选择,应该留给制造的最后阶段,因为对于电路板制造商而言,错误地定位IC或测试工程师以使用错误的测试焊盘太容易了。
本设计中使用的主处理器是Silicon Labs的EFM32微控制器。这个微控制器及其支撑组件周围的金属轮廓可能是用于RFI屏蔽的焊接连接,这是不必要的。
电路板上我看不见的部分是封装在RFI屏蔽内的任何部分(在上图中标记为#5)。下面的唯一线索是从金属屏蔽下面出现并连接到其中一个芯片天线的迹线。
上图中(EFM32附近)显示但未突出显示的是四个LED和两个按钮开关。未显示为设备供电的电池。
编程设备(XDK Workbench) 最近发布了新版本的Bosch XDK Workbench。在尝试使用下面显示的网站提供的软件示例对XDK110进行编程之前,请确认该代码适用于您的XDK Workbench版本,因为某些示例未由博世XDK组维护。
XDK Workbench中提供的软件示例由Bosch更新,并且应该可以工作。
XDK110的软件集成 XDK Workbench是基于Eclipse的IDE(集成开发环境)。提供了几个示例来演示功能并为软件开发人员提供一个起点。可以在以下开发人员的网站上找到该设备的其他软件。 ● 博世软件创新 ● Zatar ● Relayr ● Evothings ● 博世工程 ● 博世Sensortec ● BellaDati ● LEM IoT ● Appropos
如果您熟悉Eclipse,则XDK Workbench应该相对易于使用。标题为“XDK-Examples”的欢迎界面中的一组示例提供了允许大多数开发人员立即开始使用所需的代码。 “XDK-Docs”选项卡中的文档提供了有关各种可用传感器的信息,如何配置它们以供使用,以及如何访问其数据。
编程示例(XDK Live) XDK Workbench中特别感兴趣的是名为“XDK Live”的软件。这是一个基于事件的源代码创建工具,应该允许非程序员创建运行XDK110所需的源代码。该软件还处于软件开发周期的早期阶段,但是,在某些时候,XDK Live可能会取代传统编程的许多用例。
XDK Live语言是一种抽象的,基于事件的语言。它在满足特定条件时执行代码 - 例如,某段时间已过,按下按钮时或传感器值超过预定义值时。
您可以快速编写代码,告诉您电机是否振动太大,CNC机器噪音太大或叉车倾斜度过大。
以下XDK Live代码创建一个蓝牙低功耗设备,每5秒发送一次录制温度。它通过解释XDK Live代码并使用它创建编译并上载到设备的C ++源代码来完成此操作。 - // The following code belongs to the main package
- package main;
- // The XDK110 is the device used
- import platforms.xdk110;
-
- // Setup a BLE instance named myPhone
- setup myPhone : BLE {
- // Name of the sensor seen by other BLE devices
- deviceName = "BoschXDK";
- // Advertising interval in milliseconds.
- advertisingInterval = 2000;
- // The last four digits of the device UUID are assigned to the 32-bit characteristic
- // for temperature(measured in thousandths of a degree Celsius).
- var myTemperature = int32_characteristic(UUID=0xAACC);
- }
- // Do this every 5 seconds
- every 5 seconds {
- // Write the current temperature value to myTemperature variable
- myPhone.myTemperature.write(environment.temperature.read());
- }
复制代码
在上述程序中由XDK110传输的数据显示在iOS应用程序“Light-Blue Explorer”上。BLE协议使用数据的小端和大端格式组合 - 对于缺乏经验的BLE编程人员来说,这是潜在的“难题”。 |