実現したいこと
Arduino初心者ですが、orbionというフリーの3Dマウスを製作したいと考えています。
ソースコード等は下記に記載されています。
https://github.com/FaqT0tum/Orbion_3D_Space_Mouse
発生している問題・分からないこと
上記のリンクの設計図通りに配線し組み立てたのですが、その後の動作チェックでプログラムの書き込みが出来ず動作しません。Pro Microは有線でPCに接続していますが、常に赤LEDが点灯しており、書き込み時にも点滅しません。
エラーメッセージ
error
1Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding 2 3avrdude: butterfly_recv(): programmer is not responding 4avrdude: butterfly_recv(): programmer is not responding 5avrdude: butterfly_recv(): programmer is not responding 6avrdude: butterfly_recv(): programmer is not responding 7avrdude: butterfly_recv(): programmer is not responding 8Found programmer: Id = ""; type = 9 Software Version = .; Hardware Version = . 10avrdude: butterfly_recv(): programmer is not responding 11avrdude: butterfly_recv(): programmer is not responding 12avrdude: error: buffered memory access not supported. Maybe it isn't 13a butterfly/AVR109 but a AVR910 device? 14avrdude: initialization failed, rc=-1 15 Double check connections and try again, or use -F to override 16 this check. 17 18avrdude: butterfly_recv(): programmer is not responding 19avrdude: error: programmer did not respond to command: leave prog mode 20avrdude: butterfly_recv(): programmer is not responding 21avrdude: error: programmer did not respond to command: exit bootloader 22 23avrdude done. Thank you. 24 25*** [upload] Error 1
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
「avrdude: butterfly_recv(): programmer is not responding」で検索し、シリアルポートが正しく設定されていないことが問題の原因だと推定しました。(https://teratail.com/questions/141598)
当時VSCodeで書き込みをしていましたが、シリアルポートの設定の方法が分からなかったのでIDEを使うことにしました。しかしシリアルポートが設定できなかったため、USBが認識されていないのでは?と考え、Arduino IDEの再起動、USBケーブルの抜き抜き差しを行いましたが改善されませんでした。
補足
特になし
書き込みの際にはボード設定時にCOMポートを自分で選択する必要がありますが、デバイスマネージャで見てもCOMにArduinoが出てこないという状況でしょうか?
Arudinoは正規品ならそのまま認識したと記憶していますが、中国製の安い互換ボードの場合はUSB変換にCH340などのチップが使われているため、専用のUSBドライバが必要なので確認してみてください。
使っているUSBケーブルはデータ通信ができる規格のものを使っていますか? ものによっては充電専用で電源しか配線されていなかったりします。
書き込み時にリセットボタンは押していますか?
> programmer is not responding
は、プログラマ(書き込み器:この場合にはマイコンのブートローダ)が応答しない場合のメッセージです。なんらかのシリアルポートには繋がれています。マイコンとは別のシリアルポートに繋いでしまっている、という可能性もありますが。これは普通「シリアルポートが設定できない」と呼ばれる状態ではありません。
(参考までに、「検索し、シリアルポートが正しく設定されていないことが問題の原因」と断じるに至った情報のURLを教えていただければと思います。)
「シリアルポートが設定できなかった」というあなたの解釈ではなく「実際にやったことと起こったこと」(xxをooに繋いで△△のソフトの□□ボタンを押したら●●というメッセージが出た、みたいな)で説明してみてください。なお、「コメント」に対して情報を追加する場合は、コメント欄ではなく質問に追記していただけると情報がまとまってよろしいかと思います。
ちみなに、つい先日似た質問がありました( https://teratail.com/questions/phfpdo25mbx8if )が、これが典型的な「シリアルポートが設定できない」と呼ばれる状態と言えるかと思います。
km123様
takaiY様
thkana様
コメントありがとうございます。本当に助かりました。
結果として、USBが通信規格ではないことが原因でした。いくつかの手持ちケーブルでは反応しなかったのですが、買い直したところCOMポートを選択でき、無事書き込めました。
>中国製の安い互換ボードの場合はUSB変換にCH340などのチップが使われているため、専用のUSBドライバが必要
こちらはチップがATmega32U4でしたので今回は大丈夫でした。
> あなたの解釈ではなく「実際にやったことと起こったこと」で説明してみてください
その通りですね。事実ベースで話せるよう心がけます。
おかげさまで解決できました。
御三方ともありがとうございました!
ちょっと「起こったこと」がわかっていないのですが、つまり
・Pro Microは全く認識されていなかった
・書き込みは、Pro Microではないなにか別のUSBシリアルポートに対して行おうとして失敗していた
ということですか?
1点目はその通りですが、2点目は不明です。もし「programmer is not responding」が何らかのシリアルポートに接続している場合に発生するエラー文ならば、その通りです。
ただ、エラー文が表示されたとき、私がVScodeで使用したコードでは
[env:Leonardo]
platform = atmelavr
board = Leonardo
framework = arduino
monitor_speed = 115200
lib_deps = ...
というコードで書き込み先を指定していました(使用したPro Micronoのボード選択名はArduino Leonardoです。通信可能ケーブルに取り替えるとこのコードで書き込めました)。
個人的には、別のシリアルポートに対して書き込みを行おうとして失敗したというよりは、指定のシリアルポートが応答しなかった、という状況だと思っています。
何らかのシリアルポートに接続されていなければ、書き込みの処理に入りません。書き込みの処理が始まって、「接続相手が応答しない」と言っているのですから、何らかのシリアルポートに接続しています。Pro Microが全く認識されていなかったのなら、他の何かに対して書き込みの手順を行っていた、以外にあり得ませんね。
なるほど...接続しないと書き込み処理に入らないんですね。しかし、どのポートに接続していたかは分かりません。コード上の指定ボードはPro Micro(Leonardo)ですし、PCにPro Micro以外を接続してもいません。
個人的な疑問ですが、そういう場合ってどんなシリアルポートに接続されているんでしょうか?例えばArduino IDEでは外部デバイスが無接続でも「不明」ボードが選択できますが、(ポートは/dev/cu.wlan-debug と/dev/cu.Bluetooth-Incoming-Port Serial Portのようなものです)それはこれらと似たようなものですか?
つまり、指定のシリアルポートに接続できていない場合に接続したとみなしエラーを一元化する、というような機能を持たせていたりするのでしょうか。
> コード上の指定ボード
「コード上」にはボードやポートを指定する場所はないと思いますが?
ケーブルが通信対応で無いというより、なんか粗悪なケーブルでコネクタ部分の接触が悪いとかそういう可能性もある気がします。まぁ、あまり追求しても仕方ないかしら...
なるほどです…。勉強になりました。ありがとうございました!
回答1件
あなたの回答
tips
プレビュー