Raspberry Pi 3でpythonを使い「温度(A/Dコンバーターを利用)」を検出する!

  • 5
    Like
  • 0
    Comment
More than 1 year has passed since last update.

はじめに

「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!
現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!
優しいIT活動の一環として「教育用ようにプログラミング可能なPCを安価に提供する」理念の「Raspberry Pi 3(通称ラズパイ)」の紹介をします!

今回は、明るさを検知します!
アナログの温度センサーとA/Dコンバーターを利用した温度センサーです!
ラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17 13 安価な温度センサーを使えるを参考にしています。

手順

  1. 配線
  2. プログラム temperature_sensor.py
  3. プログラムを動かす

1. 配線

配線図は、ラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17 13 安価な温度センサーを使えるそのままです。

回路の写真を参考までに、こんな感じというイメージになれば
Raspberry Pi 3でpythonを使い「温度(ADコンバーターを利用)」を検出する!回路.jpg

動画にもしました
動画解説クリック→

テキスト版
ラズパイ側から

  • ラズパイ 1番ピン(3.3V) - ADコンバーター 8 Vdd
  • ラズパイ 2番ピン(5V) - アナログ温度センサー 左側
  • ラズパイ 19番ピン(MOSI) - ADコンバーター 5 MOSI
  • ラズパイ 21番ピン(MISO) - ADコンバーター 6 MISO
  • ラズパイ 23番ピン(SCLK) - ADコンバーター 7 CLK
  • ラズパイ 24番ピン(CE0) - ADコンバーター 1 CS
  • ラズパイ 6番ピン(GND) - ADコンバーター 4 Vss
  • ラズパイ 6番ピン(GND) - アナログ温度センサー 右側

ADコンバーターから(差分だけ)

  • ADコンバーター 2番ピン(CH0) - アナログ温度センサー 中央

2. プログラム temperature_sensor.py

プログラムもラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17 13 安価な温度センサーを使えるを参考にしています。

GitHubにソースをアップしているので、お好きにお使いください。

gitでcloneする
$ git clone https://github.com/RyosukeKamei/raspberrypi3.git
temperature_sensor.py
# GPIOを制御するライブラリ
import wiringpi
# タイマーのライブラリ
import time

# MCP3002(A/Dコンバータ)を接続したチャンネルを指定
SPI_CH = 0

# 読み込み対象のMCP3002(A/Dコンバータ)のアナログ入力チェンネルを指定
READ_CH = 0

# SPI初期化
wiringpi.wiringPiSPISetup( SPI_CH, 1000000 )

while True:
    # MCP3002(A/Dコンバータ)に送るデータを作成
    buffer = 0x6800 | ( 0x1800 * READ_CH )
    buffer = buffer.to_bytes( 2, byteorder='big' )

    # SPIを使ってCH0の値を取得
    wiringpi.wiringPiSPIDataRW( SPI_CH, buffer )

    # 値が2バイトに分かれて送られるので、1つの値にまとめる
    input_value = ( buffer[0] * 256 + buffer[1] ) & 0x3ff

    # 入力値を電圧に変換
    volt = input_value * 3.3 / 1023

    # 取得した電圧に100をかけると温度が求められる
    temperature = volt * 100

    # 表示
    print ("温度 : ", temperature, " 電圧 : ", volt)

    # 1秒ずつ検出
    time.sleep(1)

3. プログラムを動かす

動かしている様子を動画に収めました。
動画解説クリック→

温度センサーを起動
$ sudo python3 temperature_sensor.py

サイトマップ

Raspberry Pi 3 (ラズパイ)セットアップ

Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作

Raspberry Pi 3 にDockerを乗せてPython+MySQL環境を構築!

RaspberryPi3(ラズパイ)にDockerをインストール
RaspberryPi3(ラズパイ)にDockerでPython+bottle+MySQL環境構築する!【簡単構築編】
RaspberryPi3(ラズパイ)にDockerでPython+bottle+MySQL環境構築する!【試行錯誤編】

Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!

Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!

Raspberry Pi 3 (ラズパイ)とpythonで遊ぼう

Raspberry Pi 3でプログラミングをする Node-REDと普通にプログラミング
Raspberry Pi 3でpythonを使いLEDを光らせる(Hello World)
Raspberry Pi 3でスイッチの状態を検出する
Raspberry Pi 3でpythonを使いサーボモータを動かす
Raspberry Pi 3でpythonを使いモータードライバーを使いモータを制御する!
Raspberry Pi 3でpythonを使いスライドスイッチを検出する!
Raspberry Pi 3でpythonを使い磁石スイッチを検出する!
Raspberry Pi 3でpythonを使い温度を検出する!
Raspberry Pi 3でpythonを使いブザーを鳴らす!
Raspberry Pi 3でpythonを使いA/Dコンバーターでアナログ信号を検出する!
Raspberry Pi 3でpythonを使い「明るさ」を検出する!
Raspberry Pi 3でpythonを使い「温度(A/Dコンバーターを利用)」を検出する!
Raspberry Pi 3でpythonを使い「7セグメントLED」に出力する!

テスト駆動開発を重点においた規則

コーディング規則「優しいコードを書こう」(FuelPHP)
命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」

Docker+PythonでWebアプリケーション開発

Docker上のCentOSにPython3と、関連ライブラリpip, virtualenvとフレームワークDjango, bottle, Flaskのインストール!これらをまとめたDockerfile付き!

開発しやすい環境構築(Docker+PHP)

Dockerを利用しApacheにPHP環境 + Eclipseを連携
Dockerを利用したFuelPHP開発環境構築
Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成
FuelPHPのデータベースマイグレーション