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

システム開発エンジニアの西田五郎が運営しております。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でAC100V(ソリッド・ステート・リレー)制御

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

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

無線マイコンの ToCoStick(トコスティック)をRaspberry Piで使ってみました。前回の記事でブレッドボードが親機でToCoStickが子機という設定でとりあえずということで通信が出来る …

Raspberry PiでのNode.jsの導入(その2)Webサーバ的なプログラム

Raspberry PiでのNode.jsの導入の2回目です。前回はインストールと動作確認でした。今回はもう少しWebサーバ的なプログラムを作成してみます。今現在で日本のNode.jsの公式ページにも …

SkyWayでRaspberry Piの遠隔操作(その1)MQTT over WebSocket

前回までの記事でSkyWayのJavaScriptでの動作確認を行いました。またRaspberry Piでの動作も確認出来ました。そうすると今回はSkyWayを利用してRaspberry Piの遠隔操 …

Raspberry Piをモニターとキーボードなしで導入する(その3)コンソールを使う

(※2021/05/02追記 現時点で最新版のRaspberry PI OSでモニターとキーボードなしで導入する手順を書きました。ぜひこちらを見て下さい。) Raspberry Piをモニターとキーボ …