XRQ技研業務日誌

ものづくりを楽しんでいます。日々の暮らしの中に面白そうなものを探しながら

メトロノーム  ATtiny202 Project

同じ回路でプログラムを入れ替えて

 メトロノーム(拍節器、拍子計)はウィキペディアによると「一定の間隔で音を刻み、楽器を演奏あるいは練習する際にテンポを合わせるために使う音楽用具である。拍節器(はくせつき)ともいった」とのこと。リズミカルに拍を刻む装置なら小さなマイコンにもできるのではと考えた。昔の音楽室にあった、竿の先の重りを動かすことでカタカタと拍を刻む四角錐の装置を懐かしんだのである。
 メトロノームスマホで動作するアプリもあって、小さなマイコンで作っても実用性はないと思うのだが、作ることを楽しみたい。
 拍を刻むスケッチを書くのは容易である。テンポを指定して音や光を出させればよい。あまり正確ではないが内蔵のタイマーを使えばそこそこのテンポを出せる。テンポを加減できるようにするのも特に問題なかった。アップ、ダウンのボタンを使って速くしたり遅くしたりできる。テンポを変更したらその値を記憶させておけば次に起動した時同じテンポで動作する。
 どの程度のテンポで動作しているのかを表示させようと思った。マニアックだがモールス符号の数字で表示させるのも一つの方法だ。しかし、いざスケッチを書いていくと結構な分量になってしまい、ATtiny202では手に負えないことがわかった。入出力のピンの数からLCDなどの表示機を付けることもできない。テンポ表示は諦めた。
 それなら、いくつかのテンポを規定値として内蔵しておき、そこからテンポを上げたり下げたりするような動作はどうだろうと考えた。60、120、180を規定値としてボタンの押し方で選択し、それをメモリーに取り込む。通常モードではそのメモリーから規定のテンポ値を読み出し動作するようにし、アップ、ダウンのボタン操作でテンポを変えられるようにする。ボタンを押し、1テンポの変化があるとピピと音が鳴りそのテンポを記憶する。思い通りの変化量を入力すれば、狙ったテンポに設定できるという仕組みだ。なんとも間怠っこしいやり方である。
 割り込み処理を使って、3つの規定テンポ値を選択するようにした。ボタンを押すとピという音がする。すぐに手を離すと60というテンポ数が記憶される。もしピという音が鳴った後もし続けているとピピという音が鳴る。そこで手を離すと120が記憶される。ピピピとなるまでボタンを押していると180が選択される仕組みである。1つのボタン操作で3パターンを選択するにはシングルクリック、ダブルクリック、長押しによるやり方もあるが、なかなか思い通りに動いてくれないものである。
 これまでの作品と全く同じ回路で動作する。プログラムの入れ替えだけで動作の異なるものを作れるのは面白い。さて次はどんなことをやらせようか。

 追記:メモリーの大きなデバイスを使えばプログラムできそうなのでATtiny402を使ってやってみた。モールス符号でテンポ値を表示することができるようになった。
              XRQTechLabの製作記事

お馴染みさんとのQSO

ユリオプスデージー 円満な関係・明るい愛

 2006年3月26日にスタートし、2022年2月26日にこのブログへの投稿が500日になり、今回は600回目になった。日々の徒然とした事柄を書いてきたのだが、多くの皆さんに訪れていただいていることをありがたいと思う。感謝である。今回は私のある日の出来事を紹介する。

 今日もこの局と交信した。この局は北陸地方にお住いのようで、もう300回近く交信している。毎回数十秒の短い出会いだが何とも充実感がある。この局はいつも移動運用をしてくれているので、その時どのような伝播になっているのか興味深いのだ。どんな状況から電波を出しているのかを想像しながら呼び掛ける。私もリグやアンテナを替え、これでも届くかという形で運用するので実験としての意味合いが強い交信である。
  こうした何回も交信している局は長い時間をかけておしゃべりをしているわけではないが親しみを感じる。お目にかかったわけでもなく、ハンドルネームという交信のときに使われる名前は知っているが、お名前もお住まいも知らない。況して年齢などの個人情報は知る由もない。全くお空でのお付き合いである。それでも聞こえてくる信号にはその人なりの個性が窺えて、短い交信の中でも親しみがわくのだ。
 おしゃべりをするのではなく、交信ができることそのことを楽しむ。私の小さな無線機と自作のアンテナから出た電波が相手局に届き、返信がもらえることを喜ぶのだ。

 今しがたは気仙沼に移動しているお馴染みの局が聞こえてきたので呼んでみた。いつもながらの華麗なキー操作できれいな信号を送っている。多くの局が呼びかけて次々に交信をしている。うまく届くか不安ではあるが呼び掛けた。他の局の強い信号に隠れてしまえば相手局に届かない。タイミングが味方してくれれば届くかもしれない。呼びかけを繰り返すうちにこちらのコールサインの一部を呼んでもらえた。呼びかけを繰り返し、私だということが分かってもらえた。シグナルは229という微かに認識できるレベルだったようである。それでも信号の特徴から私だと分かってくれたのだろう。短い交信だが心が通じたと感じた一瞬である。

 モールス符号は大変に効率の悪い通信方法である。一文字一文字を短点と長点の符号に変換し送りあう。欧文でも平文でメッセージを送っていると結構時間がかかる。況して和文でおしゃべりを始めると1時間を過ぎてしまうこともしばしばだ。言葉を交換するというコミュニケーションで考えたらとても悠長で非効率、高速通信の現在では忘れ去られてしまいそうなモードである。

 電信は略号などを使い、通信形式を共通にして最小限の情報を交換するだけでもコミュニケーションをとるとができる。相手を認識し、交流することができる。お馴染みさんとの繰り返しの交信はこうした楽しさがあるから続いているのだろう。無線を通したお付き合いは空間を飛び越えて広がっている。

フードレスキュー

旬の時期は短いが、熟れた柿も干し柿もおいしい。

 フードロスをなくそうという呼びかけが行われている。私たちの食べ物はどれも生き物であり、その命をいただいている。無駄に廃棄するのではなくしっかりとその命をいただくことが大事だと思う。廃棄とは言っても家畜の飼料として利用されたり、作物の肥料として活用されたりしているようだが、食物として生産されたものは人が食することが本筋であろう。
 スーパーなどでは賞味期限が迫った食品が値引きされ売られている。目立つようにだろうか黄色のラベルが貼られていることが多い。何円引きとか何パーセントオフなどと大きく書かれている。それをカゴに取ることにはほんのちょっとした惑いがある。「値引き品を買っている」「生活に困っているのだろうか」などと周囲の人から見られるのではないかという不安、また、賞味期限が短いと自分で使い切れるかという心配もある。敢えて値引き品に手を出さなくても正規の値段のものとの価格差は小さいと黄色いラベルは避けてしまうのだ。
 しかし、人間の側からでなく、食物の側から考えてみるとその惑いを少なくすることができるのではないか。賞味期限が短ければすぐ消費してくれれば食物としての役割をしっかり果たすことができる。廃棄という、本来の目的とは異なる道へ進むことから救出されるのだ。食物として生まれてきたからには人間に食べてもらい、活用されるのが本望であろう。黄色いラベルはそのためのSOSと捉えることができる。安いからと言う理由では何となく戸惑いを感じる場面でも「この食品を助けるのだ」という意味づけならばその躊躇は薄れる。
 「ものは考えよう」とよく言われる。黄色いラベルのものを目にしてフードレスキューの気持ちで接することで心の戸惑いを減らすことができるように思う。
 商店の食品の棚にはたくさんの品が並んでいる。賞味期限はさまざまで手前ほど賞味期限が短いことが多い。「手前取りをお願いします」という掲示がなされているのを見かけるが、これもフードレスキューという視点で考えれば納得のいくことである。自分がその食品をどのように使おうとしているのかという状況に合わせて、手前から手に取ったり、賞味期限の長いものを手に取ったり選択すればよい。
 気候変動など大きな環境の流れの中で、食物という生きていくことに不可欠な要素が大きく関わっていることが明らかになってきている。小さなところから改善していくことで環境への負担が減らせていくのではないだろうか。スーパーに行ったとき、黄色いラベルを見かけたらその時の状況によってはその救助要請に応えるようにしようと思う。

モールスメッセージの送出

モールス符号のリズムを覚えるために

 ATtiny202 Projectの続きである。
 最近のリグにはエレキー機能がほとんど搭載されている。外付けのエレキーはよほどの高機能なものでなければ使われていない。Ttiny202でエレキーを作ろうとした場合、とても小さなマイコンなのでプログラムできる容量は少なく、高機能なエレキーを作るのは無理である。そこでモールス符号のリズムを体感できるモールス符号発信器?を作ることにした。
 どの様な仕様にしようかいろいろと考えた。
○いくつものメッセージが出せるといい。
○送出スピードが変えられるといい。
○操作がやり易いもの。
○コンパクトなもの。等々、
 盛り込みたい機能はいろいろあるのだが現実はマイコンの容量は2kである。アルゴリズムを工夫してもこの小さなマイコンにあれもこれもの機構を組み込むことは難しい。

 実際いろいろな機能を盛り込んだスケッチを書き、コンパイルを通そうとしたのだがエラーになってしまう。プログラムの大きさがATtiny202では扱えない分量になってしまうのだ。機能を削ってこのマイコンに収まるものにすることに多くの時間を費やした。モールス符号の構成である短点と長点の1:3の比と符号要素間のスペースが1,符号間のスペースが3という原則が耳で聞いて分かることに特化した機能になった。

 メッセージをEEPROMに収納し書き換えられる機能も検討したが、うまくいかなかった。スケッチの中にデータを埋め込み、3つのメッセージを収納することにした。アルファベット26文字、数字10文字、略数字10文字、記号2文字、そして交信によく使われる略語を3つに分けて組み込んだ。
 これらを選択するのはボタンのシングルクリック、ダブルクリック、長押しで行う。送出速度は初期値は20WPMだが、10から30WPMの範囲で調整できるようにした。

     XRQTechLab製作のページ
 
 モールス符号を習得するにはできるだけその音に触れることが大事である。耳慣れすることでモールス符号が身についてくる。ラジオで実際の交信を聞いたり、さまざまな音源で聞くのが一般的である。今回のようなシンプルな機能のガジェットを使うのは実用的ではないかも知れない。しかし、プログラムを書き換えることでこれまで作ってきた202プロジェクトの作品と全く同じ回路で動作するのが特徴である。工作として楽しんでもらえれば幸いである。

Copilotを使ってスケッチを書く

コンパイル、書き込み、動作確認の一連の操作を容易に

 生成AIを使ってスケッチを書くことが面白くなってきた。関数も、文法もあまり気にすることなく、何をやりたいかをAIにわかるように伝えていけばスケッチが入手できるのだ。
 今回はATtiny202というマイコンを使って挑戦してみた。このマイコンは8ピンの小さなもので、ArduinoIDEを使ってコンパイルから書き込みまでができる。メモリーの容量は2kと少ないので大きなプログラムは書けない。入出力となるピンの数も5つと少なく制約も多い。それでも実戦で使えそうなガジェット作りに取り組んでみる。

 使った生成AIはWindowsのEdgeに組み込まれているCopilotである。Copilotにはいくつもの種類があるとのことだが、手軽に無料で使えるこのCopilotを使った。Edgeを立ち上げると画面の右上に出てくるアイコンを押してCopilotを起動する。右端に縦の帯状に開くのだが使いにくいので、全画面展開にする。「チャット」と「作成 」の選択ができるがチャットを選び、「ノートブック」の入力を使った。通常のチャットでは質問したことがどんどん流れて行ってしまうが、ノートブックなら自分が書いたものを修正しながら質問でき、質問の的を絞りやすい。ただ気を付けなくてはならないのが、ノートブックではそこに書かれていることしかAIに伝わらないのだ。普通のチャットなら何回ものやり取りで話を詰めていけるが、ノートブックでは1回ごとの質問になっているようなのだ。つまり、それまでの話の流れでノートに書く内容を省略すると、そこに書いてあることだけへの回答が返ってくる。どういう文脈からその質問をしているのかが反映されないことがある。ノートブックで質問をひとまとめにして1回ずつに回答を求めるというスタンスだ。

 作りたいものの仕様をCopilotに示す。どんな質問をしてもすぐに回答が表示されるのだが、それがこちらの意図していることへの回答とは限らない。AIが理解したところを回答してくる。もっともらしい回答なのですぐ使えそうに思うのだが、検討が必要である。Copilotの回答の一番下には「CopilotはAIを使用しています。間違いがないか確認してください。」との表示が出ている。AIはさまざまな学習をしているのでそれらを組み合わせ回答を生成してくれ、もっともらしく示してくれるが、正しいということを担保するものではないのだ。

 スケッチを書く場合、作りたいものの仕様を明確にする必要がある。機能だけでなく使うデバイスの制約、使い方などしっかりとAIに伝えなければならない。実際には単純な機能のスケッチから始める方が良さそうだ。ピン接続など基本的なことを確認し、ほしい機能が動作するかを確認する。
 202というマイコンはPDIというオンボードでスケッチの書き換えができる。ブレッドボードに回路を組んでおき、書き込み装置にしたArduinoをVdd,Gnd,信号線の3本のコードで接続しておく。Copilotの示してくれたスケッチをコピー&ペーストしてIDEコンパイルし、うまく通ったら202に書き込み動作確認する。コンパイルが通るまで何回もCopilotとやり取りしなければならない。IDEからのエラーメッセージをCopilotに示すことで改善策を示してくれる。
 コンパイルが通っても、機能を詰めすぎると202のメモリー容量を超えてしまうことがあった。うまく書き込みができるとブレッドボード上の回路が動作を始める。全く動作しないこともあれば意図しない動作のこともある。具体的な状況をCopilotに示してスケッチの修正を行っていく。実際に使えるスケッチにしていくにはこれらの作業を繰り返し、なかなか大変である。しかしこれまではArduinoIDEのマニュアルを片手に関数を探し文法とにらめっこしながらの作業だったことと比べればずいぶん楽になった。
 まだまださまざまな試みができそうである。一つ世界が広がった感じだ。

 

ATtiny202でラーメンタイマー

3,4,5分タイマー

 ATtiny202プロジェクトの一つである。これまで作ってきたエレキーやCPRタイミングアシストと同じ回路でマイコンのプログラムを書き換えることでまったく異なった働きをする。オンボードプログラムができるようになっているので、書き換えも容易だ。PDIと言われる6ピンとVdd,Gndを書き込み装置に接続すれば作成したプログラム(スケッチ)を書き込める。
 今回の装置は単純なタイマーだ。即席麺のお湯を入れてからできあがるまでの時間、3分、4分、5分という一般的な時間が経過したら合図の音が出るというガジェットである。Copilotに仕様を伝え、スケッチの提示を受けた。なかなかこちらの意図を伝えるのは難しいものだ。すぐにスケッチ例を出してくれるのだが、こちらが考えているものとは違っている。どのような動作をさせたいのか、どのような入力があり、出力を求めているのか、どのピンを使うかということも伝えなくてはならない。やりとりをしながら修正をしていく。
 一番手間取ったのが入力である。3分、4分、5分のどのタイマーを動作させるか、1つのボタンで入力しなければならない。当初、ボタンを押し、ピピピと音がしたら指を話すと3分の設定になり、さらにピピピピと音が鳴って指を放したら4分、ピピピピピと鳴ってからなら5分に設定できる仕様を考えていた。しかし、Copilotはすぐそのスケッチを書いてくれるのだが動作が思い通りではない。ボタンを押している時間経過を測定するアルゴリズムが難しいようだ。何度も数値を変更して試したのだがうまくいかなかった。そこで、このやり方を変更し、クリック、ダブルクリック、長押しによって3つのモードを切り替えることにした。切り替えができそれぞれのモードに入ったときに、それぞれ音を出して知らせる流れにした。何回かの修正はあったがこの方法でどうやらうまく動作するようになり、スケッチとしてまとめることができた。
 もう一つ付け加えた機能がある。タイマーはそれが動作している状況がわかりづらいのだ。電源を入れ、モード設定を待っている状態とタイマーがスタートして時間を刻んでいる状態をわかるようにする必要がある。使えるのはLEDである。電源を入れてモード設定を待っている状態の時には2秒に1回50ms点灯し、タイマーが動作しているときには1秒ごとに50ms点灯するようにした。電源を入れてゆっくりとした点滅なら待機中、速めの点滅ならタイマー動作中、LEDが光らなければ電源が入っていないことになる。
 時間が経過したときどのように知らせるかは次のようにした。注意が惹かれるのは連続音より断続音であろう。ピピピピという音を間隔を空けて繰り返すようにした。市販のタイマーでは停止操作をするまで鳴り続けるものが多いようだが、うるさく感じる。タイマーの用途からして近くにいることがほとんどなので、時間経過がわかればよい。5回ほどピピピピが繰り返せばよいだろうと考えた。
 動作確認をしながら変更点をCopilotのノートブックに書き込みスケッチを変更していく。何をしたいのかだけを考えながら作業を進められるのは有り難い。小さなマイコンに次は何をさせるか楽しみである。

             XRQTechLab製作のページ

モールス符号習得用エレキー

単純な機能だけのエレキー

 以前にもモールス符号の習得について書いたのだが、耳が符号のリズムに慣れるのがとても大事だと思う。受信練習を繰り返し少しずつ符号に慣れていくのが一般的だ。だが、送信練習で自分で符号を出しながらそれを聞くという練習も有効だと思う。ところが電鍵を使ってモールス符号を打つということには熟練が必要なのだ。デジタルではあってもモールス符号の送受信は感覚的に扱うため、しっかりとモールス符号が身に付いていないと打鍵できるものではない。モールス符号を覚えるための送信練習ではエレキーの力を借りた方がよい。短点、長点、スペースの長さを機械的に生成してくれるので少し慣れれば比較的きれいな符号で練習することができる。
 この目的のエレキーは基本的な機能だけあればよい。サイドトーンがあること。速度調整ができること。打ちやすいようにパドルの入力にメモリーがあること。スクイーズ機能もあるとよいかもしれない。このような仕様で簡単なエレキーを作ってみた。

 実は前回のブログで紹介した生成AIを使った製作である。爪の先ほどの小さな8ピンマイコンATtiny202にAruduinoでスケッチと呼ぶプログラムを書き込んだ。マイコンにどういう動作をするのかというプログラムを書き込み、希望する機能を搭載する。そしてその端子にLED、ピエゾ素子の出力デバイスを接続し、入力端子には押しボタンを繋ぐ。また、短点と長点を生成させるためのパドルを接続するためのステレオジャックを付ける。電源は3Vのボタン電池CR2032を使った。小さくまとめるためにケースは使わず、とピエゾ素子と電池の間にマイコン周りの回路をサンドイッチのように挟み込んだ。手の中に握れてしまうほどコンパクトなキーヤーである。
                                            製作記事  XRQ技研ホームページ
 スイッチを入れるとオープニングメッセージで”R"が音のみで出力される。本来エレキーはモールス符号を送信するためのものなのだが、練習用という意味でキーイング回路の変わりにLEDが点灯するようにした。モールス符号の速度はゆっくりなほどわかりやすいかというとそうとも言えない。音の塊として認識するのである程度の早さが必要なのだ。キーヤーの早さはボタンを押す毎に速くなる。初期値は毎分20字程度にしてあるが、ボタンを押すと30WPMまで速くなり、また10WPMに戻って徐々に速くすることができる。受信練習で慣れた早さにするのが良いだろう。(速度設定ではLEDは点灯しない)パドル操作でモールス符号を生成すると、音と光りで出力される。自動的に短点や長点、その間のスペースを生成してくれるので符号としてのリズムを掴みやすいと思う。符号を聞いて文字を想起するという受信練習と、文字を想起しながら符号を聞く送信練習を織り交ぜながらモールス符号習得を目指す。モールス符号は符号を音の塊として捉え文字がすぐに想起することで習得になる。トツーだからAなのではなく、トツーはAなのだ。
 
 簡単にできるエレキーだが、アイコンの書き込みなどハードルが高い方もいらっしゃるだろう。連絡をいただければ書き込み済みのマイコンをおわけすることも可能である。奥が深い電信の世界に多くの方が来てくださることを願っている。