筋電センサーの仕組みから配線・自作ゲーム制作まで、Arduinoで学ぶ体系ガイド。
力こぶに力を入れるだけでキャラクターがジャンプする―そんな仕組みは、実は数千円のセンサーとArduinoだけで作れます。本記事では筋電センサーの原理から配線・コード例、ブラウザゲームを動かす実装まで、10歳のお子さんと一緒に読んでも理解できるやさしい説明を交えながら、エンジニアが実務でも参照できる粒度で解説します。
目次
Introduction
1.導入:力こぶの電気でゲームは動くのか
結論から言うと、筋電センサーとArduinoを組み合わせれば、力こぶに力を入れるだけでブラウザゲームのキャラクターをジャンプさせることができます。特別な半田付けスキルも、大学レベルの生体工学知識も必要ありません。必要なのは、筋肉が動くときに発生するごく小さな電気信号を拾うセンサーと、それを読み取るマイコン、そしてほんの数十行のコードです。
実際に、電子工作コミュニティのHackaday.io上では、Upside Down Labs社が「EMG Dino Game Controller」という実例プロジェクトを公開しており、筋電信号を検出するMuscle BioAmp Shieldを使ってダイノ(恐竜)ゲームのコントローラーを作る手順が具体的に示されています。同社は他にもノートPCのゲームを筋電信号(EMG)で操作するプロジェクトを公開しており、自分の筋肉の電気活動を使って、これまでにない新しい方法でゲームを操作できることを実演しています。
体を動かすとき、脳は電気の合図を筋肉に送っています。この合図はとても小さいので、ふつうは自分では気づけません。筋電センサーは、その小さな電気の合図を「聞き取れる音量」まで大きくしてくれる、いわば「電気の集音マイク」のような装置です。
編集部見解:筋電センサーは医療機器ではなく、あくまでホビー・教育用途のセンサーモジュールとして位置づけられています。診断や治療目的での使用はできません(第6章で詳述)。
— YOFUKASI AI編集部
Background
2.筋電センサーとは何か(背景・定義)
筋電(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
3.仕組み・技術的背景
筋電信号は非常に微弱でノイズに埋もれやすいため、測定には高ゲインな差動アンプ(計装アンプ)が使われます。さらに、余計な低周波・高周波成分を取り除くためのフィルタ処理が組み込まれています。市販の筋電センサーモジュールの多くは、次のような段階を経て信号を処理しています。
- 差動増幅:皮膚表面の電極2点間の電位差を増幅する
- フィルタリング:ハイパスフィルタで直流成分・体動ノイズを除去し、ローパスフィルタで高周波ノイズを除去する
- 整流・エンベロープ抽出:交流的な信号を整流し、力の大きさに対応する「包絡線(エンベロープ)」を取り出す
- 最終増幅:Arduinoなどのアナログ入力(0〜5V)で扱いやすいレベルまで増幅する
この一連の処理により、脳が筋肉に力を入れるよう指令を出すと、運動単位と呼ばれる筋繊維の束が動員され、力を入れるほど動員される運動単位の数が増え、結果として筋肉の電気活動も大きくなるという性質を、そのままアナログ電圧値として読み取れるようになります。SparkFun LearnのMyoWare 2.0エコシステム入門ガイドでも、対象の筋肉に接続するには、筋肉あたり最低3枚の生体医療用電極パッドが必要になると案内されています。
実例(事実ベース):Upside Down Labs社の教材プロジェクトでは、Muscle BioAmp ShieldをArduino Unoの上に直接スタックし、オンボードのLEDとボタンを使ってEMGベースのダイノゲームコントローラーを構築するという具体的な手順が示されており、増幅・整流済みのアナログ信号をそのままADC(アナログ-デジタル変換)ピンに接続するだけで動作する設計になっています。
比較:一般的なボタン入力との違い
| 項目 | 物理ボタン | 筋電センサー |
|---|---|---|
| 入力の性質 | ON/OFFの2値 | 力の強さに応じた連続値(アナログ) |
| 必要な処理 | ほぼ不要 | 増幅・フィルタ・しきい値判定が必要 |
| 個人差 | ほぼ無い | 大きい(筋肉の付き方・皮膚状態に依存) |
編集部見解:表内の記述は一般的な特性の整理であり、個別製品の仕様を保証するものではありません。
Comparison
4.製品タイプの比較
筋電センサーを選ぶ際の主な選択肢は、大きく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
5.実践:配線からゲーム制作まで
ここからは、実際に手を動かしながら「筋電センサーで簡単なゲームを操作する」までの一連の流れを、ステップごとの具体例つきで解説します。
材料をそろえる

最低限必要なのは、①筋電センサーモジュール(Muscle BioAmp Shield相当品など)、②Arduino本体、③使い捨ての生体医療用電極パッド3枚以上、④ジャンパーワイヤーです。ゲーム制作まで進める場合は、ATmega32u4を搭載したArduino Leonardo・Microなど、USBネイティブ対応ボードを1枚用意しておくと後の工程がスムーズです。
配線する
センサーの出力ピン(SIG)をArduinoのアナログ入力ピンA0に、VCCを5Vに、GNDをGNDにそれぞれ接続します。
- SIG → A0(アナログ入力)
- VCC → 5V
- GND → GND
まずは生の信号を見てみる
シリアルモニタにセンサー値を表示させ、力を抜いた状態と力を入れた状態で数値がどう変わるかを観察します。
const int emgPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int emgValue = analogRead(emgPin);
Serial.println(emgValue);
delay(5);
}
自分のしきい値を決める

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);
}
ブラウザの恐竜ゲームを、筋肉でジャンプさせる

ここが今回のハイライトです。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);
}
発展:自作のオリジナルゲームを筋肉でつなぐ
市販ゲームのハイジャックではなく、自分でゼロから作った簡単なブラウザゲームを筋電センサーで操作したい場合は、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(); // 自作ゲーム側のジャンプ関数を呼び出す
}
}
}
Cautions
6.注意点・よくある誤解
ホビー向け筋電センサーの多くは、医療用途を想定していません。SparkFun公式サイトでも、MyoWareおよびMuscle Sensorは、人間や動物における疾患の診断・治療・軽減・予防を目的とした使用を意図していないと明記されています。あくまで工作・教育・研究用のセンサーとして扱いましょう。
しきい値は、装着位置のわずかなズレ、汗、皮膚の乾燥、体調によって簡単に変わります。STEP4のようなキャリブレーション(調整)を、使うたびに軽く行う習慣をつけると安定します。
生体に触れる工作である以上、電気的リスクへの配慮は欠かせません。医療現場向けの電気安全規格であるIEC 60601について、TÜV SÜD Japanの解説では医用電気機器の基礎安全と基本性能に関する要求事項を定め、電気的・機械的・熱的または機能的な故障が生じても患者や操作者に受け入れがたいリスクが及ばないようにする役割を担っていると説明されています。ホビー用途でここまでの規格対応は不要ですが、その考え方に倣い、USBのバスパワー(5V)の範囲内で使うことを編集部としては強く推奨します。ACアダプタや自作電源を使う場合は、絶縁対策を必ず確認してください。
FAQ
7.よくある質問
参考文献
- SparkFun Electronics「MyoWare 2.0 Muscle Sensor」(2026年)
https://www.sparkfun.com/myoware-2-muscle-sensor.html - 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 - Arduino公式サイト「Arduino – Home」
https://www.arduino.cc/ - Arduino Documentation
https://docs.arduino.cc/ - 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 - 独立行政法人医薬品医療機器総合機構(PMDA)「PMDAとは」(2026年)
https://www.pmda.go.jp/about-pmda/outline/0001.html - 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 - Upside Down Labs「EMG Dino Game Controller」Hackaday.io(2023年)
https://hackaday.io/project/191220-emg-dino-game-controller - 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
コメント