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

システム開発エンジニアの西田五郎が運営しております。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, 通信制御

執筆者:

関連記事

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

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

レーザーカッターでセンサーのケースを作ってみた

前回のセンサー(温湿度センサーBME280)のケースをレーザーカッターで作ってみました。もちろん3Dプリンターで作る方法もあると思いますが単純なボックス型ならレーザーカッターの方が加工時間が短いと思っ …

Raspberry Piでタッチアプリ開発(その2)Kivyの導入と動作確認

Raspberry Piでタッチアプリ開発の2回目です。前回はハードウェア構成や開発環境等の概要的なことを書きました。今回から具体的な内容ですが、まずpythonのNUIライブラリのKivyの導入につ …

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

Raspberry PiでIoTのMQTTで遠隔操作編のシリーズを始めます。実際に動作させてみるということを重点として進めます。ここでの遠隔操作は2台のRaspberry Pi間でインターネット経由の …

Raspberry PiのPL2303内蔵コンソールケーブルのWindows8.1の対応について

Raspberry PiのコンソールケーブルでProlific社のUSBシリアル変換チップのPL-2303を内蔵している製品について、Windowsのバージョンの対応状況についてです。 まず、Rasp …