关于BLE, apps和ARMduino: Simblee的亲身体验

文章:Michael Dunn

RF Digital的Simblee是一种快捷方式,并且简短,您可以处理与您自己设计的IOS或Android应用程序交谈的嵌入式系统。

BLE(低功耗蓝牙)、应用开发和物联网设计在你从零开始时都有相当陡峭的学习曲线。我们这些小公司(或业余爱好者/制造者)应该做什么?我们寻找捷径,如果幸运的话,我们能找到。

RF Digital的Simblee绝对是一种快捷方式,你可以在短时间内开发出一个与自己设计的iOS或Android应用程序对话的嵌入式系统。

Simblee硬件包括一个小型模块,包含一个16MHz ARM Cortex-M0处理器,一个BLE收音机和固件,它将其拉到一部分以制作超级诺,或armduino,或... xxduino ......无论您想调用它。

Simblee的内衣留下了一个谜,但我会赌一点晚餐(用葡萄酒),关键成分是北欧半NRF51822,一个BLE SOC,整合了ARM皮质,128K的闪光,32K的RAM,10位ADC,31 GPIO,SPI,I2C,温度传感器,UART,加密HW,定时器,RTC和基于噪声的随机数发生器(RNG)。掌握。在Simble'的罩下也是32.768kHz和16MHz的水晶,少量的离散和一个BLE天线。与其他蓝牙模块一样,它是预先认证的。

Simblee的大区别是它与IOS / Android应用程序的互动。您无需了解任何关于平台的开发环境的任何内容。相反,作为Simblee代码的一部分,您可以在一个函数中定义应用程序的GUI,并且GUI与另一个函数中的嵌入式代码的交互,只使用Arduino环境(我不会称之为IDE)。Simblee iOS / Android应用程序完全是通用的;您的行为由您的GUI代码完全定义的空白板岩。启动时,您将在Comms范围内呈现任何Simblees的列表。从您选择的Simblee的GUI定义被发送到您的设备,然后离开您。Simblees还可以在自己的中间网络,有或没有应用程序干预。

(Simblee 01 (cr))
* Simblee应用程序的主页*

为了简化开发,RF Digital提供一系列可堆叠板,例如Simblee Breakouts,USB编程器(与Arduino不同,需要单独的板),RGB /按钮板和电池,继电器,SD卡,伺服控制器和原型设计董事会。令人遗憾的“盾牌”绰号已经保留,即使板块不是arduino兼容的。只有七个GPIO被带到堆叠引脚,但较大的Simblee Breakout Board有29个GPIO,可以通过使用面包板,电线引线或您自己的堆叠板可访问。

一旦将Simblee嵌入在设备中,它可以编程OTA(通过空中) - 不需要usb程序员。我还没有尝试过这个,因为它需要更深入的软件。我对Simblees的兴趣由同事/ Chum Max Maxfield(夏威夷衬衫)引发,我希望建立一些照明控制项目。

老读者会知道,我对抨击一款我觉得不合格的产品毫无顾忌。辛布里的确有些问题,但我会试着做个好人。这是一家小公司生产的一款非常有趣且有潜在价值的产品,我希望看到它成功。尽管如此,我必须如实报告我的印象。

我的第一个项目想法非常简单:一个遥控的电灯开关,这样我就不用在黑暗中跌跌撞撞地上床睡觉了。是的…第一世界的问题。实现需要一些小心,因为电路板将需要一个简单的电容降ac电源,并需要适合于一个电气盒。
然后我安装了RGB条纹照明在我的浴缸和毗邻的亚麻壁橱(为什么是RGB?为什么不)。LED控制器,虽然是一个光滑的触摸感应遥控器,但我并不喜欢,所以用Simblee来制作一个新的更好的,给我的印象是一个更简单,更有趣的优先项目。我只需要一个3.3V的调节器和几个mosfet。

其中一个示例“草图”(Arduino程序被称为“草图”)在Simblee文件夹中,肯定是足够的,用于RGB LED的颜色轮/滑块控制器。完美的 - 我至少可以用那个-然后重写它到我的喜好。

(Simblee 02 (cr))
图2:__ *Simblee GUI*

正如你所看到的,这不是一个伟大的GUI。车轮非常丑陋,我宁愿拥有HLS(色调,亮度,饱和)控制,但最糟糕的是,它是越野车。将滑块位置与数值进行比较。他们不匹配。更常见,移动滑块不会更新值。有时它甚至会导致其他滑块移动。由于我的设置或更广泛的问题,这是否是运气不好,我还没有能够确定。

Simblee最大的问题可能是文档。我马上就会讲到。首先,这是我写的一个非常简单的草图(基本上是色轮例子的精简版),用来测试滑块的功能。顺便说一下,它使用了128kB代码空间的23%——很明显,主要是Simblee库代码。

//使用滑块进行非常简单的测试来控制闪烁速率

# include < SimbleeForMobile.h >

Const int blue_led = 4;/ / GPIO4
uint8_t blinkyfreq;

//标准Arduino初始化块
void setup(){
SimbleeForMobile.deviceName =“作品”;
simbleeformobile.advertisementdata =“LED”;
SimbleeForMobile.begin ();
PinMode(Blue_led,输出);
Serial.begin (9600);
}

//标准Arduino主回路
无效循环(){
DigitalWrite(Blue_led,高);
延迟(3);
digitalWrite (blue_led、低);
延迟(blinkyfreq);
SimbleeForMobile.process ();//这启用Simblee功能
}

// GUI在这里定义
无效的ui () {
SimbleeForMobile.beginScreen ();
uint8_t slider = simbleeformobile.drawslider(55,110,175,0,255);
simbleeformobile.setevents(滑块,event_drag);// simblee支持添加了这一行
simbleeformobile.endscreen();
}

//呼吁任何GUI事件
void ui_event(event_t&事件){
blinkyfreq = event.value;
以blinkyfreq);
}

果然,原始代码的行为与色轮程序完全相同——很糟糕。Simblee支持查看了代码,并在GUI定义函数中添加了一行。现在,当我移动滑块时(就像在“串行终端”上看到的那样)会发出一个值流。好吧,我可以接受。

LED引脚的一些范围捕获如下:

(Simblee 03 (cr))
图3:*高级别是3ms on-times。低时间是延迟(0)和内部Simblee处理的组合。使用无限的持久性,您可以看到抖动

(Simblee 04 (cr))
__figure 4:__ * LED关闭时间的特写镜头*

(Simblee 05 (cr))
图5:现在led灭了10ms。数据显示开/关时间的范围。*


下一个:糟糕和丑陋:《Simblee》的亲身体验»

留下你的评论