sophiaの書

なんか書く

やる気が消えた人へ 趣味のものづくりのやる気の出し方

これから、ライバルがいると趣味でものづくりをしたくなるという話をします。

アドベントカレンダーについて

このブログ記事はWMMC Advent Calendar 2021 - Adventarの11日目の記事です。昨日の記事は、しまじゃきさんの【WMMC Advent Calendar 2021】社会人1年生が感じた意外な所とかでした。社会人には社会人の生き方や楽しみ方がある…ってコト!?

しまじゃきさんのブログにいつもお世話になっております。ありがとうございます。

自己紹介

私を知らないWMMCの人たちは多いので、自己紹介しておくべきでしょう。私がサークルに顔を出さなくなって3年間経とうとしています。1, 2, 3年生は私のことを知らないでしょう。3年生とは1度会ったことがあるかもしれません。気づいたらマウスを作らないうちに時間だけが過ぎてしまいました。すぐにこのブログ記事の本題を書き始めたくてたまらないので、自己紹介はこれくらいにしておきます。

はじめに

なぜものづくりを頑張れるのか、何回か聞かれたことがあります。

f:id:tlo_olb:20211210053434p:plain

なぜものづくりを頑張れるのですか

ものづくりを頑張れる理由を聞かれたときはいつも、ものづくりは面白いからと答えていました。昔は本当にそう思っていたのです。ものづくりのためならいくらでも動けるとさえ思っていました。それから時が経ち、ものづくりのどこが面白いのか分からなくなってしまいました。もう、ものづくりのために動けなくなりました。それでも二度あることは三度あるので、また同じことを聞かれてしまうかもしれません。そのときに備えて答えを用意しておく必要がありました。私と同じようにあなたもその質問をされて答えに詰まるかどうかは分かりませんが、あなたも答えを用意しておいても損はないでしょう。

このブログ記事には、私がこれまで見聞きしてきた頑張れる理由を思い出せる範囲でまとめます。まず、私にとって一番しっくりきた頑張れる理由、つまりライバルの存在について書きます。次にその他の頑張れる理由を書き並べ、使えるかどうか私の考えを書きます。

注:このブログ記事では「頑張れる理由」と「やる気の出し方」をごちゃまぜにして使っています。気をつけてください。

ライバルがいるから

私はしばらく趣味のものづくりをやってませんでした。久しぶりに趣味のものづくりをしたくなってきたので、予定を調整して趣味のものづくりをするために時間を用意しました。しかしやる気が起きず、体が動きませんでした。そこで少し休むことにしました。寝転がって布団をかぶりました。

f:id:tlo_olb:20211210054010p:plain

そして眠りに落ちる

別の日に趣味のものづくりをしたい気持ちになってきたので、机に向かい、PCを立ち上げ、CADを開きました。しかしそこでやる気が途切れました。気分を変えようと布団に潜り込みました。

 

f:id:tlo_olb:20211210054059p:plain

なんのために

横になってすぐに、なんでこんなことやってんだろうと考え出しました。寝ながら考えても答えは出ませんでした。

別の日にもやる気が出なかったので、趣味のものづくりをするはずの時間にアニメを観ました。そのアニメは友達から薦められたアニメで、ウマ娘が出てくる話でした。趣味のものづくりはしませんでしたが、とてもよい一日でした。

別の日、またやる気が出ずにぼんやりしていたとき、ウマ娘を思い出しました。正確にはウマ娘を思い出したわけではなく、アニメを観ていて「ライバルっていいな。」と感じたことを思い出したのです。ライバルに勝つと嬉しいですし、負けると悔しいです。そもそもライバルとのやりとりそのものが楽しいです。ライバルがいると頑張れるという理由は私にもよく分かりました。それまで、なぜ私が趣味のものづくりをしたいのか分かっていませんでした。ですが今なら分かります。私のまわりには趣味のものづくりをしている人が多くいるからです。理由に気づいてからようやくやる気が出るようになりました。アニメのおかげで私は動き出せました。

 

f:id:tlo_olb:20211210054310p:plain

ありがとう ライバル ありがとう ウマ娘

このブログ記事を書くまで忘れていたのですが、これまでにも競い合いをうまく使う人を何人か私は見てきました。そのような人たちは、同じところを目指す友をあおって頑張らせ、自分も頑張っていました。私にはまだそこまではできません。いつかできるようになりたいです。

その他やる気の出し方

他にも見聞きしたやる気があるので、書いておきます。使える方法と使えない方法とを両方とも書きます。

そこに山があるから/海が俺を呼んでいるから

そこに半田ごてがあるから。統合開発環境が俺を呼んでいるから。

私にはちょっと何を言っているのか分からないので、この理由は使えません。ボツです。

ものづくりは人間の性(さが)だから/ものづくりは友達だから

ボツ。

面白いから

これは使えない方法です。たしかに、はたから見ればものづくりは面白いです。しかしやってる側はつらいです。

習慣だから

これは本に書かれていた方法で、やる気を引き出してくれる方法です。私は最近、毎週土曜日の午後に数時間趣味のものづくりをすることにしています。もしその時間帯に趣味のものづくりをしていなかったら、なんだか物足りない感じがしてむずむずします。しかしこの方法だけでは足りません。習慣にするまでが大変だからです。

締め切りがあるから

これは使える方法です。すでにこの方法を使っている人は多いのではないでしょうか。

やると言っちゃったから

これは本に書かれていた方法で、使える方法です。私は作ると言っておきながら物を作らないことがよくあります。しかし、作ると言ったからには作ろうと思えます。

世の中には目標を口に出すとその目標が実現するという不思議な現象があるらしいです。

本業のものづくりでため込んだ不満を趣味のものづくりで発散するから

これはツイッターで知った方法で、いい方法です。本業では妥協しなければならなかった部分を趣味で納得がいくまでやるのだそうです。

本業では使わない部品を趣味で使い、気分を変えるとツイートしている人もいました。

自分だけの特別な物が欲しいから

なぜDIYをする人がいるのかについて私の友達が推測してくれました。特別な物が欲しい気持ちは私にも分かります。しかし私には合いません。自分だけの特別な物が欲しいという気持ちよりも、早く安く楽に良い物を手に入れたいという気持ちが強いからです。自作では早・安・楽・良の条件は満たせません。

知識欲を満たすため/自分が成長している実感を得るため

昔は私を支えてくれたやる気ですが、今は消えてなくなりました。使えなくなったから使わなくなったのです。

達成感を得られるから

テレビでそんなことを言っている人がいました。昔は私も達成感を得るためにものづくりをしていました。しかし今は違います。一つ課題を解決したら次の課題に取り掛かるだけです。達成感は得られません

役に立つから

趣味のものづくりは何の役に立つのか聞かれたことがあります。

f:id:tlo_olb:20211210054629p:plain

その趣味は何の役に立ちますか

そのとき、直接は役に立たないが得た知識や技術は将来役に立つと答えました。しかし、質問されてから2年間も経っているのに一度も役に立っていません。役に立つ将来とはいつのことなのでしょうか。私は知りません。

できることなら趣味のものづくりによってガッツリもうかったとか、お金と時間を節約できたとか、世界を救ったとか言いたかったです。

自己顕示欲を満たすため/優越感を感じるため

これは使えない方法です。昔に私はこの方法を使おうとしていましたが、やめました。自己満足にはなるかもしれませんが、それだけです。いや、本当に自己満足できるのかさえ疑わしいです。

むなしいけど、むなしくないから

漫画を読んでいるときに気づいた方法です。私は趣味でものづくりをしているときに、「何の意味があるのか。いや、ない。」とむなしさを感じます。そんなときはむなしくないかもしれないと想像力を働かせるようにしています。

やる気があるとやれるのではなく、やるとやる気が出るから

これはどこかで聞いたか読んだかして知った方法です。あることに対するやる気とはまずそれをやってみて、それが何なのか分かるようになると自然と生まれるものです。やる前にやる気を求めるのは、ないものねだりなのでしょう。

まとめ

大事なことは、むなしさを振り払い、とにかく体を動かすことだと思います。

ここに書いた方法以外にもまだ私の知らないやる気の出し方があると思います。お勧めの方法をご存じの方がいらっしゃいましたら、教えてください。

明日のアドベントカレンダーについて

明日はkuroさんの「推しについて(予定)」です。お楽しみに!

f:id:tlo_olb:20211210054913p:plain

タスク管理で頭の中をスッキリさせる話

この記事はWMMC Advent Calendar 2020 - Adventarの16日目の記事です。

昨日はジャッジ―さんの記事でした.ジャッジ―......強くなったな......

そしてMr. スさんの記事でした。内輪向けの話・マイクロマウスとAIの話(WMMC Advent Calendar 2020) - SUtealthLog

直リンクからしかMr. スさんの記事を見れないとのことだったのでリンクを貼っときます。WMMCのアドベントカレンダーに参加していただきありがとうございました。もしまた会ったら無駄話でもしましょう。

さて、それでは始めます。

概要図

概要図

やるべきことが多すぎる!

「よし、マウスを作ろう。」と思った時、あれもしなきゃ、これもしなきゃとやるべきことがたくさんありすぎて嫌になります。設計、部品選定、調査、組み立て、プログラミング、環境構築、部品入手、動作確認、パラメータ調整などなど。頭がパンクしそうです。そんなときにお勧めなのがタスク管理です。うまくタスク管理できればより多くのタスクをこなせるようになります。タスク管理の方法は色々ありますが、この記事では私が行っている方法を紹介します。

タスク管理でスッキリ!

私がタスク管理をするときの基本方針は四つあります。

  • 必要なタスクを全て書き出す
  • やるべきタスクに優先順位をつける
  • 一度に一つのタスクだけをやる
  • 終えたタスクを眺めて達成を得る

どの方針も重要です。

やらなければならないタスクが多いとき、全てのタスクを書き出して可視化するだけで結構頭がスッキリします。

全てのタスクにはやるべき順番があります。例えばプログラミングをしなければパラメータ調整はできません。しかしタスクの順番が分かりにくいこともあります。例えば部品選定が分かりにくいです。部品選定、動作確認の後に再度部品選定をやり直す場合があります。また、並行して二つ以上のタスクを行う場合もあります。例えば3Dプリンターでモーターマウントを作っている間に制御方法について勉強する場合です。しかしまずは3Dプリンターを起動して積層が開始してから制御方法について勉強するのであって、3Dプリンターを起動しながら制御方法について勉強するわけではありません。また、誰かに秋葉原で部品を購入してもらっているあいだに基板を設計するかもしれません。この場合は部品購入を友達にお願いしてから基板設計を行う必要があります。

一度に一つのタスクだけしかこなせないことを肝に銘じてください。そのタスクは具体的でなければなりません。例えば「調査」ではぼんやりしすぎています。ぼんやりしていると何をすればいいのか分からなくなり頭がモヤモヤしてしまいます。もっと具体的に「選定したモタドラのピン配置を調べる」などがいいです。ちなみに全てのタスクについて目的をもって取り組むといいです。例えば「選定したモタドラのピン配置を調べる」場合なら「動作確認」や「基板設計」が目的になります。ただし目的まで書き出していると面倒なので、頭の片隅に置いておく程度でいいと思います。

紙に書き出したタスクを終わらせて斜線で消すとき、結構スッキリするものです。この感覚が重要だと考えます。斜線で消したタスクがたまってくると自分が前進したことを実感できます。

Trelloを用いる

タスク管理を紙で行うと自由に書き換えにくいので結構ストレスがたまります。そこでアプリを使います。今回はTrelloというアプリを使います。このアプリはPCでもスマホでも使えます。直感的に操作できるので使いやすいです。無料でできる範囲でかなりたくさんのことができます。今回説明する操作の範囲内ではお金はかかりません。

使い方を簡単に説明します。今回はPCのウェブブラウザで作業を進めます。スマホでやる場合もほぼ同じ方法でできます。なお、この記事で説明する方法は202012月15日時点での方法です。

注:以下に出てくる画像には一部手を加えているので実際の画面とはほんの少しだけ異なる場合があります。

まずTrello用のアカウントを公式サイトで作ってください。メアドがあればあとはパスワードを考えるくらいの手間で作れると思います。

ログインしてください。

新しいボードを作成してください。その際、ボードが非公開となっているかを必ず確認してください。マウスは基本的に一人で作るのでボードをチームで共有したり全世界に向けて公開する必要はないはずです。ボード名は適当に決めてください。背景色も適当に決めてください。

ボード作成

ボード作成

するとこのような画面になります。

ボード画面

ボード画面

次にTo DoリストとDoingリストとDoneリストを作ります。ちなみにボードメニューは閉じました。

リスト追加

リスト追加

ここまででタスク管理のための準備が整いました。

ここからタスク管理を始めます。やらなければならないタスクを思いつくだけTo Doリストに書き込んでいきます。一つのカードにタスクを一つ書いて下さい。今回は適当に部品選定、部品購入、部品の動作確認、設計、基板発注、組み立て、プログラミング、調整、大会にそれぞれ対応する九つのカードを作りました。各自で都合のいいようにカードを作ってください。この作業がタスク管理の基本方針その1「必要なタスクを全て書き出す」に相当します。

カード追加

カード追加

大会の日にちは決まっているので、カードにその日にちを記入します。たぶん9月19日くらいに大会があるので9月19日と記入することにします。

大会カードをクリックします。すると次のような画面になります。

カードをクリック

カードをクリック

「期限」をクリックします。すると次のような画面になります。

期限をクリック

期限をクリック

カレンダーで大会の日付を選択します。

日付選択

日付選択

保存をクリックしてカレンダーの画面を閉じ、バツ印をクリックして拡大されたカードの画面を閉じます。するとカードに大会の日付が表示されます。

カードに期限が表示された

カードに期限が表示された

先にやるべきタスクが書かれたカードほど上に位置するように並べ替えます。基板を発注して届くまでのあいだにプログラミングを終わらせたくなってきたので、ドラッグ&ドロップで組み立てカードとプログラミングカードの位置を入れ替えます。

カード順入れ替え

カード順入れ替え

カード順の入れ替えがタスク管理の基本方針その2「やるべきタスクに優先順位をつける」に相当します。

いよいよマウスを作っていきます。今、To Doリストの一番上に部品選定カードがあるので部品選定に取り掛かります。ところが部品選定というタスクは具体的でないので、より具体的なタスクに細分化します。とりあえず部品選定カードをモタドラ選定カードと(その他の)部品選定カードに分割します。モタドラ選定カードをDoingリストに置きます。そのときTo Doリストに新たにカードを作ってからDoingリストにドラッグ&ドロップするなり、Doingリストに直接新しいカードを作るなりして下さい。

一度にやるタスクは必ず一つ

一度にやるタスクは必ず一つ

一度に一つのタスクをDoingリストに置くことと、そのタスクはできるだけ具体的にすることがコツです。もしかするとモタドラ選定を「モタドラとは何かを学ぶ」タスクと「他のマウスに何のモタドラが使われているか調べる」タスクと「諸条件を考慮して使用するモタドラを決定する」タスクに分割できるかもしれません。状況に応じて柔軟に対処してください。

Doingリストにカードを一つだけ置く作業がタスク管理の基本方針その3「一度に一つのタスクだけをやる」を可能にします。今は、モタドラ選定だけに集中しましょう。

モタドラ選定が終わったらモーターに興味が出てきたのでモーターを選定することにします。そのときのボードは次のようになります。Doneリストにモタドラ選定カードが、Doingリストにモーター選定カードが置かれています。

次のタスクに進む

次のタスクに進む

Doneリストにカードを置く作業でタスク管理の基本方針その4「終えたタスクを眺めて達成を得る」が可能になります。

あとは同じ作業の繰り返しです。

注意点としてタスク管理は柔軟に対応する必要がある点が挙げられます。例えばプログラミングが終わってないのに発注した基板が家に届いたとします。そのとき人によってはプログラミングを後回しにして組み立てを先にやるでしょう。組み立てをしようとしたらLEDを購入し忘れていたと気づき、先にLEDを発注するかもしれません。そのときLED発注カードが新たに発生し、Doingリストに置かれます。タスクは状況に応じて増減し、優先順位が入れ替わります。タスクの変化に対応してカードが増減し位置が変わります。

ボードやリストやカードを間違えて作ってしまった時、それらを削除する方法は各自で調べてください。

まとめ

タスク管理によって頭を整理するとだいぶ楽になるはずです。私はタスク量の多さに圧倒されると頭がモヤモヤしてやる気が出ず、マウス製作を一切やらないまま時間だけが過ぎていくことがよくありました。タスク管理がうまくできるようになって助かっています。

おしまい

クリスマスくらいはラボ畜にならないで早めに家に帰りましょう。去年、卒論で成果が一つもなくあせりまくっていた私でさえクリスマスには早めに家に帰りましたよ。

明日はXFA-27さんのイヤホン自作の話です。その自作イヤホンとはTwitterでときどき見かけるきれいなやつのことですよね?楽しみです。

Nullさんの虚無

この記事はMicro Mouse Advent Calendar 2020 - Adventarの9日目の記事です。8日目の記事はM_vi_o_laさんの「引っ越しました」でした。苦労してそうですが楽しそうでもありました。

それでは本題に行きます。

2020年の振り返り

2020年の振り返り

2020年の3月から4月にかけて私は熱心にマイクロマウスを作っていたようです。春休みが例年より長くて暇だったからやる気が出たんだと思います。

 それ以降はやる気がしぼんでしまったのでマイクロマウスを作ってません。

2021年にはクラシックマウスを作りたいです。せっかく買った1ク1クモーターを使わないまま放置するのはもったいないです。やる気が出なくてもハードだけは作ります。

この記事は以上で終わりです。これだけ?と思いましたよね。その通りです。この記事は短くて内容がないので、この記事のタイトルを「Nullさんの虚無」としました。

Micro Mouse Advent Calendar 2020の10日目の記事はb4rrAcud4さんの「2020年買ったもの」です。

この記事は12月11日に書いているので(9日目の記事なのに)、10日目の記事をすでに読みました。色々工夫していてすごいと思いました。

もしクラシックマウスから車のエンジン音がしたら

はじめに

この記事はWMMC Advent Calendar 2020 - Adventarの2日目の記事です。

昨日はジャッジ―さんの記事でした。ジャッジ―さんが元気そうで安心しました。

また、ジャッジ―さんは今回のAdvent Calendarの主催者でもあります。主催していただきありがとうございます。

私はあまりサークルに参加できてないのですが、少しはサークル活動しておこうと思いWMMC Advent Calendar 2020に参加してます。

それでは始めます。

卍 卍 卍 卍 卍 卍 卍

もしクラシックマウスから車のエンジン音がしたらどうなるか確かめた。

想像図

想像図

開発経緯

いつのことだったか忘れたが、Twitterを見ていたらトヨタの入社式と思われる動画が流れてきた。会場内で自動車のエンジンをふかして爆音を鳴り響かせていた。いいなと思った。そして私はこう思った。もしクラシックマウスから車のエンジン音がしたらどうなるか、と。

予想

クラシックマウスのような小さい機体から車のエンジン音のような爆音がしたらギャップ萌えしそう。

方針

エンジン音が記録されたオーディオファイルを再生する機能をクラシックマウスに搭載する。ただし音を鳴らしているときにクラシックマウスの走行を妨げないようにする。

必要な部品

・MP3デコーダ

今回は秋月電子通商にあるこちらのMP3デコーダーを使った。

akizukidenshi.com

マイコンと組み合わせて音を鳴らしたいとき、これを使うと私が知る限りで最も簡単に音を鳴らせる。

PCとUSB接続するとリムーバブルメディアとして認識される。鳴らしたい音が記録されたMP3ファイルまたはWAVファイルをコピペでMP3ボイスモジュールに書き込む。UART通信でMP3ボイスモジュールにコマンドを送れば音が再生される。

音の再生はMP3ボイスモジュールが行うので、音の再生中にマイコンではクラシックマウスの走行に関する処理だけを行えばよい。

色々な機能があるが、今回はオーディオファイル1個だけを再生するために必要な機能しか使わない。他の機能も試してみると面白いと思う。他の機能も試してみたい人は秋月電子通商のサイトでMP3ボイスモジュールについて調べることをお勧めする。

注意点が4点ある。1点目。MP3ボイスモジュールに開いているピンヘッダ用の穴の位置が中途半端である。ピンヘッダをはんだ付けしたあとブレッドボードに差し込みたいときは無理矢理押し込む必要がある。2点目。VCCピンとUSBの5V給電の配線が導通している。もしVCCピンに5V以外の電圧をかけているときにMP3ボイスモジュールをPCとつなぐとショートする危険がある。オーディオファイルをPCから書き込みたいときはVCCピンがどこにも導通してないことを確認すべき。3点目。8MBのオーディオファイルを保存できるようだが、実際には約4MBしか書き込めなかった。しかし音質を下げてオーディオファイルのデータ量を減らせば7分以上鳴らしっぱなしにできる。7分間分あればクラシックマウスの競技中に音を流し続けることができる。4点目。MP3ボイスモジュールを買うと一緒に4ピンのコネクタがついてくる。でも2ピンのコネクタはない。Digi-Keyで調べてみたが2ピンのコネクタは見当たらなかった。MP3ボイスモジュールにはピンヘッダが2列、2ピンのコネクタが1個、4ピンのコネクタが1個、USBポートが1個ついている。このうち2ピンのコネクタを利用することはできなさそうだ。でもUSBポートと2列のピンヘッダが使えれば問題なく音を鳴らせる。

・micro USB Type-Bが付いたUSBケーブル

PCとMP3ボイスモジュールを接続するときに使う。

・スピーカー

表面実装可能な小型のスピーカーではエンジン音のような低音を出せない。そのため大きめのスピーカーを使う必要がある。今回は秋月電子通商にあるこちらのスピーカーを使った。

akizukidenshi.com

このスピーカーは人からもらったスピーカーなので本当にこれかは自信がない。でもたぶん合ってる。他にもっといいスピーカーがあるかもしれない。

ステッピングモーターで動くクラシックマウス

ステッピングモーターで動くクラシックマウスは機体重量が少し変わっても制御に影響が出ない。ステッピングモーターで動くマイクロマウスを使ってもよい。今回は私の手元にステッピングモーターで動くクラシックマウスがあったためこれを使った。

理想的にはスピーカー以外から音が出ないほうがいい。でもステッピングモーターから出る音は大きい。でもスピーカーから出る音はもっと大きいので心配ない。

・段ボールとテープ

スピーカーを覆う入れ物を作るために必要。

・配線用の導線

部品を電気的につなぐために使う。

車のエンジン音の用意

YouTubeでエンジン音を流している動画を探す。気に入った動画があれば、そのURLをコピーする。FLVTOという少し怪しげなサイトに動画のURLを張り付ける。そこのサイトで動画の音声をMP3ファイルに変換し、ダウンロードする。

次にダウンロードしたMP3ファイルのデータ量を4MB以内に減らす。Audacityというソフトウェアを使う。Audacityをインストールする。MP3ファイルはステレオである必要がないのでモノラルにしてデータ量を減らす。そして音質を下げてデータ量を減らす。作業の途中でlame_enc.dllがないのでダウンロードしろとAudacityに言われる。Audacityの指示に従ってlame_enc.dllを使えるようにする。

データ量を減らしたMP3ファイルの名前を01.mp3にする。

MP3ボイスモジュールにオーディオファイルを保存

MP3ボイスモジュールをPCとUSB接続する。MP3ボイスモジュールには最初から色々音声ファイルが入っている。これらは今回使わないのでPCなど他の場所に移動する。先ほど用意した01.mp3をMP3ボイスモジュールにコピペする。MP3ボイスモジュールをPCからはずす。

ハードウェア製作手順

電気的な配線は次図のように行う。今回はマイコンから一方的にMP3ボイスモジュールに指示を出すのでUART通信用の配線は1本だけで済む。

配線図

配線図

スピーカーには入れ物が必要だ。入れ物がないと、スピーカーの裏側で鳴った音と表側で鳴った音が打ち消し合って、スカスカな音になってしまう。スピーカーの裏側で鳴った音がスピーカーの表側に回り込まないように入れ物で閉じ込める必要がある。今回は段ボールと両面テープで入れ物を作ってみた。本当はもっと硬い材料で作ったほうがいい。でも今回は製作の簡単さを重視した。段ボールの入れ物であっても結構効果がある。

スピーカー用の入れ物

スピーカー用の入れ物

スピーカー用の入れ物にスピーカーとMP3ボイスモジュールを取り付けて電気的に接続する。今回は接続にジャンパー線を使った。スピーカーは段ボールにテープで固定した。

スピーカーとMP3ボイスモジュールを入れ物に取り付けた様子

スピーカーとMP3ボイスモジュールを入れ物に取り付けた様子

MP3ボイスモジュールをクラシックマウスに電気的に接続する。今回はジャンパー線を使って接続した。

MP3ボイスモジュールをクラシックマウスに接続した様子

MP3ボイスモジュールをクラシックマウスに接続した様子

最後に入れ物をクラシックマウスにかぶせたら完成。

完成!

完成!

入れ物をかぶせたせいでクラシックマウスを操作するためのタクトスイッチを押せなくなってしまった。でも気にしない。また、クラシックマウスについたLEDの光が遮られて見えなくなってしまった。でも気にしない。そのうちなんとかするつもり。

プログラム

音楽再生開始関数play()と音量調整関数volume()を用意する。

void play(uint8_t track) {
  uint8_t play[6] = { 0xAA, 0x07, 0x02, 0x00, track, track + 0xB3 };
  for (int i = 0; i < 6; i++) {
    uart_send_char(play[i]);
  }
}
void volume(uint8_t vol) {
  uint8_t volume[5] = { 0xAA, 0x13, 0x01, vol, vol + 0xBE };
  for (int i = 0; i < 6; i++) {
    uart_send_char(volume[i]);
  }
}

void uart_send_char(char)関数は1バイトずつ送信する自作関数だ。計6バイト送信するようにfor文の部分を各自で書き換えなければならない。ちなみにuint8_tは符号なし8ビット変数の型だ。

次の2行では音量を指定し、1番目のオーディオファイルを再生するように指定している。この2行によって音が流れ始める。あとは放置。MP3ボイスモジュールが指定されたオーディオファイルを読み込んで音を再生してくれる。

volume(0x1E); //Volume settings 0x00-0x1E
play(0x01);

あとはいつも通りにクラシックマウスを走らせればいい。

結果

クラシックマウスから車のエンジン音がしたらとてもうるさい。しかしそのうるささゆえに目立つので、サークルの新歓や学園祭のときに客引きとして役立つかもしれない。もしかすると屋外で鳴らしたら音が散ってうるさくなくなるかもしれない。ちょうどいいうるささなのかもしれない。

小さい機体から爆音がしたらギャップ萌えするかどうかは人による。少なくとも私はギャップ萌えしなかった。うるさいだけだ。

低音を鳴らすのは難しいらしく、ときどき音が割れた。今回はオーディオ機器に関する情報収集が不十分なまま製作したからだ。きれいなエンジン音を聞きたければオーディオ機器に関する情報をもっと集めてスピーカーなどを改善する必要がある。しかし個人的にはこのままの音質でも許容範囲内にあると考えている。

最後に

実は昔からクラシックマウスにMP3デコーダーとスピーカーを取り付けて音を鳴らす人がいた。そのような人たちはおそらく同じ感想を持ったと思う。音が鳴るとテンションが上がるのだ。私もスピーカーからエンジン音を聞いたときテンションが上がった。そしてこれからどんなことができそうか色々考え始めた。低音をきれいに出せるように工夫してみようか。低音を諦める代わりに小型スピーカーを使ってみようか。色んな音楽を鳴らしてみようか。このようにやり方はたくさんある。他の人がどのようにして音を鳴らすか知りたい気がする。みなさんも音を鳴らしてみませんか!

おまけ:ちょっと歴史を振り返ってみる

こちらはWMMCのホームページの作品紹介のページだ。

www.waseda.jp

作品紹介のページを見ると、色々なものが作られてきたことが分かる。私は作品紹介のページを読んでびっくりした。斬新な発想力と、それを可能にしてしまった技術力がすごい。私も発想力と技術力を共に兼ね備えた人になりたい。

昔だけでなくここ数年間でもWMMCでは複数人が色々なものを作り出している。それらを見るたびに私は楽しませてもらっている。

おしまい

明日はぱわぷろ@ラボさんのブログです。この1年で買った物らの紹介とのことですが、何を買ったんでしょう。楽しみですね。

Go To 闇鍋

この記事は2019年3月に行われた闇鍋の様子を記録したものである。

暗闇に鍋の図

暗闇に鍋の図

皆さんも闇鍋をしたいですよね。その気持ち、分かります。でも闇鍋は密にならなければできません。今はCOVID-19の感染拡大防止に努めましょう。闇鍋ができるようになるまでもう少しがんばりましょう。

謝辞

闇鍋会を企画し高級食材をたくさん鍋にぶち込んでくれたJ氏。家を闇鍋会場として使わせてくれたM氏。当日急に参加させられたがよく分からない食材を用意してくれたS氏。だしを入れることで闇鍋をおいしくしようと試みた(が失敗に終わった)A氏。においをかいで臭そうな顔をしていたP氏。皆に礼を言わねばならない。とても楽しい闇鍋をありがとう。もう二度とやりたくないけど。

ルール

参加者の1人が素晴らしい企画書を作ってくれた。その企画書に則って闇鍋は作られた。企画書に書かれたルールを簡単に説明する。まず闇鍋に入れる食材は常識の範囲内で食べ物であること。そして食べ物を粗末にしないこと。つまり毒を入れてはいけない。人の家の中で開催するためにおいがきつ過ぎる食材は避けなければならない。また、最後は自分で食べなければならないことを考えて食材を選ばなければならない。

作り方

暗闇の中では視界が悪くなり火傷などの危険がある。危険を避けるために以下の手順で闇鍋を作った。

  1. 鍋に鍋の素を入れる
  2. 火をつけない状態で部屋の明かりを消す
  3. 1人ずつ順番に鍋に食材を入れる
  4. 鍋にふたをする
  5. 部屋の明かりをつける
  6. 吹きこぼれないか注意しながら煮込む
  7. 鍋が煮立ったら火を消す
  8. 部屋の明かりを消す
  9. 鍋のふたを開ける
  10. 食べる
  11. 茶碗一杯食べ終わったら部屋の明かりをつける
  12. 闇鍋の様子を目視で確認する

当日の様子

夕方に一度集合したあと、再び集まる時間を決めて各自が食材を購入しに色々な店に散らばった。中には事前に食材を集めていた人もいた。参加人数が多かったからか、食材が鍋に入りきらなかった。よって2回に分けて闇鍋を作った。

評価

臭い。まずい。

暗闇の中で食材を順番に鍋に入れているとき、他の参加者に対する信頼感は消え失せた。いったいこいつらは何をたくらんでいるんだろうと疑う気持ちで一杯になった。

闇鍋を煮込んでいるときにすでに部屋中に刺激臭が充満しており、食べる前から自分たちが何をしてしまったのか気づいて恐怖に震えた。

暗闇の中で正体不明の臭い物体を口に入れる恐怖は半端ではなかった。本能が拒絶反応を起こしたが、根性で食べた。

闇鍋を食べた後に食べた普通のごはんがとてもおいしく感じられた。

意外だったこと:量

まさか2回に分けて闇鍋を作らなければならないほど食材の量が多いとは思わなかった。みんな気合を入れ過ぎた。

意外だったこと:色

2回とも茶色になった。特に2回目はスライムカレーにより鍋を青くしようと試みた参加者がいたにも関わらず茶色くなった。

闇鍋1回目 スタッフがおいしくいただきました

闇鍋1回目 スタッフがおいしくいただきました

闇鍋2回目 スタッフがおいしくいただきました

闇鍋2回目 スタッフがおいしくいただきました

うんちは茶色である。よって闇鍋はうんちであると我々は結論付けた。しかしこの結論は稚拙であると言わざるを得ない。その場にいた参加者全員が学問を志す者であるにも関わらずこのような根拠に乏しい考察しか導けなかったことは反省しなければならない。

有意義な教訓も得られた。もしも闇鍋の色を茶色以外にしたいのであれば、着色料をかなり多めに入れる必要がある。

意外だったこと:におい

人の家で闇鍋を作るためにおいがきつ過ぎる食材は避けたにもかかわらず、闇鍋から刺激臭がした。その刺激臭が部屋中に立ち込めた。そして窓から刺激臭が流れ出した。近所迷惑である。

意外だったこと:味

参加者全員が工夫をこらして食材を用意した。しかし全ての食材の個性は闇鍋の中で混ざり合い、互いに殺し合い、かき消された。結果的に得体の知れぬ味になった。

意外だったこと:白

白い食材は暗闇の中で目立つ。白は恐ろしい色だ。

特にパン類はひどい。色が白っぽいため薄ら明かりの中でぼうっと光る。そして臭い汁を吸ってベチョベチョになる。

意外だったこと:酸味

暗闇の中で酸味は腐敗の味と区別がつかない。闇鍋を食べながら命の危険を感じた。

余談

飲むテンガを闇鍋に入れた参加者がいた。しかし、幸か不幸か闇鍋会場は淫夢にならなかった。

後日談

闇鍋会の後しばらく経ったある日に偶然立ち寄ったある店で私は南国風のハンバーガーを食べた。一口食べたとき、最初は何が起きているのか分からなかった。しばらくもぐもぐしていると突然あるものを思い出した。そう。闇鍋である。ソースの味がまさに闇鍋の味と同じであった。さすがに闇鍋の刺激臭はしなかったが、ほぼ闇鍋であった。食べ終わってから闇鍋会の他の参加者に報告した。他の参加者もこのハンバーガーは闇鍋であると同意した。ところがネットでそのハンバーガーの評判を調べてみたところ、おいしいと述べている人が大半であった。たしかに世の中には闇鍋を経験していない人の方が多いのでおいしく感じる人が多くても仕方がないと言える。残念ながら我々闇鍋経験者はその経験ゆえにそのハンバーガーをおいしく食べることができなかった。そのハンバーガーは闇鍋経験者と非経験者を選り分ける現代版の踏み絵と言えよう。

闇鍋は必然

よく考えてみると、私が闇鍋会に参加したのは必然だったようだ。私が小学生だったころ、ハリーポッターが大好きであった。給食の時間には魔法薬と称してお椀に牛乳を含む全ての料理を入れて混ぜてから食べていたものだ。かつて魔法薬を作って喜んでいた経験が約10年の時を経て私に闇鍋をさせたのであろう。ただし闇鍋がこんなにも臭くてまずいとは予想していなかった。私の記憶によると給食で作った魔法薬はおいしかったのだ。やはり過去の成功体験(おいしかった魔法薬)にいつまでも囚われ続け(て闇鍋を作)るのはよくないのである。

反省

我々が食べ物を粗末に扱っていた時に世界中でたくさんの人たちがおなかをすかせて苦しんでいたことを考えると涙が止まらない。

1回目の闇鍋に入れた食材

最後に鍋のレシピを紹介する。1回目の闇鍋には以下の食材を入れた。

  • 牛肉
  • ウインナー
  • はるさめ
  • あおさ(千葉県産)
  • ヨーグルト

2回目の闇鍋に入れた食材

2回目の闇鍋には以下の材料を入れた。

(筆者注:雪見だいふくスティックは食べ物ではないと突っ込まなければならない。)

  • サバの味噌煮
  • せんべい
  • ドーナツ
  • 本だし(味の素)
  • ミートソース
  • とろけるチーズ

恐ろしすぎて個々の食材についてコメントする気にはなれない。

VRで雲に乗り景色を眺める

雲に乗りたい

本物の雲に乗りたいという願いはかなわない。なぜなら物理的に不可能だからだ。雲は空気中に浮かぶ水や氷の粒だから人間の体重を支えられない。しかし、無理だからといって雲にのりたいという願いを諦めてよい理由にはならない。でも、もしも本物の雲に乗れたとしてもあまり嬉しくないかもしれない。落っこちるかもしれない恐怖を感じなければならないし、航空法のことを意識しなければならない。地上にいる人たちのプライバシーを尊重する必要があるからどこにでも飛んで行けるわけではない。上空は寒いだろうし、雲の中ではびしょ濡れになるだろう。どうやって雲から降りるか考える必要がある。何時まで雲に乗っていられるのか知るために時間を気にする必要がある。そんなのは嫌だ。もっと自由に何も考えず雲に乗りたいのだ。

のんびりと、ふわふわと、ぼーっとする

よく考えてみると、本物の雲に乗るよりも雲に乗った気持ちになるほうが大事なのではないかと思えてくる(筆者個人の見解です)。私にとって雲に乗るとは、のんびりふわふわ漂いながら目の前を通り過ぎてゆく景色をぼーっと眺めることだ。だったら本物の雲に乗らなくてもいい。

VRを使って雲に乗った気分になる

世の中にはVRという便利な道具がある。VRを使うと映像の中に入り込んだような気分になる。今回はVRを使ってあたかも雲に乗っているかのような気分になることにする。

ヘッドマウントディスプレイを被り雲に横たわる人

ヘッドマウントディスプレイを被り雲に横たわる人

VRで足りない分は想像力で補う

VRを使っても目と耳以外は雲に乗った気持ちになってくれない。VRでごまかせるのは目と耳だけだからだ(目と耳以外をごまかすVRがあるかもしれないけどよく調べてないから知らない)。そこで今回は布団を雲に見立てることにする。布団に寝っ転がりながらVRを体験する。ついでに扇風機でそよ風を吹かせる。

作り方の概要

今回は簡単のために音を扱わない。映像だけ作る。

今回はUnityの2019.4.7f1版を使ってVRを作る。2019版からAndroidアプリ用のapkファイルを作るのが簡単になったから2019版を使った。

ヘッドマウントディスプレイにはGoogle Cardboardを使う。Google Cardboardは家にあったから使った。

簡単のために雲は白い円盤とする。本物の雲を再現したいわけではなく、乗れる想像上の雲を作りたいので白い円盤で十分だと判断した。雲は視点の真下に配置する。

雲に乗りながら眺める景色はピラミッドとする。四角錐は作るのが簡単だからだ。UnityのProBuilderという機能を使って四角錐を作る。

雲はピラミッドの周りをゆっくり一周する。このときピラミッドの方を向き続けるようにする。

Unity上で作ったVRを実行した様子を下図に示す。図の中央付近に黄色いピラミッドが写っており、中央下部に雲の端っこが写っている。

雲とピラミッド

雲とピラミッド

Androidスマホで試す

Unityでapkファイルを作りAndroidスマホにインストールして試してみた。そのときのスクショを3枚示す。

VR体験中

VR体験中

雲の移動によりピラミッドを異なる向きから眺める

雲の移動によりピラミッドを異なる向きから眺める

雲の様子

雲の様子

感想

割といい感じだった。ただし雲に視界を遮られると嫌なので、雲を半透明にしたり穴だらけにしたりするなどの工夫が必要だ。欲を言えば、もっと色んな景色が見たい。ドローンに全方位カメラを取り付けて撮影した動画をVRに組み込むといいかもしれない(どうやって組み込むのか知らないけど)。またはGoogle Earth VRに雲を追加して乗るといいかもしれない(どうやって追加するのか知らないけど)。加えて、布団が硬かったのでもっとふわふわの布団が必要だ。敷布団ではなく掛布団に寝っ転がればいいかもしれない(夏だから分厚い掛布団は押し入れに仕舞っちゃったけど)。

あと雲とは関係ないけどVR製作過程で色々と不具合が多発して面倒だった。気軽に雲に乗れるようになってほしい。

六畳間に布団を4枚敷くとき、部屋に占める布団の面積を最大化する

以前合宿で部屋に布団を敷いていたとき、誰かが「この作業は布団の面積を最大化する問題に置き換えられるのではないか?」と言っていたので確かめてみた。

条件

そのときの部屋の大きさは覚えていないので、適当に六畳間とする。畳の寸法は団地間(85 cm×170 cm)とする。

また、敷き布団の大きさを測ってなかったのでここでは直置き用のシングルサイズ(100 cm×210 cm)とする。

計算量を減らすために布団の縁が部屋の壁と平行になるように布団を敷くことにする。

計算量を減らすために布団を20 cmずつずらして布団の面積を計算し、布団の面積が最大となるような布団の配置を探す。具体的には布団4枚についてx方向とy方向にそれぞれ動かすのでプログラムで八重ループを使う。

面積は図1に●で示した格子点の個数を数えて計算する。図1の場合は●が84個ある。●はそれぞれ20 cm×20 cmの面積と対応している。よって、図1では布団の面積は84×20×20平方センチメートルとなる。ただし図1において灰色で示した部分は無視している。布団の長辺210 cmは20 cmで割り切れないからである。なお、図1には縦置きと横置きの布団が2枚置いてある様子を示してある。格子点の個数はMATLABのunion関数とsize関数を用いることで簡単に求められる。

図1 面積計算法

図1 面積計算法

部屋の大きさは340 cm×255 cmである。布団を20 cmずつ動かすため必ずしも布団を部屋の隅まで動かすわけではない。布団配置決定のための八重ループに時間がかかるので、計算量を減らすためにこのような粗い評価をせざるを得ない。

結果

横置きの布団が4枚のとき、布団面積は67200平方センチメートルであった。この面積の値は上でも述べたように布団の一部を無視して計算した値である。図2にこのときの布団配置を示す。黒枠は六畳間を表す。左上の角が原点であり右方向にx軸を、下方向にy軸を取る。それぞれの布団の位置は布団左上の角の座標で表す。見やすさのために4枚の布団を赤、黄、緑、青で区別する。図2の場合、赤い布団の位置は(0 cm, 0 cm)、黄色い布団の位置は(0 cm, 100 cm)、緑の布団の位置は(120 cm, 0 cm)、青の布団の位置は(120 cm, 140 cm)であった。この布団配置が横置き4枚を今回の条件の下で動かし布団の面積が最大となる布団配置である。例えば緑の布団を青の布団に接するまで図2の下方向に動かしても布団の面積は変わらない。このように面積を変えずにある程度布団の位置をずらせるので、求めた布団配置は唯一の配置ではない。

布団を20 cmずつ動かして評価しているので布団を部屋の隅まで動かせてないことが図2から分かる。

図2 横置き4枚

図2 横置き4枚

横置きが3枚、縦置きが1枚のとき布団の面積は70400平方センチメートルであった。図3にこのときの布団配置を示す。図3の場合、赤い布団の位置は(0 cm, 0 cm)、黄色い布団の位置は(0 cm, 100 cm)、緑の布団の位置は(40 cm, 140 cm)、青の布団の位置は(240 cm, 0 cm)であった。

図3 横置き3枚、縦置き1枚

図3 横置き3枚、縦置き1枚

横置きが2枚、縦置きが2枚のとき布団の面積は72800平方センチメートルであった。図4にこのときの布団配置を示す。図4の場合、赤い布団の位置は(0 cm, 0 cm)、黄色い布団の位置は(40 cm, 140 cm)、緑の布団の位置は(100 cm, 0 cm)、青の布団の位置は(240 cm, 40 cm)であった。

図4 横置き2枚、縦置き2枚

図4 横置き2枚、縦置き2枚

横置きが1枚、縦置きが3枚のとき布団の面積は70400平方センチメートルであった。図5にこのときの布団配置を示す。図5の場合、赤い布団の位置は(0 cm, 0 cm)、黄色い布団の位置は(40 cm, 140 cm)、緑の布団の位置は(100 cm, 0 cm)、青の布団の位置は(240 cm, 0 cm)であった。

図5 横置き1枚、縦置き3枚

図5 横置き1枚、縦置き3枚

縦置きが4枚のとき布団の面積は70400平方センチメートルであった。図6にこのときの布団配置を示す。図6の場合、赤い布団の位置は(0 cm, 0 cm)、黄色い布団の位置は(40 cm, 40 cm)、緑の布団の位置は(140 cm, 0 cm)、青の布団の位置は(240 cm, 0 cm)であった。

図6 縦置き4枚

図6 縦置き4枚

考察

布団の面積が最大となったのは横置き2枚、縦置き2枚のとき(図4)であった。

今回の条件では布団の一部を無視して面積を計算した。同じ布団の配置で布団の一部を無視せずに計算し直してみる。横置き4枚のときは69600平方センチメートルである。横置き3枚、縦置き1枚のときは73100平方センチメートルである。横置き2枚、縦置き2枚のときは74600平方センチメートルである。横置き1枚、縦置き3枚のときは72100平方センチメートルである。縦置き4枚のときは73800平方センチメートルである。

よって布団の一部を無視せず面積を計算したとしても横置き2枚、縦置き2枚のとき面積が最大となる。

二番目に大きな面積との差は74600-73800=800平方センチメートルである。この値は布団一枚の面積210×100=21000平方センチメートルの800÷21000×100≒3.8%である。あまり大きな違いはないと言える。

また、今回は布団を20 cmずつずらして面積を計算したので雑な評価であり、今回の計算結果は本当の最大値ではない。

加えて、計算結果は布団と畳の寸法によって変わることに注意しなければならない。

よく考えてみれば、実際には六畳間に布団を4枚敷くとき部屋の床面積に占める布団の面積の割合を最大化しているわけではない。部屋の入り口付近には布団を敷かないようにしたり、荷物置き場を用意したり、布団の重なり合いをどの布団でも同じくらいにしたりしている。

単純に布団の面積を最大化するだけでは不十分である。

MATLABプログラムについて

横置きの布団が4枚のとき私のPCでMATLABプログラムを動かすのにかかった時間は117.901秒であった。部屋の対称性と布団の形が全て同じであることを利用して八重ループの回数を減らす工夫をしている。

同様にして、横置き3枚、縦置きが1枚のとき計算時間は398.045秒。

横置き2枚、縦置きが2枚のとき計算時間は202.037秒。

横置きが1枚、縦置きが3枚のとき計算時間は106.175秒。

縦置きが4枚のとき計算時間は23.338秒であった。