我希望能够检测到外围传感器何时没有连接到我的Raspberry Pi 3.
例如,如果我有一个GPIO被动红外传感器.
我可以得到这样的所有GPIO端口:
PeripheralManagerService manager = new PeripheralManagerService(); ListportList = manager.getGpioList(); if (portList.isEmpty()) { Log.i(TAG, "No GPIO port available on this device."); } else { Log.i(TAG, "List of available ports: " + portList); }
然后我可以连接到这样的端口:
try { Gpio pir = new PeripheralManagerService().openGpio("BCM4") } catch (IOException e) { // not thrown in the case of an empty pin }
然而,即使引脚是空的,我仍然可以连接到它(这在技术上是有意义的,因为gpio只是二进制打开或关闭).似乎没有任何api,我无法合理地从逻辑上考虑如何区分连接外围传感器的引脚和"空"的引脚.
因此,目前我无法以编程方式断言我的传感器和电路设置正确.
有人有主意吗?从电子产品的角度来看,它甚至可能吗?
参考文档:
https://developer.android.com/things/sdk/pio/gpio.html
有许多方法可以在电气上进行"存在检测",但在SoC中你没有任何内在的发现.你通常不会问一个GPIO引脚是否有附件 - 它无法告诉你.
额外的GPIO引脚通常用于检测外设是否连接到连接器.例如,用于某些传感器的插头可能包括短路接地的"检测"线,并在连接传感器时将GPIO拉低.USB和SDIO通过接口中的某些专用电路执行类似操作.
您还可以使用电流感应等方法构建更精细的检测电路,但它们不可避免地需要输出通过专用GPIO捕获的二进制信号.
这对于串行外设来说更容易实现,因为您通常可以发送基本命令并验证您是否得到了响应.