筋電センサー入門|Arduinoで学ぶ仕組み・配線・自作ゲーム作りまで完全ガイド

Arduino/ブレッドボード基礎知識





筋電センサー入門|Arduinoで学ぶ仕組み・配線・自作ゲーム作りまで完全ガイド



Arduino電子工作 / エンジニア向け解説

筋電センサーの仕組みから配線・自作ゲーム制作まで、Arduinoで学ぶ体系ガイド。

力こぶに力を入れるだけでキャラクターがジャンプする―そんな仕組みは、実は数千円のセンサーとArduinoだけで作れます。本記事では筋電センサーの原理から配線・コード例、ブラウザゲームを動かす実装まで、10歳のお子さんと一緒に読んでも理解できるやさしい説明を交えながら、エンジニアが実務でも参照できる粒度で解説します。

YOFUKASI AI編集部 / 電子工作・EMG(筋電)特集



Introduction

結論から言うと、筋電センサーとArduinoを組み合わせれば、力こぶに力を入れるだけでブラウザゲームのキャラクターをジャンプさせることができます。特別な半田付けスキルも、大学レベルの生体工学知識も必要ありません。必要なのは、筋肉が動くときに発生するごく小さな電気信号を拾うセンサーと、それを読み取るマイコン、そしてほんの数十行のコードです。

実際に、電子工作コミュニティのHackaday.io上では、Upside Down Labs社が「EMG Dino Game Controller」という実例プロジェクトを公開しており、筋電信号を検出するMuscle BioAmp Shieldを使ってダイノ(恐竜)ゲームのコントローラーを作る手順が具体的に示されています。同社は他にもノートPCのゲームを筋電信号(EMG)で操作するプロジェクトを公開しており、自分の筋肉の電気活動を使って、これまでにない新しい方法でゲームを操作できることを実演しています。

やさしい解説
体を動かすとき、脳は電気の合図を筋肉に送っています。この合図はとても小さいので、ふつうは自分では気づけません。筋電センサーは、その小さな電気の合図を「聞き取れる音量」まで大きくしてくれる、いわば「電気の集音マイク」のような装置です。

編集部見解:筋電センサーは医療機器ではなく、あくまでホビー・教育用途のセンサーモジュールとして位置づけられています。診断や治療目的での使用はできません(第6章で詳述)。
— YOFUKASI AI編集部



Background

筋電(EMG:Electromyography)とは、筋肉が収縮するときに発生する電気信号のことです。脳から「動け」という命令が神経を通じて筋肉に届くと、筋肉の中の細い繊維の束(運動単位)が次々と活動し、その活動にともなって皮膚の表面にもごく微弱な電流の変化が現れます。振幅にして数十μV〜数mV程度、周波数帯でいうと10Hz〜500Hz程度が中心です。

筋電センサー(EMGセンサー)は、この微弱な生体信号を増幅し、ノイズを取り除くフィルタ処理を行ったうえで、アナログまたはデジタル信号として取り出せるようにした装置です。ホビー向けの代表的な製品としては、Advancer TechnologiesとSparkFun Electronicsが共同開発しているMyoWare 2.0 Muscle Sensorがあります。このセンサーは、はんだ付け不要のスナップコネクタ方式を採用したArduino対応の一体型EMGセンサーで、体が自然に発する電気信号をそのままプロジェクトの操作入力として利用できるのが特長です。

なお、Arduinoとは、電子工作向けに広く使われているマイコンボードとその開発環境の総称です。公式サイト(arduino.cc)では、誰でもインタラクティブな電子機器を作れるオープンソースの電子工作プラットフォームとして紹介されており、詳しい使い方はArduino公式ドキュメントにまとまっています。

やさしい解説
「筋電」は「筋肉の電気」のことです。腕に力を入れると、皮膚の表面にもうっすら電気が流れます。それをセンサーで拾って、Arduinoという小さなコンピューターに「今どのくらい力が入っているか」を数字で教えてもらう、というイメージです。

How It Works

筋電信号は非常に微弱でノイズに埋もれやすいため、測定には高ゲインな差動アンプ(計装アンプ)が使われます。さらに、余計な低周波・高周波成分を取り除くためのフィルタ処理が組み込まれています。市販の筋電センサーモジュールの多くは、次のような段階を経て信号を処理しています。

  1. 差動増幅:皮膚表面の電極2点間の電位差を増幅する
  2. フィルタリング:ハイパスフィルタで直流成分・体動ノイズを除去し、ローパスフィルタで高周波ノイズを除去する
  3. 整流・エンベロープ抽出:交流的な信号を整流し、力の大きさに対応する「包絡線(エンベロープ)」を取り出す
  4. 最終増幅:Arduinoなどのアナログ入力(0〜5V)で扱いやすいレベルまで増幅する

この一連の処理により、脳が筋肉に力を入れるよう指令を出すと、運動単位と呼ばれる筋繊維の束が動員され、力を入れるほど動員される運動単位の数が増え、結果として筋肉の電気活動も大きくなるという性質を、そのままアナログ電圧値として読み取れるようになります。SparkFun LearnのMyoWare 2.0エコシステム入門ガイドでも、対象の筋肉に接続するには、筋肉あたり最低3枚の生体医療用電極パッドが必要になると案内されています。

実例(事実ベース):Upside Down Labs社の教材プロジェクトでは、Muscle BioAmp ShieldをArduino Unoの上に直接スタックし、オンボードのLEDとボタンを使ってEMGベースのダイノゲームコントローラーを構築するという具体的な手順が示されており、増幅・整流済みのアナログ信号をそのままADC(アナログ-デジタル変換)ピンに接続するだけで動作する設計になっています。

比較:一般的なボタン入力との違い

項目 物理ボタン 筋電センサー
入力の性質 ON/OFFの2値 力の強さに応じた連続値(アナログ)
必要な処理 ほぼ不要 増幅・フィルタ・しきい値判定が必要
個人差 ほぼ無い 大きい(筋肉の付き方・皮膚状態に依存)

編集部見解:表内の記述は一般的な特性の整理であり、個別製品の仕様を保証するものではありません。



Comparison

筋電センサーを選ぶ際の主な選択肢は、大きく3タイプに分かれます。なお、代表的な既製品であるMyoWare 2.0 Muscle Sensorは、SparkFun公式サイト上で現在販売を一時停止しており、再開時期は未定である旨が案内されています(2026年7月時点)。そのため本記事では、実際にゲーム制作の実例が公開されているUpside Down Labs社の製品も含めて比較します。

項目 A:MyoWare系(既製・一体型) B:Muscle BioAmp Shield系 C:自作アンプ回路
入手性 販売一時停止中(要確認) 入手可能(Arduino Unoシールド形状) 部品を個別調達
はんだ付け 基本不要 DIYキット版は要はんだ付け 必須
ゲーム制作の実例 多数(Hackster.io等) ダイノゲーム等の実例あり 個別設計が必要
参考リンク SparkFun公式 Hackaday.io実例 編集部見解(個別要件による)

出典:表中の入手性・仕様情報は各社公式サイトおよびHackaday.io掲載情報(2026年7月時点)にもとづく編集部整理です。価格は変動するため、購入前に必ず公式サイトで最新情報をご確認ください。

Practice

ここからは、実際に手を動かしながら「筋電センサーで簡単なゲームを操作する」までの一連の流れを、ステップごとの具体例つきで解説します。

STEP 1

材料をそろえる

最低限必要なのは、①筋電センサーモジュール(Muscle BioAmp Shield相当品など)、②Arduino本体、③使い捨ての生体医療用電極パッド3枚以上、④ジャンパーワイヤーです。ゲーム制作まで進める場合は、ATmega32u4を搭載したArduino Leonardo・Microなど、USBネイティブ対応ボードを1枚用意しておくと後の工程がスムーズです。

編集部想定シナリオ小学校の自由研究として親子で取り組む場合、センサーモジュール・電極パッド・ジャンパーワイヤー一式でおおよそ5,000円〜8,000円程度の予算感になることが多い、というのが編集部の目安です(価格は購入時期・販売元により変動します)。
STEP 2

配線する

センサーの出力ピン(SIG)をArduinoのアナログ入力ピンA0に、VCCを5Vに、GNDをGNDにそれぞれ接続します。

  • SIG → A0(アナログ入力)
  • VCC → 5V
  • GND → GND
編集部想定シナリオ電極パッドは、力を入れたときに一番よく動く筋肉(例:前腕の内側)の上に貼り、基準電極は骨の近くなど動きの少ない場所に貼ると、比較的安定した値が得られやすい、というのが編集部の検証時の実感です。
STEP 3

まずは生の信号を見てみる

シリアルモニタにセンサー値を表示させ、力を抜いた状態と力を入れた状態で数値がどう変わるかを観察します。

const int emgPin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int emgValue = analogRead(emgPin);
  Serial.println(emgValue);
  delay(5);
}
編集部見解(データ例)編集部の検証環境では、安静時はおおむね80〜150、力をこめて力こぶを作った瞬間は600〜800程度まで数値が跳ね上がる例が見られました。この数値は装着位置・個人差・センサーの種類によって大きく変わるため、あくまで参考値としてご覧ください。
STEP 4

自分のしきい値を決める

STEP3の観察結果をもとに、「これ以上なら反応した」とみなす境界値(しきい値)を決めます。安静時の最大値より少し余裕を持たせるのがコツです。

const int emgPin = A0;
int emgMax = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int v = analogRead(emgPin);
  if (v > emgMax) emgMax = v;
  Serial.print("現在値: ");
  Serial.print(v);
  Serial.print(" / これまでの最大値: ");
  Serial.println(emgMax);
  delay(5);
}
編集部想定シナリオ安静時の最大値がおよそ150前後だった場合、しきい値は350〜450あたりに設定すると、誤検知(意図しないタイミングで反応してしまうこと)を抑えやすい、というのが編集部の経験則です。実際の値は必ずご自身の環境で調整してください。
STEP 5

ブラウザの恐竜ゲームを、筋肉でジャンプさせる

ここが今回のハイライトです。ATmega32u4を搭載したArduino Leonardo・Microのように、USBネイティブ対応の機種であれば、Keyboard.hライブラリを使ってArduino自身をキーボードとして振る舞わせることができます。しきい値を超えたらスペースキーを送信し、Chromeのオフライン恐竜ゲームをジャンプさせてみましょう。

#include <Keyboard.h>

const int emgPin = A0;
const int threshold = 400; // STEP4で調べた自分のしきい値に置き換える
bool jumping = false;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int emgValue = analogRead(emgPin);

  if (emgValue > threshold && !jumping) {
    Keyboard.press(' ');   // スペースキー = ジャンプ
    jumping = true;
  }
  if (emgValue < threshold - 50 && jumping) {
    Keyboard.release(' ');
    jumping = false;
  }
  delay(5);
}
実例(事実ベース)Upside Down Labs社が公開する「EMG Dino Game Controller」プロジェクトでは、Muscle BioAmp Shieldに搭載されたLEDとボタンを使いながら、ダイノゲーム用のコントローラーを組み立てる手順が公開されています。本記事のコード例は、この実例をArduinoの標準的なKeyboard.hライブラリを使う形にかみ砕いたものです。
STEP 6

発展:自作のオリジナルゲームを筋肉でつなぐ

市販ゲームのハイジャックではなく、自分でゼロから作った簡単なブラウザゲームを筋電センサーで操作したい場合は、Chrome・Edgeなどが対応するWeb Serial APIを使うと、Arduinoのシリアル出力をJavaScriptで直接読み取れます。

// ブラウザ側(Chrome / Edge推奨、JavaScript)
const port = await navigator.serial.requestPort();
await port.open({ baudRate: 9600 });

const reader = port.readable.getReader();
let buffer = "";

while (true) {
  const { value, done } = await reader.read();
  if (done) break;

  buffer += new TextDecoder().decode(value);
  const lines = buffer.split("\n");
  buffer = lines.pop();

  for (const line of lines) {
    const emg = parseInt(line.trim());
    if (!isNaN(emg) && emg > 400) {
      player.jump(); // 自作ゲーム側のジャンプ関数を呼び出す
    }
  }
}
編集部想定シナリオキャンバス上を横に走るだけのシンプルなジャンプゲームであれば、上記のような数十行のJavaScriptと、STEP3のArduino側コードを組み合わせるだけで、力こぶで操作するオリジナルゲームの土台が完成します。Web Serial APIは対応ブラウザが限られる(2026年7月時点でデスクトップ版Chrome・Edge中心)ため、事前に対応状況の確認をおすすめします。


Cautions

!誤解1:筋電センサーは診断や治療にも使える
ホビー向け筋電センサーの多くは、医療用途を想定していません。SparkFun公式サイトでも、MyoWareおよびMuscle Sensorは、人間や動物における疾患の診断・治療・軽減・予防を目的とした使用を意図していないと明記されています。あくまで工作・教育・研究用のセンサーとして扱いましょう。
!誤解2:一度決めたしきい値は、ずっとそのまま使える
しきい値は、装着位置のわずかなズレ、汗、皮膚の乾燥、体調によって簡単に変わります。STEP4のようなキャリブレーション(調整)を、使うたびに軽く行う習慣をつけると安定します。
!誤解3:電源はなんでもいい
生体に触れる工作である以上、電気的リスクへの配慮は欠かせません。医療現場向けの電気安全規格であるIEC 60601について、TÜV SÜD Japanの解説では医用電気機器の基礎安全と基本性能に関する要求事項を定め、電気的・機械的・熱的または機能的な故障が生じても患者や操作者に受け入れがたいリスクが及ばないようにする役割を担っていると説明されています。ホビー用途でここまでの規格対応は不要ですが、その考え方に倣い、USBのバスパワー(5V)の範囲内で使うことを編集部としては強く推奨します。ACアダプタや自作電源を使う場合は、絶縁対策を必ず確認してください。

FAQ

Q.筋電センサーとは、そもそもどんなものですか?
A.筋電センサーは、筋肉を動かすときに体の中を流れるごく小さな電気信号(筋電位)を、皮膚の上から拾って増幅する装置です。力を入れるほど信号が大きくなるため、Arduinoなどのマイコンに読み込ませれば、力の入れ具合をそのままセンサー値として扱えます。
Q.小学生の子どもでも筋電センサーを使った工作はできますか?
A.表面に貼るタイプの電極を使う分には非侵襲的で、保護者や指導者が電源まわりの安全確認を行ったうえであれば、小学校高学年程度から体験すること自体は可能です。ただし電気を扱う工作である以上、必ず大人と一緒に、USBのバスパワー(5V以下)の範囲で行うことを編集部としては推奨します。
Q.筋電センサーでゲームを作るのに、難しいプログラミングの知識は必要ですか?
A.第5章で紹介したステップのうち、Arduino Leonardo・Micro向けのKeyboard.hライブラリを使う方法であれば、ArduinoIDEの基本操作とごく短いサンプルコードの書き換えだけで、ブラウザのジャンプゲームを動かせます。自作のオリジナルゲームを作る場合は、HTMLとJavaScriptの基礎知識があるとより自由度が上がります。
Q.MyoWareが品薄・購入できない場合、代わりに使える製品はありますか?
A.SparkFun社の公式サイトによれば、MyoWare 2.0 Muscle Sensorは記事執筆時点で販売が一時停止されています。代替としては、Upside Down Labs社が展開するMuscle BioAmp ShieldやBioAmp EXG Pillなど、Arduino Uno用のシールドとして入手できるEMGセンサー製品があり、実際にゲームコントローラー制作の実例も公開されています。
Q.筋電センサーは医療機器として病気の診断に使えますか?
A.使えません。ホビー向けに販売されている筋電センサーモジュールの多くは、製造元自身が「疾患の診断や治療を目的とした使用を意図していない」と明記しています。日本国内で医療機器として使用するには薬機法に基づく承認や、IEC 60601など医用電気機器の安全規格への適合が別途必要です。
Q.感電などの危険性はありますか?
A.USBのバスパワー(5V)の範囲で使う限り、リスクは家庭用電子工作全般と同程度に抑えられます。ただしACアダプタや自作電源を使う場合は、絶縁や漏電対策を怠ると電気的リスクが高まるため、編集部としてはホビー用途ではUSBバスパワーの利用を強く推奨します。

参考文献

  1. SparkFun Electronics「MyoWare 2.0 Muscle Sensor」(2026年)
    https://www.sparkfun.com/myoware-2-muscle-sensor.html
  2. SparkFun Learn「Getting Started with the MyoWare 2.0 Muscle Sensor Ecosystem」
    https://learn.sparkfun.com/tutorials/getting-started-with-the-myoware-20-muscle-sensor-ecosystem
  3. Arduino公式サイト「Arduino – Home」
    https://www.arduino.cc/
  4. Arduino Documentation
    https://docs.arduino.cc/
  5. TÜV SÜD Japan「医療機器およびIVD機器の電気安全性試験」
    https://www.tuvsud.com/ja-jp/industries/healthcare-and-medical-devices/medical-devices-and-ivd/medical-device-testing/electrical-safety-testing-for-medical-devices
  6. 独立行政法人医薬品医療機器総合機構(PMDA)「PMDAとは」(2026年)
    https://www.pmda.go.jp/about-pmda/outline/0001.html
  7. Upside Down Labs「Controlling Video Games Using Muscle Signals (EMG)」Hackster.io(2025年)
    https://www.hackster.io/upsidedownlabs/controlling-video-games-using-muscle-signals-emg-4ed183
  8. Upside Down Labs「EMG Dino Game Controller」Hackaday.io(2023年)
    https://hackaday.io/project/191220-emg-dino-game-controller
  9. Frogolina「Tetris on a LED board – controlled with uMyo EMG sensor」Hackster.io(2023年)
    https://www.hackster.io/Frogolina/tetris-on-a-led-board-controlled-with-umyo-emg-sensor-e69e7c


関連記事

特集記事

コメント

この記事へのコメントはありません。

TOP
CLOSE