蓝牙 LE - 决定客户端还是服务器
Bluetooth LE - deciding client vs. server
我们正在创建一个硬件(称之为 "the dongle"),当用户请求时响应来自移动设备 phone 的低功耗蓝牙请求。所有通信都将从 phone 发起,加密狗永远不会发起通信。通信,当它们发生时,将非常罕见(可能一天一次)并且很短(几百字节)。当通信发生时,我们希望加密狗在几秒钟内响应,而不需要用户手动与加密狗交互(例如,我们不希望用户必须按下加密狗上的按钮说 "wake up and pay attention" ).
所以考虑电源使用情况,似乎当设备进行蓝牙扫描时,进行扫描的设备大部分只是 listening/receiving,而进行广告的设备正在进行传输(对吗?) .
但是 this one 这样的页面说
Slave (or “peripheral“) devices advertise and wait for connections. Usually, the slave is a small device like a fitness tracker or a smartwatch.
为什么小型设备(例如健身追踪器)会一直坐在那里,broadcasting/advertising 永远每隔几秒一次(假设它当前没有连接到任何东西)?那不是用尽各种力量吗?让小型设备改用监听(扫描)模式不是更有意义吗?
然后一旦建立连接,是否有某种 "keep alive" 所以两个连接的设备 "know" 另一个仍然存在?
让我们采用芯片规格 sheet,例如 nRF51822 (see 8.5.2). You'll see power consumption is nearly the same for RX (13mA) and TX @ 0dBm (10.5mA). TX/RX power ratio will be the same for other chips on the 市场:大约 1 倍。
现在考虑传输是一个低占空比操作(如果你在 200us 期间每 200ms 传输一次,你是 0.1%),广告的平均功耗很低(10.5mA * 0.001 + 5uA * 0.999) .
另一方面,接收在设计上是连续的:你永远不知道数据包什么时候真正被传输,如果你不想错过任何数据包,你需要接近 100% 的占空比(13mA,连续)。
因此,对于连接设置,外围设备(广播)比中央设备(侦听)节省更多电量,因为它大部分时间都可以休眠。
连接后,中央(主)和外围(从)都使用 "sleep clock" 跟踪时间,并以时隙方式唤醒以同步并检查对方是否存在。插槽在规范中称为 "Connection Events"。在连接事件之间,它们都处于休眠状态,因此它们在连接持续的整个过程中均等地省电。 (好吧,还有一个叫做"slave latency"的优化,可以让Peripheral(即Slave)省电,但是我们这里忽略它...)。
在您的情况下,"the dongle" 应该做广告。可以调整广告间隔以适应您的应用程序需要的可接受的重新连接时间。 50-500 毫秒对于您的使用来说是典型的。
我们正在创建一个硬件(称之为 "the dongle"),当用户请求时响应来自移动设备 phone 的低功耗蓝牙请求。所有通信都将从 phone 发起,加密狗永远不会发起通信。通信,当它们发生时,将非常罕见(可能一天一次)并且很短(几百字节)。当通信发生时,我们希望加密狗在几秒钟内响应,而不需要用户手动与加密狗交互(例如,我们不希望用户必须按下加密狗上的按钮说 "wake up and pay attention" ).
所以考虑电源使用情况,似乎当设备进行蓝牙扫描时,进行扫描的设备大部分只是 listening/receiving,而进行广告的设备正在进行传输(对吗?) .
但是 this one 这样的页面说
Slave (or “peripheral“) devices advertise and wait for connections. Usually, the slave is a small device like a fitness tracker or a smartwatch.
为什么小型设备(例如健身追踪器)会一直坐在那里,broadcasting/advertising 永远每隔几秒一次(假设它当前没有连接到任何东西)?那不是用尽各种力量吗?让小型设备改用监听(扫描)模式不是更有意义吗?
然后一旦建立连接,是否有某种 "keep alive" 所以两个连接的设备 "know" 另一个仍然存在?
让我们采用芯片规格 sheet,例如 nRF51822 (see 8.5.2). You'll see power consumption is nearly the same for RX (13mA) and TX @ 0dBm (10.5mA). TX/RX power ratio will be the same for other chips on the 市场:大约 1 倍。
现在考虑传输是一个低占空比操作(如果你在 200us 期间每 200ms 传输一次,你是 0.1%),广告的平均功耗很低(10.5mA * 0.001 + 5uA * 0.999) . 另一方面,接收在设计上是连续的:你永远不知道数据包什么时候真正被传输,如果你不想错过任何数据包,你需要接近 100% 的占空比(13mA,连续)。
因此,对于连接设置,外围设备(广播)比中央设备(侦听)节省更多电量,因为它大部分时间都可以休眠。
连接后,中央(主)和外围(从)都使用 "sleep clock" 跟踪时间,并以时隙方式唤醒以同步并检查对方是否存在。插槽在规范中称为 "Connection Events"。在连接事件之间,它们都处于休眠状态,因此它们在连接持续的整个过程中均等地省电。 (好吧,还有一个叫做"slave latency"的优化,可以让Peripheral(即Slave)省电,但是我们这里忽略它...)。
在您的情况下,"the dongle" 应该做广告。可以调整广告间隔以适应您的应用程序需要的可接受的重新连接时间。 50-500 毫秒对于您的使用来说是典型的。