54 lines
1.3 KiB
Markdown
54 lines
1.3 KiB
Markdown
|
# ds18b20
|
||
|
|
||
|
Get sensor data from ds18b20 connected to the Raspberry (GPIO w1 pin).
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
### Connect DS18B20
|
||
|
On the Raspberry Pi, you will need to add `dtoverlay=w1-gpio"` (for regular connection) or `dtoverlay=w1-gpio,pullup="y"` (for parasitic connection) to your /boot/config.txt. The default data pin is GPIO4 (RaspPi connector pin 7), but that can be changed from 4 to `x` with `dtoverlay=w1-gpio,gpiopin=x`.
|
||
|
|
||
|
Here's what I did:
|
||
|
```
|
||
|
sudo echo dtoverlay=w1-gpio-pullup,gpiopin=4 >> /boot/config.txt
|
||
|
sudo modprobe w1_gpio && sudo modprobe w1_therm
|
||
|
```
|
||
|
|
||
|
### Drivers
|
||
|
|
||
|
1-Wire drivers need to be loaded in order to create the connection between the physical sensor and the rPI.
|
||
|
You can load them from the terminal (or from the bin/modules.sh script).
|
||
|
|
||
|
sudo modprobe wire
|
||
|
sudo modprobe w1-gpio
|
||
|
sudo modprobe w1-therm
|
||
|
|
||
|
### Install
|
||
|
go get github.com/yryz/ds18b20
|
||
|
|
||
|
### Code
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/yryz/ds18b20"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
sensors, err := ds18b20.Sensors()
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
fmt.Printf("sensor IDs: %v\n", sensors)
|
||
|
|
||
|
for _, sensor := range sensors {
|
||
|
t, err := ds18b20.Temperature(sensor)
|
||
|
if err == nil {
|
||
|
fmt.Printf("sensor: %s temperature: %.2f°C\n", sensor, t)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
```
|