查看: 7480|回复: 3

Orange pi使用1-Wire温度传感器DS18B20

[复制链接]

20

主题

50

帖子

1654

积分

超级版主

Rank: 8Rank: 8

积分
1654
发表于 2016-11-5 10:12:50 | 显示全部楼层 |阅读模式
Orange pi使用1-Wire温度传感器DS18B20
1、需要加载的模块

可添加到/etc/modules中,或手动加载w1_therm w1_gpio w1_sunxi gpio_sunxi
2、连接传感器


还有一个vcc随便找路5v连接就行。

由于我的是成品板,其他DS18B20 的IO口与VCC中间需接一个4.7K的上拉电阻。
3、读取成功。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如果觉得我的帖子对你有所帮助,可以用支付宝扫描下面二维码的方式捐助,谢谢您的支持!
点我扫描二维码进行捐助

0

主题

3

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2017-1-9 20:32:00 | 显示全部楼层
找个 gpio的底层驱动好难。

3

主题

8

帖子

47

积分

新手上路

Rank: 1

积分
47
发表于 2017-3-16 21:44:05 | 显示全部楼层

2

主题

7

帖子

35

积分

新手上路

Rank: 1

积分
35
发表于 2017-5-19 23:24:40 | 显示全部楼层
给你加一个我的perl脚本,用于采集DS18B20的温度存入MySQL数据库服务器。

#!/usr/bin/perl

use Time:ocal;
use DBI;

my $database='DATABASE_NAME';
my $server  ='myhomeserver.local';
my $username='www';
my $password='www';

my $dsn = "DBI:mysql:database=$database:host=$server";
my $dbh = DBI->connect($dsn, $username, $password) || die "Can't connect.\n";

$t = time;  #now

#scan all DS18B20s
$sensors = `ls /sys/bus/w1/devices`;
@sen = split /\s/, $sensors;

foreach $s (@sen) {
    next if ($s !~/^28/) ; #only read DS18B20

    $sensor_temp = `cat /sys/bus/w1/devices/$s/w1_slave 2>&1`;
    if ($sensor_temp !~/No such file or directory/) {
        if ($sensor_temp !~/NO/) {
            $s =~ s/28-(\w\w)(\w\w)(\w\w)(\w\w)(\w\w)(\w\w)/28123456/;
            $sensor_temp =~ /t=(\d+)/i;

            $st = $1/1000;
            #        print "mac = $s  temp = $t\n";

            $sql = qq[ INSERT home_temp VALUES  (0,$t,0,$st,"$s")];
            #print "sql=$sql\n";
            $sth    = $dbh->prepare($sql) || die "DBI error with connect to database.\n";
            $result = $sth->execute       || die "DBI error with execute.\n";
        }
    }
}
$dbh->disconnect;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表