ど~もeagle0wlです(再)

140文字では収まらないネタを記録するブログ

激安Arduino互換基板を買った

電子工作について。組み込み機器のプログラムを吸い出して、逆アセンブルして解析するような事を業務としてやったことはあったが、ArduinoRaspberry Piが生まれてからは電子工作自体のハードルがものすごく下がった。ソフトが書けてハードも分かるようになると、周囲の世界をコントロールできるようになる。

最近入手したパーツに関するメモを残す。

ATTINY85 Digispark

Arduinoはオープンハードウェアなので(Arduinoの名前は使えないが)玉石混交の互換品が多く存在する。その中でも、USBコネクタつき(重要)で恐らく最小の互換品はこれだろう。激安(183円)である。なんだこれは。しかし、この手の中華基板は完動する個体を引けるかどうかにかかっており、完全にバクチである。ということで4個買った。
f:id:eagle0wl:20161123224109j:plain

結論から言うと、今回動作確認できた個体は4個中1個だけだった。渋すぎる。USBコネクタに指すと、接続→接続解除が延々と繰り返される個体があったのでハズレだと思ったが、実はこれが当たりだった。他3つは通電確認用のLEDは点灯するが、unknown deviceとして認識されずプログラムを書き込めなかった。

コピー基板のさらにコピーともなると、今回調べた互換基板と動作が異なるかもしれない。今回はプログラムを書き込んでLチカまで確認した。

ドライバのインストール&ArduinoIDEの設定追加

digispark:tutorials:connecting [Digistump Wiki]

公式が詳しい。以下はWindows10での手順。

Arduino IDEのインストー

最新版にしたほうが良い。
Arduino - Software

ドライバをインストールする。

Installation Instructions: から入手できる Digistump.Drivers.zip をダウンロードする。展開後、"Install Drivers.exe"を実行すれば良い。

ArduinoIDEの設定追加

ArduinoIDEを起動する。

メニューのファイル(File)→環境設定(Preference)を選択する。

設定タブの、追加のボードマネージャのURL(Additional Boards Manager URLs)に以下のURLを入力する。

http://digistump.com/package_digistump_index.json

OKを押して環境設定のウィンドウを閉じる。

メニューのツール(Tool)→ボード:"<ボード名>"(Board: "<ボード名>")→ボードマネージャ...(Boards Manager...)を選択する。

プルダウンから「提供された」(Contributed)を選び、表示されている一覧から "Digistump AVR Boards by Digistump" を探してインストールする。成功したら、ボードマネージャのウィンドウを閉じる。

プログラムの作成・書き込み

メニューのツール(Tool)→ボード:"<ボード名>"(Board: "<ボード名>")→Digispark (Default - 16.5mhz) を選択する。

メニューのファイル(File)→スケッチの例(Examples)→Digispark_Example→Startを選ぶとサンプルのスケッチが出る。

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B
  pinMode(1, OUTPUT); //LED on Model A  or Pro
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(1, HIGH);
  delay(1000);               // wait for a second
  digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(1, LOW); 
  delay(1000);               // wait for a second
}

プログラムの書き込みは少し面倒である。ArduinoIDEから、USBコネクタに基板を差し込まずに「(→)マイコンボードに書きこむ」ボタンを押して、ログに

Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)

と出たら差し込む。これでプログラムが書き込まれる。

running: 100% complete
>> Micronucleus done. Thank you!

と出れば、プログラムは実行する。

Lチカ目視確認

f:id:eagle0wl:20161123224225j:plain
基板には2つの赤色LEDが表面実装されている。ひとつは通電時に常時点灯するもので、もうひとつは、Model AであればPin1、Model BであればPin0に連動している。I2CやPWMにも対応しているようだ。

digispark:tutorials:connecting [Digistump Wiki]

The Digispark supports all features found in the IDE with the exception of the serial monitor and the burn bootloader functionality.

Many existing libraries will not work with the Digispark: For I2C devices check out the TinyWireM library, which makes it super simple to port an I2C based device library over to use with the Digispark.

Pin outs:

All pins can be used as Digital I/O
Pin 0 → I2C SDA, PWM (LED on Model B)
Pin 1 → PWM (LED on Model A)
Pin 2 → I2C SCK, Analog In
Pin 3 → Analog In (also used for USB+ when USB is in use)
Pin 4 → PWM, Analog (also used for USB- when USB is in use)
Pin 5 → Analog In

感想

極小サイズ&激安価格、到着まで2週間、当たりは1/4(ただしサンプルは4個)ということを考えると、安いかどうかは判断しづらい。コピー基板も存在しているため、安定が欲しいならよしたほうがいいと思う。ただ、ここまでの極小サイズのArduino互換はそうないので、そこに惹かれるのであれば趣味で使うぶんにはアリではないだろうか。