運用日誌/2024-01-14

Digispark Attiny85で遊ぶ

Attiny85というICチップを乗せた小さなボードが2つあります。

これはキーボードの入力をエミュレートできるので、よくワンキーボードとして特定のコマンド処理などを覚えさせて一発で処理できるようにしている人がいます。

アマチュア無線の世界では、モールスのキーイングをモニターする装置として使えます。

このボードのいいところはICチップへの書き込みにArduino IDEという開発環境が直接使える点にあります。

 今日やったこと。

Arduino IDEをインストールする

Arduinoのサイトに行くと各OS用のファイルがダウンロードできるようになっています。

Linuxの場合、リポジトリにファイルがあると面倒なDLはしないで直接インストールができるので、やってみたところ、なんだか様子が変でした。

バージョンが古いのかフォントが汚くサイトの説明と画面も少し異なります。

無精をしないでLinux用のイメージファイルをダウンロードしたらうまく行きました。

スケッチをダウンロードする

スケッチとはArduinoのプログラムのことです。

DigisparkMorseKeyboardというプログラムがgithubにあります。

最初はファイルを開いてエディタにコピーしていたのですが、検証するとライブラリが見つからないというエラーが出たので、リポジトリ自体をクローンしました。

ボードのライブラリをインストールする

Arduino IDEにボードを指定してやらないとコンパイルができません。

メニュから該当するボードを探すのですが見当たらず、色々探してようやく見つけました。

ここに書いてある記事はラズパイのケースなので参考にしました。

実際の処置はこちらを使いました。ただ最初は指定されているJSONファイルをどこに書いたらよいかよくわからなくて、ライブラリの検索のところに何度も入れては失敗を繰り返していました。

結局、環境設定のところでリポジトリを追加してやる必要があることがわかりました。

書き込みエラー発生への対処

コンパイルしたスケッチをボードに書き込む際にこれと同じエラーが発生したので、エラーメッセージを頼りに探しました。

やっていることはよくわかりませんが、とりあえず事なきを得ました。

スケッチをボードに書き込む

スケッチのコンパイルエラーは出ないのですが、ボードに書き込む際にmicronucleusのエラーが発生します。

ここに対処の仕方があったので真似たら解決できました。

うまく行ったときの出力

 最大6012バイトのフラッシュメモリのうち、スケッチが3992バイト(66%)を使っています。
グローバル変数は338バイトの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
> Starting to upload ...
writing: 70% complete
writing: 75% complete
writing: 80% complete
> Starting the user app ...
running: 100% complete
>> Micronucleus done. Thank you! 

 さて動くか

コンパイルと書き込みができたようなので検証に入ります。

P0とGNDを繋ぐとKeyingしたことになるので、回路テスト用の端子をつないでCQCQを打ってみました。ただ何か認識はして文字は出てくるのですが意図した文字ではありません。

これはおそらく接点がチャピリ(接点不良でガリガリ状態)を起こしているためで、先日ルネサスの講義で言っていたように若干のバッファを入れてやれば解決することでしょう。

ストレートキーにつないでやってみたら、端子を直接繋ぐよりはキレイに認識するようになりました。

 感想

Arduinoは一度だけマルツの調布(電通大)でLチカの講習を受けたけどもそれ以降は触ったことがなく、今回、ルネサスの講座を受講してさらに書物を読んであらためて触ってみたくなった。

Attinyを使うこと自体は初めてだったが、Arduinoボードとほぼ同じように使えることがわかった。

初めてのArduinoのスケッチの利用でトラブルは多かったけども、さすがLinuxでどこかに解決方法が必ずあるものだ。ありがたい。

この後やりたいこと

  • キーイングに合わせてサイン波を圧電ブザを使って発生させる(いまはLチカのみ)
  • ジャックを着けてキーと接続しやすくする
  • キーイングの癖を分析するMorStatを真似してキーのタイミングをデータとしてPCに送れるようにする。解析はPC側の統計ソフトを使う。