Как измерить температуру?

Что я могу подключить к RPi для измерения температуры? Я думаю, что устройства подключены к I ²C или SPI будет иметь наибольший смысл.

Вот вопрос о DHT-22 и других 1-проводные устройства. Но на этом этапе кажется, что 1-проводный трудный на RPi из-за критических таймингов

44 голоса | спросил John La Rooy 23 J000000Monday12 2012, 01:54:27

6 ответов


40

Вот как подключить MCP9804 .

введите описание изображения здесь>> </p>

<p> Вы можете использовать его следующим образом: </p>

<pre><code>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
</code></pre>

<p> Преобразование 0x67c1 в температуру немного свернуто. MSB равен 0xc1, а LSB - 0x67 </p>

<p> Первые 4 бита MSB отбрасываются и оставляют температуру в 16-й градусе </p>

<pre><code>(0xc1 & 0xf) * 16 + 0x67 /16,0 = 22,4375 градусов
</code></pre>

<p> <strong> Пример Python </strong> <br>
Помимо загрузки модулей i2c выше, вам необходимо установить пакет python-smbus. Вы можете уменьшить самонагрев, отключив MCP9804 между показаниями. </p>

<pre><code>#! /usr /bin /env python
время импорта
от smbus импорт SMBus

класс MCP9804 (объект):
    def __init __ (self, bus, addr):
        self.bus = bus
        self.addr = addr

    def wakeup (self):
        self.bus.write_word_data (self.addr, 1, 0x0000)

    def shutdown (self):
        self.bus.write_word_data (self.addr, 1, 0x0001)

    def get_temperature (self, shutdown = False):
        если выключение:
            self.wakeup ()
            time.sleep (0.26) # Ждите конверсии

        msb, lsb = self.bus.read_i2c_block_data (self.addr, 5, 2)

        если выключение:
            self.shutdown ()

        tcrit = msb> 7 & 1
        tupper = msb> 6 & 1
        tlower = msb> 5 & 1

        температура = (msb & 0xf) * 16 + lsb /16,0
        если msb> 4 & 1:
            температура = 256 - температура
        обратная температура



def main ():
    датчик = MCP9804 (SMBus (0), 0x1f)
    в то время как True:
        print sensor.get_temperature ()
        time.sleep (1)


если __name__ ==

ответил John La Rooy 23 J000000Monday12 2012, 16:49:52
13

Вы можете использовать Raspberry Pi, встроенный в последовательный порт, и подключить его к цифровой термометру IC (например, DS1620 )

Вы можете узнать о интерфейсе последовательного порта Raspberry Pi здесь

введите описание изображения здесь>> </p>

<ul>
<li> P1 (LEFT BOTTOM) - 3,3 В </li>
<li> P6 - GND </li>
<li> P8 GPIO14 - TX </li>
<li> P10 GPIO15 - RX </li>
</ul>
<p> <strong> Важно </strong>. Помните, что RPi UART работает на TTL 3.3V. Будьте осторожны, чтобы не использовать высоковольтный 5v /12volt Uart прямо к RPi. Это приведет к повреждению! </p></div>
										<div class=ответил JeeShen Lee 23 J000000Monday12 2012, 05:45:14

3

Я пробовал два подхода к температурному зондированию. Для I2C я использовал модуль TMP102, который похож на описание gnibbler. Вот мой пост об этом:

Для 1-проводного, Adafruit недавно выпустил собственный образ, и он содержит 1-проводную поддержку. Я смог прочитать с ним 1-проводной датчик температуры DS18B20. Более подробно в этот пост :

Наконец, еще один подход - использовать аналоговый температурный датчик и внешний АЦП. В Adafruit есть хороший учебник .

ответил pdp7 9 PM000000100000001631 2012, 22:09:16
3

Простой, дешевый USB-термометр «HID TEMPer» также работает, и его гораздо проще подключить для тех, кому еще предстоит играть с UART или GPIO, как я.

HID TEMPer USB thermometer

My RPi обеспечивает достаточную мощность для его непосредственного управления с USB-порта без концентратора.

Чтобы установить это с помощью Raspbian Wheezy, я следил за этими инструкциями которые были написаны для Ubuntu (отказ от ответственности: ссылка для публикации в моем собственном блоге). Для Raspberry Pi мне нужно было сделать небольшую настройку, чтобы установить LIBUSB_LIBDIR при установке модуля perl модуля Device :: USB, чтобы он мог найти libusb в нестандартном положении руки. Далее следуют полные инструкции.

Чтобы получить простое чтение без какого-либо из munin , установите зависимости следующим образом: ):

 apt-get install libusb-dev
экспортировать LIBUSB_LIBDIR = /usr /lib /arm-linux-gnueabihf
cpan Inline :: MakeMaker
cpan Device :: USB :: PCSensor :: HidTEMPer

Создать readtemp.pl:

 #! /usr /bin /perl
использовать строго;
используйте 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", если определено $ device-> internal ();
}

И запустите это как root, чтобы увидеть результат. В моем случае в этом гараже сегодня немного холодно:

 day @ pi: ~ $ sudo ./readtemp.pl
16,5
ответил Day 30 Jam1000000amWed, 30 Jan 2013 02:47:32 +040013 2013, 02:47:32
2

В настоящее время я использую DS18B20 .

Сначала откройте Pi и введите:

sudo leafpad /etc/apt/sources.list.d/raspi.list

Затем добавьте слово untested после main.

Затем введите:

sudo apt-get update
Обновление sudo apt-get

В моем случае это заняло много времени, хотя это зависит от скорости вашего Wi-Fi /Ethernet. После этого вы перезагружаетесь:

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

И тогда он должен показать 2 строки кода, где 5 цифр в конце второй строки - это температура.

Это использует что-то, называемое «Далласский однопроводный датчик температуры», или что-то в этом роде.

ответил Shojan 22 Jam1000000amThu, 22 Jan 2015 01:57:42 +030015 2015, 01:57:42
1

В настоящее время я читаю эту книгу и тому подобное. Идя по этому пути, мое видение заключается в том, что у вас будет датчик температуры, ардуино и радиостанция xbee. Это ваш дистанционный датчик, который может быть где угодно, пока он находится в зоне действия домашней станции. Тогда для домашней станции есть rasberry и другое xbee. Я предполагаю, что было бы проще также иметь домашнюю станцию ​​xbee на ардуине, а затем поговорить с ардуиновыми и ежевики. Благодаря этому вы можете иметь несколько дистанционных датчиков и различные типы датчиков.

ответил lumpynose 4 MaramMon, 04 Mar 2013 10:02:59 +04002013-03-04T10:02:59+04:0010 2013, 10:02:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132