ハードウェアからサーバ・アプリまでワンストップで開発

流しそうめん2023

Raspberry Piで流しそうめんを「そうめん視点」で楽しむ

コロナの影響によりしばらく開催されなかった流しそうめんイベントが久しぶりに行われました。

前回(2018年)活躍したそうめんカメラの出番です。

この流しそうめんのイベントはogochanの教会で開催されたもので、前回このカメラの出動した流しそうめんは2018年、5年ぶりになります。(流しそうめんの開催そのものはコロナ前に1度あったそうです。)

前回は2018年の記録↓
Raspberry Pi Zero Wとカメラで流しそうめんをそうめん目線でライブ中継してみました

2023年版の製作

前回のままで上手くいきそうだったので、構成は2018年版とほぼ同じです。

ただ、前回そうめんカメラとして活躍した後に、お天気カメラとして外で長い間稼働させていたことにより、ケースが劣化して汚れていたので作り直しになります。

構成

全てではないですが、使った材料は以下の通りです。接着剤はカバーグラスとタッパーを接着するのに使用します。前回に使った接着剤は一部使えなくなっていたので同じシアノアクリレート系の接着剤を使いました。

  • Raspberry Pi Zero W
  • リチウム電池(今回は200mAhにしました)
  • microSD
  • カメラ
  • タッパー
  • カバーグラス
  • ヒートシンク
  • セロテープ、両面テープ 適量
  • 接着材 適量

カメラ回り

1.穴あけ
防水かつ映像を映し出すために必要最低限のカメラ穴をつくります。前回はデザインカッターで加工しました。今回ははんだごてを押し当てて熱で溶かしました。

2.カメラ固定
カメラモジュールにはでっぱりがあります。

そのままではタッパーに固定しずらいのでスチレンボードを切って間に挟みます。スチレンボードを挟むことでタッパーとカメラの固定できる範囲が増えて安定して固定できます。

3. 穴をふさぐ
カメラ用に開けた穴から水が浸入しないようにカバーグラスを貼り付けます。

工作部分については前回のエントリー(Raspberry Pi Zero Wとカメラで流しそうめんをそうめん目線でライブ中継してみました)もご覧ください。

完成形

2018年版と同じですね。

動画ストリーミング

動画ストリーミングのために、Raspberry Pi OSをインストールし、「mjpg-streamer」を入れます。

Raspberry Pi OSのインストール

OSはRaspberry Pi OS  Lite (32bit) です。Raspberry Pi Imagerの機能がアップして、microSDにOSを書き込む時にWiFIやユーザー、ホスト名の設定ができるようになったのでこの段階で設定しておきます。このRaspberry Pi Imagerの機能アップにより、前回のセットアップ時に比べてだいぶ楽になった気がします。

設定が完了したら、OSの書込みを実行します。OSの書き込みも完了したらRaspberry Pi ZeroにmicroSDカードを挿して起動します。

Raspberry Pi Zero は起動が遅いですが、しばらく待つと手元のPCからSSHでログインできます。

mjpg-streamerインストール

起動してログインができたら、動画ストリーミングの設定をします。

$ sudo apt install -y git cmake libjpeg-dev
$ git clone https://github.com/neuralassembly/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental/
$ make
$ sudo make install

カメラモジュールの設定

$ sudo raspi-config

「3 Interface Options」を選択します。

「I1 Legacy Camera Enable/disable legacy camera support」を選択します。

「Yes」を選択します。

「OK」を選択します。

再起動するか聞かれるので「Yes」を選択します。

起動テスト

$ cd mjpg-streamer/mjpg-streamer-experimental 
$ bash start.sh

問題なく起動できれば、ブラウザから「http://(ホスト名):8080/index.html」にアクセスするとRaspberry Pi のカメラの映像が見ることができるサンプルページが開きます。

イベント用に専用のHTMLを作ります。

$ mkdir www
$ cd www
$ vi index.html

Boostraspのテンプレートを少し変更しただけですが、これで大きく見た目が崩れないでしょう。

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <title>流しそうめん2023</title>
  </head>
  <body>
    <main class="container d-flex justify-content-center">
      <div class="row">
        <h1 class="text-center display-1">流しそうめん2023</h1>
        <img src="./?action=stream" />
      </div>
    </main>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
  </body>
</html>

mjpg-streamerの起動パラメータは以下の通りです。画質やフレームなど調整しても良さそうですが、それは当日必要に応じて調整にします。

$ mjpg_streamer -o 'output_http.so -w ./www -p 3000' -i 'input_raspicam.so -x 1280 -y 720'

流しそうめん当日

前日にリハーサルで一度動かしたにもかかわらず少し緊張します。

そうめん駆動

そうめんが茹で上がり、流しそうめんが始まりました。水はそうめんカメラの下を流れていきますが、水だけではそうめんカメラは動きません。

そうめんが流れると、そうめんカメラの下の隙間をそうめんが埋め、そうめんに乗って流れていきます。

特別に工夫することもなく、そうめんの力によって流れていくのが良いですね。

2018年は、そうめんカメラが浮いて流れることを期待していましたが思ったより浮かばず、流れが弱い箇所ではそうめんをせき止めることもありました。そのこともあって、今年はうまく流れるか心配していましたが、そんな心配をよそに良い感じで流れていきます。そうめんカメラは前回からアップデートされていないので、流しそうめんのコースを作るときにカメラを意識してもらえたおかげだと思います。ありがとうございます。

ちなみに、感染対策で流れるそうめんを取る時は専用の取り箸を使うようになっています。

たっぷりのそうめんに乗ると、さらに速く流れます。

そうめん視点の流しそうめん

そうめんカメラからの映像↓です。

映像が時々固まる問題

ストリーミング中、映像がたまに固まることがありました。2018年版には取り付けていなかったヒートシンクをつけましたが、流しそうめん終了時にRaspberry Piを触るとかなりの高温になっていました。映像が途中スムーズではなかったのは、その影響かもしれません。防水はこれまで気にしてきましたが、排熱ももう少し考慮しくなくてはいけないのかもしれません。

お疲れさまでした

今回は急いで前日に用意しましたが、なんとか間に合って本当に良かったです。

夏の良い思い出になりました。ありがとうございました。

最近のエントリー

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

レビュー等の依頼について

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル

LED行燈の試作(1)