Amazon 初売り

« はんだ付けで Raspberry Pi Pico にピンヘッダとリセットボタン:Captain Resetti (Pico Reset Button) をつけよう(はんだ付け講座動画あり) | トップページ | 目次を自動生成するJavaScriptを導入してみた! »

2023.03.28

Raspberry Pi Pico に標準搭載の温度センサーで温度を取得してみたが、精度が悪すぎじゃなかろうか

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Raspberry Pi Pico には温度センサーが標準で付いている。

このため、温度取得のプログラムを組めば、プログラム開発した PC 周辺の温度が取得できるんじゃないかと思っていた。

そんな時期もありました…

Raspberry Pi Pico で取得する温度が、実際の温度と大分違うんだが…(´・ω・`)
何か違うのかなぁ?

目次

参考にしたサイト

【Raspberry Pi Pico】温度センサーをMicroPythonで読み取る方法」のプログラム通りのものなんだが・・・(´・ω・`)

実際のプログラムはこんな感じ

import machine
import utime
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

while True:
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
print(temperature)
utime.sleep(1)

このプログラム自体は、Raspberry Pi の GitHub で公開されているサンプルプログラム temperature.py と同じなのでプログラムが間違っているわけではなさそうだ。

SwitchBot 温湿度計やアナログの温度計と大分違う値になってる

SwitchBot 温湿度計の示す温度は27.0℃。
アナログの温度計のしめす温度も27.0℃。

そして、Raspberry Pi Pico の示す温度が22.36296…

Raspberry Pi Pico の温度センサーの精度がどのくらいかわからないけど、さすがに5℃の差はおかしいんじゃないだろうか?

精度の問題で、しばらくしたら落ち着くかな?と思って1日放置してみたが、5℃の違いは変わらず…(´・ω・`)

プログラムに解説コメントを付け加えてみたら何か分かるかな?

ついでに、思ったことも書いていくよ。(*^^*)

Raspberry Pi Pico の内蔵温度センサの値取得のプログラム解説コメント付き

import machine
import utime

# 温度センサが接続されている4つ目のADC(アナログデジタルコンバータ)の値を取得
sensor_temp = machine.ADC(4)

# ADCの最大電圧3.3Vを16bit(2の16乗である65536、0スタートの値のため、-1して65535)で割って、
# 16bitの 1 目盛りのあたりの電圧(変換係数)を計算( 約 0.00005V)
conversion_factor = 3.3 / (65535)

while True:

# センサから取得した値(0~65535) を16bitの値に変換係数をかけて電圧値に変換
reading = sensor_temp.read_u16() * conversion_factor

# 温度計算
# ・センサは27℃(0.706V)を基準にしている
# ・1℃に付き0.001721V変化する
# 27℃から温度変化量(温度センサの数値から基準値である0.706を引いた値に1℃ごと電圧変化量が何℃分か計算した値)を引いて現在温度を計算
temperature = 27 - (reading - 0.706)/0.001721

print(temperature)
utime.sleep(2)

理屈が分かってみると

センサーから取得された値を温度に変換する計算式は正しいっぽい。

(公式で公開されているプログラムだから正しいんだろうが…)

ということは、Raspberry Pi Pico 内蔵の温度センサーは、標準の実装のままだと、もともとかなりの誤差が生じるか、何か値を補正する処置が必要ってことなんだろう。

つまり、Raspberry Pi Pico 内蔵の温度センサーから値を取得するより、別途環境センサーをつけて温度を取得したほうが精度が良さそう。

正直、これだと Raspberry Pi Pico 単体でできることって「単色 LED による Lチカ」くらいなんで、かなり微妙な気がする。

以前「Raspberry Pi Pico の初期設定(その1)」に書いたように、Raspberry Pi Pico には標準では無線通信( Wi-Fi や Bluetooth )の機能がないため、IoT(モノのインターネット)に向かない上、値を表示するディスプレイも無いのでセンサーを付けたとしても、センサーの値を表現する方法も「単色 LED でできる表現」だけだからだ。

単色 LED でできる表現

単色 LED で表現できることは、かなり限られていると思う。

  • LEDの消灯
  • LEDの点灯

この2つに加えて良いところ、

  • LEDの点滅速度(速い点滅)
  • LEDの点滅速度(遅い点滅)

このあたりだろう。

つまり、最大でも4つの状態を表すのが限界なんじゃなかろうか?

単色でなく RGB 指定可能な LED であれば、色も加えて「色数 x 4つの状態」でかなりの状態を表現ができるんだけどね。(例えば、 Nature Remo や Nature Remo E lite は、RGB LED のおかげで、点滅状態により、いろいろな状態が分かるようになっている

結論

  • Raspberry Pi Pico は、単体の電子工作デバイスとしてかなり微妙。
  • 単体では通信機能がないため、IoT(モノのインターネット)には向かない。
  • 標準で付いている温度センサーの取得値も誤差がありすぎて、使い物にならない。
  • 単色 LED で表現できる状態が4種類までで、他に単体での出力機能がない。

PC に接続してればデバッグ用のUSBシリアルポートの printf ができるけど、PC に繋いでいないと使えないし…。

何か外付けでつなぐにしてもピンヘッダが必要になる。

ピンヘッダ付きの Raspberry Pi Pico が 990 円であり、それに接続する外付け機器が追加で必要になってくる。

最初から Wi-Fi や BLE が使えて GPIO ピンもあり、Grove互換インターフェースもあり、プログラム可能なボタンと RGB LED を持つ M5Atom Lite が 1,353円なのことを考えると(400円で外付けできるものが限られていることから)電子工作用デバイスとしては、Raspberry Pi Pico は、コストパフォーマンスがかなり微妙な気がする。

もっとも printf ができるから MicroPython の学習用デバイスとしては、良いかなぁくらいだと思う。

ただし、ピンヘッダをつけて、外付けで使えるものをいろいろ揃ってしまえば、使い道はあるんじゃないかとは思う。

実際、かげさんも「Groveスターターキット(Raspberry Pi Pico用)」というのを買っていたりする。かげさんが購入した頃より、値上がりしているが…

これについては、別の記事に書こうと思う。

ここまではOKだ


 このエントリーをはてなブックマークに追加

| |コメント (0)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。