View Source PMSA003I

Hex version

Driver for the PMSA003I partical concentration sensor.

Datasheet

Installation

def deps do
  [
    {:pmsa003i, "~> 0.1"}
  ]
end

Sample usage

Using sensor commands

ex(1)> {bus_name, device_addr} = PMSA003I.Comm.discover
{"i2c-1", 18}
iex(2)> i2c = PMSA003I.Comm.open(bus_name)
#Reference<0.3889352237.268828678.103225>
iex(3)> PMSA003I.Register.read(i2c, device_addr)
%PMSA003I.Measurement{
  part_count0_3: 3624,
  part_count0_5: 1119,
  part_count1: 196,
  part_count10: 0,
  part_count2_5: 4,
  part_count5: 2,
  pm10_atmo: 38,
  pm10_std: 38,
  pm1_atmo: 23,
  pm1_std: 26,
  pm2_5_atmo: 33,
  pm2_5_std: 36
}

Using GenServer


iex(1)> PMSA003I.start_link([name: :pmsa003i, polling_interval: 10_000])
{:ok, #PID<0.1358.0>}
iex(2)> :timer.sleep(10_000)
:ok
iex(3)> GenServer.call(:pmsa003i, :measure)
{:ok,
 %PMSA003I.Measurement{
   part_count0_3: 4164,
   part_count0_5: 1263,
   part_count1: 211,
   part_count10: 2,
   part_count2_5: 13,
   part_count5: 2,
   pm10_atmo: 43,
   pm10_std: 43,
   pm1_atmo: 25,
   pm1_std: 29,
   pm2_5_atmo: 36,
   pm2_5_std: 41
 }}