2022/04/06

Digisparkでマクロパッドを作った: オンライン会議向けのマイクミュートやカメラのON/OFF操作デバイス

概要

Digispark互換ボードを使用してマクロパッドを作成しました. このマクロパッドはPCにはUSBキーボードとして認識され,各タクトスイッチを押下すると,プログラムで予め設定したキーボード操作がPCに対して実行されます.タクトスイッチは2つしかありませんが,短押しと長押しの使い分けも可能です. 例えばZoomやMicrosoft Teamsなどのオンライン会議アプリケーションのショートカットキーを設定しておけば,ワンタッチでマイクのミュートをON/OFFすることができます.

Digisparkで作成したマクロパッド (電源ON時)

PCにUSBケーブルで接続するとDigispark上の電源確認用の赤色LEDとP1に接続された赤色LEDおよび,P1に外付けした青色LEDが点灯します. P1に接続されたLEDは,ゆっくりと輝度を変化させながら点滅します.

Digisparkで作成したマクロパッド (電源OFF時)

開発環境

DigisparkはAttiny85を搭載した小型マイコンボードです. USBによるプログラム転送および通信が可能です. Arduino IDEを使用して開発できます. 今回は数年前にAitendoで処分価格で販売されていたDigispark互換ボードを使用しました.

Digispark ATTiny85マイコンモジュール [M8520SU-MCUM]
Arduino IDE Arduino 1.8.19
Arduino Boards Manager Digistump AVR Boards: Digispark (Default - 16.5mhz)
Arduino Library: FastLED Version 3.5.0
Arduino Library: OneButton Version 2.0.4

Digisparkのセットアップは下記を参照してください.

UbuntuでDigisparkを認識しない場合は,下記を参照してください.

回路

回路図

部品点数は非常に少ないです. Digisparkのピン配置については,公式Webページを参照してください.

回路図

回路部品

参考単価をクリックすると,秋月電子通商のページもしくはメーカーページに飛びます. 「互換品」と記載されているリンクについては,互換性があると考えられる部品のページに飛びます. ただし,私が互換性および動作を確認したわけではありませんので,ご注意ください.

番号 部品名 型番 数量 参考単価
SW1, SW2 タクトスイッチ 各社 2 30円 (互換品)
LED1 LED 各社 青色 1 18円 (互換品)
R1 炭素皮膜抵抗 各社 1/4W 1kΩ 1 1円 (互換品)
その他 ユニバーサル基板, スズメッキ線など 適量

作成例

マクロパッドの基板

エンクロージャ

エンクロージャ(ケース)は,作成した基板に合わせて3Dプリンタで出力しました. モデリング環境は下表のとおりです.ソフトウェアは全てフリーウェアです. FreeCADでモデリングしたものをSTLでエクスポートし,Ultimaker CuraでスライスしてGコードを生成しています.

OS Ubuntu 20.04.4 LTS
FreeCAD 0.18.4
Ultimaker Cura 4.11.0
FreeCADによるマクロパッドのエンクロージャのモデリング

ソースコード

オリジナルソースコード

GitHub Gistにて公開されている下記のソースコードを改変して使用しました.Zoomのミュートボタンとして使用するためのキーボード操作が設定されています.

なお,Zoomのショートカットキー一覧は下記で確認できます.

タクトスイッチに割り当てるキーボード操作のカスタマイズ

私はMicrosoft Teamsで使用したかったため,下記を参照してキーボード操作の設定を変更しました.

ほとんどのキーはDigiKeyboardライブラリに定義されていますが,定義されていないキーもあります.定義がない場合は,下記資料のTable 12: Keyboard/Keypad Pageを参照して定義する必要があります.

Microsoft Teams向けに改変したソースコードは下記です.1つのタクトスイッチはマイクミュートのON/OFF操作,もう1つのタクトスイッチはカメラのON/OFF操作に割り当てました.

オンライン会議アプリケーションのほかにも,さまざまなアプリケーションのショートカットキーに割り当てることが可能です.例えば,下記のプラグインと組み合わせることでGoogle Chromeのタブのミュート操作もできました.