
さて3/3Dマウスの1号機はいい感じで使えてはいるのですが、常時キーボードの前に置いておくのは邪魔くさいし、使うたびに引っ張り出すというのも面倒です。そこでキーボードの脇に張り付けられる小型のタイプを作りました。
・ダイソーの歯ブラシカバーをケースとして利用しています。
・USBケーブルは手持ちの不要品をカットして直接ケースから生やしています。
・ノブとボタンと取り付けプレートは3Dプリンターで作成しました。
・キーボードの端にゲルテープで貼り付けています。この位置とサイズなら使わないときも邪魔になりません。
●使用した部品
・ジョイスティック P-04048 秋月で\150/個
・マイコン ATtiny85 秋月で\170/個
・ツェナーダイオード 3.6V 秋月で\10/本
その他もろもろは手持ち部品ですが、全部購入しても総額\400程度でしょうか。
●回路説明
・今回は完成品のDigisparkではなく、AVRマイコンのATtiny85を単体で使います。生のATtiny85にDigispark用のブートローダーを焼いて、外付けの抵抗3本とツェナーダイオード2本を追加すればDigisparkコンパチ品の出来上がりです。その後はUSB経由でフラッシュを焼くことができるようになります。
・Digisparkには基板上に3端子レギュレータが載っていますが、USBの5Vで使うので不要です。電源ラインのLEDも不要です。PB1のLEDも機能上は不要なのですが動作確認用として一応付けました。今回使ったATtiny85はDIPパッケージですがDigisparkを使うより安くかつ小型化できたと思います。
・今回のジョイスティックにはスイッチはついていないので、別途タクトスイッチを使っています。
●組み立て
・サイズ的に少し無理があったようでツェナーダイオードが空中配線です。LEDをあきらめれば基板上に配置できたと思います。配線はポリウレタンワイヤを使いました。高さを抑えるためIC用ピンソケットは基板に半分埋め込んでいます。ジョイスティックからの入力は反対側に回せなかったのでICに直接半田付けしています。
・ジョイスティックのノブとスイッチボタンは触って分かりやすいようにノブ表面を凸、ボタンを凹にしています。ノブの底面がジョイスティックのツラ面に軽く触るくらいのクリアランスにして、操作時にシャフトが傾かないようにしています。
●ソフトウェア
・ソースは前回アップしたものを//#define _2Xのコメントを外してビルドします。
●使ってみて
・このジョイスティックはヒスが大きくて、例えばX軸なら右に倒してから戻した時と左に倒してから戻した時でA/Dの読み取り値が異なります。キャリブレーションデータとしては2つの値の平均値を中点の値として設定しました。
・また中点に戻した後もマウス出力が0にならないことがあるので不感帯を設定する必要がありました。
・これは想像した通りではあるのですがポテンショタイプと比べると細かい調整がしづらいので、マウスの最大移動量を少なめに設定しています。
★以下はブートローダー書き込みに関しての参考情報&備忘録です
●ブートローダーを書き込むためのハード準備
・適当なArduino(私の場合はNANO)を使って書き込み装置(ArduinoISP)を作ります。ネットにあったこの図ではUNOになってますがNANOでOKです。
・配線はブレッドボードでもいいのですが、今後のことも考えて私はこのような物を作ってみました。
・IDEでボードにNANOを選んでスケッチ例のArduinoISPを焼けば書き込み装置の準備はOKです。
●ブートローダー書き込み
・こちらを参考にしました↓
http://nopnop2002.webcrow.jp/ArduinoISP/ATtiny85-micronucleus.html
私の場合はまずブートローダ焼きこみ作業専用に適当なフォルダを作成し、そこにIDEのportableフォルダの下の階層からavrdude.confとavrdude.exeを探してコピー。さらに
https://github.com/micronucleus/micronucleus
から落としたブートローダーt85_default.hexをコピーし、コマンドプロンプトでカレントディレクトリを変更してから、コマンドラインから
avrdude -Cavrdude.conf -v -pattiny85 -cstk500v1 -PCOM9 -b19200 -D -Uflash:w:t85_default.hex:i -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m
で焼きました。COM9の9はそれぞれ環境によって変更の必要があります。
●別のブートローダーにトライ
・Digisparkデフォルトのブートローダーは、通電後5秒間はフラッシュ焼きこみスタンバイ用のUSBデバイスとして組み込まれ、その後リムーブされ、その後ようやくHIDとして組み込まれます。この間WindowsがUSBのオン→オフ→オンの音を出して鬱陶しいので、通電直後のフラッシュ用USB組み込みをバイパスするブートローダーに差し替えました。
こちらを参考にしました↓
https://qiita.com/nak435/items/67aca33ca49b6f328faa
↓ここにあるmicronucleus-1.11-entry_jumper_pb0.hexを先ほどと同じフォルダに展開し、
https://github.com/overfl0/NocInformatykaBoard/tree/master/upgrade/releases
先ほどのコマンドラインのt85_default.hexの代わりに今回のhexを指定してISPで焼きこみます。
・ちなみにこのブートローダーを使ってプログラムをフラッシュする際は、ボタンを押してPB0をGNDに落とした状態のままUSBに通電します。
・ネット情報ではmicronucleus.exeを使うと通常のUSB接続のまま(ISPを使わずに)ブートローダーを焼けるという事なのですが、私の環境では途中でこのような↓エラーが出てしまい書き込めませんでした。
> Program file is 1856 bytes too big for the bootloader!
Posted at 2021/12/30 19:46:35 | |
トラックバック(0) |
Fusion360 | パソコン/インターネット