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

システム開発エンジニアの西田五郎が運営しております。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(温度・湿度・気圧データ編 その1)BME280でデータ取得

Raspberry PiでIoTに取り組んでみるという内容で実際に動作させながら書きたいと思います。まずは、IoTとは、Internet of Thingsの略です。もう既にこの言葉も普及していて様々 …

Raspberry Pi 3でモニタとキーボードなしで設定する方法

Raspberry Pi 3でモニタとキーボードなしで設定する方法についてです。 以下のような条件ごとに方法を確認しました。あちらこちらで書いてしまったのでここで整理させてください。当然環境によって違 …

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

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

無線マイコンTWE-Lite DIPを使ってみた

無線マイコンのTWE-Lite DIPを使ってみました。製品の詳細はメーカのページを参照して頂くとして、無線接続方式が標準規格IEEE802.15.4で32ビットマイコンを内蔵しており、初期設定なしで …

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

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