このチュートリアルは、建物間のモールス信号通信システムを構築するための2部構成シリーズの第2弾です。Raspberry PiとWyzeカメラを使ってモールス信号受信機を作る方法を学びます。以前の記事では、Raspberry Piでモールス信号送信ライトを作る方法を説明しましたので、今回は通信の受信側について解説します。
最近引っ越したのですが、友達と向かい合った建物に住んでいることに気づきました。1キロほど離れているのですが、どちらのバルコニーからも視線が通っています。子供の頃からずっと友達と通信ネットワークを作りたいと思っていたので、モールス信号に関する古い本と、私のRaspberry Pのチップを引っ張り出して、早速作ってみました。私は古い技術と新しい技術を組み合わせるのが好きなので、最新の技術を使う代わりに、モールス信号を使うことにしました。
このプロジェクトは、2つ目の(そしてより難しい)パート、つまりモールス信号の受信と解読です。ありがたいことに、モールス信号はメッセージの各要素に一定の時間値を持っています。私たちはそれを利用し、ある程度の誤差を許容しながら、光パルスの長さに基づいてどの文字が送信されているかを推測します。やり方は以下のとおりです。
このプロジェクトに必要なもの
- Raspberry Pi 4または Raspberry Pi 3(電源アダプター付き)
- Wyze Cam V2 または V3
- 8 GB(またはそれ以上)のmicroSDカード
- HDMIケーブルと電源ケーブルを備えたモニター
Raspberry Piでモールス信号受信機を作る方法
始める前に、Raspberry Piをセットアップしてください。まだセットアップしていない場合は、Raspberry Piの初回セットアップ方法に関する記事をご覧ください。このプロジェクトでは、ヘッドレスインストールではなく、Raspbianのフルバージョンが必要です。
1. Gitをインストールします。GitHubからコードをダウンロードするために必要になります。
sudo apt-get update
sudo apt-get -y install git
2.リポジトリをホームディレクトリにクローンします。これにより、プロジェクトの実行に必要なすべてのコードが揃います。
cd ~/
git clone https://github.com/rydercalmdown/building_to_building_morse.git
3. 「make install-receiver」コマンドを実行して、プロジェクトの依存関係をすべてインストールします。このスクリプトは、プロジェクトの実行に必要なPythonライブラリだけでなく、低レベルの依存関係もインストールします。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
cd ~/building_to_building_morse/
make install-receiver
4. Wyzeカメラをセットアップします。検出にはWyze Cam V2(V3でも動作します)を使用しています。
5.このチュートリアルに従って、カスタムRTSPファームウェアをWyzeカメラにフラッシュします 。RTSPサポートをインストールすると、カメラに接続してPythonで直接フレームを取得できるようになります。
6. WyzeアプリケーションからRTSP URL値を取得し、 Raspberry PiのSTREAM_URL変数をエクスポートして、Raspberry Piをカメラに向けます。RTSP URLは、スマートフォンのWyzeアプリケーションの「詳細設定」セクションで確認できます。
export STREAM_URL=rtsp://your_username:your_password@your_camera_ip/live
7.カメラを光源に向けるように配置します。
8. Make run コマンドでアプリケーションを起動します。しばらくすると、アプリケーションがカメラストリームに接続し、画像を表示します。
make run
9.モールス信号が照射される領域を画像上でドラッグして選択します。例えば、劇場の照明から照射されている場合は、照明の左上をクリックし、右下までボックスをドラッグします。これにより、コードにフラッシュの位置を指定します。
10.このプロジェクトのモールス信号部分を使用してメッセージを送信し、コンソールでデコードされたメッセージを受信します。
これで完了です!この2つのチュートリアルで、モールス信号を使ったメッセージの送信方法の基本をご理解いただけたかと思います。コードを自由に調整して耐性を高めたり、光源やカメラを変えたり、通信に異なるエンコード方式を使ったりしてみてください。