对于极客们,树莓派是上等的DIY神器;对于项目开发者,树莓派也不失为一种省时、省力的明智选择。因为有好多人在玩树莓派,所以其开源的资料比较多,好多东西我们可以拿来即用,不用重复造轮子。下面,就跟我学习一下怎么在树莓派上用C语言读取ds18b20的温度值。
树莓派上的ds18b20驱动已经有人实现了,所以我们只需要去编写应用程序就OK啦!话说当年学的不咋地的Linux高编在这里居然用到了。
硬件准备:
树莓派(Raspberry Pi),我用的是二代的
DS18b20温度传感器 + 一个10K电阻(或直接买ds18b20模块,也就是店家帮你焊接好电阻了)
杜邦线(两头都是母的)
接线方式:
ds18b20的信号线连接树莓派的GPIO7
确认硬件连接是否正确,然后读取温度:
1,首先升级内核(如果版本太老,可能无法正常读ds18b20)
sudo apt-get update
sudo apt-get upgrade
2,挂载设备驱动,确认设备是否生效
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/
ls
28-00000495db35就是外接的温度传感器设备,但并不是每个客户端都显示一样的,这个是传感器的序列号。
3,查看当前温度
cd 28-00000495db35
ls
cat w1_slave
第二行的t=26187就是当前的温度值,要换算成摄氏度,除以1000,即当前温度为16187 / 1000=26.187摄氏度。
确定设备正常后,我们写代码,以后通过代码读取温度。
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFSIZE 128
int main(void)
{
float temp;
int i, j;
int fd;
int ret;
char buf[BUFSIZE];
char tempBuf[5];
fd = open("/sys/bus/w1/devices/28-00000495db35/w1_slave