Arduino Leonardoが突然認識されなくなった！ブートローダ書き込み用シールドを自作

## この記事でわかること
1. Arduino Leonardoにブートローダを書き込む方法
2. Arduinoシールドの自作方法

#####  参考にした記事
[Arduinoのブートローダの修復方法 : Kurosawa 2017年1月24日](https://physical-computing-lab.net/arduino/learn_arduino_bootloader_install.html)


:::note warn
本記事では、Arduinoや電子工作の基本的な操作方法や手順などを省いている場合があります。
:::


# はじめに
ある時、Arduino Leonardoを使って制作をしていると、ArduinoIDE側でボードが認識されなくなってしまいました。パソコンの再起動やUSBケーブルの交換をしてもトラブルが解消されず、別のLeonardoボードを使って制作を進めましたが、程なくして交換したボードも同じように認識されなくなりました。

こうして、使えなくなった２つのLeonardoボードを手元に抱えることとなったので、直す方法を調べました。それから、ブートローダを書き込むことでボードを修復できることを確認し、結果的にボードを修復することができました。

修復方法自体は、手間のかかる作業量でもなかったのですが、これからも同じようにArduinoボードを修復する機会があると思い、より作業を楽にするためのシールドを自作することにしました。

## 1. Arduino Leonardoにブートローダを書き込む方法
### 必要なもの
1. 認識されないArduino Leonardo：1個
1. Arduino uno：1個
1. ジャンパーワイヤ（オス-メス）：6本
1. 抵抗 100Ω：1個

:::note info
上記の部品等は[秋月電子通商](https://akizukidenshi.com/catalog/default.aspx)にて購入できます。
:::

### 書き込み手順
IDE側で認識されなくなったボードにブートローダを書き込むためには、別のボードが『書き込み用ボード』として必要になります。
今回はArduino Unoを使って、Leonardoボードにブートローダを書き込みます。
<br>

1\. Arduino IDEを開いて「ファイル」から「ArduinoISP」を開きます。　
2\. 書き込み用のArduino Unoに、「ArduinoISP」をアップロードします。

![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/45922b8f-7543-0984-510d-846382d6e940.jpeg)

<br>

3\. 以下の図を参考にジャンパーケーブルと抵抗を繋いでください。 

![000.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/713238b1-b8d7-0b47-8851-357c265e645c.jpeg)

<br>

4\. 部品の接続の後に再度IDEを開いて、ツールのボード選択から『Arduino Leonardo』を選択します。

![002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/0d77c5cb-f98c-7a66-9d94-2f877dfe0669.jpeg)

<br>

5\. ツールの"Programmer"(書き込み装置)から『Arduino as ISP』を選択します。他にも紛らわしい選択肢がありますが、"as"のついているものを選択してください。

![003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/9b138f5b-7774-c422-5627-d8f91aa87d21.jpeg)

<br>

6\. ツールから"Burn Bootloader"（ブートローダを書き込む）をクリックしてブートローダを書き込みます。
![004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/8c1576ac-6896-ea92-55a9-28057034bf94.jpeg)

<br>

7\.　しばらくすると書き込み完了の通知がきます。つないだジャンパーワイヤを外して、Arduino LeonardoがIDEで認識されるか確認してみましょう。
![005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/405d1844-7447-52e2-2d3b-564d426bd64f.jpeg)

<br>

## 2. Arduinoシールドの自作方法
ここからは、ブートローダの書き込みに際して必要となったジャンパーワイヤ等の部品を、シールドとして実装していきます。

### 完成品
![010.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/38641292-8e7f-deb0-9949-5c89f9aea4ce.jpeg)


### 必要なもの
#### ・部品
1. [ユニバーサル基盤](https://akizukidenshi.com/catalog/g/g117830/)：1枚
1. [はんだ](https://akizukidenshi.com/catalog/g/g109531/)：1個
1. [はんだ吸い取り線](https://akizukidenshi.com/catalog/g/g115260/)：1個
1. [ピンヘッダー1×40](https://akizukidenshi.com/catalog/g/g100167/)：2個
1. [分割ロングピンソケット 1×42](https://akizukidenshi.com/catalog/g/g105779/)：1個
1. [スズメッキ線](https://akizukidenshi.com/catalog/g/g110333/)：1個
1. [耐熱電子ワイヤ 黒](https://akizukidenshi.com/catalog/g/g111091/)：1個
1. [耐熱電子ワイヤ 赤](https://akizukidenshi.com/catalog/g/g111090/)：1個
1. [金属皮膜抵抗 1/4W100Ω](https://akizukidenshi.com/catalog/g/g116875/)：1個

#### ・工具等
1. デジタルマルチメータ（テスターでも可）
1. はんだごて
1. はんだごて台
1. こて先クリーナー
1. ニッパー
1. カッター
1. カッティングマット
1. グルーガン
1. 電動ドライバー
1. ドリルビット 2mm
1. ワイヤーストリッパー

揃えると大体こんな感じです
・部品
![006.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/e152cbee-8f41-affc-b279-fd56643bdb17.jpeg)
（ジャンパーワイヤーが写っていますが、シールド制作では使用しません。）

・工具
![007.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/dda71e09-6e34-dd55-a3e3-2acc2b2707a7.jpeg)
（画像にはグルーガンと電動ドライバー、ドリルビットが含まれていません。）

### 制作手順
1\. シールドの土台となるユニバーサル基盤を適切な大きさに割って分割します。基盤を分割するには、分割する線上をカッターで切ります。紙のように簡単には刃が通らないので、複数回にわたって切っていきます。これを両面行なった後で、線に沿って割ることができます。

![008.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/1a404696-dd1b-5741-25ba-4866533b3c93.jpeg)

![009.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/b1f12dd4-0611-2292-c6f4-4a0c3e328cde.jpeg)
（画像右側の基盤を使いましたが、少し大きかったため、後で再度分割しました。）

<br>

2\. ユニバーサル基盤とArduinoを繋ぐためのピンヘッダを分割して、画像のようにArduino側のピンソケットに装着します。この工程をArduino Leonardoと書き込み用のArduino Unoの両方に施します。

![012.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/0167722c-4cb5-df65-b3cd-d7c611b58a68.jpeg)
![011.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/c655e3f0-55fb-147e-50cf-3843fdc246f7.jpeg)
↑ Arduino Leonardo

![013.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/27bd9c4e-b410-a940-989c-677373f783eb.jpeg)
↑ Arduino UNO

<br>

3\. ピンヘッダを装着したArduinoを並べて、先ほど分割したユニバーサル基盤を、ピンヘッダが入るように乗せます。それから、ピンヘッダとユニバーサル基盤を接続するために、はんだ付けをします。


:::note warn
はんだ付けの際に、ピンヘッダを長時間熱すると、周辺部品やチップ自体が破損してしまう恐れがあります。使用予定のArduinoボードを使って基盤実装をすることは推奨されません。
:::

![014.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/80d85c7c-a11b-4097-eb2d-7b640e3bc1b7.jpeg)
（乗せます。それっぽくなってきました。）

![015.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/91721ca5-59b1-4e44-7687-a88804ae5364.jpeg)
（素早く丁寧に、半田付けしましょう。基盤を水平に取り付けるために、一列順番に半田付けしていくのではなく、四隅からつけていくのがおすすめです。）

<br>

4\. ピンヘッダの取り付けが終わったら、一度『Arduino Leonardo』を取り外します。次に、ブートローダ書き込み時に使用したICSPピン（2×3で6個、固まって並んでいるピン）にピンソケットを取り付けてユニバーサル基盤を装着し、はんだ付けします。

![017.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/1a94e90b-8148-3765-e02c-0f64dd022e05.jpeg)
（ピンソケット）

![016.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/42acf674-1e58-f838-3e73-2600dd18f129.jpeg)
（赤丸で囲った場所がICSPピンです。）

![018.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/5dcf0ba9-5cdc-7dd4-0dff-e5602c97ddac.jpeg)
（ピンソケットをつけて外してみると、こんな感じです。シールドっぽくなってきました。）

<br>

5\.　次は『書き込み用Arduino Uno』の8〜13の列のピンヘッダを装着します。ここから少し難しい工程に入るので注意が必要です。下画像の通り、8〜13の列はピン配列が少しずらされているため、このままではユニバーサル基盤に接続することができません。
そのため、ユニバーサル基盤に穴を開けて、ピンヘッダを取り付けます。
今回、穴あけは電動ドライバーと2mmのドリルビットを使って行います。しかしビットに負荷がかかるため、穴あけには小型のグラインダーが望ましいです。

:::note warn
作業にあたって周りのピンを破損したり、ユニバーサル基盤が割れてしまうこともあります。また、怪我をしないように十分配慮してください。
:::

![019.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/32a9e91d-bccd-6768-2744-5c4ec6562ce1.jpeg)
（0~7を差し込むと、8からの列を差し込むことができません。このような問題は、販売されている[シールドを購入する](https://www.digikey.jp/ja/products/detail/ptsolns/PTS-00153-211/19116270?utm_adgroup=&utm_source=google&utm_medium=cpc&utm_campaign=Pmax%20Shopping_Product_Low%20Volume&utm_term=&productid=19116270&utm_content=&utm_id=go_cmp-20195885710_adg-_ad-__dev-c_ext-_prd-19116270_sig-Cj0KCQiAuou6BhDhARIsAIfgrn5b_ceFTASDukR0Ag2TxT4Z946QDwX5UARAS8u1ho-fIGshAS6FETQaAg4wEALw_wcB&gad_source=4&gclid=Cj0KCQiAuou6BhDhARIsAIfgrn5b_ceFTASDukR0Ag2TxT4Z946QDwX5UARAS8u1ho-fIGshAS6FETQaAg4wEALw_wcB)ことでも解決できます。）

![020.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/67a11b0c-a064-d873-ae77-54f792ea6949.jpeg)
↑まずは基盤の穴をドリルビットで広げます。

![021.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/85c1cd83-5151-520f-76b5-6bc22f0e82e8.jpeg)
↑続けて、隙間を削るように繋げていきます。

<br>

6\. 基盤を削り終わった後に、ピンヘッダを取り付けてグルーガンで固定します。

![024.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/9a2dc65d-a314-399e-4504-10fb5e4db2e1.jpeg)
↑グルーガンで固定します。この時に、Arduino本体と固定しないように注意しましょう。また、現時点で固定するのは8~13の列の外側だけです。

![023.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/6a54cd88-9587-c0e2-2cc4-e4e331a0fb46.jpeg)
（上から見るとこんな感じです。）

<br>

7\. 使用するすべてのピンを用意できました。いよいよ配線を組んでいきます。画像のように抵抗とスズメッキ線を配置していきましょう。

![025.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/5e371329-f456-2ffc-8701-ef080d8859bd.jpeg)

![000.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/fd026c43-1800-c9de-6a5c-3417445ec150.jpeg)
（記事冒頭にて使用した配線図を再掲。）

    Tips　:　導線の被覆を剥くのにワイヤーストリッパーが便利です。
    　　　　　ただし、下画像のようなワンタッチタイプは向く本数が多い時に向いていますが、
         　　精密な作業をするときには向いていません。


![026.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/d29ca1e2-7aa3-1456-957e-61a5ae02335e.jpeg)

<br>

8\. 配線が終わったら、デジタルマルチメーターで接続した配線が正しくつながっているか確認します。問題なければ、不安定な箇所をグルーガンで補強して完成です。

![027.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/48facc7c-9aeb-be76-9f3f-47330f6e4b20.jpeg)
（基盤を削った場所が通電しているかチェックします。）

<br>

# 完成！

本記事では、Arduino Leonardoの破損したブートローダの書き込みから、その一部機能を実装したシールドを制作しました。
これでまた、ほんの少し電子工作ライフが快適になると思います。机の端っこで動かなくなったボードや、道具箱の底で眠っている壊れたボードを直してあげましょう！

![030.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/81dbfabb-3830-7710-8a3f-99bf6bc66629.jpeg)

![029.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/c0c787ae-9aca-61f8-153e-d569db4c160b.jpeg)

![028.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3941840/c9362948-4e8e-9afb-eb14-d5a08d6bd12b.jpeg)

<br>


## 参考にした記事
[Arduinoのブートローダの修復方法 : Kurosawa 2017年1月24日](https://physical-computing-lab.net/arduino/learn_arduino_bootloader_install.html)