Raspberry Pi Pico プロジェクトガイド

Raspberry Pi Pico Wを使ってものづくりをどのように進めていくかのガイドです。

Raspberry Pi Pico プロジェクトガイド

Raspberry Pi Pico 2 W を使ったプログジェクトガイドです。今回はCO2センサーを使って、記録をweb画面で見る事ができるようにする仕組みを作ってみようかなと考えています。

一気に進めることは難しいかもしれませんが、細かく噛み砕いて小さな一歩を繰り返すのが成功のコツです。

全体の流れ

ゴールを決める
最初にどのようなものを作りたいのか決めます。例えば、「二酸化炭素濃度をインターネット上でグラフを見られるようにする」のような何をしたい、という部分を決めます。
実現方法を決める
CO2センサーにはどの程度の精度が必要なのか、何分おきのデータが見たいのか、インターネット上で表示するにはサイトを構築するのか、もしくはなんらかのサービスを利用するのかなど決めたゴールに対してモノを作ることができる情報に落としていきます。
プロトタイプを作る
ブレッドボードやユニバーサル基板を利用してプロトタイプを作ります。このタイミングでこのセンサーは使えない、配線の難易度が高い、どこから5Vを取るのかなどの問題を取り除いていきます。
運用方法を考える
使い出して1週間も経つと「あれこんなハズじゃなかった」という問題点や、「こうだったら良いのに・・」が出てくるのでその都度変更していきます。市販品ではこの微調整をすることができないので、これが自分でモノを作る醍醐味です。

自分しか必要ないマニアックなデバイスを作れるのが醍醐味!

MEMO

I2C(Inter-Integrated Circuit、アイ・スクエアド・シー)は、複数の電子デバイスを接続するための通信プロトコルです。主に、マイクロコントローラー、センサー、メモリチップなどを小さな距離間で接続するのに使用されます。
ちなみに距離が伸びると仕組み上安定させるのが難しくなるので、あくまでも近距離での利用がおすすめです。できるからといって距離を伸ばす後から後悔する羽目になります。

ゴールを決める

まずは箇条書きで、完成した際に何ができるのか書き出していきます。

  • 部屋のCO2濃度を5分おきに計測したい。
  • CO2濃度はそのデバイスでリアルタイム表示されている。
  • インターネットで見れる。(これは後からでも良い)
  • 最低3箇所設置

だいたいこの程度で十分なので、次はこのゴールを達成するには何が必要か洗い出していきます。

実現方法を決める

では上で作った箇条書きをどのように実現していくのか決めていきます。最初は実現方法がわからない場合もありますが、ChatGPTなどのAIに「どのように実現できるか」聞くのも手です。

  • 部屋のCO2濃度を5分おきに計測したい。

まず5分おきに計測するためにはどのようなセンサーが必要になるか調べます。といっても一般人がCO2センサーの種類は知る由もないので検索やAIを使って調べていきます。

普通の人類はCO2センサーの種類なんて知らないんですよ!

屋内のCo2濃度を5分おきに計測したいと考えていますが、どのようなセンサーがありますか?3つほど代表的なものを挙げてください。

屋内でCO2濃度を5分おきに計測するためには、信頼性が高く、自動で測定データを取得できるセンサーが必要です。以下に、屋内のCO2濃度計測に適した3つの代表的なセンサータイプを挙げます。

1. NDIR (非分散赤外線) センサー

  • 説明: NDIRセンサーは、CO2分子が特定の波長の赤外線を吸収する性質を利用して濃度を測定します。このタイプのセンサーは精度が高く、長期間にわたって安定した測定が可能です。室内の空気質監視に広く使用されています。
  • 例: SenseAir S8、MH-Z19B

2. MEMS (マイクロ電気機械システム) センサー

  • 説明: MEMSセンサーは、小型で低消費電力の特性を持ち、CO2濃度だけでなく温湿度も同時に測定できるものが多いです。NDIR技術をミニチュア化した形であり、スマートホームシステムやポータブル空気質測定器に適しています。
  • 例: SCD30、SCD4xシリーズ

3. 化学センサー

  • 説明: 化学センサーは、CO2と特定の化学物質が反応することにより濃度を測定します。このタイプのセンサーは一般的にはNDIRセンサーよりも低コストですが、定期的な校正や交換が必要になる場合があります。短期的なプロジェクトやコストを抑えたい場合に選択されることがあります。
  • 用途: 一時的な調査や教育目的での使用など

これらのセンサーは、屋内のCO2濃度を定期的に監視するために適しており、5分おきの計測要件にも対応可能です。選択する際には、必要な精度、コスト、設置環境、使用目的を考慮することが重要です。

ChatGPTでは3種類あげてもらいましたが、具体的にセンサー名があげられている部分に注目します。

記載されていたのは SenseAir S8,MH-Z19B,SCD30,SCD4x の4種類です。では順番に検索してセンサーがRaspberry Pi Picoといっしょに使いやすいのか調べていきます。

動作電圧

Raspberry Pi Picoに限らず用意しやすい電圧は3.3vか5vの2種類です。低消費電力を目的としたセンサーなどでは1.8vのものなどもあります。2025年時点ではまだまだ1.8vあたりのセンサーは少ないですが、将来的には低電圧化が進んでいくものと思います。

通信方式

Raspberry Pi Picoは様々な通信方式に対応していますが i2c, SPI, UART,PWM,アナログ値などがセンサーから値を読み取る方法として代表的です。

また設置することになるので、センサー自体のサイズがコンパクトであればあるほど良く、いくつか設置する場合は値段が安い方が良いです。

SenseAir S8

https://senseair.com/product/s8/

検索してみるとすでに後継機種のS88が販売されています。電圧は5vで通信方式はUARTかModbus​、計測レンジは 0-10,000ppmでした。製品の設計寿命は15年です。

MH-Z19B

https://www.winsen-sensor.com/sensors/co2-sensor/mh-z19b.html

こちらも電圧は5vですが、金ピカの箱でなんだか強そうです。UART, PWMで Pico とはデータのやり取りを行えます。計測レンジは若干低めの 5,000ppmまでとなっていますが部屋のCO2濃度が5,000ppmを超えている状況はほぼ無いため計測レンジとして必要十分といえます。ちなみに設計寿命は 5 年以上となっています。

SCD30

https://www.sensirion.com/products/catalog/SCD30/

対応電圧は 3.3 - 5.5vと広く、インタフェースもI²C,ModBus,PWMと充実しています。計測レンジも 400-10,000ppmと十分です。また設計寿命も15 年と長く、扱いやすそうです。

MEMO

大気中のCO2濃度はおよそ 400ppm のため、換気を行っても400ppm以下には下がりません。そのため、400ppm 以下の値は特殊な環境でないかぎり計測する理由がありません。

SCD4xシリーズ

https://www.sensirion.com/products/catalog/SCD40

基本的にSCD30の後継となる製品のようです。計測レンジが 400-2,000ppmと狭くなっていますが、とにかくコンパクトです。動作させるのに必要な電圧は2.4v-5.5vで、通信方式はi2cのみ、設計寿命はSCD30の15年に対し10年と短くなっています。値段は若干SCD30より高めです。

ちなみにSCD41という形状が似たようなセンサーもあり、計測レンジが広くや消費電力などが異なっています。

センサーを選ぶ

それぞれのセンサーの優劣もありますが、様々な電圧やインタフェースに対応しており、さらにコスパも悪くないSCD30を選択しました。

SCD40もついでに買った!

表示はどうする

センサーからのデータは随時サーバーに対して送信する予定なので、デバイス自体で値が見える必要は無いのですが、やっぱりほしいよねって事で7セグLEDをつけることにしました。

7セグLEDとは

7セグメントLED(7-segment LED)は、数字やいくつかの文字を表示するために使用される表示器です。基本的には表示できるパターンが決まっているため柔軟性は低いですがモニターと比べると安価で耐久性が高くなっています。カラーのものもごくまれに存在していますが、基本的に利用されているLED色1色でのみの表示です。

0.56インチ 7セグLED

プロトタイプを作ってみる

ではパーツ選定が終わったので実現可能かブレッドボードなどで試すことが重要です。試行錯誤しているしているうちに、この方が良いなどもこのタイミングで出てきます。

プロトタイプの完成イメージ

配線

まずは配線をしていきますが、センサーとRaspberry Pi Pico のピンをつなぐ作業になるので、データシートと呼ばれるドキュメントを見比べながら配線していきます。

https://www.sensirion.com/products/catalog/SCD30/

右の図にあるピン配列を見ていくと、左から順に VDD, GND と続いており、それぞれのピンに何を接続すべきか記載されています。VDDは電源ピンで、3.3 ~ 5.5v に対応しています。

ピンとは

電気的な接点の事で、厳密にはピン自体は画鋲の針のような形をしているもののみを指すハズですが、Picoのようにパッド型の電気的な接点もピンと呼ぶ場合があります。

では次にRaspberry Pi Picoのピン配置を見ていきます​

https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html

どのピン同士を接続するか判断するために電源の5vを例に出すとPico側の40番がVSYSとなっており、これはピコの電源供給ラインと同じで、USB接続した場合5vが供給されます。もし3.3vセンサーの場合は36:3V3(OUT)と書かれているピンへ接続します。

次に今回はSCD30センサーとi2cで接続するので、Raspberry Pi Pico側のi2cピンの名前が合っているピンへ接続していきます。

今回は以下のように決めました。

概要 SCD30 Raspberry Pi Pico
電源 5v VDD 40:VBUS
GND GND GND(GNDならどこでも良い)
I2C クロック TX/SCL 7:I2C0 SCL
I2C データ RX/SDA 6:I2C0 SDA
I2CにTX/RXって無いんじゃ・・

SCD30のデータシート記載のピン名と一致させているため記載しています。

ちなみにSCD30にはRDYやPWMのピンがありますが、説明を見る限り今回は使わなくても大丈夫そうなので配線はナシです。

何はともあれ一旦このタイミングでなんとなくでも良いので動いている状態を作ることが大切です。

とりあえずなんとなく動いてたらOK!

部品のリストを作る

必要なパーツがわかったので部品のリストを作ります。このリストはBOMと呼ばれています。

BOMとは

Bill of Materialsの頭文字を取ったもので、どのような部品がいくつ必要になるか記載されています。汎用的な抵抗やコンデンサなどはたまに省略されている場合もあったりしますが基本的には部品番号、部品名、規格、数量、メーカー、供給元の情報が記載されています。

今回はここまで、動画と共にこの記事も徐々に追記していきます。

まだ出来上がっていないので完成までに色々変更するかも!


References

  1. Raspberry Pi Documentation https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html
記事の内容は間違いが無いように気をつけていますが、私の認識違いや、ミスなどにより間違っている可能性もあります。もし発見された場合はお問い合わせフォームよりご連絡頂けると幸いです。