2018年3月31日土曜日

ATtiny85(Digispark:超小型Arduino?)をちょっと嚙じる

ある日、AliExpressを散歩していると、こんなものを見つけました。
USBーSerialのチップが載っていないのに、USB端子がある小さなボード
表側は、ATtiny85と3端子レギュレータだけ乗っています。
「ATtiny85」 8pinのArduino?
出所:AliExpress
裏側には何もないのです。
なんでUSBできるの?
出所:AliExpress
調べてみるとここに解説が、「Digispark」というものらしい。
Digistump LLC(合同会社)で作られたDigisparkの元祖機は、
このUSBに直接挿せる超小型のArduino Cloneらしい(Amazonだとこれ

AtmelのATtiny85にUSBプロトコルスタック(V-USB)が入っていて、
AVRマイコン内にソフトウェアでUSB1.1デバイスを実現しているというのです。

マーティーは、PICはいくつか使ったことありますが
Arduinoでは、まだCNC2418の書き換えしか経験がないのです。
小さいのは好きなので、このDigispark Cloneを買ってみることに
2つでUS$ 2.68

ついでにこれもポチっておきます。普通のArduino NANO Cloneボード。
US$ 2.55
これは、表側にATmega328Pが
裏側には、USB-SerialのCH340Gが乗っています。
待つこと、数週間.....

先にArduino NANOが届き、Arduino IDEでLEDチカチカで確認OK!

続いて、本命のこれが届きました!
ちなみに、上の写真は、新しいマーティーPCの上です。白キーボード。
丁度いい時にお下がりが回ってきたのです!
以前のPCからHDDを取り出してUSBで接続してデータ吸い上げ成功。
今度のPCは、画面が15.6"⇒13.3"になりちと操作がやり難いですが
Core i3-2350 2.30GHz、メモリが、8GBまでUPできました。
4GBの時は、前と変わらない感触でしたが、8GBにしてとっても快適です。
Fusion360、Eagle、GIMP、Inkscape、Chrome、Firefoxを立ち上げても
余裕がありHDDへのスワップが起こりません(データは開いてない状態ですが)。
これでAliExpressの買物時もタブを沢山だせますね~
しいて言うと、GPUが非力なのでFusion360の動きがどうなるかな?

話を戻して、裏(右)は何もなく、表(左)にTINY85と78L05だけです。
超小型のArduino Cloneなのです。面白そうです。
表に「TINY85」、裏に「Digispark」のシルクがあります。
Digistump Createdの回路図は、このPDFです。

ATtiny85の機能としては、GitHubのここにあります。
「AVR 8bit Microcontroller」なのです。
ちょっとチップ単体で次の3つを比べてみると
・ATtiny 85(8pin)
・ATMega328P: Arduino UnoやNanoに乗っている
・PIC 12F1822(8pin): マーティーの好きなPIC
品番  Flash   RAM   EEPROM   ADC 
ATtiny85 8KB 512B 512B 4ch
 ATMega328P  32KB 2KB 1KB 6ch
PIC
12F1822
2KB 128B 256B 4ch
8pin PICでUSBできるものはないので(はず)
Vcc、GND、USB x2で残りは4pinですが、可能性が広がって何だかワクワクします。

今回は、特に何か作るものがあるわけではなく
AliExpresでConfirmする為の環境設定の作業です。

Windowsには、専用のUSB DriverをInstallする必要があります。
ここのやり方を参考にさせていただきましたm(_ _)m
Driverは、GitHubのここの「micronucleus-2.0a4-win.zip」に
Windows 32/64bit版の両方が入っています。
ダウンロードした「micronucleus-2.0a4-win.zip」を解凍して
マーティーPCは、Windows10 Home 64bitなので
「DPinst64.exe」を実行します。
[次へ]
[インストール]します。
これも[インストール]します。
[完了]ボタンでインストール完了です。
この4つがインストールされていました。
早速、スケッチを書き込んでいない「Digispark」をUSBで接続すると
USB挿入時の「ピポン、ピポン」と認識とリムーブを繰り返します。
ドキッとしますが、正常な動作だそうです。
ブートローダーによっては、5秒後にリムーブされるのもあるそうです。
デバイスドライバに「Digipark Bootloader」がでてればOKなので
気にせずに「Digispark」を取り外します。
次に、
Arduino IDEのデフォルトでは、Digisparkにスケッチを書き込めませんので
ボードマネージャー(開発環境)なるものをインストールする必要があります。

実は、後からわかったのですが
ボードマネージャー(開発環境パッケージ)は、
1.Digisparkの製作元Digistump LLC(合同会社)のパッケージ
2.GitHubのここにある個人のSpence Konde氏が開発したパッケージ
と、2種類あるのです。

前者1の方から進めてみます。
【Digistump提供のパッケージ】
英語だとDigistump社のここですが、
日本語のここを参考にさせていただきましたm(_ _)m

マーティーPCには、Arduino IDE v.1.8.3をここでインストールしています。
Arduino IDE v.1.8.3を起動します。
[ファイル]-[環境設定]します。
赤枠部の[追加のボードマネージャのURL:]に次のURLを入力して[OK]します。
 http://digistump.com/package_digistump_index.json
ちなみに、上の緑枠のボタンを押すと
この窓が出て、複数のURLを入力することができるようです。
で、[ツール]-[ボード]-[ボードマネージャー]をクリックします。
すると、この窓が出て、いきなり下の方に
「プラットフォームのインデックスをダウンロード中」とでますが
インデックスだけなので驚かないくていいです。
マーティーは驚いてしまいましたが(-_-;)
ダウンロードのバーが消えるまで待ちます。
[タイプ]を[提供された]にします。
そこで[Digistump AVR Board by Digistump]の所をクリックして選択すると
右下に[インストール]ボタンが出現するのでクリック。
下のダウンロードバーが進みます。46MB程あるようです。
ダウンロードが終わると「ツールをインストール」がでて
「ボードをインストール」がでて
「インストール完了」がでるとすぐに消えて
「INSTALLED」と赤線の所にでてれば、インストール完了です。
[閉じる]します。
元の画面に戻ると、下に警告が出ていますが
警告:信頼されていないコントリビューションです。スクリプトの実行をスキップしています。(C:\Users\marty\AppData\Local\Arduino15\packages\digistump\tools\micronucleus\2.0a4\post_install.bat)
とでています。
インストールや書き込み時の「警告」は、心臓に悪いですね~
「post_install.bat」があるフォルダを見てみると、これでした。
最初にGitHubからダウンロードしたWindowsのUSB HOST Driver
「micronucleus-2.0a4-win.zip」を解凍したものと同じなのです。
しかもフォルダ名が[2.0a4]なので同一バージョンですね!
ということで、この警告は無視していいということになります。
Arduino IDEを再起動すれば消えます。
[ツール]-[ボード]にDigisparkの群ができています!
もしアンインストールする時は、
[ツール]-[ボード]-[ボードマネージャー]で
[タイプ]の右欄(緑枠部)に「digistump」と入力すると
上の方に[Digistump AVR Board by Digistump]がでてくるので
そこを(赤枠部)をクリックすると右下に[削除]ボタンが出現します。
サンプルスケッチを入れてみます。
Digispark(ATtiny85)は、先に接続してはいけないのです。
[ツール]-[ボード]-[Digispark(Default - 16.5mhz)]を選択します。
[ツール]-[書込装置]-[Micronucleus]を選択します。
[ファイル]-[スケッチの例]の▼で下の方に行くと
「Digispark(Default - 16.5mhz)用」のスケッチが沢山でてきます。
どれでTESTしていいかわかりませんね~
ここにありました!
[ファイル]-[スケッチ例]-[Digispark_Example]-[Start]を選択します。
このスケッチが別ウィンドウで出てきます。
いわゆる「Lチカ」です。
スケッチはこれです。
*****
// 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
}
*****
ま~だDigispark(ATtiny85)をUSBに繋いではいけません。

[スケッチ]-[マイコンボードに書き込む]します。
コンパイルが終わり、下の欄に
Plug in device now...(will timeout in 60 seconds)」とでたら
Digispark(ATtiny85)をUSBに接続します。
カウントダウンはされませんが、ちと焦ります。
ボードへの書き込みが完了しました。」と
Micronucleus done. Thank you!」の表示がでます。
「ピポン、ピポン、ピポン」と3回ほど音が出ますが
5秒後位にアップロードしたスケッチが動き出してLEDが点滅し始めます。
めでたしめでたし!
ちょっと変わっているのは、シリアル通信で書き込んでいるはずなのでしょうが
[ツール]-[シリアルポート]が、グレーアウトなのです。
DigisparkのUSB-Bootloaderは、USBーSerial変換みたいな通信ではなく
専用の通信になっているのでしょうかね?
一応、記録として書き込み時のLOGです。
お尻から8行目に「Reconnected!」ってのがちょっと気になります。
まあ、正常に書き込めたのでいいか!
*****
Archiving built core (caching) in: C:\Users\marty\AppData\Local\Temp\arduino_cache_607818\core\core_digistump_avr_digispark-tiny_6658f128ab835c244deaa4adbff9771c.a
最大6012バイトのフラッシュメモリのうち、スケッチが718バイト(11%)を使っています。
グローバル変数は9バイトのRAMを使用しています。
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)
> Please plug in the device ... 
> Press CTRL+C to terminate the program.
> Device is found!
connecting: 16% complete
connecting: 22% complete
connecting: 28% complete
connecting: 33% complete
> Device has firmware version 1.6
> Available space for user applications: 6012 bytes
> Suggested sleep time between sending pages: 8ms
> Whole page count: 94  page size: 64
> Erase function sleep duration: 752ms
parsing: 50% complete
> Erasing the memory ...
erasing: 55% complete
erasing: 60% complete
erasing: 65% complete
>> Eep! Connection to device lost during erase! Not to worry
>> This happens on some computers - reconnecting...
>> Reconnected! Continuing upload sequence...
> Starting to upload ...
writing: 70% complete
writing: 75% complete
writing: 80% complete
> Starting the user app ...
running: 100% complete
>> Micronucleus done. Thank you!
*****

【Spence Konde氏のパッケージ】
もう一つの
2.GitHubのここにある個人のSpence Konde氏が開発したパッケージも
インストールしてみます。

英語ですとGitHubのここです。
「Ver.1.6.4以上だけど、1.6.6、1.6.7、1.6.8、1.6.10はバグありで推奨しない、
 Ver.1.8.3を推奨」とありますね~
日本語は、ここを参考にさせていただきましたm(_ _)m

基本的には、Digistumpパッケージのインストールと同じで
ボードマネージャーで入力するURLが異なるだけです。

では、
Arduino IDE v.1.8.3を起動します。
[ファイル]-[環境設定]します。
赤枠部の[追加のボードマネージャのURL:]に次のURLを入力しますが
先にDigistumpのURLが入っているので
この後ろに「,」をつけて追加してもいいのですが
上の緑枠のボタンを押し、このボックスで改行して次のURLを追加して[OK]します。
 http://drazzy.com/package_drazzy.com_index.json
環境設定を閉じて
[ツール]-[ボード]-[ボードマネージャー]をクリックします。
すると、ボードマネージャーの窓が出るので
「プラットフォームのインデックスをダウンロード中」が終わるまで待って
[タイプ]の横の「検索をフィルタ」の欄に「attiny」と入力すると、
ATTinyCore by Spence Konde
 と 
ATtiny Modern(deprecated, use ATTniyCore instead) by Spence Konde
の2つがでてくるので
上側の「ATTInyCore by Spence Konde」をクリックすると
右側に[インストール]ボタンが現れます。」
インストールボタンの前に何かプルダウンボックスがあるので開いてみると
Versionが選択できますが、最新の1.1.5のままにしておき
[インストール]をクリック
ボードの定義がダウンロードされ
ボードがインストールされ
完了すると赤線部に「INSTALLED」がでたら[閉じる]します。
[ツール]-[ボード]で下の方にスクロールして
[ATtiny25/45/85]を選択します。
設定項目(赤枠部)と書込装置の種類(青枠部)が沢山増えています。
詳しい使い方は、GitHubのここですが、今は、よくわかりません。
[ファイル]-[スケッチの例]で下の方の[ATtiny25/45/85用のスケッチ例]は、
これだけで、ちょっとテストに使えそうなものはないですね~
それよりも、もう一度、Digisparkにしようとしたら
さっきまで赤枠の所にあった「Digistump AVR Board」群がでてこないのです。
Arduino IDE v1.8.3を再起動してもダメですね~
しかたないので「ATTinyCore by Spence Konde」の方は、アンインストールします。
[ツール]-[ボード]-[ボードマネージャー]で
「検索をフィルタ」(緑枠部)の欄に「attiny」と入力すると
[ATTinyCore by Spence Konde]がでてくるので
そこを(赤枠部)をクリックすると右下に[削除]ボタンが現れます。
確認のダイアログボックスがでるので[はい]...数秒で終わります
ボードマネージャーを閉じて、[ツール]-[ボード]をみると
「Digistump AVR Board」群が復活しています。
試しに再度、「ATTInyCore by Spence Konde」をインストールすると
「ATTinyCore」と「Digispark」の両方のリストがでてくるようになりました!
なんだったんだろう?
ということで
2個目のDigisparkにも[Digispark_Example]-[Start]を書き込んで
Lチカを確認して、今回はここまでです。

その内にお世話になるであろうサイトを忘備録しておきます。

英語だけど「Getting Started with your Digispark...」は、ここから。

英語版の「ATtiny25/V / ATtiny45/V / ATtiny85/V」のDatasheetはこのPDF
本家Atmelのは、こっちでした!若干異なります(2020.4.21追記)
それを有志の方々で日本語に翻訳されたデータシートはこのPDFに
誠にありがたいことであります。感謝!感謝!

USBブートローダーがない生のATtiny85にスケッチを書き込むには、
Arduino UNO Rev.3を使って、結線は、ここを参考にさせていただき
時期が来たら、やってみようと思います。
この時の「Arduino UnoをBootloader書込機にする」をやっていますが、
まだ、単品のATtiny85を持っていないのです。
さ~て何をつくろうかな?

0 件のコメント: