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

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

*

温度センサ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バスを使っているのでもっといろいろなことが出来るとは思いますが今回はここまでです。また何か出来たら書きたいと思います。

 - Raspberry Pi, 通信制御

AdSense

AdSense

  関連記事

温度センサADT7410(その2)Arduinoでの利用

温度センサADT7410の2回目です。前回はI2C通信の簡単な概要とADT741 …

Raspberry Piでタッチアプリ開発(その3)Kivyでレイアウト・ボタン作成

Raspberry Piでタッチアプリ開発の3回目です。前回はKivyの導入につ …

Arduino Ethernetシールド(旧製品)を使ってみた

Arduino Ethernetシールド(旧製品)を使ってみました。Arduin …

無線マイコン ToCoStick(トコスティック)を使ってみた

無線マイコンの ToCoStick(トコスティック)を使ってみました。 前回のT …

Raspberry PiでIoT(温度・湿度・気圧データ編 その4)アラートメール送信

Raspberry PiでIoT 温度・湿度・気圧データ編の4回目です。前回まで …

Node.jsでRaspberryPiのGPIOを使う(その2)ブラウザからの操作

Node.jsでRaspberryPiのGPIOを使うの2回目です。前回はGPI …

Raspberry PiでIoT(MQTTで遠隔操作編 その1)MQTTでの通信

Raspberry PiでIoTのMQTTで遠隔操作編のシリーズを始めます。実際 …

Raspberry Piでタッチアプリ開発(その4)ボタンとGPIOの連動

Raspberry Piでタッチアプリ開発の4回目です。前回作成したレイアウトと …

Raspberry Piでタッチアプリ開発(その1)ハードウェア構成・開発環境等

Raspberry Piで簡単なタッチアプリを開発する手順について書きます。もち …

Raspberry PiでAvahi を使ってホスト名でアクセスする

Raspberry PiでAvahiを使ってホスト名でのアクセスを可能にする方法 …