这里是有关DHT-22和其他1线设备的问题。但是在此阶段,由于关键时刻,在RPi上似乎很难实现1线制
#1 楼
这是连接MCP9804的方法。您可以像这样使用它:
root@raspberrypi:~# modprobe i2c-dev
root@raspberrypi:~# modprobe i2c-bcm2708
root@raspberrypi:~# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1f
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@raspberrypi:~# i2cget -y 0 0x1f 0x5 w
0x67c1
转换0x67c1到一个温度有点曲折。 MSB为0xc1,LSB为0x67
MSB的前4位被丢弃,从而使温度降低了16度。 br /> Python示例
除了加载上面的i2c模块之外,您还需要安装python-smbus软件包。您可以通过在两次读数之间关闭MCP9804来减少自热。
(0xc1&0xf)*16+0x67/16.0 = 22.4375 degrees
评论
您使用了哪个版本的IC?我有一个类似的IC(MCP9808T),但是本地电子商店仅具有DFN封装版本。我不知道如何将其焊接在任何东西上而又不使它大幅度缩短。
– ikku
2012-09-24 14:44
@ikku,我有8引脚MSOP
– John La Rooy
2012年9月24日21:20在
#2 楼
您可以使用内置的Raspberry Pi串行端口,并将其连接到数字温度计IC(例如DS1620)。您可以在此处找到Raspberry Pi的串行端口接口
P1(底部)-3.3V
P6-GND
P8 GPIO14-TX
P10 GPIO15-RX
重要提示:请记住,RPi UART在TTL 3.3V电压下运行-注意不要将高压5v / 12volt Uart直接用于RPi。会造成损坏!
评论
似乎使用的是3线接口,因此不仅是通常使用串行端口的问题,而且似乎与GPIO兼容
– John La Rooy
2012年7月23日在2:43
AFAIK,串行端口具有Tx,Rx和CLK是正常的。我认为SPI也需要3条线SDO,SDO和SCLK。有关SPI型号-DS1722链接,请参考此内容。
–李吉申
2012年7月23日在2:49
但是DS1620使用!RST,CLK和DQ。 !RST在整个传输过程中为高电平,CLK为时钟,DQ为双向数据,因此与UART不同
– John La Rooy
2012年7月23日在3:52
我喜欢您的替代答案,并为您(JeeSehn)改善了一点。另外,我还警告非技术用户,请注意RPi上的UART为3.3v TTL,其他USB到串行端口可能会使用5v / 12v!损坏RPI!
– Piotr Kula
2012年7月31日在9:25
#3 楼
我尝试了两种方法进行温度感应。对于I2C,我使用了TMP102模块,该模块与Gnibbler所描述的相似。这是我的信息:对于1线制,Adafruit最近发布了自己的映像,其中包含1线支持。我能够用它读取DS18B20 1线温度传感器。这篇文章中的更多细节:最后,另一种方法是使用模拟温度传感器和一个外部ADC。 Adafruit在这方面有一个很好的教程。
#4 楼
一个简单,便宜的USB“ HID TEMPer”温度计也可以使用,对于像我这样尚未使用UART或GPIO的人来说,连接起来要容易得多。我的RPi提供了足够的能力,可以直接从USB端口而不使用集线器来驱动它。在我自己的博客上发帖)。对于Raspberry Pi,在安装
LIBUSB_LIBDIR
perl模块时,我只需要做一个小调整就可以设置Device::USB
,这样它就可以在非标准的手臂位置找到libusb
。完整的说明如下。要获得不带任何有关munin的内容的简单阅读,请按以下方式安装依赖项(以root身份):
apt-get install libusb-dev
export LIBUSB_LIBDIR=/usr/lib/arm-linux-gnueabihf
cpan Inline::MakeMaker
cpan Device::USB::PCSensor::HidTEMPer
创建
readtemp.pl
: #!/usr/bin/perl
use strict;
use Device::USB::PCSensor::HidTEMPer;
my $pcsensor = Device::USB::PCSensor::HidTEMPer->new();
my @devices = $pcsensor->list_devices();
foreach my $device (@devices) {
print $device->internal()->celsius()."\n" if defined $device->internal();
}
并以root身份运行以查看输出。就我而言,今天晚上在车库里有点冷:
day@pi:~$ sudo ./readtemp.pl
16.5
#5 楼
我当前使用的是DS18B20。首先打开Pi并输入:sudo leafpad /etc/apt/sources.list.d/raspi.list
,然后在
untested
之后添加单词main
。然后输入:
sudo apt-get update
sudo apt-get upgrade
我的情况花费了很长时间,尽管这取决于您的wifi /以太网速度。 />之后,您重新启动:
sudo reboot now
将白线连接到GPIO4,红线连接到3V3,黑线连接到GND。您还可以在白线和红线之间连接一个4.7K电阻器。
您可以通过执行以下命令来读取它:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/
ls
然后应该列出温度传感器的序列号,然后是
w1_bus_master1
然后去:
cd serial-number-here
cat w1_slave
,然后应该显示两行代码,其中第二行末尾的5位数字是温度。
这利用了称为“达拉斯单线温度传感器协议”的东西或其他东西。
#6 楼
我目前正在阅读这本书,并且喜欢它。沿着这条路线走,我的愿景是将一个温度传感器,一个arduino和一个xbee收音机粘合在一起。这就是您的远程传感器,只要它在本站范围内,就可以在任何地方。然后对于家庭电台有一个rasberry和另一个xbee。我猜想将Home Station xbee放在arduino上,然后让arduino和rasberry互相交谈可能会更容易。这样一来,您可以拥有多个远程传感器和不同类型的传感器。评论
有趣。我想要更多细节。看到我的问题:raspberrypi.stackexchange.com/questions/38711/…,请在那儿回答:-)
– Davide
15年11月28日在15:12
评论
我正计划从剑桥大学学习本教程