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

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

Raspberry Pi

Raspberry Piでも温度センサADT7310をつかってみる

投稿日:2017年3月23日 更新日:

以下の記事でArduino Unoで温度センサのADT7310を使ってみました。
Arduino UnoでSPI通信(その2)温度センサADT7310
以下の製品です。
ADT7310使用 高精度・高分解能 SPI・16Bit 温度センサモジュール

その続きで、Raspberry Piでも温度センサADT7310を使ってみました。その手順と結果についてです。

配線は以下です。
ADT7310 – Raspberry Pi
VDD – 5V
SCL – GPIO11 SCLK
SDO – GPIO9 MISO
SDI – GPIO10 MOSI
CS – GPIO8
GND – GND



Raspberry Piのソケットに接続しているのは以下の製品です。

Raspberry PiでSPIを有効にします。sudo raspi-configで設定を起動します。
5.Interfacing Optionsを選択します。

P4 SPIを選択します。

はいで有効にします。

ここではpythonでプログラムを書きました。SPIの通信は以下の Python Spidev を利用しました。
Python Spidev
Pythonが利用可能な状態だとして、適当なディレクトリ上で以下で導入できます。
$ git clone git://github.com/doceme/py-spidev
$ cd py-spidev
$ sudo python setup.py install

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

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

import spidev
import time

spi = spidev.SpiDev()
spi.open(0,0)
spi.mode = 0x03    #モード3 CPOL:1 CPHA:1
spi.max_speed_hz = 5000
spi.xfer([0xFF, 0xFF, 0xFF, 0xFF])  #ソフトウェアリセット

time.sleep(0.5)
spi.xfer([0x54])    #連続で読み込み開始
time.sleep(1)

ret = spi.xfer([0xff,0xff])   #読み込み
temp = ret[0]<<8 | ret[1]     #上位と下位の読み込み
temp = temp >> 3              #13ビッド化

if(temp >= 4096):             #マイナスの場合
        temp = temp - 8192

print "temparature:",temp / 16.0
print "stop:",spi.xfer([0x50]) #連続終了

spi.close()

以下のように温度が確認出来ました。

プログラムとしては、Arduinoの場合と同様にSPIの初期設定をして連続モードで読み込んでいます。但し、ここでは1回だけ読み込んで終了しています。読み込み終了とクローズまで確認するためです。

詳細が必要な場合はお手数ですが、製品のデータシートを参照して下さい。

SPIのモード等は以下等を参照して下さい。
Arduinoリファレンス SPIの概要

あと、最初のソフトウェアリセット(0xFF)はないと不安定になります。不安定な動作になったらこれが必要です。

上のプログラムでは、xfer()のメソッドを使っていますが、xfer2()というメソッドもあります。xfer()では通常はdelayを指定してCSのアクティブとリリースを制御するようです。xfer2()はCSは常時アクティブになるようです。

ここでは特に複数のスレイブを制御することはないので、上のプログラムで動作しました。またxfer2()でも同様に動作しました。今回のような単独のスレイブの場合は、xfer2()を使っている例が多いように思いました。

より詳細が必要な場合は以下のPython Spidevの説明等を参照して下さい。
Python Spidev

ここでは何とか温度が取得出来たということでここまでにします。



AdSense

AdSense

-Raspberry Pi

執筆者:

関連記事

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

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

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

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

ASP.NET Web APIでデータ蓄積(その7)Raspbery Piからの温度データ蓄積

ASP.NET Web APIでデータ蓄積の7回目です。前回までで少なくとも温度データが登録出来るASP.NET Web APIが出来ました。今回はRaspbery Piに実際に温度センサを接続して温 …

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

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

Raspberry Piでセンサネットワーク稼働試験(基本編)構成・課題等

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。基本編としてRaspberry Piにセンサを直接接続する構成です。その構成で安定して稼働させるにはどういった課題があるか書 …