【外部電源不要!】電池駆動のPicoで温度監視センサーを作製する(初心者向け)

pico_3steps_4 Raspberry Pi
pico_3steps_4

本記事の内容

  • Raspberry Pi Picoを用いて、「最初に遊べること」と「作製できるもの」をステップごとに紹介します。最終ステップでは電池駆動の温度監視センサーを作製します。
  • Raspberry Pi Picoの初心者向けに、必要なもの一覧やプログラムコードを丁寧に説明しています。

はじめに

前回の記事の通り、Raspberry Pi Picoのメリットは、「安い」「小さい」「電池駆動できる」です。正直それ以外は、「内蔵時計がない」「データ保存先がない」「Wi-Fiにつながらない」「標準搭載センサーが温度しかない」など機能不足でしかありません。

そんな不満ばかりのRaspberry Pi Picoですが、買ったからには何かには使おうかと思います。今回は外部電源なし・電池駆動で、Raspberry Pi Picoで「最初に遊べること」と「作製できるもの」を初心者でも分かりやすいように順番に紹介していきます。

本記事の最後まで無事にたどり着ければ、立派な「電池駆動の温度監視センサー」が作製できます。冷蔵庫に入れて温度チェッカーとしても良し、キッチンに置いて火災報知器にしても良し、この機にRaspberry Pi PicoをIoT成果物として日常生活に取り入れてみましょう。

created by Rinker
¥937 (2024/07/24 09:56:27時点 楽天市場調べ-詳細)

【STEP1】LED点滅

【難易度】★☆☆☆☆
【所要時間】(Thonny Python IDEのインストールに10分)+20分
【必要なもの】Raspberry Pi Pico、Micro-USBケーブル

pico_3steps_1
pico_3steps_1

まずは購入したRaspberry Pi Picoが壊れていないか確認するためにも、LED点灯プログラムを実行することが第一ステップとしてちょうどいいでしょう。

Thonny Python IDEのインストール

Thonny Python IDEは、Raspberry Pi PicoのMicroPythonを開発する環境です。もし手元にRaspberry Pi 4Bがあれば、 Thonny Python IDEが標準でインストールされているので、そちらを利用しても大丈夫です。

こちらは公式ページからWindows/mac用をインストールできます。

Raspberry Pi Picoの接続

Raspberry Pi PicoにMicroPythonを簡単にインストールする方法は、Raspberry Pi財団のHPにも書かれています。ステップとしては以下の通りです。

①BOOTSELボタンを押しながらPCとMicro-USBケーブルで繋ぐ

②エクスプローラに表示されたRaspberry Pi Picoから、「index.htm」を開く

pico_3steps_1_2
pico_3steps_1_2

③index.htmを開いた先(Raspberry Pi財団のHP)から、「MicroPython」を選択

pico_3steps_1_3
pico_3steps_1_3

④HPの動画の通り、MicroPython UF2 fileをダウンロードし、ドラッグアンドドロップでRaspberry Pi Picoにインストールする

です。インストール後はエクスプローラからRaspberry Pi Picoが消えますが、所定の動作なので心配しないでください。

先にインストールしたThonny Python IDEを開くと、自動でRaspberry Pi Picoを認識します(右下)。※メニューバーの「表示」>「ファイル」にチェックを入れると、以下のような表示になります。

pico_3steps_1_4
pico_3steps_1_4

あとはThonny Python IDEでLEDを点灯するPythonコードを記述するだけです。

led.pyの作成

コードは以下の通りです。Pin25がRaspberry Pi Picoに内蔵されているLEDのピン番号になります。

import machine
import utime

led = machine.Pin(25, machine.Pin.OUT)

while True:
    led.value(1)#点灯
    utime.sleep(0.1)
    led.value(0)#消灯
    utime.sleep(0.1)

点灯・消灯タイミングを調整して、何かのリズムにしてもいいですね。

【STEP2】LED点灯(電池駆動)

【難易度】★★☆☆☆
【所要時間】15分
【必要なもの】Raspberry Pi Pico、電池ボックス(単三電池×2本
(追記)単三電池2本では48時間程度で切れてしまうため、4本をお勧めします

pico_3steps_2
pico_3steps_2

次にRaspberry Pi Picoならではの電池駆動をさせてみましょう。他のRaspberryではケーブルを繋いだ電源供給が常時必須ですが、Raspberry Pi Picoは1.8~5.5Vの直流電源をピンにかけるだけで動作することが可能です

main.pyの作成

Raspberry Pi Picoでは「main.py」と記録したコードがあると、次回起動時にそのプログラムが自動実行されます。

したがって、先のLED点滅プログラム「led.py」を「main.py」と名前を変えるだけで完了です。

電池の接続

あとは、Raspberry Pi PicoをPCから外して、電池から電源供給させます。繋ぐピンは、+を39番「VSYS」、ーを38番「GND」です。

pico_3steps_2_1
pico_3steps_2_1

勝手にLEDが点滅すれば成功です。

【STEP3】温度測定

【難易度】★★☆☆☆
【所要時間】15分
【必要なもの】Raspberry Pi Pico、Micro-USBケーブル

pico_3steps_1
pico_3steps_1

続いて、Raspberry Pi Pico唯一の基盤内蔵センサー「温度センサー」を利用してみます。

先に書き込んだmain.pyの停止

ここで厄介なのは、Raspberry Pi Pico内に「main.py」があると、次回以降PCに接続しても勝手に実行されてしまう現象です。

“Device is busy or does not respond.”というエラーがShellに表示されて、それ以上コードを書き換えることができなくなってしまいます。

この問題は私もかなり苦戦しましたが、こちらの方が解決してくださっていました。「Cntl+D」⇒外す⇒「Stopボタンを押す」でmain.pyの実行を停止できます。

tempcalc.pyの作成

温度測定のコードは以下の通りです。測定中はLEDが点滅するようにしています。

import machine
import utime

led = machine.Pin(25, machine.Pin.OUT)

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)
      
    led.value(1)
    utime.sleep(0.1)
    led.value(0)
    utime.sleep(0.1)

実行後は1.1秒に1回温度が測定されます。ただし、printしたところで温度を見る方法がないため、ディスプレイで表示する方法は以下の記事を参考にしてください。

【応用】温度監視センサー(電池駆動)

【難易度】★★★★☆
【所要時間】40分
【必要なもの】Raspberry Pi Pico、ブザー、ブレッドボード、単一列端子ピンヘッダー、電池ボックス(単三電池×2本) 、ケース(余裕があれば)
【注意点】要はんだ付
(追記)単三電池2本では48時間程度で切れてしまうため、4本をお勧めします

pico_3steps_3
pico_3steps_3

最後は、応用編です。これまでのコードを組み合わせて、温度監視センサーを作ってみます。監視中はLEDを点滅させて、温度異常時はLEDを点灯+ブザーを鳴らすというセンサーです。

我が家では安い冷蔵庫を買った結果、戸開閉センサーが付いていません。そのため、扉を開けっ放しにしても気づかないことが多々あるので、冷蔵庫の温度が上がったらアラームで知らせる装置として利用してみたいと思います。

ハードの準備

安定して可動させるため、Raspberry Pi Picoははんだ付けをして、ブレッドボード上に置きます。

pico_3steps_4
pico_3steps_4

回路図は至ってシンプルで、以下の通りです。

STEP2と同様に、+を39番「VSYS」、ーを38番「GND」に繋いだうえで、ブザーの+を34番「GP28」、ブザーのーを38番「GND」に繋ぎます。

main.pyの作成

今回は以下の「main.py」を作成し、Raspberry Pi Picoに書き込みました。

import machine
import utime

led = machine.Pin(25, machine.Pin.OUT)
sound = led = machine.Pin(28, machine.Pin.OUT)

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

sound.value(0)

while True:
    reading = sensor_temp.read_u16() * conversion_factor
    temperature = 27 - (reading - 0.706)/0.001721
    print(temperature)
      
    led.value(1)
    utime.sleep(0.1)
    led.value(0)
    utime.sleep(0.1)
    
    if temperature > 12:
        sound.value(1)

温度は12度を超えるとブザーが鳴るように設定しています。冷蔵庫で12度はかなり緩い設定ですが、夏場に鳴りすぎても困るので、余裕を持たせました。

完成姿

外見はただのプラスチックケースですが、温まると自動で鳴り出す温度監視センサーの完成です。

(追記)電池2個で動作することは可能ですが、二日ほどでRaspberry Pi Picoは止まっていました。電池はまだ使えましたが、電圧降下で1.8V未満になってしまったことが原因かと思われます。

まとめ

安い、小さい、電池駆動できる、というメリットを持ったRaspberry Pi Picoはセンサーとして使用する方法が一番実用的かと思います。

ケーブルによる外部電源供給が必要なければ、用途はかなり広がります。ブザーを鳴らす程度であれば、単三電池で十分駆動するので、今回は温度監視センサーを作製しました。

冷蔵庫の扉閉め忘れセンサーや火災報知器としてRaspberry Pi Picoを是非活用してみてください。

コメント