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

コンピュータ、組み込み

Arduino開発を行っていて発生した失敗事例やトラブルと、それらの解決方法などを掲載します。

凡ミスチェックリスト

スケッチや配線、設定が間違っていることで動作しないことはよくあります。
もしかしたら間違えているかもしれないという視点で、自分の作業を見直してみましょう。

  • 選択しているボードライブラリは正しいか?
  • COMポートの選択は正しか?
  • 書き込み用のCOMポートは、別のアプリケーションが使用していないか?

ライブラリトラブル

ボードライブラリは日々バージョンアップされています。
残ながらバージョンが上がったことでそれまで動作していたスケッチが動作しなくなることもあるので、試しにバージョンダウンをすることで解決することがあります。

ESP系トラブル

スケッチの書き込みができない(ESP全般)

現象

スケッチのコンパイルはできるが、「出力」に
Traceback (most recent call last):
<以下省略>
表示がされる。

原因

シリアル通信用のアプリケーションで、COMをオープンしている。
デバッグ用途などでシリアルモニタアプリケーション(Teraterm)などに出力していると、アプリケーションがCOMを占有したままになるためにArduino IDEでの書き込みができなくなる。

対応

シリアルモニタアプリケーション(Teraterm)などを閉じる、またはCOMポートを開放する。

電源は入るが動作をしない(ESP全般)

現象

画像のサンプルはNODEMCU ESP-32Sです。
POWER LED(赤)は点灯していますが、期待通りのスケッチが動かない。
よく観察すると、POWER LED(赤)が一定の輝度で光っておらず、周期的に暗くなる。

原因

電圧降下が発生した。
無線を使ったスケッチを、USBハブから電源供給させると発生することが多い。
起動時の消費電力が大きいため、ハブからの供給が不足している模様。
画像では5V電源に対して、4.3Vまで降下している。

対応

電源アダプタ付きタップを使用する。
画像は当方使用の ELECOM U2H-TZS428S。
画面奥の電源アダプタを使用することで、起動時の電圧降下を解消した。

電源アダプタを使用することで安定してが5Vが供給され、マイコンは期待通りの動作をした。

スケッチが動作しない(ESP32-WROVER)

現象

現象はESP32-WROVER-DEVで発生。

スケッチ書き込み後動作しない。
3.3Vや5Vの出力は有るが、スケッチで設定した出力が得られない。

原因

ボードライブラリのバージョンに依存する模様。
動作をしないバージョンことを確認したバージョン。
(※同じスケッチを書きこんでも動作していないバージョンです。このバージョンのすべての動作をしないことを確定する情報ではありません)

  • 2.0.4
  • 2.0.5

対応

ボードライブラリのバージョンの変更をした。
現在 2.0.3 での動作を確認している。

I2C通信が不安定(ESP32-S2-Pico)

現象

現象はWaveshare ESP32-S2-Picoで発生。

OLEDでの表示で、意図したとおりの描画ができず表示速度が遅い。

原因

I2CのSDA, SCLのGPIO番号の指定先に GPIO6, GPIO7を指定したことによると推測。
公式のピン配置表では、I2C1で使用できることになっているがWireでもWire1を使用しても同結果。
また、SDA, SCLを反対に使用しても同結果。

対応

当該GPIOピン番号の使用を避ける。

すべての組み合わせを調査していないが、GPIO6, GPIO7, GPIO8を含むI2Cのピン設定を行うことで発生する。

そのほか情報

確認日 : 2022.11.13
ライブラリ : esp32 by Espressif Systems バージョン 2.0.5
ボード : ESP32S2 Dev Module

COMが認識されない(ESP32-S2系)

現象

初回電源投入時、またはスケッチ書き込み後にCOM認識されなくなる。

原因

詳しい原因は不明。(仕様?)
スケッチ書き込み後にCOM認識されなくなることが多くあります。
認識されていてもスケッチの書き込みができないことがあります。

対応

S2系ボードにはBOOTボタンがあります。
BOOTボタンを押下しながらRESETボタンを押下または、BOOTボタンを押下しながら電源を投入することでCOM認識され、スケッチの書き込みができます。

digitalReadに謎の信号が入る(ESP32 D4, WROOM32系)

現象

digitalReadをするピンのpinModeの第2引数をPULLLDOWN, またはPULLUPに指定したが、HIGH、LOWが安定しない。
下図は、読み取ったPULLDOWN設定したPINのボタンが押下状態でLEDを点灯、離した状態で消灯するスケッチである。

画像左はボタンを押していないがLEDが弱く点灯(周期の遅いPWMのような動作)をしている。
ボタンを押下すると点灯状態となった。

原因

詳しい原因は不明。
GPIO34~GPIO39 の読み取り専用I/Oを使用すると発生する。

オシロスコープで状態の確認を行った。
画像左はボタンピンの入力電圧、画像右はLEDへの入力電圧。

オシロスコープを配線することでLEDの弱点灯が収まった。
オシロスコープを接続することでノイズが低減してしまい、HIGHレベルに達していないためと推測するが、ノイズの存在と周期が確認できる。

LEDに入っている信号の周期と一致した(16.6ms周期(60Hz))
当方西日本なので電源の周波数が見えている?

対応

物理配線でPULLDOWN回路を作ることでノイズは除去できた。
参考回路図を添付する。

回路素材はDigipotさんの素材を使わせて頂いています

RP2040系トラブル

スケッチの書き込みができない

現象

スケッチのコンパイルはできるが、「出力」に
Failed uploading: uploading error: exit status 1
表示がされる。

原因

シリアル通信用のアプリケーションで、COMをオープンしている。
デバッグ用途などでシリアルモニタアプリケーション(Teraterm)などに出力していると、アプリケーションがCOMを占有したままになるためにArduino IDEでの書き込みができなくなる。

サンプル画面の背面(左上あたり)には、Teratermが動作していてCOMを占有しています。

対応

シリアルモニタアプリケーション(Teraterm)などを閉じる、またはCOMポートを開放する。

スケッチを書きこんだ後COM認識されなくなった

現象

スケッチの書き込みをした後動作しない。
ウインドウズエラーが発生。
ArduinoIDEのシリアルポートではCOM認識されていない。

原因

I2C0に指定するピン番号がI2C1のピン番号だった。
下図原因のサンプルでは、Wireで指定しているピン番号はI2C1のピン番号。
ピン配置表の見間違いや、打ち間違いなどで発生することがあります。
同現象はSPIでも発生する。

対応

RP2040基板の初期化を行います。
こちらの記事に使用できるピン配置表と、初期化の方法を載せています。

Tiny 2040 でスケッチ書き込み後動作しない

現象

スケッチ書き込み後、フルカラーLEDが半発光状態になりCOM認識しなくなる。

原因

CPU Speedを133MHz以上をを選択してコンパイルすると発生する。
他のRP2040では動作するが、Tiny 2040では動作しなくなる。

対応

COMが認識しなくなる問題は、Tiny 2040を初期化することで復帰する。
初期化の方法は以下の記事に記載。

CPU Speed125MHz以下でコンパイルする動作するようになる。
各設定速度での結果を添付しています。

YD-RP2040 で電源が入らない

現象

USBコネクタからの電源供給では、PowerLED(赤)が微弱な点滅をする挙動をする。
以前に書き込みを行ったスケッチも動作をしていない。
パソコンからUSBで接続をしているがCOM認識できない。

原因

整流器(部品)の故障。

対応

実装部品の交換を行う。

コメント

タイトルとURLをコピーしました