200円マイコンでPCと直接繋いでArduinoで開発できるボードを作ってみたよ

# はじめに

Digisparkという、小型のマイコンボードがあります。

小型でパーツ数も少ないにも関わらず、直接PCに挿してArduinoで開発できるといった大変お手軽なボードです。

実はDigisparkはATTINY85という200円くらいで購入できるマイコンとその周辺の簡単な回路で出来ています。

そこで私はATTINY85を使ってそのDigisparkと同じように動作するボードを作ってみました。下記はその記録です。

○Digispark(Amazon)：
https://www.amazon.co.jp/HiLetgo-Digispark-Kickstarter-ATTINY85-%E8%B6%85%E5%B0%8F%E5%9E%8BArduino%E4%BA%92%E6%8F%9B/dp/B07BJ2F2WZ

○ATTINY85（マルツオンライン）：
https://www.marutsu.co.jp/pc/i/40455/

# 実際にやったこと
			
## 使用したもの
            
下記の通りです。
・ATTINY85 x1
・ツェナーダイオード（GDZJ3.6B）x2
・抵抗（2.0kΩ） x1
・抵抗（68Ω） x2
・ArduinoNano x1
・PC(Windows7 64bit) x1

## 手順
            
### 1. micronucles（ATTiny usb bootloader）をATTiny85に書き込む  
1-1. ArduinoIDEをインストールする  
1-2. ArduinoNanoにArduinoISPを書き込む(AruidnoIDEの「ファイル」→「スケッチの例」→「ArduinoISP」)  
1-3. ArduinoNanoとAttiny85を結線します  

```図1
                                                ╔═══════════════╗
           ╔═════════════════════════╗          ║               ║
           ║                       SS╬──────────╬1              ║
           ║                      GND╬──────────╬4   Attiny85   ║
           ║          Arduino    MOSI╬──────────╬5              ║
           ║          Nano       MISO╬──────────╬6              ║
           ║                      SCK╬──────────╬7              ║
           ║                       5V╬──────────╬8              ║
           ║                         ║          ║               ║
           ╚═════════════════════════╝          ╚═══════════════╝
```

1-4. avrdude.exe、avrdude.conf、libusb0.dllをArduinoIDEのファイル群から検索して取ってきます
（例：C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe）  

1-5. micronucleusを [GitHub](https://github.com/micronucleus/micronucleus/tree/master/firmware/releases)から取ってきてZIP解凍してt85_default.hexを取り出します  
1-6. avrdude.exe、avrdude.conf、t85_default.hex、libusb0.dllを1つのフォルダに入れます  
1-7. 上記1-6のフォルダにコマンドプロンプトで移動してAttinyと接続します（下図のようにavrdudeコマンドを入力）  
※COM6は各自のArduinoNanoのCOM番号を指定してください

```図2
C:\temp\WriteAttinyBootloader>avrdude -c avrisp -P COM6 -b 19200 -p t85

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.09s

avrdude: Device signature = 0x1e930b (probably t85)

avrdude: safemode: Fuses OK (E:FF, H:DF, L:62)

avrdude done.  Thank you.
```

1-8. Attinyにブートローダを書き込みます（下図のようにavrdudeコマンドを入力）
　　　※ヒューズの書き換え
　　　※適当に書き換えることはできません！！！！
　　　※最悪の場合、専用の装置が無いと復帰できないレベルの問題が起きます！！！！
　　　※自己責任でお願いします。

```図3
C:\temp\WriteAttinyBootloader>avrdude -c avrisp -P COM6 -b 19200 -p t85 -U flas
:w:t85_default.hex -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xfe:m
```
			

### 2. Digistump AVR BoardをArduinoIDEのボードマネージャーに読み込ませる  
2-1. [ファイル]=>環境設定(CTRL+Comma)で、環境設定メニューを開く  
2-2. Adittional Boards Manager URLs: に  http://digistump.com/package_digistump_index.json を追加して、[OK]を押す  
2-3. Type(タイプ)のドロップダウンメニューからContributed(提供された)を選択。するのだが、初回時でないので、一回ボードマネージャーのウィンドウを閉じて、もう一回開く  
2-4. Contributedをえらぶと、Digistump AVR Boards by Digistumpというのがあるのでそこをクリック、[インストール]ボタンが出るので押して、インストールが終わったら[閉じる]。  
2-5. [ツール]=>マイコンボード:から、Digispark (Default - 16.5mhz) を選択  

### 3. Windows7用のドライバをインストールする  
3-1. ATTiny85の回路を下図のように組み、そしてUSBをPCと繋ぎます
※（1）：68Ωの抵抗をAttiny85とUSBの間に入れる。そして、3.3Vのツェナーダイオード（カソード：D-、アノード：GND）と2kΩの抵抗(5VとD-の間）を入れる
※（2）：68Ωの抵抗をAttiny85とUSBの間に入れる。そして、3.3Vのツェナーダイオード（カソード：D+、アノード：GND）を入れる  

```図4
                                   ╔═══════════════╗
           ╔════════════╗          ║               ║
           ║            ║      NC──╬1              ║
           ║         D- ╬───(1)────╬2   Attiny85   ║
           ║   USB   D+ ╬───(2)────╬3              ║
           ║         GND╬──────────╬4              ║
           ║          5V╬──────────╬8              ║
           ║            ║          ║               ║
           ║            ║          ║               ║
           ╚════════════╝          ╚═══════════════╝
```
3-2. PCでUSBを検知するので、デバイスドライバをいれる（Digistump AVR Boardsパッケージをインストールすると、「%USERPROFILE%\AppData\Local\Arduino15\packages\digistump\tools\micronucleus\2.0a4」あたりにinfがあるのでそいつを指定して手動でドライバをいれる。）   
  
### 4. コード作成・書き込み
4-1. 下記のコードをArduinoにコピペし、「書き込み」を実行する（USBは抜いておく）  

```c:サンプルコード
void setup() {                
  pinMode(0, OUTPUT); //LED(PB0)
  pinMode(1, OUTPUT); //LED(PB1)   
  pinMode(2, OUTPUT); //LED(PB2)   
}

void loop() {
  digitalWrite(0, HIGH);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
  delay(3000);
  digitalWrite(0, LOW);
  digitalWrite(1, LOW); 
  digitalWrite(2, LOW); 
  delay(3000);
}
```
4-2. 「Plug in device now... (will timeout in 60 seconds)」とメッセージが表示されたらUSBを挿す  
4-3. 「running: 100% complete（改行）>> Micronucleus done. Thank you!」とメッセージが表示されたら書き込み完了（USBを挿し直すとプログラムが走る）  

# 終わりに

いかがでしたでしょうか。

結構色々やりますが、これを一通りやり終えるとその後はPCに挿すだけでプログラミングが楽しめます。

そして、シンプルな回路ですので、自分で小型のプリント基板を作ることも難しくありません。オリジナルの開発ボードを作ってみると楽しいと思います。

тнайк чoμ_〆(・ω・｡)			
			
# 参考記事
　
[メモ] Digispark(ATTiny85) Arduino開発環境で、Lチカ 
https://qiita.com/mt08/items/df4ed8c659b205d1fa1e