项目作者: rubiojr

项目描述 :
Go module to read Pimoroni's Enviro+ sensors
高级语言: HTML
项目地址: git://github.com/rubiojr/go-enviroplus.git
创建时间: 2021-01-24T17:40:24Z
项目社区:https://github.com/rubiojr/go-enviroplus

开源协议:BSD 2-Clause "Simplified" License

下载


Pimoroni Enviro+ Drivers

Go library to read data from Pimoroni’s Enviro+ sensors.

⚠️ Experimental, API subject to change ⚠

BME250

Package to read pressure, relative humidity and temperature sensors.

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "periph.io/x/periph/conn/i2c/i2creg"
  6. "periph.io/x/periph/conn/physic"
  7. "periph.io/x/periph/devices/bmxx80"
  8. "periph.io/x/periph/host"
  9. )
  10. func main() {
  11. // Make sure periph is initialized.
  12. if _, err := host.Init(); err != nil {
  13. log.Fatal(err)
  14. }
  15. // Use i2creg I²C bus registry to find the first available I²C bus.
  16. b, err := i2creg.Open("")
  17. if err != nil {
  18. log.Fatalf("failed to open I²C: %v", err)
  19. }
  20. defer b.Close()
  21. d, err := bmxx80.NewI2C(b, 0x76, &bmxx80.DefaultOpts)
  22. if err != nil {
  23. log.Fatalf("failed to initialize bme280: %v", err)
  24. }
  25. e := physic.Env{}
  26. if err := d.Sense(&e); err != nil {
  27. log.Fatal(err)
  28. }
  29. fmt.Printf("%8s %10s %9s\n", e.Temperature, e.Pressure, e.Humidity)
  30. }

LTR559

Light/Proximity Sensor.

The driver is a port of the Python driver from Pimoroni.

Reading data from the sensor

  1. // Read proximity and light from the LTR559 sensor
  2. package main
  3. import (
  4. "fmt"
  5. "time"
  6. "github.com/rubiojr/go-enviroplus/ltr559"
  7. )
  8. func main() {
  9. d := ltr559.New()
  10. fmt.Printf("Manufacturer ID: 0x%x\n", d.ManufacturerID())
  11. fmt.Printf("Part ID: 0x%x\n", d.PartID())
  12. for {
  13. fmt.Println("proximity: ", d.Proximity())
  14. fmt.Println(" lux: ", d.Lux())
  15. time.Sleep(1 * time.Second)
  16. }
  17. }

PMS5003

Particle concentration sensor.

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/rubiojr/go-enviroplus/pms5003"
  5. )
  6. func main() {
  7. dev, err := pms5003.New()
  8. if err != nil {
  9. panic(err)
  10. }
  11. go func() {
  12. dev.StartReading()
  13. }()
  14. for {
  15. r := dev.LastValue()
  16. fmt.Println("-------")
  17. fmt.Println("PM1.0 ug/m3 (ultrafine): ", r.Pm10Std)
  18. fmt.Println("PM2.5 ug/m3 (combustion, organic comp, metals): ", r.Pm25Std)
  19. fmt.Println("PM10 ug/m3 (dust, pollen, mould spores): ", r.Pm100Std)
  20. fmt.Println("PM1.0 ug/m3 (atmos env): ", r.Pm10Env)
  21. fmt.Println("PM2.5 ug/m3 (atmos env): ", r.Pm25Env)
  22. fmt.Println("PM10 ug/m3 (atmos env): ", r.Pm100Env)
  23. fmt.Println("0.3um 1 0.1L air: ", r.Particles3um)
  24. fmt.Println("0.5um 1 0.1L air: ", r.Particles5um)
  25. fmt.Println("1.0um 1 0.1L air: ", r.Particles10um)
  26. fmt.Println("2.5um 1 0.1L air: ", r.Particles25um)
  27. fmt.Println("5um 1 0.1L air: ", r.Particles50um)
  28. fmt.Println("10um 1 0.1L air: ", r.Particles100um)
  29. time.Sleep(1 * time.Second)
  30. }
  31. }