【Raspberry Pi】USB温度計を付けてみる

昔買ったコレが余っていたので
c7fd0e0040372e23017f8299ea9b9893aec7604c-04-2-9-2
raspberry piにくっつけてみました。

まずは認識するか

pi@raspberrypi ~ $ dmesg | grep TEMP
[    3.676096] usb 1-1.3: Product: TEMPerV1.4
[    3.701857] input: RDing TEMPerV1.4 as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0C45:7401.0001/input/input0
[    3.717312] hid-generic 0003:0C45:7401.0001: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-bcm2708_usb-1.3/input0
[    3.741078] hid-generic 0003:0C45:7401.0002: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-bcm2708_usb-1.3/input1





無事認識しているみたいなのでコンパイルに必要なパッケージをインストール

pi@raspberrypi ~ $ sudo aptitude install libusb-dev





gitからUSB温度計を使うためのソースコードをチェックアウト
チェックアウトする場所はルート直下の/opt

pi@raspberrypi /opt $ cd /opt/
pi@raspberrypi /opt $ sudo git clone git://github.com/bitplane/temper.git





「temper」ディレクトリができました。

pi@raspberrypi /opt $ ll
total 20
drwxr-xr-x 4 root root 4096 Feb 16  2015 minecraft-pi
drwxr-xr-x 5 root root 4096 Feb 16  2015 sonic-pi
drwxr-xr-x 3 root root 4096 Dec 23 16:37 temper
drwxr-xr-x 7 root root 4096 Feb 16  2015 vc
drwxr-xr-x 3 root root 4096 Feb 16  2015 Wolfram





ソースコードを修正します

pi@raspberrypi /opt $ cd temper/
pi@raspberrypi /opt/temper $ vim temper.c
/*
 * Standalone temperature logger
 *
 */

#include <stdio.h>
#include <time.h>
#include "pcsensor.h"

/* Calibration adjustments */
/* See http://www.pitt-pladdy.com/blog/_20110824-191017_0100_TEMPer_under_Linux_perl_with_Cacti/ */
static float scale = 1.0287;
static float offset = -0.85;

int main(){
        int passes = 0;
        float tempc = 0.0000;
        do {
                usb_dev_handle* lvr_winusb = pcsensor_open();

                if (!lvr_winusb) {
                        /* Open fails sometime, sleep and try again */
                        sleep(3);
                }
                else {

                        tempc = pcsensor_get_temperature(lvr_winusb);
                        pcsensor_close(lvr_winusb);
                }
                ++passes;
        }
        /* Read fails silently with a 0.0 return, so repeat until not zero
           or until we have read the same zero value 3 times (just in case
           temp is really dead on zero */
        while ((tempc > -0.0001 && tempc < 0.0001) || passes >= 4);

        if (!((tempc > -0.0001 && tempc < 0.0001) || passes >= 4)) {
                /* Apply calibrations */
                tempc = (tempc * scale) + offset;

                struct tm *utc;
                time_t t;
                t = time(NULL);
                /* コメントアウト */
                /* utc = gmtime(&t);*/
                utc = localtime(&t);

                char dt[80];
                /* コメントアウト */
                /* strftime(dt, 80, "%d-%b-%Y %H:%M", utc); */
                strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);

                printf("%s,%f\n", dt, tempc);
                fflush(stdout);

                return 0;
        }
        else {
                return 1;
        }

}





修正したらmakeします

pi@raspberrypi /opt/temper $ sudo make
gcc -Wall temper.c pcsensor.c -o temper -lusb





あとは動かすだけ

pi@raspberrypi /opt/temper $ sudo ./temper
2016-12-23 16:48:26,27.825012

フォーマットがすごく解りづらいですが、「27.825012」が温度になります。

【Raspberry Pi】USB温度計を付けてみる” への3件のフィードバック

  1. こんにちは、この記事を参考にUSB温度計を利用して、環境センシング的なことにトライしているのですが、どうしても氷点下の温度になると値がうまく出力されません。(常温時は、うまく動作しています。同じTEMPerのUSB温度計を利用しています。)何かわかることがありましたら、解答お願いいたします。

    1. Ysk様
      こんにちは。返信が遅れて申し訳無いです。
      その後、氷点下時の室温取得はうまくいったのでしょうか。
      いまだうまく行ってない場合は、当方でも確認したいと思いますがいかがでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*