Arduinoのシリアルモニタが文字化けする原因と直し方――初心者にもわかりやすく解説。
画面いっぱいの変な記号、焦らなくて大丈夫です。ほとんどの文字化けは、たった1つの数字を合わせるだけで直ります。原因の見分け方から、日本語特有の文字化けまでやさしく解説します。
目次
01文字化けは怖くない、まず落ち着いて確認しよう
文字化け=故障ではない
結論から言うと、原因のほとんどは「ボーレート」というたった1つの数字のズレです。壊れたわけでも、コードが間違っているわけでもないことが多いです。ですから、まずは落ち着いて設定を見直してみましょう。
実例を1つ紹介します。M5Stick-Cという小型のマイコンを、シリアルモニタで確認しようとしました。すると、画面が意味不明な記号だらけになってしまった、という体験談です。Arduino IDEのシリアルモニターで文字化けが起きたので通信速度を変更してみた(そう備忘録)によれば、最初は文字コードの指定を疑ったそうです。しかし、実際の原因は単純でした。通信速度を115200bpsに変更すると、文字化けが収まったと報告されています。
編集部見解:シリアルモニタの文字化けは、初めて見ると「壊れてしまった」と不安になりやすいトラブルです。しかし実際には、原因のパターンはそれほど多くありません。ですから、落ち着いて1つずつチェックしていけば、多くの場合は数分で解決できると考えられます。
― YOFUKASI LAB編集部
本記事の読み方
この記事では、文字化けが起こる仕組みをやさしく説明します。難しい専門用語は、できるだけ避けています。そのうえで、実際に直すための手順を紹介します。ですから、Arduinoを触り始めたばかりの方でも読み進められる内容になっています。
02シリアルモニタと文字化けの基礎知識
まず、言葉の意味から確認しましょう。シリアルモニタとは、Arduinoが送ってきた文字や数字を確認できるツールです。パソコンの画面で表示され、Arduino IDEに標準で付いています。たとえば、センサーの値をたしかめたいときなど、電子工作では欠かせない機能です。
やさしい用語の整理
- ボーレート(baud rate):1秒間にどれだけの速さでデータをやり取りするかを表す数字。「通信速度」と考えると分かりやすいです。
- Serial.begin():スケッチの中で「これから通信速度は〇〇にします」と決める命令。カッコの中の数字がボーレートです。
- 文字コード:文字を数字に変換するための「対応表」のようなもの。この対応表が送り側と受け取り側で違うと、文字化けが起こります。
文字化けの多くは、このボーレートの不一致が原因です。Arduino IDEでシリアルモニタの出力が文字化けする(工学系窓使いの雑記)にも、同様の報告があります。ボーレートを一致させたら、文字化けが直ったそうです。逆に、スケッチ側とシリアルモニタ側で違う値にすると、出力が文字化けします。たとえば、スケッチ側を115200bps、シリアルモニタ側を9600bpsにした場合です。
なお、Arduinoの基礎からもう一度確認したい場合は、以下の記事も参考になります。Arduinoのコードの書き方の基礎はこちらの記事で詳しく解説している。
03なぜ文字化けするのか、やさしい仕組みの話
ボーレートがずれると、なぜ文字化けするのでしょうか。イメージは、「早口で話す人」と「ゆっくり聞き取る人」の会話に近いです。話す速さと聞き取る速さが合っていないと、言葉の区切りを間違えてしまいます。そのため、意味の通らない音の羅列に聞こえてしまうのです。シリアル通信でも、これと同じことが起こります。送る側と受け取る側の速度がずれると、データの区切りを間違えて読んでしまいます。結果として、画面には記号のような文字が並んでしまうのです。
void setup() {
Serial.begin(9600); // ← ここの数字が「話す速さ」
}
void loop() {
Serial.println("Hello!");
delay(1000);
}
上のコードなら、シリアルモニタ側も「9600 baud」に合わせるだけで直ります。設定はシリアルモニタの画面の右下(または上部)にあるプルダウンメニューから選べます。
日本語だけが化けるケースは少し違う
ボーレートを揃えても、日本語の部分だけ文字化けする場合は、別の原因が考えられます。それが「文字コード」の違いです。WROOMでUTF-8文字コードをShift_JIS変換して日本語漢字表示してみました(mgo-tec電子工作)では、次のように説明されています。Arduino IDEのスケッチ内部は、UTF-8コードで処理されています。しかし、Windows環境のシリアルモニターでは、Shift_JISコードとして扱われてしまいます。そのため、スケッチ中に漢字を入力すると、文字化けが起こるのです。
アルファベットや数字は、どんな文字コードでも同じように表示されます。そのため、問題になりにくいのです。一方で、日本語の漢字やひらがなは「変換ルール」が食い違うと表示が崩れやすい、というイメージです。英語だけのメッセージなら正常なのに、日本語を混ぜたとたんに化ける場合は、この文字コードのズレを疑ってみましょう。
ボーレートを疑うのが一番の近道
似た相談も見られます。Wi-Fi接続のサンプルコードを試した際に、画面全体が文字化けしてしまったというケースです。arduino ideで文字化けしてしまう(teratail)では、コードの中身は間違っていないのに文字化けが起きた、という相談が寄せられています。この件では、プログラムとIDEのボーレートの値が異なることが原因でした。つまり、原因が分からないときほど、まずはボーレートを疑うのが近道だと分かります。
04文字化けのタイプ別・原因の見分け方
画面に表示された文字化けの「見た目」によって、疑うべき原因が変わります。以下の表で、自分のケースがどれに近いか確認してみてください。
| 見た目の特徴 | A. 画面全体が記号だらけ | B. アルファベットは正常、日本語だけ変 | C. 起動直後の数文字だけ変 |
|---|---|---|---|
| 主な原因 | ボーレートの不一致 | 文字コード(UTF-8/Shift_JIS)の不一致 | 起動時の自動リセットによる一時的な乱れ |
| 直し方の方向性 | Serial.begin()の数字とシリアルモニタの設定を揃える | 日本語表示の実装方法を見直す | 多くの場合は無視して問題ない |
| 緊急度 | 高い(全体が読めない) | 中程度(一部だけ読めない) | 低い(それ以降は正常なことが多い) |
※症状と原因の対応関係は、複数の実例を踏まえた編集部の整理です。必ずしもこの通りとは限らない点に、ご留意ください。なお、ボーレート不一致の一般的な解決策はArduinoシリアル通信 文字化けはボーレートで解決!(openillumi)も参考になる。
まずはA(画面全体が記号だらけ)かどうかを確認するのが第一歩です。そこが直れば、多くの文字化けは解消します。
05実践:文字化けを直す5ステップ
ここでは、記号だらけで表示された状況を例にします。直すための手順を、順番にやさしく紹介します。ぜひ、1つずつ試してみてください。
-
STEP1. スケッチの中のSerial.begin()を探す
Arduino IDEでスケッチを開き、
Serial.begin(という文字を探します。カッコの中に書かれている数字が、そのスケッチのボーレートです。具体的には:「Serial.begin(9600);」と書いてあれば、ボーレートは9600です。 -
STEP2. シリアルモニタの設定を同じ数字にする
シリアルモニタの画面を開き、右下(または上部)にある通信速度の設定を、STEP1で見つけた数字と同じにします。
この場合:プルダウンメニューから「9600 baud」を選びます。 -
STEP3. 一度シリアルモニタを閉じて開き直す
設定を変えただけでは反映されないことがあります。そのため、シリアルモニタを一度閉じてから、もう一度開き直しましょう。
実際の手順:設定変更後に画面右上の「×」で閉じ、再度シリアルモニタのアイコンをクリックして開いた。 -
STEP4. まだ化ける場合は日本語表示を疑う
アルファベットは正常なのに日本語だけ化けている場合は、文字コードのズレが原因かもしれません。まず、日本語の部分だけコメントアウトしましょう。そのうえで、アルファベットだけの状態で正常に表示されるか確認します。
一例として:「Serial.println(“こんにちは”);」を一時的に「Serial.println(“Hello”);」に変えて試したところ、正常に表示された(編集部想定シナリオ)。 -
STEP5. それでも直らない場合はケーブル・ポートを疑う
ボーレートと文字コードを確認しても直らない場合は、他にも原因があるかもしれません。たとえば、USBケーブルやパソコン側の設定です。そこで、別のケーブルやUSBポートに差し替えて試してみましょう。
実例:充電専用のUSBケーブルを使っていたため、通信ができていませんでした。データ転送対応のケーブルに替えたところ、正常に表示された(編集部想定シナリオ)。
Arduino IDE自体のインストールがまだの場合は、以下の記事も参考になります。
06注意点・よくある勘違い
最後に、文字化けをめぐってよくある3つの勘違いを整理しておきます。あらかじめ知っておくと、余計な不安を減らせます。
勘違いその1:文字化け=故障ではない
文字化けが起きても、Arduino本体が故障したわけではないことがほとんどです。設定の数字が1つずれているだけ、というケースが大半です。ですから、まずは落ち着いてボーレートを確認しましょう。
勘違いその2・3:ボーレートと日本語表示
スケッチとシリアルモニタのボーレートは、必ず同じ数字に揃える必要があります。「だいたい近い数字なら大丈夫」ということはありません。ぴったり一致していないと、文字化けが起こります。
アルファベットや数字は問題なく表示できます。しかし、日本語の漢字やひらがなは、パソコンの環境によって文字コードの扱いが違うため、化けやすい傾向があります。そこで、まずはアルファベットだけで動作確認しましょう。そのあとで日本語表示を試すと、原因の切り分けがしやすくなります。
07FAQ
参考文献
- そう備忘録「Arduino IDEのシリアルモニターで文字化けが起きたので通信速度を変更してみた」そう備忘録, 2021年. https://www.souichi.club/m5stack/serial-monitor-garbled-characters/
- 工学系窓使いの雑記「Arduino IDEでシリアルモニタの出力が文字化けする」工学系窓使いの雑記, 2022年. https://formula4910.blogspot.com/2022/04/arduino.html
- mgo-tec「WROOMでUTF-8文字コードをShift_JIS変換して日本語漢字表示(半角カナ対応)してみました」mgo-tec電子工作, 2016年. https://www.mgo-tec.com/blog-entry-utf8sjis01.html
- teratailユーザー「arduino ideで文字化けしてしまう」teratail, 2023年. https://teratail.com/questions/4i03kj2lc2addo
- openillumi「Arduinoシリアル通信 文字化けはボーレートで解決!」openillumi, 2025年. https://openillumi.com/arduino-serial-garble-baudrate-fix/
- 本文中の具体的な原因特定エピソードは、断りのない限り編集部想定シナリオに基づく想定であり、実測データではありません。
関連記事(内部リンク)
- Arduinoのコードの書き方|基礎から応用まで全てがわかる初心者の手引き ― https://yofukasi-lab-wp.com/2026/07/18/arduino-cord/
- Arduino IDEのダウンロード・インストール方法【2026年版】Windows・Mac・Linux対応 ― https://yofukasi-lab-wp.com/2026/08/01/arduino-install-download/
コメント