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

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

執筆者:

関連記事

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

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

Raspberry Pi 3でのコンソールケーブル利用と初期設定

Raspberry Pi 3 でコンソールケーブルを利用する方法と初期設定についてです。 以下のページ等で今までこのテーマについて書きました。 Raspberry Piをモニターとキーボードなしで導入 …

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

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

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

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

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

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


Notice: Trying to access array offset on value of type null in /virtual/indpsys/public_html/independence-sys.net/main/wp-content/plugins/amazonjs/amazonjs.php on line 637

Notice: Trying to access array offset on value of type null in /virtual/indpsys/public_html/independence-sys.net/main/wp-content/plugins/amazonjs/amazonjs.php on line 637

Notice: Trying to access array offset on value of type null in /virtual/indpsys/public_html/independence-sys.net/main/wp-content/plugins/amazonjs/amazonjs.php on line 637

Notice: Trying to access array offset on value of type null in /virtual/indpsys/public_html/independence-sys.net/main/wp-content/plugins/amazonjs/amazonjs.php on line 637

Notice: Trying to access array offset on value of type null in /virtual/indpsys/public_html/independence-sys.net/main/wp-content/plugins/amazonjs/amazonjs.php on line 637

Notice: Trying to access array offset on value of type null in /virtual/indpsys/public_html/independence-sys.net/main/wp-content/plugins/amazonjs/amazonjs.php on line 637

Notice: Trying to access array offset on value of type null in /virtual/indpsys/public_html/independence-sys.net/main/wp-content/plugins/amazonjs/amazonjs.php on line 637