こんにちは! けい(Twitter)です。
今回は、Raspberry Pi Picoにデフォルトで搭載されている、温度センサーを使ってMicroPythonで温度を取得する方法についてまとめていきます。
目次
MicroPythonの環境構築
以前の記事でMicroPythonの環境開発を構築する方法についてまとめたので、それを参考にしてください。
MicroPythonのプログラム
Raspberry Pi公式のドキュメントを参考にします。
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)
コード解説
1,2行目
machineとutimeライブラリをインポートします。
今回使うのはmachineの中のADCというクラスです。
3行目
ADCクラスを使います。
ADCとはアナログ-デジタル変換回路のことで、アナログ値を読み取ってそれをデジタル値に変換する機能の事です。
ラズパイにはADCの機能がなく、アナログ入力をするためには外付けでADCを使う必要がありましたが、ラズパイPicoにはデフォルトで搭載されています。
温度センサーはADCの4チャネルに接続されているので、引数として’4’を渡しています。
4行目
何やら数式が出てきましたが、これはADCで読み取った値を変換するための計算です。
ADCは16ビットの値で返ってきます。つまり、2の12乗=65536で、0から始まるので65535で割っているわけです。
また、3.3Vをかけることで、ADCの読み取り値を0V~3.3Vに対応させています。
6行目~
while文で無限ループを作っています。
4行目でADCのインスタンスを生成し、read_u16関数で16ビットのADCの値を読み取っています。
8行目は温度センサーの値を補正するための計算式だそうです。詳しく知りたい方は公式ドキュメントを読んでください。
出力結果
print文で温度の結果を表示させているので、shellに順番に出力されます。
まとめ
今回は、Raspberry Pi Picoにデフォルトで内蔵されている、温度センサーをMicroPythonで扱う方法についてまとめてみました。
元々センサーが付いているだけあって、何も接続せずに温度が測れるのは便利ですね。
では!