ガチャポンで、音声ボタンがでてきました。
早速中身を入れ替えて組み込みボタンを作ります。
完成物
RP2040系マイコンのHDI(Human Device Interface)機能を使ったキーボードです。
今回ボタンを押下することで、Windowsの「デスクトップを表示する」機能を実装しました。
通常のキーボードの[Windowsボタン]と[d]の同時押しと同じです。
今回使用した基板は Seeed製 XIAO RP2040です。
最小クラスの基板ですが、必要な機能はすべて搭載されている基板です。
入手性もよく、今回のような狭小な組み込みには秀逸な基板です。
工作
用意するもの
絵 | アイテム | 説明 |
---|---|---|
筐体 | ガチャポン 非常ボタンシリーズ 1回300円 | |
XIAO RP2040 | 今回の主役マイコンボード | |
ユニバーサル基板 | カットしてマイコンボードを載せます。 | |
EVAスポンジ | 基板を抑えるためのスペーサ | |
セラミック抵抗 10KΩ | ボタンのプルダウン抵抗 (今回のスケッチには、プルダウン抵抗を使用した スケッチになっています。 RP2040 にはプルダウン入力があるため抵抗は なくすこともできます。) | |
タクトスイッチ小 | ボタン押下判定 | |
皿ねじとボルト M3 | 基板を固定する (最終的にはEVAのスペーサでできてしまうので 無くてもかまいません) |
手順
すでに制作済みなので、手順で紹介する部材は加工済みになっています。
分解
背面ねじを外して、電池、シャーシ、基板を取り出します。
ユニバーサル基板加工
シャーシの枠に圧入します。
現物合わせで若干大きめにカットします。
シャーシにはめ込んでみて無理なくはまるサイズまで削ります。
部品の実装(はんだ付け)
タクトスイッチ
位置は基板の中央の位置に取り付けます。
タクトボタンと、筐体のボタンの凸部がコンタクトする位置を確認します。
MCU基板
ピンヘッダは取り付けておきます。
USBコネクタはパソコンとの接続に使うために外部と接続できるように、筐体内壁に干渉するように配置します。
配線
タクトスイッチとMCUを配線します。
タクトボタンの入力状態を読み取るための配線です。GPIOピンであれば配線しやすいピンを選んでください。
今回はP4を使用します。
すべての組み込みを終わらせる前に、カットしたユニバーサル基板にタクトスイッチやマイコンボードの半田配線が終わった状態で動作確認を行います。
タクトボタンを押下することで、Windows画面のウインドウがすべて最小化されたら成功です。
シャーシ加工
このまま組み込みを行うとボタンを押すとシャーシが負けてしまうので、皿ねじで補強します。
組み立てで説明がありますが、ネジの取り付けはなくてもいいです。
筐体加工
シャーシにユニバーサル基板をはめ込みます。
USBコネクタの位置を確認し、ルータで穴あけ加工をします。
穴あけ作業は現物合わせで行います。
組み立てた状態でUSBコネクタが無理なく通せる位置に穴あけ作業を行います。
組み立て
EVAスポンジをカットします。
XIAO RP2040 と背面カバーの間に挟み込みます。
背面カバーが軽く盛り上がる程度の厚さにカットします。
ボタンを押下したときに基板が押し外れてしまうのでEVAスポンジでうけとめます。
画像では、押し圧を受け止めるために皿ねじをつけていますがEVAだけで足りてしまいました。
スケッチ
スケッチの説明
基板ライブラリにはGeneric RP2040を選択しています。
Seeedからは専用のライブラリが公開されていますが、バージョンにより振る舞いが変わるのでGenericRP2040を使用しています。
詳しくはページ最後の関連リンクに詳しい説明のサイトを見つけましたので参照してください。
タクトスイッチへの入力によりキーボードのキー入力[Windowsキー] + [d](必ず小文字)をします。
ボタン押下中は連続でキー入力を行わないように、ボタン開放まで待機します。
今回最小化ボタンを押下する動作にしています。
送信文字は文字列を送信することもできます。
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by たまねぎ
Released under the MIT license
About Licence当サイトで掲載しているスケッチのライセンスについて OSSの利用について 当サイトで掲載しているスケッチおよびプログラム(以下プログラム)は、Open Source Software(以下OSS)を利用しています。誰でも当サイトに掲載されて...
【スケッチの説明】
XIAORP2040をKeyboardデバイスとして使用します。
GPIOデジタル入力の押下を感知することで、Windowsキー + D の入力を
発生させ、デスクトップのウインドウをすべて最小化します。
【準備】
GPIO 4(P4)をプルダウンして3.3Vに接続してください。
【基板選択】
Generic RP2040
【バージョン情報】
2022/7/20 : 新規
**********************************************************************/
#include <Keyboard.h>
#define Btn 4
void setup()
{
pinMode(Btn, INPUT_PULLDOWN); //4をタクトボタンの入力
Keyboard.begin(); //キーボードデバイスとして動作開始
}
void loop()
{
delay(100);
if(digitalRead(Btn) == HIGH)
{
Keyboard.press(KEY_LEFT_GUI);
delay(10); //Windowsキー押下後ウエイトが必要。
Keyboard.write('d'); //小文字の'd'を送信すると縮小化する
Keyboard.releaseAll(); //キーボード入力をすべて解放
while(digitalRead(Btn) == HIGH); //ボタン押下中はポーリング
delay(100); //ボタンリリース後のチャタリング防止。チャタリング検出を時間で管理(手抜き)
}
}
コメント