Arduinoのブートローダの修復方法

ArduinoがPCに認識されない!
Arduino LeonardoをUSBケーブルでPCにつなげたとき、COMポートとして認識された後、すぐに「不明なデバイス」となってしまう場合には、次の可能性が考えられます。
(1) ハードウェア的な問題が発生している[…]

ArduinoがPCに認識されない!

Arduino LeonardoをUSBケーブルでPCにつなげたとき、COMポートとして認識された後、すぐに「不明なデバイス」となってしまう場合には、次の可能性が考えられます。

(1) ハードウェア的な問題が発生している

(2) 書き込まれているブートローダ(ソフトウェア)が壊れている

(3) Arduinoがハードウェア的に壊れている

 

問題の切り分け

(1)のケースは、さらに2通りの可能性が考えられます。

 

1つは、Arduinoにつなげているシールドや部品の影響で電力消費が激しく、電源供給が不安定になっている可能性です。

これを調べるためには、Arduinoにつなげている全てのシールドやジャンパーケーブルを外し、USBだけを接続してPCにつなげてみてください。

 

改善しなければ、USBケーブルやPCのUSBコネクタの接触が悪くて、電源供給や通信が不安定というケースが考えられます。

この場合には、別のUSBケーブルを試したり、PCの別の場所のUSBコネクタに接続する、あるいは他のArduinoでは問題がないかを確認することで切り分けることができます。

 

いずれも該当しない場合には、(2)のケースと考え、ブートローダの修復を試みてください。

この方法は本稿の主題ですので、後半で詳しく説明します。

 

ブートローダを修復しても問題が解消しない場合や、修復ができない場合は、(3)のArduinoが壊れている可能性が高いです。この場合、残念ながら使えるように戻すことは不可能です。

 

そもそもArduino Leonardoのブートローダの役割は?

Arduinoは、PCとUSB接続するとCOMポートとして認識されます。COMポートを通じてPCと通信を行うことで、プログラムのダウンロード(Arduinoへのインストール)などを行うことができます。

これらの、

  • COMポートとして振舞う動作
  • PCからの指示によりプログラムのダウンロード等を行う動作

は、Arduino Leonardoではソフトウェアで実現されています。そのソフトウェアがArduino Leonardoに書き込まれているブートローダです。

もし書き込まれているブートローダが何らかの理由で壊れた場合、COMポートとして振る舞う動作がおかしくなるため、PCと接続できないという問題が発生するのです。

 

Arduinoのブートローダを修復しよう!

ブートローダもArduinoに書き込まれているソフトウェアですので、それが壊れた場合には書き直すことで修復可能です。

ただし、プログラムを書き込むために必要なブートローダが壊れているわけですから、通常の方法では書き直すことはできません。

ブートローダの修復方法を、順を追って説明します。

 

必要なもの

ブートローダを修復するには次のものが必要となります。

  • Arduinoボード(UNOなど)
  • ジャンパーワイヤー
  • 抵抗 (100~200Ω)

ブートローダはUSB経由では書き込みできませんので、PCから直接書き込むことはできず、別のArduinoを仲介役として使う必要があります。

Arduinoが2つ登場すると紛らわしいので、以降では、仲介役となるArduinoを「書き込み側のArduino」と呼び、ブートローダを書き込みたいArduinoを「ターゲットのArduino」と呼ぶことにします。

 

書き込み側のArduinoを設定する

書き込み側のArduinoに、そのためのソフト(ArduinoISP)をダウンロード(インストール)します。

Arduinoをプログラミングするときの要領で、PCとつなぎArduinoIDEを立ち上げてください。

IDEのメニューから、「ファイル」→「スケッチの例」とたどり、「ArduinoISP」を選択してください。ブートローダを書き込むためのスケッチが開きます。このスケッチをコンパイルし、書き込み側のArduinoにダウンロードすることで、ブートローダ書き込み機として動作するようになります。

 

図1

図1:ArduinoISPのスケッチを開く

 

書き込み側のArduinoとターゲットのArduinoとを接続する

Arduinoには、左右に並んでるピンソケットとは別に、「ICSP端子」と呼ばれている3×2のピンヘッダー端子が出ています。ブートローダの書き込みは、このICSP端子を使って行います。

図2のように、ジャンパーワイヤーを用いて、書き込み側のArduinoのD10~12および5VとGNDを、ターゲットのArduinoのICSP端子に接続して下さい。

また、書き込み側のArduinoのリセット端子と5Vとを抵抗でつなぎます。

図2

  書き込み側                                                           ターゲット

図2:Arduinoの接続

 

以上の接続をしたうえで、書き込み側のArduinoを、USBケーブルでPCとつなぎます。

 

ブートローダの書き込み

PC上でArduinoIDEを立ち上げてください。

ブートローダの書き込みは、開いているスケッチには依存しませんので、立ち上げたままのウィンドウで(任意のスケッチが開いている状態で)以降の操作を行います。

 

IDEのメニューから「ツール」→「ボードの設定」とたどり、ボードの種類の候補の中から、ターゲットのArduinoのものを選択します。PCと直接つながっている書き込み側のArduinoの種類を選択するのではないことに注意してください。(書き込み側のArduinoは、もはやArduinoではなく、書き込み機だと思ってください)

 

図3

図3:ターゲットのArduinoの種類を指定

 

また、「ツール」→「書込装置」とたどり、候補の中から ”Arduino as ISP” を選択します。これは、Arduinoを書き込み機として使っているということを指定しています。

選択肢の中には、”ArduinoISP”のような紛らわしいものがあります。間違えずに”as”の付いているものを選択して下さい。

 

図4

図4:書込装置の指定

 

準備ができたら、「ツール」→「ブートローダを書き込む」を実行します。

 

図5

図5:ブートローダを書き込む

 

ブートローダの書き込みには少し時間がかかります(数分程度)。図のように、「ブートローダの書き込みが完了しました」と表示されるまで待ってください。

 

図6

図6:ブートローダ書き込み完了

 

最後に動作確認

動作確認のため、ターゲットのArduinoを、USBケーブルでPCに接続してみてください。COMポートとして認識され、その状態が変わらなければ、うまく修復できたはずです。

念のため、Arduino IDEを立ち上げ、サンプルスケッチからblinkingを選んでダウンロードしてみてください。LEDが点滅するのが確認できれば、ブートローダの修復は完了です。

 

 

1. Raspberry Pi のセットアップ

本内容は、Physical Computing Lab「Raspberry Pi電子工作エントリーキット(standard)」を前提としたものです。

 

1. Raspberry Pi のセットアップ

Raspberry Pi を動かすには、「1.1 デスクトップ構成」、「1.2 ターミナル構成」の2種類の接続方法があります。

通常は、「1.1 デスクトップ構成」を参照ください。

「1.2 ターミナル構成」は、起動時トラブルがある場合や、ディスプレイを接続しないサーバなどをセットアップしなければならない場合に、Raspberry Piの扱いに慣れている人がとる接続方法で、初心者向きではありません。

 

1.1 デスクトップ構成

【準備するもの】

・Raspberry Pi2 Model B または Raspberry Pi3 Model B

・Micro SD Card(Class 10 8G以上推奨)

   ※ 別途、Raspbian等のOSのダウンロードとインストールが必要となります。

 ※ Physical Computing LabコンプリートスタータキットスタータパックにはOSインストール済みのmicro SDカードが含まれており、インストールの手間が省けます。是非ご利用ください。

・モニター(HDMI)

・HDMIケーブル

・マウス(USB接続タイプ)

・キーボード(USB接続タイプ)

・ACアダプタ(Pi3の場合、DC5V/2.5A以上推奨)

 

※下記の図は接続の例を示しています。LANケーブルは、起動に必須のものではありません。

 

【配線】

下記のように配線を繋いで下さい。ただし、ACアダプタを接続するとRaspberry Piが起動してしまいますので、ACアダプタは最後に接続してください。

 

desktop

初めて起動するときには、ディスプレイは、極力、デスクトップPC用などで使われる汎用のHDMI接続のものをご用意ください。

Raspberry Pi用の小型のディスプレイ(10インチ以下のもの)は、ドライバインストールや解像度設定を行わないと正常に表示できないものがほとんどです。

また、D-sub接続のディスプレイを、変換器を使ってHDMI接続することも、できるだけ避けるのが無難です。この場合も、解像度設定等を行わないと表示できない場合があります。

 

 

1.2 ターミナル構成

【準備するもの】

・Raspberry Pi2 Model B または Raspberry Pi3 Model B

・Micro SD Card(Class 10 8G以上推奨)

 ※ 別途、Raspbian等のOSのダウンロードとインストールが必要です。

 ※ Physical Computing LabコンプリートスタータキットスタータパックにはOSインストール済みのmicro SDカードが含まれており、インストールの手間が省けます。是非ご利用ください。

・USB to TTL Serial Cable (TTLとありますが、5Vではなく3.3Vインタフェースのものをご用意ください)

・ACアダプタ(Pi3の場合、DC5V/2.5A以上推奨)

・PC (TeraTerm等のターミナルソフトが動作するもの)

 

terater

1.3 OSのインストールについて

Raspberry Piボードを起動させるには、上記のMicroSD Cardに、RaspbianOSをインストールする必要があります。

OSは、Raspberry Pi財団のホームページ(https://www.raspberrypi.org)からダウンロードできます。

同ページのインストラクションに従ってOSをインストールしたMicro SDカードを準備してください。

Physical Computing LabRaspberry Piコンプリートスタータキットもしくはスタータパックをご購入された方は、OSのインストール作業は不要です。

 

 

1.4 Raspberry Piの起動

OSをインストールしたmicro SDカードを、Raspberry Piボードのmicro SDカードスロットに挿してください。

micor USBコネクタに接続した電源を入れることで、RaspbianOSが起動します。

通常は、デスクトップ(GUI環境)が立ち上がり、ログインを意識する必要はありませんが、RaspbianOS Liteを選択した場合や、ログアウト操作を行った場合、ログインする際には以下を入力して下さい。

ユーザ名:pi

パスワード:raspberry

なお、このパスワードは広く知られていてセキュリティホールとなりやすいため、起動後にパスワードを変更することを推奨します。

 

 

※Physcal Computing LabのスターターパックのプリインストールノMicroSDカードを利用している方で

万一、立ち上がらないなどの状況がありましたら、microSDの接触の問題の可能性がありますので、

再度、microSDカードを挿しなおしてから再度電源を入れてみてください。

数回やってみても、ダメな場合には、交換させていただきますので、弊社までご連絡ください。

弊社へのご連絡の際しましては、お手数ですが、購入ショップ名(Physical Computing Labストア、Amazonなど)、

注文番号、注文者名を必ず、お知らせください。

 

2.Raspberry Pi B+ を動かしてみよう!

内容に一部古い情報が含まれております。近日更新予定です。

Raspberry Pi B+ を動かしてみよう! 

この章では、Raspberry Pi B+の基本的な動かし方を学びます。
概略は以下の通りです。

電源のオン/オフ

Raspberry Pi 基本設定

設定内容:
―メモリ-拡張
マイクロSDのRaspbianで使うファイルの大きさを最大にします。
-SPIモジュールの自動ロード
*ADC(MCP9700)を動かすSPIのモジュールを自動でロードします。
-電源オンのときにデスクトップ画面が自動的に表示されるようにします。
*「startx」コマンドの自動実行です。
*ターミナル構成(リモートログイン)の場合は設定をしないで下さい。
***なお、設定はフィジカルコンピューティングをするのに必要な最小の設定です。
日時の設定等は行っておりません。

Raspberry Pi B+はLinuxのコンピュータです。電源を入れる手順、電源を切る手順を正しく行わないとLinux(OS)を壊して、動かなくなることがあります。  では、「2.1電源のオン/オフとログイン 」で試してみましょう。

電源のON/OFFとログイン 

①ターミナルの立ち上げ。

以下でターミナルを動かして下さい。
-デスクトップ→画面上の「LXTerminal」をダブルクリックしてターミナルを立ち上げる。
-リモートログイン→PCの「TeraTerm」を立ち上げる。

②電源を入れる

ACアダプタのDC5V出力をRaspberry Pi B+のマイクロUSBコネに接続します。

③ログイン

画面にメッセージがいろいろ表示されて、下の様に「raspberrypi login:」と表示されたら、 「pi」を入力します。

次に、「Password:」には「raspberry」と入れます。
* 入力したパスワードは画面に表示されません。もし、間違って入れたときは、ログインにもどりますので、やり直して下さい。

raspi_code_2.1_1

④ Raspbian(Linux)の入力待ち

ログインできると、下の画面のようにコマンドの入力待ち画面になります。
*この画面からいろいろなコマンドを入れてRaspberry Pi B+を動かうことができます。

 

raspi_code_2.1_2

⑤電源を切る準備

Raspberry Pi B+の電源を切る前に、Rasbianを止める必要があります。
止めるときは、下の画面のように「sudo shutdown -h now」コマンドを入力します。

 

raspi_code_2.1_3

⑥停止状態

下の画面の様に「」メッセージが出て、20から30秒程度で「ステータスLED」が点滅を止めて、消えた状態になります。
この状態になったら、ACアダプタをマイクロUSBコネクタから抜いて下さい。
*「PWR LED(赤)」は点いています。

 

raspi_code_2.1_4

次は、起動後の 基本設定になります。