はじめに
このページの内容及び、ダウンロードしたものは無保証です。一切の責任を作成者は負いません。自己責任で利用してください。また、サポートも一切行いません。as is でお願いします。
ClockRadio

4inch の液晶をつけている Raspberry Pi があるのですが、今ひとつ利用シーンがありません。机の隅におけるサイズですが、ちょうどよいアプリケーションが見つけられません。動画を再生させてもいいのですが、小さいのであまり使いません。また、自作の SDL_gui を使ってなにか作ってみるという意味もあります。
小さいけれど、電源が必要なので、外に持ち出すことも出来ません。
そこで、RTL を使って、ラジオ時計にしてしまおうと考えました。SDL2 で、自作の gui ツールを使い作成しました。
4 inch 液晶が対象なので、解像度は 800 x 480 にしています。全画面表示で拡大できます。他の解像度にするには部品の配置位置をすべて変更する必要があります。
機能
以下のことが出来ます。
- 時計表示
文字盤は設定ファイルで変更することが出来ます。また、背景に画像を利用することも出来ます。全画面時計表示 - RTL-SDR を使ったラジオの再生
RTL-SDR のドングルを利用して FM ラジオを受信することが出来ます。受信、再生のコマンドは、設定ファイルを使うことで変更することが出来ます。ラジオ画面 - 登録したコマンドの実行
アプリ起動画面 - アラーム、スリープなどのタイマー動作
タイマー設定画面 - システム情報の表示
システム情報の表示画面 - 音楽ファイルの再生
mp3 の再生だけであれば、SDL2 内蔵プレーヤで再生できますが、それ以外を再生する場合は、設定ファイルで外部コマンドを指定することで、再生することが出来ます。音楽ファイルの再生画面 - リモートからのコントロール
サーバ機能を有効にすると、リモートからコントロールすることが出来ます。ただし、ハンドシェイクもして無いので、ローカルなネットワークで使ってください。ブラウザで表示 - その他
設定ファイルに書くことで、起動時や終了時に外部コマンドを実行することが出来ます。背景色の変更や、アラーみ時刻の設定なども変更することが出来ます。
ファイル一覧
- Makefile
Make ファイル - ClockRadio.c
本体ソース - SDL_gui.c
GUI 部品ソース - SDL_gui.h
GUI 部品ヘッダファイル - ClockRadio.h
本体ヘッダファイル - clock.c
全画面時計ソース - radio_panel.c
ラジオパネルソース - app_panel.c
アプリパネルソース - timer_panel.c
タイマーパネルソース - system_panel.c
システムパネルソース - mp3_panel.c
mp3 パネルソース - settings.c
設定確認画面ソース - clock_face.h
文字盤等の内部画像データ - readme.txt
このファイル - Warning-Alarm02-1L.mp3
アラーム音の mp3 - ClockRadio.cfg
設定ファイルのサンプル - clock_trans.bmp
盤面を透明にした文字盤画像 - sky.bmp
背景画像のサンプル - server.c
サーバ機能のソース - ctl_cradio.c
ClockRadio と送受信するコマンドのソース - web ディレクトリ
ClockRadio の web インターフェース- index.php
web インターフェース本体 - config.php
web インターフェースの設定ファイル - execute.php
コマンドを実行する PHP ソース
- index.php
コンパイル
コンパイルするには、SDL2 の環境が必要です。開発用のライブラリのインストールは以下のようになります。
$ sudo apt install libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev
以下のようにして、コンパイル、インストールできます。
$ mkdir ClockRadio $ cd ClockRadio $ wget -O ClockRadio-220220.tar.gz "https://sirius10.net/Download/download.php?download=ClockRadio-220220.tar.gz" $ tar xvfz Clockradio-220220.tar.gz $ make $ make install
コマンドのインストール先は、~/bin です。アラーム音も ~/bin にコピーされます。設定ファイルは ~/.config/sirius10 にコピーされます。
設定ファイル
設定ファイルは、 ~/.config/sirius10/ClockRadio.cfg です。サンプルをコピーして必要であれば、エディタで書き換えてください。
詳細は、設定ファイル をご覧ください。
起動オプション
- -fs
フルスクリーンで起動します。 - -ns
リモートでコントロールできるようにソケットを開きます。
操作説明
起動直後は時計画面になっています。時計画面でもラジオの再生が出来ますが、時計をクリックすれば、パネル画面になり、その他の機能が使えます。
ラジオ画面

- ラジオの ON/OFF トグルボタン
時計の右下のボタンはラジオの電源の ON/OFF の切り替えます。 - Shutdown ボタン
マシンをシャットダウンします。 - Reboot ボタン
マシンを再起動します。 - フルスクーンチェックボックス
フルスクリーンとウィンドウ表示を切り替えます。 - Exit ボタン
プログラムを終了します。 - ラジオタブ
ラジオパネルに切り替えます。 - 選局ラジオボタン
受信周波数を選択したラジオ局に変更します。 - ボリュームアップボタン
音量を上げま音量を上げます。ミュート時はミュートを解除します。 - ボリュームダウンボタン
音量を下げます。ミュート時はミュートを解除します。 - ミュートトグルボタン
ミュート状態を切り替えます。 - ボリュームラベル
現在の音量を表示します。 - アラームラベル
現在のアラームの状態を表示します。アラーム音がなっているときにクリックするとアラーム音が停止します。 - スリープラベル
現在のスリープの状態を表示します。アラーム音がなっているときにクリックするとアラーム音が停止します。 - 周波数ラベル
戦局しているラジオ局の周波数を表示します。 - ボリュームラベル
現在の音量を表示します。 - 時刻表示ラベル
アナログ時計を表示します。下部の日付は、タイマー動作時に残り時間を表示します。クリックすると時計画面に変わります。 - 設定確認ボタン
設定確認画面に切り替えます。
アプリ画面

- アプリタブ
アプリタブに切り替えます。 - アプリ起動ボタン
登録されたアプリケーションを起動するボタンです。
タイマー画面

- タイマータブ
タイマータブに切り替えます。 - アラームチェックボックス
アラームの有効/無効を設定します。 - アラーム時設定ドロップダウンリスト
アラームを何時に設定するかを選択します。アラーム有効時は変更できません。 - アラーム分設定ドロップダウンリスト
アラームを何分に設定するかを選択します。15 分単位で設定できます。アラーム有効時は変更できません。 - ラジオチェックボックス
アラーム設定時にラジオを ON にする場合は、チェックしてください。アラーム有効時は変更できません。 - スリープ ON/OFF トグルボタン
ON にするとスリープタイマーが開始します。 - Shutdown チェックボックス
スリープ時間経過後に、マシンをシャットダウンする場合はチェックしてください。 - 時間選択ラジオボタン
スリープ時間を選択します。スリープタイマー開始後は変更できません。 - タイマー開始/停止ボタン
設定した時間経過後、アラーム音を鳴らします。 - タイマー時間表示ラベル
タイマー時間を表示します。 - タイマー時間調節ボタン+
タイマー時間を 1 分増やします。タイマー動作中は変更できません。 - タイマー時間調節ボタンー
タイマー時間を 1 分減らします。タイマー動作中は変更できません。 - タイマー時間選択ラジオボタン
タイマー時間を選択します。タイマー動作中は変更できません。
システム画面

- システムタブ
システムタブに切り替えます。 - システムコマンド実行ボタン
登録されたシステムコマンドを実行するボタンです。実行結果は下部の結果表示ラベルに表示されます。 - ロードアベレージグラフ表示トグルボタン
ロードアベレージを結果表示ラベルにグラフ表示します。表示中は他のコマンドは使えません。 - 結果表示ラベル
コマンドの実行結果や、ロードアベレージのグラフを表示します。
mp3 画面

- mp3 タブ
mp3 タブに切り替えます。 - 前の曲ボタン
再生中にクリックすると、前の曲を再生します。 - 停止ボタン
再生を停止します。 - 再生/一時停止ボタン
再生/一時停止をします。 - 次の曲ボタン
再生中にクリックすると次の曲を再生します。 - 連続再生チェックボックス
チェックされていると、曲の再生が終わったときに自動的に次の曲を再生します。 - ループ再生チェックボックス
チェックされていると、連続再生時に最後の曲が終わると最初に戻って再生します。連続再生でない時は、その曲をリピート再生します。 - ディレクトリ/曲名表示ラベル
ディレクトリあるいは再生中のファイル名を表示します。 - 親ディレクトリ移動ボタン
親ディレクトリへ移動します。曲を再生中の場合、再生は停止します。 - 前ページ移動ボタン
一覧リストで 1 ページ分戻ります。 - 次ページ移動ボタン
一覧リストで 1 ページ分進みます。 - 一覧リストラベル
ディレクトリ内のファイルやディレクトリを一覧表示します。マウスのホイールでスクロールできます。ディレクトリをクリックするとそのディレクトリに移動します。音楽ファイルをクリックするとそのファイルの最初から再生します。右横に全体の中でどの位置にいるかを表示しますが、スクロールバーではないのでマウスで操作は出来ません。 - ステータス表示ラベル
ディレクトリ内のファイル数を表示します。ファイル再生中は、再生時間をグラフ表示します。
時計画面

- ラジオ ON/OFF トグルボタン
ラジオの ON/OFF を切り替えます。 - ボリューム+ボタン
音量を上げます。 - ボリュームーボタン
音量を下げます。 - 選局ボタン
ラジオ局を選局します。 - 周波数表示ラベル
選局した局の周波数を表示します。 - 音量表示ラベル
現在の音量を表示します。 - 終了ボタン
プログラムを終了します。 - Shutdown ボタン
マシンをシャットダウンします。 - Reboot ボタン
マシンを再起動します。 - アラームラベル
現在のアラームの状態を表示します。アラーム音がなっているときにクリックするとアラーム音が停止します。 - スリープラベル
現在のスリープの状態を表示します。アラーム音がなっているときにクリックするとアラーム音が停止します。 - アナログ時計
現在時刻を表示します。クリックすると、パネル画面に変わります。 - 日付
日付を表示します。タイマー動作時は残り時間を表示します。音楽ファイル再生中は再生中のファイル名と再生時間を表示します。
設定確認画面

- 設定表示ラベル
現在の設定を表示します。クリックでセクションを変えます。 - 戻るボタン
前の画面に戻ります。
リモートコントロールコマンド
ctl_cradio がリモートコントロールするコマンドです。-ns オプションをつけて起動した ClockRadio に対してコマンドの送受信を行います。
送信するコマンド名を引数で指定します。コマンドにパラメータが必要な場合は、コマンド名の次に指定します。
送信先は、デフォルトでは、ローカルホストの 62453 番ポートです。他のホストやポート番号に送信するにはオプションで指定します。
送受信できるコマンドは次の通りです。データ受信した結果は標準出力に表示されます。
- radio
ラジオの電源状態を変更します。ON であれば OFF になります。 - vup
音量を 1 上げます。 - vdown
音量を 1 下げます。 - shutdown
相手ホストを確認無しでシャットダウンします。 - reboot
相手ホストを確認無しで再起動します。 - radio1
ラジオの電源を ON にし、1 番目のプリセット局を選択します。 - radio2
ラジオの電源を ON にし、2 番目のプリセット局を選択します。 - radio3
ラジオの電源を ON にし、3 番目のプリセット局を選択します。 - radio4
ラジオの電源を ON にし、4 番目のプリセット局を選択します。 - radio5
ラジオの電源を ON にし、5 番目のプリセット局を選択します。 - radio6
ラジオの電源を ON にし、6 番目のプリセット局を選択します。 - getdir
現在の音楽ファイルのディレクトリを表示します。 - setdir
音楽ファイルを再生するディレクトリを設定します。コマンドの次にディレクトリを指定してください。ディレクトリは対象ホストのフルパスで指定します。 - getlist
音楽ファイルのディレクトリ内の一覧を表示します。 - play
音楽ファイルを再生します。再生する前に、音楽ファイルのあるディレクトリを設定している必要があります。 - stop
再生中の音楽を停止します。 - getvol
現在の音量を表示します。 - getstation
現在の放送局の一覧を表示します。はじめに局の数-1 を表示し、次に現在の局番号(最初が 0)、次から、局名を表示します。 - getloop
現在のループ再生の状態を表示します。1 が有効で、0 が無効です。 - checkloop
ループ再生の状態を変更します。 - getnextplay
現在の連続再生の状態を表示します。1 が有効で、0 が無効です。 - checknextplay
連続再生の状態を変更します。 - playprev
前の曲を再生します。 - playnext
次の曲を再生します。 - select
音楽ディレクトリ内の指定した番号のファイルを再生します。 - currentmusic
現在再生している音楽ファイルの番号を表示します。
web インターフェース
web ディレクトリ内は、ClockRadio をブラウザから操作する web インターフェースです。PHP、JavaScript が必要です。web サーバに置いてブラウザから開いてください。
config.php 内で、target_host、target_port、command 変数を環境に合わせて書き換えてください。ClockRadio と同じホストで動かす場合は、target_host と target_port は、からの文字列("")で構いません。command には、ctl_cradio コマンドを書いてください。
web インターフェースでは、ラジオの ON/OFF、局の選択、音量の変更が出来ます。
また、音楽ファイルのディレクトリの変更と、音楽ファイルの再生、音楽ファイルの一覧表示、一連表示からの再生が出来ます。連続再生、ループ再生の状態の変更も出来ます。
免責
このプログラムを使ったことによる一切の責任を sirius は負いません。使用は自己責任でお願いします。
著作権
添付のアラーム音は、OtoLogic(https://otologic.jp/) の素材を利用しています。OtoLogicの利用規約(https://otologic.jp/free/license.html) に従って利用してください。
本プログラムの著作権は sirius(https://sirius10.net) にありますが、本プログラムの著作権は主張いたしません。
保証
無保証です。
更新履歴
- 2023.04.07 このページのパンくずリストを修正
- 2021.02.20 音楽ファイルの検索時にシンボリックリンクが辿れない不具合を修正
- 2021.12.12 ダウンロードファイルに web インターフェースを含めていなかったのでダウンロードファイルを更新
- 2021.12.11 リモート操作に対応、web インターフェース作成
- 2021.11.29 公開