皆さん、550円で買えるコンピュータ、Raspberry Pi Picoをご存じでしょうか?
今回は、そんなRaspberry Pi Picoを使った作品例として簡易温度計を作ってみたいと思います。
必要な材料はなんとRaspberry Pi Pico本体と小型ディスプレイと配線用の部品だけ!
非常に簡単に作ることができますので是非お付き合いください。
その前にRaspberry Pi Picoについて少し知っておきたいという方は以下の記事が参考になるかと思います!

・この記事で分かること
・温度センサーの扱い方 ・ディスプレイの操作 ・サンプルコード
材料
使用した材料を以下にまとめます。
- Raspberry Pi Pico本体(はんだごてを持っていなければピンヘッダがついている本体を買いましょう)
- Raspberry Pi Pico用ピンヘッダ(ピンヘッダ付きの本体を買った人は不要です)
- ジャンパーワイヤ
- ブレッドボード
- 0.96インチ 128×64ドット有機ELディスプレイ(OLED)
- 電源(パソコンからMicroUSBで)
温度計に使う温度センサはRaspberry Pi Pico本体に内蔵されていますので、今回は用意していません。
入手方法ですが、ディスプレイは秋月電子通商さんで購入しました。
ディスプレイは1つ580円となかなか安かったため、部品の総額1500円~2000円くらいでしょうか。
一応使用したディスプレイのカタログページを載せておきます。
作り方
完成イメージ
今回作る温度計のイメージを図1に示します。

今回作る温度計では温度センサの情報をRaspberry Pi Pico本体が受け取り、ディスプレイに表示させています。使用する温度センサはRaspberry Pi Pico本体に内蔵されています。
配線準備
まずは、配線するためにRaspberry Pi Picoにピンヘッダをはんだ付けしていきます。
下手ですが図2のようにはんだ付けを行いました。

本体にピンヘッダをはんだ付けできたら、本体を図3のようにブレッドボードに差し込ます。

次にディスプレイの確認をしていきましょう。今回購入したディスプレイの表面を図4、裏面を図5に掲載します。
図4 図5
図を見ると裏面に4本のピンがあることが確認できます。ここから、このディスプレイは4本のピンから情報を受け取り、画面に表示させる仕組みということが分かります。
つまり、この4本とRaspberry Pi Pico本体を接続させるように配線し、プログラムから適切に温度センサの情報を送るようにすれば画面が映ります。(プログラムが分からなくてもサンプルコードを載せますのでご安心ください)
それでは、配線を始めていきます。
配線
ここからディスプレイの4本のピンとRaspberry Pi Picoのピンをジャンパーワイヤでつなげていきます。
みなさん、その前にブレッドボードにささっている本体のピンに、どのようにしてワイヤをつなげるのか気になっていませんか?
実はブレッドボードの穴たちは中で横方向につながっており、ピンが刺さっている横の穴にワイヤを差し込めば、ワイヤと横のピンは接続されます。
このことを頭に入れて配線を始めていきましょう。
では、ディスプレイの4本のピンをRaspberry Pi Picoのピンのそれぞれどこに接続するのかを以下の対応表に示します。
この表はVSYSとVCCをつなぐ、GP20とSDAをつなぐ…といった具合で見てください。
Raspberry Pi Picoのピン | ディスプレイ |
GND | GND |
VSYS | VCC |
GP21 | SCL |
GP20 | SDA |
ここで注意しなくてはならないのは、 Raspberry Piのピンにはそれぞれ公式に番号が設定されており、ブレットボードの穴の数字とは別である点です。
もちろん 対応表のRaspberry Pi Picoのピン番号も公式のものを記載していますので間違えないように注意しましょう。
番号はRaspberry Pi Picoの公式サイトから見ることができます。
プログラム
配線ができたら、温度センサから温度の情報を受け取り、ディスプレイに送るプログラムを作成します。
今回はサンプルコードとしてRaspberry Pi Picoの公式サイトに掲載してあったものを私が改変し、作成したプログラムをを掲載しておきます。
import machine
from ssd1306 import SSD1306_I2C
from machine import Pin, PWM, ADC
import time
from random import randint
WIDTH = 128
HEIGHT = 64
i2c = machine.I2C(id=0,sda=machine.Pin(20), scl=machine.Pin(21))
i2c.scan()
display = SSD1306_I2C(128, 32, i2c)
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)
while True:
display.fill(0)
reading = sensor_temp.read_u16() * conversion_factor
# The temperature sensor measures the Vbe voltage of a biased bipolar diode, connected tothe fifth ADC channel
# Typically, Vbe = 0.706V at 27 degrees C, with a slope of -1.721mV (0.001721) per degree.
temperature = 27 - (reading - 0.706)/0.001721
time.sleep(2)
display.text(f'The temperature', 0, 0, 1)
display.text(f'is {temperature} "C', 0, 12, 1)
display.show()
実行環境の準備
実行環境については、Thonyというアプリを使って実行していきます。以前の記事で実行環境の構築を解説していますので以下の記事をご覧ください。

しかし今回は通常の実行環境に加えて、ディスプレイを表示させるために、Thonyの拡張機能を使う必要があります。
拡張機能をインストールするためには、まずThonyの編集画面の上部にあるメニューバーの「ツール」より「Manage packages..」をひらきます。(図6)

開いたら、ウインドウ上部の検索バーに「ssd1306」と入力しましょう。すると図7のようにmicropython-ssd1306が見つかるので、クリックしインストールを選びます。

これで準備は完了です。
実行テスト
実際に動かしてみます。図8のような何も書いていないファイルに、サンプルコードを張り付け、左下の実行場所をRaspberry Pi Pico(maicropython)を選びます。

動かした結果は図9のようになりましたのようになりました。うまくいったかと思います。

まとめ
今回は、Raspberry Pi Picoを用いて簡単な温度計を作ってみました。材料費も安く、簡単ですので皆さんも是非作ってみてください。
ありがとうございました!
コメント