返回首页
搜 索
400-77-456-22
英米加集团
领先RFID产品与物联网解决方案专家
INMIGA group
Windows 10 IoT开发:土壤湿度传感器的使用(树莓派

  前几天在淘宝上买了个长得这样的土壤湿度传感器:


 

  结果搜了一圈,网上似乎还没有Windows 10的例子代码,又只能自己爆了。

  这个传感器有4个阵脚,意思分别是:

  针脚含义

  AO模拟信号输出

  DO数字信号输出

  GND电源负极

  VCC电源正极

  所以,我们把VCC接到树莓派的DC3.3v输出上,我用的是PIN 01,GND接在任何一个接地端口上,我用的是PIN 09,DO输出接任何一个空闲的GPIO端口,我用的是21。如果不清楚树莓派端口布局的朋友可以参考这张图:


 

  连线完成就像是这样:


 

  电源连通之后,电源灯会亮起:


 

  调节传感器上的旋钮(蓝色的菊花),这个是灵敏度的校准,也是个阈值,直到在干燥空气中不让DO-LED亮起。

  倒一杯水,或者没有水的话,舔一下传感器的触角,DO-LED应该会亮起,这时候就校准好了。然后就能爆代码了!!!


 

  这个传感器在干燥时候输出的是高电平,遇到水输出低电平。根据这个原理,把代码爆成这样:

  public GpioPin MoistureSensorOutputPin { get; set; }

  public DispatcherTimer DispatcherTimer { get; set; }

  public MainPage()

  {

  this.InitializeComponent();

  Loaded += OnLoaded;

  }

  private async void OnLoaded(object sender, RoutedEventArgs routedEventArgs)

  {

  var ctl = await GpioController.GetDefaultAsync();

  MoistureSensorOutputPin = ctl?.OpenPin(21);

  if (MoistureSensorOutputPin != null)

  {

  MoistureSensorOutputPin.SetDriveMode(GpioPinDriveMode.Input);

  DispatcherTimer = new DispatcherTimer()

  {

  Interval = TimeSpan.FromSeconds(1)

  };

  DispatcherTimer.Tick += (O_O, n_n) =>

  {

  var pinValue = MoistureSensorOutputPin.Read();

  if (pinValue == GpioPinValue.High)

  {

  Debug.WriteLine("Dry");

  }

  else

  {

  Debug.WriteLine("Water Detected!");

  }

  };

  DispatcherTimer.Start();

  }

  }

  注意不要用这个事件:

  public event TypedEventHandler<gpiopin, gpiopinvaluechangedeventargs=""> ValueChanged;

  这个会重复输出好多次的。。。

  运行结果