注釈

こんにちは!FacebookのSunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Raspberry Pi、Arduino、ESP32をさらに深く学び、仲間たちと一緒に探索していきましょう。

参加する理由は?

  • 専門的なサポート: 購入後の問題や技術的な課題を、コミュニティとチームのサポートで解決できます。

  • 学びと共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。

  • 特別な先行公開: 新製品の発表や先取り情報をいち早く手に入れましょう。

  • 特別割引: 最新製品をお得に購入できる割引があります。

  • 季節ごとのプロモーションとプレゼント: プレゼント企画やホリデープロモーションに参加しましょう。

👉 さあ、私たちと一緒に探索し、創造を始めませんか?[ここ] をクリックして、今すぐ参加しましょう!

4.3 エレクトロードキーボード

このレッスンでは、 MPR121容量性タッチセンサー を使用して、Raspberry Pi Pico 2 Wでタッチセンサー付きのキーボードを作成する方法を学びます。MPR121は、最大12個のエレクトロードでタッチ入力を検出でき、ワイヤー、アルミホイル、さらにはバナナのような果物にも接続できます!

必要な部品

このプロジェクトで必要な部品は以下の通りです。

全ての部品がセットになったキットを購入するのが便利です。こちらのリンクをご参照ください:

名前

このキットのアイテム

リンク

Pico 2 Wスターターキット

450+

Pico 2 W Kit

また、以下のリンクから部品を個別に購入することもできます。

SN

コンポーネント

数量

リンク

1

Pico 2 Wの概要

1

2

マイクロUSBケーブル

1

3

ブレッドボード

1

買う

4

ジャンパーワイヤー

数個

買う

5

MPR121モジュール

1

MPR121センサーの理解

MPR121 は、I2Cインターフェースを通じて通信する容量性タッチセンサーコントローラーです。最大12個のタッチ入力を処理できるため、複数のタッチポイントを持つインタラクティブなプロジェクトに最適です。

MPR121センサーは、そのエレクトロードでの容量変化を検出します。エレクトロードに触れると、容量が変化し、センサーがタッチを検出します。その情報はI2Cを通じてRaspberry Pi Pico 2 Wに送信されます。

回路図

sch_mpr121_ar

配線

wiring_mpr121_ar

  • MPR121のエレクトロードピン( E0E11 )にワイヤーまたは導電性材料を接続します。

  • ワイヤーのもう一方の端を、果物やアルミホイルの形、タッチパッドなどの導電性物体に接続できます。

配線図

  • MPR121のエレクトロードピン( E0E11 )にワイヤーまたは導電性材料を接続します。

  • ワイヤーのもう一方の端を、果物やアルミホイルの形、タッチパッドなどの導電性物体に接続できます。

コードの作成

エレクトロードでタッチ入力を検出し、どのエレクトロードが触れられているかを表示するMicroPythonプログラムを作成します。

注釈

  • pico-2w-kit-main/micropython から 4.3_electrode_keyboard.py を開くか、コードをThonnyにコピーして、「実行」をクリックするか、F5を押します。

  • 正しいインタープリターが選択されていることを確認してください:MicroPython(Raspberry Pi Pico).COMxx。

  • ここでは mpr121.py というライブラリを使用する必要があります。Picoにアップロードされているか確認してください。詳細なチュートリアルについては 1.4 Picoにライブラリをアップロード を参照してください。

from mpr121 import MPR121
from machine import Pin, I2C
import utime

i2c = I2C(0, sda=Pin(4), scl=Pin(5))
mpr = MPR121(i2c)

# 全てのキーをチェック
while True:
    value = mpr.get_all_states()
    if len(value) != 0:
        print(value)
    utime.sleep_ms(100)

プログラムを実行した後、接続したエレクトロードや導電性物体に触れてみましょう。Thonnyのシェルに表示される出力を確認してください。どのエレクトロードが触れられているかのメッセージが表示されるはずです。

コードの理解

  1. モジュールのインポート:

    • machine: ハードウェア関連の関数にアクセスするためのモジュール。

    • mpr121: MPR121センサーと通信するためのライブラリ。

    • utime: 遅延などの時間関連の関数を提供するモジュール。

  2. I2C通信の初期化:

    • i2c = I2C(0, sda=Pin(4), scl=Pin(5)): GP4(SDA)とGP5(SCL)を使ってI2C通信を設定します。

  3. MPR121オブジェクトの作成:

    • mpr = MPR121(i2c): 設定したI2C通信を使ってMPR121センサーを初期化します。

  4. タッチ入力の検出を行うメインループ:

    • get_all_states(): 現在触れられているエレクトロードの番号のリストを返します。

    • もしエレクトロードが触れられていれば、その番号を表示します。

    • このループは100ミリ秒の遅延を挟んで繰り返し実行されます。

    while True:
        value = mpr.get_all_states()
        if len(value) != 0:
            print(value)
        time.sleep_ms(100)
    

エレクトロードの拡張

プロジェクトをさらに発展させて、エレクトロードをさまざまな導電性材料に接続できます:

  • 果物: バナナやリンゴなどの果物にワイヤーを接続し、タッチセンサーとして使用します。

  • ホイル形状: アルミホイルを切り取って形を作り、それをエレクトロードに接続します。

  • 導電性ペイント: 導電性インクやペイントで模様を描いて、タッチ入力を作成します。

注釈

エレクトロードを変更した場合(例:異なる材料を接続した場合)、センサーの基準値を再調整するためにリセットが必要なことがあります。

さらに実験する

  • 特定のエレクトロードを検出する:

    特定のエレクトロードを監視したい場合、 is_touched(pin) メソッドを使用できます。指定したエレクトロード(ピン)が触れられていればTrueを、そうでなければFalseを返します。

    from mpr121 import MPR121
    from machine import Pin, I2C
    import utime
    
    i2c = I2C(0, sda=Pin(4), scl=Pin(5))
    mpr = MPR121(i2c)
    
    # 特定のエレクトロードをチェック
    while True:
      if mpr.is_touched(0):
          print("Electrode 0 is touched!")
      utime.sleep(0.1)
    
  • 楽器の作成: 各エレクトロードを音符に対応させ、触れることで音を鳴らします。

  • インタラクティブアート: 導電性ペイントを使用して、タッチセンサー付きのアート作品を作成します。

  • ゲームコントローラー: ゲーム用のカスタムタッチコントロールを設計します。

結論

このレッスンでは、MPR121容量性タッチセンサーを使用して、Raspberry Pi Pico 2 Wでタッチセンサー付きエレクトロードキーボードを作成する方法を学びました。これにより、タッチ入力に反応するインタラクティブなプロジェクトを創造的に作成することができます。