USB直挿しマイコン Digispark(ATTINY85)

ちょっと気になったので購入してみました。

Digisparkとは?

KKHMF Digispark Kickstarter ATTINY85 USB 超小型開発ボードArduino互換
KKHMF
¥599(2024/05/19 23:12時点)
Arduino IDE 1.0+にサポートする (OSX/Win/Linux)

超小型のATTINY85を利用したArduinoマイコンです。USBに直接刺さるタイプと、ケーブル接続のタイプがあります。

Windows環境での使い方

Arduino IDEでボード追加

http://digistump.com/package_digistump_index.json をArduino IDEの環境設定の「追加のボードマネージャーのURL」に追加します。

Digistump AVR Boardsをインストールします。

パソコンにドライバをインストール

Arduino IDEの環境設定から、赤枠で囲まれたリンクをクリックします。フォルダが開きますので、「packages」「digistump」「tools」「micronucleus」「2.0a4」と開いていき、ドライバーが入っているフォルダまで移動します。

上記のinstall.exeを実行することで適切なドライバーが入るはずです。

Lチカしてみる

スケッチ例の「Digispark_Examples/Start」がLチカのサンプルです。

上記を実行してから、60秒以内にDigisparkを差し込むことでプログラムが転送されます。リセット機能がないので、強制的に抜き差しをしてリセットする必要があります。

プログラムはシンプルですね。LEDはモデルによってどこについているのかが違うようでして、私のものはpin1に接続していました。

電源確認用のLEDは常時ついていますので、もう一つのLEDが点滅するはずです。

HIDマウスにしてみる

このDigisparkはパソコン上からHIDデバイスとして認識させることができます。そのためマウスやキーボードとして見えるデバイスを簡単に作ることが可能です。

上記が「DigisparkMouse/Mouse」のスケッチ例です。

これを実行するとマウスとして認識して、自動的に動きます。外部からの入力によって動作を変えたり、スクリーンセイバーが動かないように定期的にマウスを震わせることなどができます。

パソコンとのシリアル通信

「DigisparkCDC」というサンプルがあるのですが、ちゃんと動かないと思いますので、現在非推奨になっています。

現在は「DigisparkUSB」を使ってください。こちらは仮想USBなので直接シリアルポートと認識されません。RubyとかPythonだと簡単にアクセスできるのですが、Windowsから使うのは結構面倒です。

https://github.com/digistump/DigisparkExamplePrograms/tree/master/Python/DigiUSB

上記にLinux、Mac、Windowsで使えるサンプルプログラムがありますので、それを実行して通信を試すことが可能です。

個人的にはちょっと面倒なので、シリアル通信をするのであれば他の小型ボードでいいんじゃないかなと思います。HIDデバイスとしてパソコンを制御したいとかの場合には安いので便利そうなんですけれどね。

スケッチ例を調べてみた

カテゴリスケッチ名対象内容
Adafruit_NeoPixelbuttoncyclerPINLEDのNeoPixel用
Adafruit_NeoPixeldigisparkPINLEDのNeoPixel用
Adafruit_NeoPixelsimplePINLEDのNeoPixel用
Adafruit_NeoPixelstrandtestPINLEDのNeoPixel用
DigisparkCDCCDC_LEDUSB非推奨のシリアル通信
DigisparkCDCEchoUSB非推奨のシリアル通信
DigisparkCDCPrintUSB非推奨のシリアル通信
DigisparkIRLibDigiIrDumpPIN赤外線(IR)用
DigisparkIRLibDigiIrRgbCtrlPIN赤外線(IR)用
DigisparkIRLibIRhashdecodePIN赤外線(IR)用
DigisparkIRLibIRrecordPIN赤外線(IR)用
DigisparkIRLibIRrecvDumpPIN赤外線(IR)用
DigisparkIRLibIRsendDemoPIN赤外線(IR)用
DigisparkIRLibIRsendJVCPIN赤外線(IR)用
DigisparkIRLibIRserial_remotePIN赤外線(IR)用
DigisparkIRLibIRservoPIN赤外線(IR)用
DigisparkIRLibSamsung36PIN赤外線(IR)用
DigisparkJoystickJoystickUSBHIDジョイスティック
DigisparkKeyboardKeyboardUSBHIDキーボード
DigisparkLCDBasicUsagePINI2C接続のLCD
DigisparkMouseMouseUSBHIDマウス
DigisparkOLEDDigisparkOLEDPINI2C接続のOLED
DigisparkRcSeqDigiRcSeqZodiacPINRCサーボシーケンス
DigisparkRcSeqMultiPosSwitchPINRCサーボシーケンス
DigisparkRcSeqOnePropTo5PINRCサーボシーケンス
DigisparkRcSeqRcSeqAdvancedDoorsPINRCサーボシーケンス
DigisparkRcSeqRcSeqDemoPINRCサーボシーケンス
DigisparkRcSeqRcSeqZodiacPINRCサーボシーケンス
DigisparkRcSeqUneVoieVers8PINRCサーボシーケンス
DigisparkRGBDigisparkRGBPINPWM出力(PB2)
DigisparkSoftRcPulseInSoftRcPulseInDebugPINpulseIn()関数のノンブロック版
DigisparkSoftRcPulseInSoftRcPulseInDemoPINpulseIn()関数のノンブロック版
DigisparkSoftRcPulseInSoftRcPulseInOutDemoPINpulseIn()関数のノンブロック版
DigisparkSoftRcPulseOutKnobPINパルス出力
DigisparkSoftRcPulseOutknob_moyenneePINパルス出力
DigisparkSoftRcPulseOutSerialServoPINパルス出力
DigisparkSoftRcPulseOutSoftRcPulseInOutDemoPINパルス出力
DigisparkSoftRcPulseOutSweepPINパルス出力
DigisparkSoftRcPulseOutSweepNoDelayPINパルス出力
DigisparkSoftRcPulseOutUsb2ServosPINパルス出力
DigisparkSoftSerialDigi_1io_SerialDbgPINシリアル通信
DigisparkSoftSerialSoftSerialExamplePINシリアル通信
DigisparkSoftSerialTwoPortReceivePINシリアル通信
DigisparkTinyPinChangeEdgePINPINの状態変更検知
DigisparkTinyPinChangeFallingEdgePINPINの状態変更検知
DigisparkTinyPinChangeRisingEdgePINPINの状態変更検知
DigisparkTinyPinChangeTinyRcScopePINPINの状態変更検知
DigisparkTinySoftPwmSoftPwm13PinsPINソフトウエアPWM
DigisparkTinySoftPwmTinySoftPwmDemoPINソフトウエアPWM
DigisparkUSBDigiBlinkUSBDigiUSB(仮想USB)
DigisparkUSBDigiScopeUSBDigiUSB(仮想USB)
DigisparkUSBDigiUSB2LCDUSBDigiUSB(仮想USB)
DigisparkUSBEchoUSBDigiUSB(仮想USB)
Digispark_ExamplesBasicRobot汎用サンプル
Digispark_ExamplesBT_BLE_Echo汎用サンプル
Digispark_ExamplesBT_or_BLERobot汎用サンプル
Digispark_ExamplesCharlieplex汎用サンプル
Digispark_ExamplesCharliePlexMarquee汎用サンプル
Digispark_ExamplesEEPROM汎用サンプル
Digispark_ExamplesExpander汎用サンプル
Digispark_ExamplesGPS汎用サンプル
Digispark_Examplesi2cScanner汎用サンプル
Digispark_ExamplesInfrared汎用サンプル
Digispark_ExamplesMeshGeneralExample汎用サンプル
Digispark_ExamplesMotorShield汎用サンプル
Digispark_ExamplesRfm12b汎用サンプル
Digispark_ExamplesStart汎用サンプル
Digispark_ExamplesWiFiClientGetExample汎用サンプル
Digispark_ExamplesWiFiClientPostExample汎用サンプル
Digispark_ExamplesWiFiServerExample汎用サンプル
Digispark_ExamplesWiFiServerRobot汎用サンプル
Digispark_Examples_9DOF_Shield汎用サンプル
NunchukArduinoNunchukDemoPINWii用ヌンチャック
NunchukDigisparkJoystickDemoPINWii用ヌンチャック
NunchukDigisparkUSBDemoPINWii用ヌンチャック
OneWireDigispark_ExamplePIN1-Wire通信用
RF24digispark_receivePINnRF24通信用
RF24digispark_sendPINnRF24通信用
SPIBarometricPressureSensorPINSPI通信用
SPIDigitalPotControlPINSPI通信用
WS2811digisparkPINWS2811 IC用(LED制御)

あまり情報がないので、スケッチ例を全部見てみました。結構関係なさそうなのも入っているので以下のスケッチ例だけ見ればいい気がします。

  • Digispark_Examples/Start
  • DigisparkMouse/Mouse
  • DigisparkKeyboard/Keyboard
  • DigisparkUSB/Echo

まとめ

スイッチを押したら特定の動作をするなどの、キーボードやマウス入力装置作成マイコンとしてはかなり優秀だと思います。

値段も安いので、一度触ってみてもいいのかな? ただちょっとでも面倒なことをやるのであれば、もっと普通のマイコンのほうが開発しやすいとは思います。

コメント

  1. MURAUCHI AKITSUGU より:

    超小型で面白そうなので、何もわからずに買ってみました。
    案の定、USBに差し込んでも認識すらしません。
    WEBでATTiny85の使い方を検索し、貴殿の記事時に行きつきました。
    書かれたとおりにやって見ました。⇒ばっちりです。 Lチカできました。
    引っ掛かってしまったのが、Resetが無いので基盤を抜き差しするところ。
    基盤を最初からUSBに差し込んだままでは、書き込みできませんでした。
    良い記事にあたり助かりました。