几天以来,我一直在使用Android Things工具包(i.MX7D)从传感器(DHT11)读取温度/湿度数据时遇到问题。我在Google上搜索了很多示例,所有示例都是使用Arduino,Raspberry Pi或STM(因此是C / C ++)制作的,但没有用于i.MX7D和Java的。
我的问题是我无法读取温度/湿度的真实值,因为从传感器获得的只是一个布尔值,指示高/低状态。我还没有找到该传感器的任何库,该库在某种程度上有助于将其转换为真实度/百分比值。
您知道是否可以使用我拥有的硬件获得这些实际值?如果是,请您给我一个提示或显示一些代码该怎么做,以便我最终可以有所进步?我将非常感谢所有帮助。
这是我的代码:
import android.app.Activity;
import android.os.Bundle;
import com.google.android.things.pio.Gpio;
import com.google.android.things.pio.GpioCallback;
import com.google.android.things.pio.PeripheralManager;
public class MainActivity extends Activity {
private Gpio gpio;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PeripheralManager manager = PeripheralManager.getInstance();
try {
gpio = manager.openGpio("GPIO2_IO05");
configureInput(gpio);
configureOutput(gpio);
} catch (IOException e) {
e.printStackTrace();
}
}
private GpioCallback gpioCallback = new GpioCallback() {
@Override
public boolean onGpioEdge(Gpio gpio) {
try {
if (gpio.getValue()) {
System.out.println("high");
} else {
System.out.println("low");
}
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
@Override
public void onGpioError(Gpio gpio, int error) {
System.out.println(gpio + ": Error event " + error);
}
};
public void configureInput(Gpio gpio) throws IOException {
gpio.setDirection(Gpio.DIRECTION_IN);
gpio.setActiveType(Gpio.ACTIVE_HIGH);
gpio.setEdgeTriggerType(Gpio.EDGE_BOTH);
gpio.registerGpioCallback(gpioCallback);
}
public void configureOutput(Gpio gpio) throws IOException {
gpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);
gpio.setActiveType(Gpio.ACTIVE_LOW);
gpio.setValue(true);
}
}
答案 0 :(得分:1)
无法从Android传感器中读取该传感器。它使用类似于I2C的单线协议,但是GPIO端口能够读取它的速度对于Android而言太快了。
按照建议,您可以使用Arduino读取它,然后将Arduino作为I2C从设备连接,您可以使用其他温度和湿度传感器,例如通过I2C进行通信的BME280,它仍然相当便宜