Pico PR

【MicroPython】RaspberryPi Pico W で小型ポンプを動かす方法【観葉植物・家庭菜園】

記事内に商品プロモーションを含む場合があります

はじめに

RaspberryPi Pico WでMicroPythonを使って、小型ポンプを動かす方法を解説します。
ポンプの制御は3Vのリレーモジュール、ポンプの駆動には単三電池2本を使います。

※ ノーマルのPicoでも、同じプログラム・配線でポンプを動かすことができます。

環境

この記事で使用する環境は以下の通りです。

環境 バージョンなど 備考
開発用PCのOS Windows11 Windows10でもOKです
言語 MicroPython
開発環境 Thonny 3.3.13
ボード RaspberryPi Pico W 無線なしの「Pico」でもOKです

小型ポンプ

3V~5Vで使える小型ポンプです、本体を水中に沈めて使います。

操作できるのは電源のON/OFFだけで、後述するリレーモジュールでON/OFF制御を行います。なお、アマゾンの商品ページには「ブラシレス」モーターと記載がありますが「ブラシあり」の普通のモーターが内蔵されています。

「配線が細い」とのレビューが多いですが、本当に細い(おそらくAWG30・より線)です。配線長は220mmでした。

水中ポンプの梱包時の様子
梱包時の状態
開封後の水中ポンプ
開封後

以下のリンクから購入済みなので、購入先が不安という方は以下のAmazonリンクをおすすめします(3個入りの記載ですが、4個入って到着しました)。

【参考】電池を使わないとどうなる?

私の環境では、Pico W本体の電源(3V3 Out) ピンを使うと、Pico Wが不安定(ThonnyからPicoが認識されなくなる)になりました。

空中での空運転時は平気なのですが、水中で負荷が上がると不安定になります。恐らく供給電力が不足が原因なので、乾電池など別の電源の使用をおすすめします。

リレーモジュール

3Vで使えるリレーモジュールです。
リレー単体でいいんじゃないの?」と考えてしまいますが、Pico(PicoW)のGPIOは 3.3V/10mAというスペックなので、リレーの電磁石を動かすには「電流」が足りません。

そのため、フォトカプラ・フォトリレーといった、低電流でも操作可能な素子・回路を組み合わせて、少ない電流でリレーを動かせるカラクリが必要になります。

そうした回路をリレーと合わせて簡単に使えるようにしてくれたのが、今回使うリレーモジュールです。

開封前と開封後のリレーモジュール
リレーモジュール

以下のAamazonリンクから購入しています。

AmazonにはPico/Pico Wでは動かない「リレーモジュール」もあります。以下は5Vの記載があるので一見動かせそうですが、作動電流「65mA」とある通り、Pico系のボードから直接電気を供給する場合は「電流不足」で動かせません(ハマり済み)

選定する際は、電圧だけでなく、電流にも注意してください。

RaspberryPi Pico W との接続

RaspberryPi Pico Wと、ポンプ・リレーモジュールを以下のように接続します。

ピン番号 内容 接続先 備考
33 GND リレー(DC-) リレーモジュールのGNDです
34 GP28 リレー(IN) リレーを操作します
36 3V3 リレー(DC+) リレーモジュールに電源(3.3V)を供給します
電池マイナス側 リレー(COM) リレー操作でこの2つがつながります。
モータマイナス側 リレー(NO)

Pico W ピンアサイン(Pin-Out)

Pico W公式サイトより引用

Picoピンアサイン(Pin-Out)

RaspberryPi Picoのピンアサイン(pinout)の画像

Pico公式サイトより引用

使用する部品

Pico W 本体

Raspberry Pi Pico W本体です。技適対応品かどうか心配…という方は、以下のページで出品者を「共立エレショップAセレクト」(国内の有名ショップ)にして購入してください。

¥1,645 (2024/04/21 22:13時点 | Amazon調べ)

水中ポンプ

リレーモジュール

電池ボックス

電源に使用する乾電池用のボックスとスナップです。記事では単4を使っていますが、容量の大きい単3タイプをお勧めします。単3でも単4でも電圧は変わりません。

エネループ

使い捨ての乾電池もいいですが、エネループなら4本充電時の電気代が約1円。モーター・ポンプなどの電池が消耗しやすい実験・工作におすすめです。

※ はじめて使う方は充電器とのセットがおすすめです

プログラム概要

今回のプログラムの概要は以下の通りです。

  • ポンプを動作
  • 5秒間待機
  • ポンプを停止

実行結果

後述するプログラムの実行結果は以下の通りです。

プログラムが実行されると、5秒間ほどバケツから500mlのペットボトルに水を吸い上げます。

※ 食紅で色を付けた水道水をしようしています。

全体コード

全体コードは以下の通りです。詳細な内容は後述する「コードのポイント」で解説します。

import machine
import time

# GP28をGPIO出力として使用します。
Relay = machine.Pin(28, machine.Pin.OUT)

#
# GPIOをON(リレーもONとなり、ポンプが動作する)
#
print("pomp on")
Relay.value(1)
time.sleep(5)

#
# GPIOをOFF(リレーもOFFになり、ポンプが停止する)
#
print("pomp off")
Relay.value(0)

print("done")

コードのポイント

GPIOを出力用のピンとして設定し、Value関数を使ってGPIO出力をON/OFFします。

出力はリレーの操作端子につながっているので、GPIOに合わせて、ポンプを制御できます。

# GP28をGPIO出力として使用します。
Relay = machine.Pin(28, machine.Pin.OUT)

#
# GPIOをON(リレーもONとなり、ポンプが動作する)
#
print("pomp on")
Relay.value(1)

まとめ

RaspberryPi Pico WでMicroPythonを使って、小型ポンプを動かす方法を解説しました。

リレーモジュール内に回路が集約されているので、Pico Wからは簡単な配線とプログラムだけで使うことができ、単三電池2本でも水圧は上々でした。

プログラムの操作でポンプから水がでるだけでも楽しいですが、土壌の水分センサなどと組み合わせて、家庭菜園や観葉植物へ水やり装置を作ってみるのも楽しそうです。

参考になればうれしいです。

お知らせ

今月号のInterfaceは『仕事のChatGPT』!

今週号の日経Interfaceは「仕事のChatGPT」。
イントロとして、ChatGPTをはじめとした大規模言語モデル(LLM)の現在や、エンジニア向け生成AIの活用法。その後の内容で、ChatGPTを使ったPythonでゲームの作り方や生成AIを使ったシステムの製作例が学べます。

全ての内容はここでは紹介しきれないので、詳細は以下のAmazonページをご覧ください。

5月25日発売です。

CQ出版
¥1,430 (2024/04/25 12:53時点 | Amazon調べ)

Pico/Pico W関連のおすすめ本

RaspberryPi Pico / Pico W関連のおすすめ本を独断と偏見で3つ選んでみました。Picoやるならとりあえずこれ買っとけ的な本や、電子工作全般で使える本などを厳選しています。

見た目のいい工具をお探しの方へ

よく使うツールは『見た目』が重要。モチベもあがりますし、仲間との話のネタにもなります。以下のサイトは、デザイン性の高い工具が集めたサイトなので、興味がある方はぜひご覧ください。

質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

POSTED COMMENT

  1. カンパチ より:

    えすさん、こんにちは。たくさんのラズパイに関する素晴らしい記事をありがとうございます。私は最近ラズパイ工作に興味を持ちはじめた者です。知識レベルはLチカを成功させる程度です。

    私はリアルタイムでのサーボモータの制御に取り組もうと思います。サーボモータを制御するための情報は音の振幅です。私は既に、PCにマイクを接続して、マイクが拾った音の振幅を記録して、振幅が急に変化したときのピーク値をリアルタイムで抽出することには成功しています。このピーク値に基づいてサーボモータの回転角度を制御したいです。

    しかし、どのように実現すればよいかわかりません。PCから直接サーボモータを制御する(できる?)のか、PCで解析したピーク値をラズパイに送りサーボモータを制御すればよいのか。はたまた計測および解析もラズパイで行いサーボモータを制御するのか。

    お手すきの際に、アドバイスをいただけますでしょうか。PCでの計測および解析は自作のPythonプログラムで行っています。必要があればソースコードもお送りします。どうぞよろしくお願いいたします。

    • えす より:

      カンパチさん

      こんにちは、えすです。
      ご質問ありがとうございます。

      面白そうな工作ですね。

      音の計測と解析がPythonなのであれば、ラズパイ(RaspberryPi3/4)を使って
      解析からサーボの制御までをまとめて行う方が、シンプルになるかと思います。
      (分けると通信のコードも必要で、通信分の処理時間もかかるので、まとめた方がお得です)

      サーボモータは、以下のようなものであればラズパイの「PWM信号」で動かすことが出来ます。

      SG90 (AmazonのURLを短縮しています)
      https://onl.la/g4ykUnM

      ラズパイでのPWM信号の解説記事。
      https://tech-and-investment.com/raspberrypi2-2-pwm/

      ざっくりとした回答になってしまいましたが、
      分からないことや、追加の質問等あれば、なんでもコメントしてくださいね。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index