株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Raspberry Pi 通信制御

温度センサADT7410(その3)Raspbery Piでの利用

投稿日:

温度センサADT7410の3回目です。前回までの内容は以下です。
温度センサADT7410(その1)I2C通信とは
温度センサADT7410(その2)Arduinoでの利用

ADT7410は以下を使っています。
ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール
仕様書は今現在で上記の製品ページのマニュアルPDFのリンクと仕様半導体資料のリンクから参照出来ます。直接のリンクは以下です。
ADT7410モジュールマニュアル
使用半導体資料(データシート)

今回はRaspbery Piで使ってみます。温度センサADT7410(その1)I2C通信とはでRaspbery Piでの接続まで書きました。そういう意味ではその1の続きですが、温度センサADT7410(その2)Arduinoでの利用で温度の計算方法についても書きましたので必要な場合は合わせて見て頂ければと思います。

Pythonでのプログラム
Raspbery Piではいろいろなプログラミング言語が利用出来ますがここではPythonを使ってみます。PythonはRaspbery Piで推奨の言語でもあり、Raspbery PiのPiはPythonのpyからも取ったものだったと思います。(※すいません、正確な情報が必要な場合は以下等で調べて下さい。)
The name ‘Raspberry Pi’

Tera TermでRaspbery Piに接続して以下のように、python -Vと入力するとversionが確認出来ます。
pythonver

今現在は、2.7.3となっています。PythonにはVersion3の系統もありますが、ここではこのまま使います。プログラムの前にPythonからi2Cバスをコントロールするためのpython-smbusをインストールします。以下でインストール出来ます。
$ sudo apt-get update
$ sudo apt-get install python-smbus

プログラムは以下のように書きました。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import smbus
import time

i2c = smbus.SMBus(1)
address = 0x48

while True:
    block = i2c.read_i2c_block_data(address, 0x00, 2)

    val = block[0] << 8         #上位ビットをシフトしてセット
    val = val | block[1]        #下位ビットをORでセット
    val = val >> 3              #右へシフトで13ビット化

    ####### val = 0x1e70 マイナス温度のテスト

    # 以下プラス、マイナス判定をして温度を計算する

    if(val >= 4096):
        val = val - 8192

    print("Temperature:%6.2f" % (val / 16.0))

    time.sleep(5)

Raspbery PiとADT7410との接続は温度センサADT7410(その1)i2C通信とはで書いたように出来ているとして実行します。このプログラムをここでは adt7410.pyというファイル名で保存したので以下のように実行しました。
$ sudo python adt7410.py

結構高めですが以下のようになりました。
0002

温度取得の処理としては、前回のArduinoの場合と同じです。以下のマニュアルを参照して下さい。
ADT7410マニュアル
ここでは13ビットモードで取得しているので2バイトのデータを1バイトずつ16ビットの値にして13ビットにシフトしています。後はプラス、マイナスを判定して分解能で計算しています。プラス、マイナスの判定と計算は10進数で判定しています。マイナスの値はマニュアルに書いてある値を代入して結果を確認しました。

Raspbery Piでi2cバスを使っているのでもっといろいろなことが出来るとは思いますが今回はここまでです。また何か出来たら書きたいと思います。

AdSense

AdSense

-Raspberry Pi, 通信制御

執筆者:

関連記事

Node.jsでRaspberryPiのGPIOを使う(その1)デバイスドライバでLED

Node.jsでRaspberryPiのGPIOを使ってみます。今回はデバイスドライバを使ってLEDのONとOFFを操作します。以下のような簡単な回路でLEDを操作します。 準備、前提は以下です。 以 …

Raspberry PiでIoT(MQTTで遠隔操作編 その3)Raspberry PiのGPIOとHeroku連動Sub編

Raspberry PiでIoT MQTTで遠隔操作編の3回目です。2台のRaspberry Piでインターネット経由でGPIOを操作するというテーマで書いています。前回はHerokuでMQTT Br …

感染症対策のためのIoT技術(その4)WebRTCを利用したリモート関連システム

感染症対策のためのIoT技術について書いています。今回はWebRTC(Web Real-Time Communication)を利用したリモート関連システムについてです。リモート関連システムとは具体的 …

Raspberry Piでタッチスクリーン付3.5インチTFTを使ってみた

Raspberry Piでタッチスクリーン付モニタを使ってみました。PiScreenという商品名で3.5インチTFT(480×320) でタッチスクリーン付です。以下の商品です。以下は完成品 …

Raspberry PiでAC100V(ソリッド・ステート・リレー)制御

Raspberry PiでAC100VのON/OFF制御を試してみました。今回そのために以下のソリッド・ステート・リレーキットを利用しました。この製品を選んだ理由としては「扱いが簡単」かなと思ったから …