Arduinoのシリアルモニタが文字化けする原因と直し方――初心者にもわかりやすく解説

プログラミング・電子工作






Arduinoのシリアルモニタが文字化けする原因と直し方――初心者にもわかりやすく解説。|YOFUKASI AI




Arduino / トラブルシューティング

Arduinoのシリアルモニタが文字化けする原因と直し方――初心者にもわかりやすく解説。

画面いっぱいの変な記号、焦らなくて大丈夫です。ほとんどの文字化けは、たった1つの数字を合わせるだけで直ります。原因の見分け方から、日本語特有の文字化けまでやさしく解説します。

YOFUKASI AI編集部 | 更新日:2026年8月18日 | 読了目安:約11分

Chapter 01 — Introduction

01文字化けは怖くない、まず落ち着いて確認しよう

結論から言うと、Arduinoのシリアルモニタで起こる文字化けは、ほとんどの場合「ボーレート」というたった1つの数字のズレが原因です。壊れたわけでも、コードが間違っているわけでもないことが多いので、まずは落ち着いて設定を見直してみましょう。

実例として、M5Stick-Cという小型のマイコンをシリアルモニタで確認しようとしたところ、画面が意味不明な記号だらけになってしまった体験談があります。Arduino IDEのシリアルモニターで文字化けが起きたので通信速度を変更してみた(そう備忘録)では、最初は文字コードの指定を間違えたのかと思ったが、実際の原因は単純で、通信速度を115200bpsに変更すると文字化けが収まったと報告されている

編集部見解:シリアルモニタの文字化けは、初めて見ると「壊れてしまった」と不安になりやすいトラブルです。しかし実際には、原因のパターンはそれほど多くありません。落ち着いて1つずつチェックしていけば、多くの場合は数分で解決できると考えられます。
― YOFUKASI AI編集部

この記事では、文字化けが起こる仕組みを難しい専門用語をできるだけ避けてやさしく説明したうえで、実際に直すための手順を紹介します。Arduinoを触り始めたばかりの方でも読み進められる内容にしています。



Chapter 02 — Background

02シリアルモニタと文字化けの基礎知識

まず、言葉の意味から確認しましょう。シリアルモニタとは、Arduinoが送ってきた文字や数字を、パソコンの画面で確認できるツールのことです。Arduino IDEに標準で付いています。センサーの値をたしかめたいときなど、電子工作では欠かせない機能です。

やさしい用語の整理

  • ボーレート(baud rate):1秒間にどれだけの速さでデータをやり取りするかを表す数字。「通信速度」と考えると分かりやすいです。
  • Serial.begin():スケッチの中で「これから通信速度は〇〇にします」と決める命令。カッコの中の数字がボーレートです。
  • 文字コード:文字を数字に変換するための「対応表」のようなもの。この対応表が送り側と受け取り側で違うと、文字化けが起こります。

文字化けの多くは、このボーレートの不一致が原因です。Arduino IDEでシリアルモニタの出力が文字化けする(工学系窓使いの雑記)では、スケッチとシリアルモニタのボーレートを一致させたら文字化けが直ったこと、スケッチ側を115200bps・シリアルモニタ側を9600bpsのように違う値にすると出力が文字化けすることが報告されている

Arduinoの基礎からもう一度確認したい場合は、以下の記事も参考になります。Arduinoのコードの書き方の基礎はこちらの記事で詳しく解説している

Chapter 03 — Mechanism

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のボーレートの値が異なることが原因だったと報告されている。まずはボーレートを疑うのが近道だと分かります。



Chapter 04 — Comparison

04文字化けのタイプ別・原因の見分け方

画面に表示された文字化けの「見た目」によって、疑うべき原因が変わります。以下の表で、自分のケースがどれに近いか確認してみてください。

見た目の特徴 A. 画面全体が記号だらけ B. アルファベットは正常、日本語だけ変 C. 起動直後の数文字だけ変
主な原因 ボーレートの不一致 文字コード(UTF-8/Shift_JIS)の不一致 起動時の自動リセットによる一時的な乱れ
直し方の方向性 Serial.begin()の数字とシリアルモニタの設定を揃える 日本語表示の実装方法を見直す 多くの場合は無視して問題ない
緊急度 高い(全体が読めない) 中程度(一部だけ読めない) 低い(それ以降は正常なことが多い)

※症状と原因の対応関係は、複数の実例を踏まえた編集部の整理であり、必ずしもこの通りとは限らない点にご留意ください。ボーレート不一致の一般的な解決策はArduinoシリアル通信 文字化けはボーレートで解決!(openillumi)も参考になる。

まずはA(画面全体が記号だらけ)かどうかを確認するのが第一歩です。ここが直れば、多くの文字化けは解消します。

Chapter 05 — Practice

05実践:文字化けを直す5ステップ

ここでは「シリアルモニタを開いたら記号だらけで表示された」という状況を例に、直すための手順をやさしく紹介します。順番に試してみてください。

  1. STEP1. スケッチの中のSerial.begin()を探す

    Arduino IDEでスケッチを開き、Serial.begin(という文字を探します。カッコの中に書かれている数字が、そのスケッチのボーレートです。

    たとえば:「Serial.begin(9600);」と書いてあれば、ボーレートは9600です。
  2. STEP2. シリアルモニタの設定を同じ数字にする

    シリアルモニタの画面を開き、右下(または上部)にある通信速度の設定を、STEP1で見つけた数字と同じにします。

    たとえば:プルダウンメニューから「9600 baud」を選びます。
  3. STEP3. 一度シリアルモニタを閉じて開き直す

    設定を変えただけでは反映されないことがあるため、シリアルモニタを一度閉じてから、もう一度開き直します。

    たとえば:設定変更後に画面右上の「×」で閉じ、再度シリアルモニタのアイコンをクリックして開いた。
  4. STEP4. まだ化ける場合は日本語表示を疑う

    アルファベットは正常なのに日本語だけ化けている場合は、文字コードのズレが原因の可能性が高いです。一度、日本語の部分だけコメントアウトして、アルファベットだけの状態で正常に表示されるか確認します。

    たとえば:「Serial.println(“こんにちは”);」を一時的に「Serial.println(“Hello”);」に変えて試したところ、正常に表示された(編集部想定シナリオ)。
  5. STEP5. それでも直らない場合はケーブル・ポートを疑う

    ボーレートと文字コードを確認しても直らない場合は、USBケーブルやパソコン側の設定に原因があるかもしれません。別のケーブルやUSBポートに差し替えて試します。

    たとえば:充電専用のUSBケーブルを使っていたため通信ができておらず、データ転送対応のケーブルに替えたところ正常に表示された(編集部想定シナリオ)。

Arduino IDE自体のインストールがまだの場合は、以下の記事も参考になります。

Arduino IDEのダウンロード・インストール方法はこちらの記事で解説している

Chapter 06 — Pitfalls

06注意点・よくある勘違い

!勘違い1. 文字化け=Arduinoが壊れたサイン

文字化けが起きても、多くの場合Arduino本体やパソコンが故障したわけではありません。設定の数字が1つずれているだけ、ということがほとんどです。まずは落ち着いてボーレートを確認しましょう。

!勘違い2. ボーレートはどの数字でもとりあえず動く

スケッチとシリアルモニタのボーレートは、必ず同じ数字に揃える必要があります。「だいたい近い数字なら大丈夫」ということはなく、ぴったり一致していないと文字化けが起こります。

!勘違い3. 日本語表示はどんな状況でも普通に使える

アルファベットや数字は問題なく表示できても、日本語の漢字やひらがなは、パソコンの環境によって文字コードの扱いが違うため、化けやすい傾向があります。まずはアルファベットだけで動作確認し、そのあとで日本語表示を試すと、原因の切り分けがしやすくなります。



Chapter 07 — FAQ

07FAQ

Q.シリアルモニタが文字化けする一番多い原因は何ですか。
A.一番多い原因は「ボーレート」という通信速度の設定が、スケッチ側とシリアルモニタ側でずれていることです。Serial.begin()に書いた数字と、シリアルモニタ右下の数字を同じにするだけで、多くの場合は直ります。

Q.ボーレートを揃えたのに、日本語だけ文字化けするのはなぜですか。
A.その場合は、ボーレートではなく文字コードの違いが原因であることが多いです。Arduino IDEのスケッチはUTF-8という文字コードで書かれていますが、Windowsのシリアルモニタが別の文字コード(Shift_JISなど)で表示しようとすると、日本語の部分だけ記号のように化けてしまいます。

Q.ボーレートは何の数字に合わせればよいですか。
A.基本は、スケッチの中にあるSerial.begin(数字)の「数字」の部分に合わせます。例えばSerial.begin(9600)と書いてあれば、シリアルモニタ右下の表示も9600bpsに設定してください。使っているセンサーやモジュールに指定のボーレートがある場合は、そちらを優先します。

Q.起動直後だけ少し変な文字が表示されるのは故障ですか。
A.故障とは限りません。Arduinoは、シリアルポートを開いた瞬間に自動でリセットがかかることがあり、その一瞬だけ通信が不安定になって、数文字だけ乱れて見えることがあります。その後の表示が正常であれば、多くの場合は特に問題ありません。

Q.何をしても文字化けが直らない場合、次は何を確認すればよいですか。
A.ボーレートと文字コードを確認しても直らない場合は、USBケーブルの不良や、パソコン側のドライバの不具合も候補になります。別のUSBケーブルやUSBポートに差し替えて試す、パソコンを再起動してから試す、といった切り分けをおすすめします。

Q.文字化けを防ぐために、普段から気をつけられることはありますか。
A.Serial.begin()に書く数字を、いつも同じ値(たとえば9600)に統一しておくと、シリアルモニタ側の設定を毎回変える手間が減り、文字化けにも気づきやすくなります。日本語表示が多いプロジェクトでは、あらかじめアルファベットだけで動作確認してから日本語表示を足す、という順番もおすすめです(編集部見解)。

参考文献

関連記事(内部リンク)


関連記事

特集記事

コメント

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

TOP
CLOSE