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

システム開発エンジニアの西田五郎が運営しております。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で遠隔操作編 その2)MQTT Brokerの構築とPythonでのpub/sub

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

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

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

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

Raspberry PiでIoT 温度・湿度・気圧データ編の4回目です。前回までで、Raspberry Piから温度、湿度、気圧データをWebサーバへ送信してそのデータを蓄積、表示出来るようになりまし …

SkyWayでRaspberry Piの遠隔操作(その2)SkyWayからの操作

前回の続きです。全体的にはSkyWayを利用してRaspberry Piの遠隔操作をしてみようという内容です。 前回はRaspberry Pi側でのブラウザ(JavaScript)からMQTT ove …

Raspberry PiでIoT(温度・湿度・気圧データ編 その3)データ表示とグラフ表示

Raspberry PiでIoT 温度・湿度・気圧データ編の3回目です。前回までで、Raspberry Piから温度、湿度、気圧データをWebサーバへ送信してそのデータを蓄積出来るようになりました。今 …