趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • RasPiに緊急地震速報を報告させてみました

    投稿日 2013年 10月 30日 5個のコメント

    連続稼働に向けてラックに吊り下げたRaspberryPiですが、こいつに緊急地震速報を報告させてみました。

    Pythonのスクリプトとして作ったのですが、処理としては以下のような感じです。表示および音声合成は別スクリプト&別スレッドにすることで、表示処理と音声読上げを同時に起動し、遅れをなるべく少なくするようにしています。

    1.RaspberryPiでEEWBOTを監視し、地震速報を取得する

    Twitterのアカウントでeewbotというbotアカウントを運営している方がいて、実験的に高度利用者向けの緊急地震速報をcsvで配信されています。
    こちらのtweetをストリーミングAPIで受けとります。

    2.受信した内容をデコードします。

    デコードと言っても、都合のいいように表示用と読上げ用のテキストを生成するだけです。

    3.USB接続のLCDに表示させます

    生成したテキストをUSB接続のLCDに表示させます。

    4.スピーカに音声出力します

    RaspberryPiに接続したスピーカに合成音声で出力します。音声合成にはAquesTalk Piを使っています。いわゆる「ゆっくり声」で読み上げます。(笑)
    (注:AquestTalk Piは商用利用では有償なので、真似する人はご注意を)

    いまのところ、RaspberryPiのスピーカ端子にダイソーの100円スピーカ(ケーブルなし)を挿しているので、音量が小さくて静かな状況でないと聞き取れません。なるべくシンプルかつ小さくアンプを仕込む方法を考えています。

    5.動かしてみて

    遠めの地震だと地震速報の読上げ&表示後に揺れがきます。比較的近くだと揺れが先か同時くらいですが。音声だけだと読み取れなくても同じ内容がLCDをみれば表示されているので、読上げ完了を待たなくても内容がわかりますし、聞き取れなくてもやはり内容はわかりますので、結構便利です。

    ちなみに、日本気象協会の地震情報(tenkijp_jishin)もフォローしていて、その内容もそのまま表示&読上げをしています。こちらは緊急地震速報が落ち着いてしばらくしてからTweetされます。

    6.メモ

    以降は自分用のメモです。

    動かすの使った追加パッケージは以下のとおり。

    $ sudo apt-get install python-gd
    $ sudo apt-get install ttf-kochi-gothic-naga10 ttf-kochi-mincho-naga10
    $ sudo pip install pyserial

    「TweetToVoiceLCD.py」を走らせれば動作開始。


     

    5 responses to “RasPiに緊急地震速報を報告させてみました” RSS icon

    • 詳しくやり方を教えて頂いてもよろしいでしょうか?

    • コメントに気づかずにすみません。
      詳しく、というのはどのあたりでしょう??
      引越の際に現物は片付けてしまったので、残念ながら現物に基づく説明はできないです。
      個々のTwitterからTweetを受けるところとか、合成音声出力とかについてはそれぞれリンク先を辿ってみてください。(時間が経っているのでそれぞれ状況が変わっているかもしれませんが・・・)
      いずれにせよ、自分のやり方ではまずPythonの基本知識が必要です。ハードウェア工作であるLCDは別にして、Pythonの知識があれば実は大して複雑な事はしていません。
      さらに安定稼働するにはLinuxやDebianの知識が必要です。(ググればできるレベルと思いますが、自分はそこまでやりませんでした)

      • 遅くなり申し訳ないです
        質問が抽象的で申し訳ないです

        私はPythonを始めたのですが、全然分かってなく、ググリながらやってます(笑)
        この記事でわからないのは、2と4のデコードと音声出力のところです
        出来れば手順を説明していただけるとありがたいです

        すいません、よろしくお願いします

        • 一度に答えられそうにないので順番に。
          まず、簡単な方の音声出力からです。

          音声出力は
          http://www.a-quest.com/products/aquestalkpi.html
          のAquesTalk Piを使っているだけです。

          漢字かな(+アルファベット)混じりでも概ね読み上げてくれるので、まずはインストールしていろいろ遊んでみてください。

          PythonからはAquesTalk Piを呼び出すシェルスクリプトをsubprocess.call() で呼び出しているだけです。Tweetメッセージに変なテキストが入ってくるとセキュリティ上危ないかもしれませんが、動くようにするだけならそんなものでしょう。
          (LCDの表示もほとんど同じ仕掛けだったりします)

          デコードの部分はちょっと待ってくださいね。

    • アンプは
      http://amzn.asia/6QpmAgs
      EasyWordMall PAM8403 5V 電力 オーディオ アンプ ボード サポート USB 電源 2 チャンネル 3W [並行輸入品]

      とか良さそうですよ。


    コメントをどうぞ(日本語のみ/Only in Japanese)

    日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)