スタートレックのコミュニケータを作る企画の10回目です。
前回は、TFT 画面に超高速で画像を表示できる LovyanGFX ライブラリを使って SD カードから画像を読み込んで「グルグル」の簡易動画が再生出来ました。
(前回の SD カード内の画像表示についての記事は、以下のリンクをご覧ください。)
今回は、SD カードに保存した音声データ(MP3 ファイル)を再生し起動画面の動画を追加して、コミュニケータの基本機能を完成させます。
最終的には、こんな感じになりました。

音声再生方法
コミュニケータの動作に必要な音の再生には、音源を MP3 ファイルに変換してバック・トゥ・ザ・フューチャーのデロリアン製作にも使用した DFPlayerMini(互換機)を使います。
(デロリアンの製作記事は、以下のリンクをご覧ください。)
この DFPlayerMini は純正品ではないので、ネットでよく見る「DFRobotDFPlayerMini.h」を使った方法では正常動作させることが出来ません。
詳しいことは上のリンク先の記事で書きましたが、手元にあるのは「HW-247A」と基板に書かれたものです。

この基板を動作させるには、GitHub にある「DFPlayer」というライブラリを使用して、設定もいじらないと動作しません。
1 HW-247A を使うには、シリアルラインのタイムアウトを「350」(又は500)にする。
2 初期化は、mp3.begin(mp3Serial, MP3_SERIAL_TIMEOUT, DFPLAYER_HW_247A, false) と記載する。
必要な音源
今回製作しているコミュニケータでは、次のシーンの再現を考えています。
1 アンテナ部を開くと、特徴的な「きゅーきゅきゅ」という音が鳴る。
2 コントロールパネルの送信スイッチを押すと、「転送(Beam me up, Scotty)」の音声などを再生する。
3 電源 ON の後、独自の起動画面を表示してメニュー画面に推移する。
上の3つのシチュエーションで必要な音源は、再生時間の長短はありますが、以下の3個です。
1 アンテナを開けたときの効果音
2 転送(Beam me up, Scotty)のセリフと効果音
3 機材が動作している効果音
これらの音を、スタートレック(TOS)の79話という大長編作品の中から探します。
とりあえず、上の1番と3番は簡単に見つかりました。
コミュニケータを開くシーンは毎回出てきますし、機材の動作音はエンタープライズ内の機材の動作音を使用することにします。
一番苦労したのは転送時のセリフと効果音です。
主人公のカーク船長が転送時に命じる「Beam me up, Scotty」というセリフは、今でもアメリカで流行語として残っていて、2021年にヒップホップのアーティスト「ニッキー・ミナージュ」氏がアルバム名で使うほどです。
しかし、WikiPedia 情報では、このセリフを実際に使ったシーンはなく、カーク船長が「言いそうなセリフ」として独り歩きしたものでした。
しかたがないので、それっぽいセリフを集めて編集し、転送器(トランスポータ)の動作音と合成しました。
起動画面
起動画面についてです。
テレビドラマの劇中では、コミュニケータは常に電源 ON ですから、起動画面のシーンは出てきません。
しかし、23世紀の未来の通信機でも、電源を入れたら母艦のエンタープライズ号と通信を確立して、正常動作を確認する必要がありますね。
そこで、勝手に「妄想起動画面」を作ってみます。
コミュニケータの起動画面は実物が存在しないので、妄想で作り上げます。(ガチのスタートレック・ファンからは怒られそうですが・・・)
色々と考えた末に、こんな流れでやってみます。

1 最初に、所属する宇宙連邦(UFP)のマークを表示します。
オリジナル・シリーズが放送された当時に出版された「Star Trek Star Fleet Technical Manual」などの資料では、UTP のマークは白黒で、中央にレーダー画面状の丸い模様があり、左右に人の横顔がデザインされていますが、オリジナルをカラー液晶に表示すると寂しいので、ネット上で多く見かけるカラーのマークを円形のディスプレイに合うようにアレンジして作ります。
2 次に、搭乗艦のエンタープライズ号のマークを表示します。
エンタープライズ号のマークも、単純な鉾型に星が入ったデザインですが、カラーで円形の物にアレンジします。
(アメリカ宇宙軍のマークがこのマークに似ていると話題になりましたが、スタートレックの放送が1967年で宇宙軍の前身の Air Force Space Command のマークが1961年なので真似ではないですね。)
3 最後に起動画面です。
色々と悩みましたが、スタートレックと言えば LCARS ですね。
LCARS とは、Library Computer Access Retrieval System の略で、直訳すると「図書館コンピュータ・アクセス・検索システム」でしょうか。
スタートレックの世界で広く使われている架空の OS の総称です。
平面的なデザインで、現在の色々な OS のデザインにも影響を与えたといわれる LCARS ですが、1969年のオリジナルシリーズには出ていません。
初めて登場したのは、約20年後の1987年から放映された「新スタートレック」(TNG)でした。
しかし、私の妄想の世界では、オリジナルシリーズでも表示画面には出てきませんが、裏で動いている OS の起動画面やメンテナンス用画面には LCARS が使われているという「設定」にします。(円形画面用の LCARS のデザインは、探しても見かけませんが・・・)
「設定」では、コミュニケータの電源を入れて数秒間は、母艦のエンタープライズ号と通信を行い、完全なリンクが確立したら「グルグル」の動画に切り替わるというものです。
あの有名なグルグルは、コミュニケータが正常動作して、エンタープライズ号と完全なリンクが確立し、いつでも転送が可能な状態という解釈です。
この LCARS 風の起動画面は、最初、パソコンで作った Jpeg 画像を切り替える方法を考えていましたが、コマ数も少ないので LovyanGFX ライブラリの図形描画方法を学ぶためにも、スケッチ内で円形や四角形を描画して数値で指定してみます。
起動画面の製作
LCARS で使用される色やフォントは細かな決まりがあります。
その設定に従った色とフォントを使って、Arduino IDE 上で画面を作ります。
(時間がとれたら LovyanGFX ライブラリのフォントの追加なども記事にします。)
色々と丸や四角を組み合わせて、LCARS っぽい画面が出来ました。
最初に Inkscape で作ったデザイン画どおりに作ったら、細かすぎて何が表示されているか分からなくなったので簡略化して、表示する丸い液晶画面に合わせて修正しました。

勝手に作ったものなので、画面に表示される内容の簡単な「設定」です。
・ID 欄 : 制服に内蔵された生体チップを読み込んで、転送時に人体の構成情報などのデータ圧縮に使用します。
・TX : コミュニケータの送信信号のレベルです。90% 以上でリンクが確立します。
・RX : 受信機の信号レベルです。同じくリンク確立には 90% 以上が必要です。
・CH : 通信に使用するチャンネルです。上空の電離層などを自動認識して最適な周波数を選択します。
・POWER : コミュニケータの電源レベルです。
それぞれの数値の横にはバーグラフを表示して、視覚的に分かりやすい表示にしてみました。
試験動画ですが、それっぽく見えますか?
プログラムの作成
出来上がった画像データ、音声データと起動画面のデザインを組み合わせて、コミュニケータのプログラムを作ります。
最初は、単純にスイッチを押したらプルアップ設定の ESP32 の入力端子が LOW になるのを判断基準に分岐させたのですが、音声再生やグルグルの簡易動画再生中は受け付けてくれません。
そこで、スイッチは割り込みの設定に変えました。
都合の良いことに ESP32 の MCU は、すべての端子が割り込み設定に使えるので、残りの端子を割り込み用に設定してみます。
一応、思ったとおりの動作が完成しました。
(コミュニケータのプログラム(スケッチ)は、中身が整理できずグチャグチャで、お見せできる状態ではないので現状では公開できません。)
コミュニケータの完成
まずは、オリジナルに近い動作です。
アンテナ部を開けると「きゅーきゅきゅ」という動作音がします。
続いて、コントロールパネル左側のスイッチを押すと、転送の音声を再生します。
だんだん大きくなるトランスポータの動作音は、スタートレック気分を高めてくれます。
(少し長めの動画です。)
最後に、個人的な妄想で作った起動画面です。
円形 TFT 画面よりリング部が小さいので、小さめに作った起動画面ですが、少しリング部からはみ出ているような・・・
すべてを合わせて、製作のまとめ動画を Youtube にアップしました。
今回も愛猫「くうちゃん」のチャンネルを間借りしています。
(くうちゃん、今日もおやつをあげるので、勘弁してね。)




コメント