雑に学ぶ電子工作入門 第3回:ラズパイPicoで「お水くださいセンサー」を作る

こんにちは! フリーランスライター/編集者のシモカワです。鬼の文系&電子工作経験ほぼゼロ! そんな私が、雑な電子工作と言えば! の石川大樹さんを講師に、ゆる~い電子工作に挑戦します。

今回は、何とホントに市販もされているらしい? あるアイテム作りにトライ! おいおい、わずか3回でそんなに成長しちゃっていいのかい!?

No more,無駄な殺生! 「お水くださいセンサー」を作る

突然ですが皆さん、「なぜだかついつい買い集めてしまう」モノってありませんか。私の場合、それは——観葉植物です。

昔から植物全般が好きで、高校生のときに初めて観葉植物を買ってからというもの、形や雰囲気が気に入るものがあればちょくちょく購入する日々。今は、12種類の観葉植物を育てています。

そこそこ古参の1つ、ペペロミア。社会人2年目でいただいて、すでに7年ほど育てています。

でも最近さすがに数を増やし過ぎて、水やりのタイミングが正確に読めなくなってきました。土が乾きかけているのが「あげた水の量が控えめだったから」なのか「そもそも水をあげてないから」なのか、判別できないのです。

で、疑心暗鬼になりながら水をあげてみたら、あげ過ぎたみたいで根腐れしちゃった……ということもしばしば。これはイカン。お迎えした以上、無駄な殺生をしてはならぬ! そんな切実な悩みを解決したいと石川さんに泣きつき、植物の水不足を検知してくれるセンサーを作ることになりました。

工作を始める前におしゃべりしていて、石川さんちにも枯れかけの植物があると判明。今日作るヤツ、お互いの家で活躍する予感です!

全体の手順は次の通りです。

1.MP3再生モジュールを動かす
2.土壌湿度センサーのテストをする
3.MP3再生モジュールと土壌湿度センサーを組み合わせる
4.土が乾いたら泣くデバイスが完成

今回は、水不足を音で知らせる準備とセンサーのテストをして、問題なければ完成! という流れで進めます。使用する材料はこちらです。

電子部品

  • Raspberry Pi Pico WH(←今回はWHのないPicoでもOK)
  • USBケーブル USB2.0 Type-Aオス⇔マイクロBオス
  • ブレッドボード BB-801★
  • ブレッドボード・ジャンパーワイヤー(オス-オス)
  • DFRobot Arduino用 土壌湿度センサー(Arduino Compatible)
  • DFRobot DFPlayer mini(MP3再生モジュール)
  • 圧電スピーカー PT-08★
  • マイクロSDカード

その他

  • マイクロSDカード変換アダプター(購入したマイクロSDカードに付属していない場合)
  • 観葉植物
  • 水が入ったコップ

※★の部品に記載されている型番は一例です

あら……前回よりさらに使う部品が少なくなりましたね。で、さっそくですが今回の材料にビビりポイントがあったので紹介します。ここです。センサーやMP3再生モジュールのパッケージに書いてあった、怪しげな(?)中国語の羅列!

模擬……ナントカ……土壌湿度……ナントカ感器? なんて?

ナントカ……放器……ナントカ? 読めない……何か放たれそうなことしか分からん!

おいおい大丈夫か!? 「小市民シモカワ、fabcross編集部と石川さんにだまくらかされてアブねえブツを買っちゃったぜ! これにてライター人生終了! 残念でした~☆彡 サヨナラ!」とかじゃないだろうな。

いや、センサーとスピーカーだろうなというのは分かりますよ。でも急に中国語が出てくると急に異文化感が増すじゃないですか。みんなこうやって手探りで部品を買ってドキドキしてんのかな。こういう経験を経て電子工作マスターになっていくのかな……。

で、収録日にやっと開けて「あっ、なんか大丈夫なヤツかも……」とこっそり安心したの図。


石川さん

今回はセンサーとMP3再生モジュールに、どちらも中国のDFRobotのものを使います。
特に後者は電子工作で音声を鳴らしたいときに使う定番部品なので、安心して使ってください。

今後いろんな作品を作っていくと、中国製部品に触れる機会もどんどん増えてくると思いますよ(僕は慣れているので中国製部品が怖いという発想すらなかった……!)。

最初に触るのが、植物の土が乾いたときに音を鳴らすためのMP3再生モジュール。「DFPlayer mini」という製品です。

そもそも「モジュール」って何? っていう話ですが、いくつかの電子部品を組み合わせて使いやすくした部品のことです。

料理でいうと「麻婆豆腐の素」みたいな感じ。たくさんの香辛料(電子部品)を使わなくても、これと豆腐(スピーカー)があれば、オリジナルのMP3プレーヤーが簡単に作れますよ。


1.MP3再生モジュールを動かす

一通り中国製部品にビビったところで本題に移りますか。MP3再生モジュールと圧電スピーカーを開封し、ブレッドボードに挿し込んでいきます。配線こそシンプルですが、線を挿す位置を間違えると、思うように動作してくれないので丁寧にやっていきます。

(画像:Fritzingで作成)

ポイントはなるべく、MP3再生モジュールをブレッドボードの端っこの方に挿していくこと。なんでも、今回は最終的にみちみちになるからだとか。ブレッドボードも、穴が30列あるものを推奨します。

とりあえず配線した後の写真。もうすでにモリモリ。

記事終盤にはこうなります。石川さんは自前のブレッドボードでは穴が足りなくて、2つ連結したそうです。

泣き声の準備もしましょう。泣き声は、効果音素材が無料でダウンロードできる「効果音ラボ」というサイトからお借りします(なんという便利な時代でしょうか!)。「DL」ボタンをクリックして素材をダウンロードし、マイクロSDカードに書き込みました。

今回は枠内の「うわあーーーん」を使用しました。

そして、そのマイクロSDカードをMP3再生モジュールに挿して、スイッチを入れてみると……


スピーカーが小さいせいか? ちょっと変な音になっちゃいました。ますますコワイ……。

うわああああ! 泣いたああああ! この後作るセンサーと組み合わせると、「えーん、水が足りないよー!!」という具合で泣き出すとか。

いやしかし、この声、コ、コ、コワイ……。ちょっと音割れしてるのがさらにホラー感を強めております。ひええ……。まあ、でも準備はうまく進んでるってことで……コワイのでスイッチをオフにして次に行きましょう。


石川さん

ちょっとつないでSDカードを入れるだけで、DFPlayer miniからMP3が再生できてしまいました。簡単! 「なんとかモジュール」系の部品は、こんな風につなぎ方さえ分かれば簡単に使えます。

つなぎ方ですが、だいたいのモジュールは「電源」(電池のプラスや電源の5Vなど)、「GND」(電池のマイナスや電源のGND)をつなぐピンがあります。そしてモジュールの種類により、「入力」(今回は再生ボタン※)、「出力」(スピーカー)のピンもあります。

※テスト回路では再生ボタンを省略、GNDに直結して常時ONとしています。

それぞれの機能がモジュールのどのピンに割り当てられているかは、データシートに書いてあります(データシートは購入店のサイト、メーカーのサイト、「部品名 datasheet」で検索、などの方法で手に入ります)。

DFPlayer miniデータシート 2ページより。
https://akizukidenshi.com/goodsaffix/DFPlayer_Mini_Manual.pdf

おっと……見ただけで「ウッ」となりますね! でも我慢してよく見ると、ピンとその役割、細かい説明が一覧表で書かれているな……ということまでは分かると思います。

とはいえ、最初は読み方が分かりませんよね。そんなときは部品の使い方を説明している動画やブログを探した方が手っ取り早いです。そのためには、できるだけみんなが使ってる定番の部品を選ぶことが大事。

使い方が分かったら併せてデータシートも確認する癖を付けておくと、だんだん読み方が分かってくると思います!


2.土壌湿度センサーのテストをする

続いて、土壌湿度センサーが本当に動くかどうかチェックします。センサーに付属のコネクターを挿し、水の入ったコップに入れてみましょう。ここで使うものは、ラズパイPicoとセンサー、ジャンパーワイヤーの3つです。以下の画像のように挿します。

(画像:Fritzingで作成)

で、最初にセンサーをジャンパーワイヤーでラズパイPicoとつなぐんですが……おや?

あっ! もしかして……。

こ、これは……前回の記事で「君、それでいいの?」と納得がいかなかったアレではないか!

コレ。

と、いうことはつまり……

案の定。

うわああああ! やっぱりぃぃぃ! 石川さんいわく、「これはこういう規格なのでいつもこんな感じになります」だそう。ムムム……。

でもさ、かと思えば「これはピタッと入れないとダメ」とか「配線はズレちゃダメ」とかいうケースもあるじゃないっすか……。こういう細かそうで細かくない、ちょっとだけ細かい電子工作的な? ところが、にわか電子工作っ子(?)にはムズいのである。


石川さん

なるほど、ここにムズさがあるとは思いませんでした! 気づきの多い連載だな……。

配線って、本質としては「つなぐべき端子と端子を銅線でつなぐ」です。導線(被膜)の色や形状、コネクターの太さは関係ないんですね。みっちみちでもぎっちぎちでも、線が抜けたり違う場所につながったりしないで、正しく電気が通りさえすればいいんです。割り切っていきましょう!


ま、なんだかんだ言いつつ無事に配線は完了です。うまくつなげたら、パソコンとラズパイPicoを接続。Mu Editorを立ち上げ、ラズパイPicoに以下のコードを書き込みます。

コード自体はすごーくシンプルです(このページ下部からプログラムをダウンロードできます)。

そして、赤枠内にある「実行」ボタンを押し、センサーを水の入ったコップに入れると……

Mu Editor上に新しく画面が表示され、なんと! 画面上に謎の数字がどんどこ表示されてきます。そしてこの数字、いつも同じではなく、センサーの状態で大きく変化しました。

数字が「160」のところはセンサーを手で持っている(=センサーが乾いている)状態、数字が3万以上のところは、水の入ったコップにセンサーをたっぷり浸している(=センサーがびしょびしょに濡れている)状態です。

面白いぐらい大幅に変化します。

ということで、センサーの濡れ具合によって数字が変わることが確認できたので、これでセンサーのテストは完了です。それにしても、電子部品を水入りのコップに入れる背徳感よ。これだけで、ちょっとやった甲斐があるなと思いましたもんね。

内心、「バチバチ! って感電したらどうしよう」とビビっておりました(しませんでした。ホッ)。


石川さん

このパートではセンサーの動作チェックをしました。このセンサー、2本の足(?)の間の水分量によって、出力(青い線)に電圧を返してくれます。水分が少ないときは低い電圧、多いときは高い電圧です。

こうやって電圧を返してくれるタイプのセンサーは、他にもCDSセル(光センサー)などいろいろあり、これを読み取るために使えるのが、マイコンのアナログ入力という機能。電圧の高低を読み取る機能です。

ラズパイPicoではアナログ入力に使えるピンが決まっていて、

ラズパイPicoのピン配置。
(公式サイト https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html より引用、赤矢印は石川)

ADCと書かれている3本がそう。ここではGP26のピンを使いました。
プログラム中では、1行目の

from machine import ADC,Pin

というADC機能を有効にする部分、そして4行目からの

Pin(26, Pin.IN)
sensor = ADC(0)

と書いてある部分が、アナログ入力の下準備です。

そして

print(sensor.read_u16())

この「sensor.read_u16()」のところが、センサーの電圧を読み取っているところですね。電圧が高いと大きい数字、低いと小さい数字になります。この数字はMu EditorのREPLという画面に出てきますので、もし表示されない場合は「REPL」のボタンを押してみてください。

なお、この部品はデータシートが見当たらなかったので、使うに当たってメーカーの公式Wikiを参考にしています。こうやってどこにあるか分からない資料を探すワクワク感が電子工作の醍醐味(だいごみ)!! ……でもあり、面倒くさいところでもありますね……。


3.MP3再生モジュールと土壌湿度センサーを組み合わせる

さあさあ、テストが完了したので、いよいよセンサーとMP3再生モジュールを合体させ、「お水くださいセンサー」を完成させますよ! それぞれを、以下のような配置になるようにブレッドボードに挿し込みます。

めっちゃモリモリ!(画像:Fritzingで作成)

そして再度Mu Editorを開いて、先ほどテストで使ったコードに「センサーの数値が基準以下なら音を鳴らす」という内容を書き足しました(もちろん石川さんが……)。

青枠内が書き足したり書き換えたりした部分です(このページ下部からプログラムをダウンロードできます)。

ではちゃんと泣いてくれるのか、試してみましょう。再び、水の入ったコップにセンサーを入れてみると……


センサーを水の入ったコップに入れると泣きやみ、コップから出すとまた泣き始めます。

おお! 泣いてますね。そして泣きやみますね。良い感じではないでしょうか。装置としては、これで完成です。やったぜ!

ちなみに基準となるセンサーの数値は、先ほどのテストで分かった「水にびっしょり濡れると3万~4万ぐらいの数字になる」という結果を踏まえて、ちょっと控えめの2万5000に設定してみました。あんまりびしょびしょだと、植物にとって水分量が多過ぎる! なんて事態になるかなと思ったためです。

この数字は後から調整できるので、センサーを使う植物の種類に合わせて変えると良いですね。


石川さん

この回路は、基本的には最初に作ったMP3モジュールのテスト回路と、次に作ったセンサーのテスト回路を合わせたものです。

ただ一点違うところがあって、それはMP3モジュールの鳴らし方。テスト回路では電源ONと同時に音が鳴るようにしていましたが、今回はラズパイPicoから「音を鳴らせ!」という信号を送っています。その経路となっているのが……

(画像:Fritzingで作成)

この青い線。2本の線(送信と受信)を使って相互通信できる、UART(ユーアート)という通信方式を使っています。

先ほどのセンサーとの通信では、電圧の高さで値を送りました。あれはアナログ通信の一種です。UARTはデジタル通信といって、コンピューターらしく0と1でできた信号を送ります。電気的には、0はLOW(0Vの電圧)、1はHIGH(3.3Vの電圧)。これを高速で切り替えて、信号を送っています。

アナログ通信とデジタル通信のイメージ。

UARTの具体的な使い方について説明すると記事が長くなりそうなので、ここでは「導線2本でデジタル通信できる仕組み」とだけ覚えておいてください。また次回出てきたときに詳しくご紹介します!

それからもう1つ、上の動画ではラズパイPicoをパソコンにつながずに動かしてますよね。そのやり方も説明しましょう。ラズパイPicoは記憶領域を持っているので、プログラムを書き込んで単独で動かせるんです!

やり方は……

①Mu Editorの「ファイル」を押すと、ファイルウィンドウが開きます。
※REPLウィンドウが開いていると押せないので、その場合は「REPL」ボタンを押して閉じてから押してください。

②ファイルウィンドウの「コンピュータのファイル」から、書き込みたいプログラムを選んで「main.pyをデバイスに書き込む」を押してください。

これでラズパイPicoへのプログラムの書き込みが完了です!

というわけで、ざっくり説明になりましたが、ついにデバイス完成です!


4.土が乾いたら泣くデバイスが完成

いよいよ本番! さっそく我が家の観葉植物に使ってみましょう。個人的に水切れしてるかどうかがかなり分かりにくい、ゴムの木に登場してもらいました。鉢にセンサーを差し込んでスイッチを入れると……


水が足りなくて泣いていましたが、水をあげると静かになりました。

おおお~~! 乾いているのでスイッチを入れた直後に泣き始め、お水をあげても量が少ないと泣きやまず。ほどほどに潤ったところで泣きやみました。

なんという分かりやすさ。これを量産して家中の植木鉢に差し込んでおけば、ベストなタイミングで水をあげて、ベストな水分量を保てるようになるはず……!

そんなわけで、今回はこれで完成! 冒頭でも少し書きましたが、実際にこういう水不足感知ツールが販売されているとのこと。実際に売っているモノを手持ちの部品を駆使して作れるなんて、いかにも趣味の電子工作! な感じがあって良いですね。

完成した時の様子。カメラのオートフォーカスすら迷わせるモジャモジャっぷり。

世の中のデバイスってきっと、こういうモジャモジャをうま~くスマートにして、製品化されているんでしょうね。「こんなのがあるといいのになあ」という気持ちが、新しい製品を生むきっかけになっているかと思うと、なんだかじ~んとしました。

私の電子工作歴も今回で3日目になったわけですが、毎回ちょびっとだけ成長している気がして楽しいです。徐々に電子工作が生活に溶け込んできた感じ! 次はもっと大きいものとか、光るものとか作りたいなあ!

fabcrossより転載)

関連情報


シモカワさん
ライタープロフィール
シモカワヒロコ
1994年生まれ。出版社とロボット工作教室を運営する企業を経て、現在は多ジャンル対応のフリーランスライター・編集者。Webと紙媒体で活動中です。fabcrossでは、主にライターさんの原稿チェックを担当しています。X(旧Twitter)


関連記事

アーカイブ

fabcross
meitec
next
メルマガ登録
ページ上部へ戻る