ラズパイ使って、外からでもテレビを消せる様にしてやる！

### はじめに
* * *
趣味で宇宙開発を行う団体[「リーマンサット・プロジェクト」](https://www.rymansat.com/)がお送りする[新春アドベントカレンダー](https://qiita.com/rsp-dgkz/items/497225739b88c817a90c) No.14です。

就職してからずっと非エンジニアで、2017年暮れからラズパイいじり始めたばかりなのに、2018年1月から[rsp-00](https://www.rymansat.com/satellites)の開発チーム(ミッション系)に入れてもらい、開発に少し携わることができました。

マジ楽しかったです！リーマンサット、特に[rsp-00](https://www.rymansat.com/satellites)開発チームの皆様には本当に本当に感謝です！

### (この記事の) サマリー
* * *

- 2018年に宇宙に放出された[rsp-00](https://www.rymansat.com/satellites)では、ラズパイ(ゼロ)を使ってる
- 人工衛星 → 遠隔操作 → 「家でリモコン」だよね

という無理矢理な連想と、勉強もせずテレビばかり見ている子供にムカつき、
__ラズパイ使って、外からでもテレビを消せる様にしてやる！__というものです。

![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278241/2c4a42eb-b48c-cdd3-af1c-a4e6648111e4.png)



折角なので、スピーカーも追加して「勉強しろ！オラァ」と外からでも言える様にもします。
あと、勉強も兼ねてwifiスマホリモコンもやりました。

### 構成
* * *
ビギナーがゼロから開発するのはムリがあります。偉大なる先人の方々のお知恵を参考に、というかそれらをつぎはぎしながら行なっていきました。ハードもまずはブレッドボードでやりました。

![rpi_remocon_bread_edited.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278241/e24169ac-47d2-8c27-62a4-634f3d56f087.jpeg)

#### (1) リモコン機能
LIRC面倒なので、[rsp-00](https://www.rymansat.com/satellites)開発時にも検討した[PiGPIO](http://abyz.me.uk/rpi/pigpio/download.html)でやりました。

以下サイトで、用意するモノを含め、丁寧に解説してくれています。私もラズパイゼロを使用し、テレビに加え、DVDプレイヤー、エアコンも操作できる様にしました。

[格安スマートリモコンの作り方](https://qiita.com/takjg/items/e6b8af53421be54b62c9)

#### (2) スマホリモコン画面
webiopiを使いました。以下等を参考にしながら、初めてcssやりました(今はこれが限界。。)。

[webiopiを使ってブラウザから遠隔操作](http://kkmic.blog112.fc2.com/blog-entry-239.html)

![rpi-remocon_edited.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278241/2fcee6aa-ee23-a636-8a31-d9f2a997966d.png)

#### (3) 音声出力
秋月電子で、[スピーカー](http://akizukidenshi.com/catalog/g/gP-03285/)と[PAM8012アンプモジュール](http://akizukidenshi.com/catalog/g/gK-08217/)を購入。

音声出力は、以下等を参考にしました。ラズパイゼロには、Audioジャックがないので、[GPIOで接続](https://ameblo.jp/ko-mibaisen/entry-12220905776.html)します。

[Raspberry Pi 2 をアンプ基板＋スピーカーのコンパクト構成でお喋りさせる](https://qiita.com/aviscaerulea/items/a50c40f0a9e397c1ec2f)


#### (4) 外からリモコン： slackbot
ポート開放等、自宅のwifi設定はいじりたくないけど、ビギナーなこともあってサーバーとかも面倒。。。調べた結果、slackbotが一番簡単そう！と思い、以下等を参考にしてやってみたところ、それ程引っかからず上手くできました。

[PythonのslackbotライブラリでSlackボットを作る](https://qiita.com/sukesuke/items/1ac92251def87357fdf6)


### 完成！

![rpi_remocon_2_edited.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278241/ff9d6912-a68b-c6cb-616e-e0bceee8d801.jpeg)



###　デモ
* * *
「外から、テレビがついているかどうかどうやってわかるの？」
 については、以下ご参照ください(音声は出力されません)。

[ラズパイ＋VNCで外から監視するカメラシステム](https://qiita.com/kentani/items/55b9a7e2a7860acb5043)

「外からリモコン」のデモとして、スマホから4Gでやってます。
チコちゃんにお願いすることも可能にしました^^

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">外（スマホ4G)からTV操作したり、音声出力できる様にした<a href="https://twitter.com/hashtag/%E3%83%AA%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B5%E3%83%83%E3%83%88?src=hash&amp;ref_src=twsrc%5Etfw">#リーマンサット</a> <a href="https://twitter.com/hashtag/iot?src=hash&amp;ref_src=twsrc%5Etfw">#iot</a> <a href="https://twitter.com/hashtag/iotlt?src=hash&amp;ref_src=twsrc%5Etfw">#iotlt</a> <a href="https://twitter.com/hashtag/%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4?src=hash&amp;ref_src=twsrc%5Etfw">#ラズパイ</a><a href="https://t.co/1LQl3nXqpo">https://t.co/1LQl3nXqpo</a></p>&mdash; Takeshi Tanimoto (@takeshitani) <a href="https://twitter.com/takeshitani/status/1220690670374928384?ref_src=twsrc%5Etfw">January 24, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

###　tips
* * *
完成まで、つまづきまくりでしたが、PiGPIOに関する日本語情報が比較的少ないので、本プロジェクトでのポイント２点を以下ご紹介。

(1) 自動起動化
systemd等[いくつか方法](https://hakengineer.xyz/2017/09/22/post-318/)がありますが、私の場合は以下でいけました。

```
#ユニットがserviceとして認識されているか確認
$ sudo systemctl list-unit-files --type=service | grep pigpiod

#認識されていれば、enableコマンドで自動起動
$ sudo systemctl enable pigpiod.service
```

(2) 音声出力設定

GPIOピン#19で、結論としてはストレートに以下設定でいきました。

```
pi.set_mode(19, pigpio.OUTPUT)
pi.hardware_PWM(19, cfreq, 1000000)
```

上の「[GPIOで接続](https://ameblo.jp/ko-mibaisen/entry-12220905776.html)」でALT設定云々と言っていることもあり、__OUTPUT__の代わりに__alt5__設定にすると、音は出るのですが、その後TVの操作ができなくなったりとかして、つまづきました。

### あとがき
* * *
というような感じですので、[rsp-00](https://www.rymansat.com/satellites)の開発では、実際には、からあげクンの買出しや休日奮闘する開発メンバーの送迎だったような。。。

昨年から、公私とも少し慌ただしいので、今は特定のプロジェクトに参加していませんが、落ち着いたらまた参加したいと思っています。自分のペースで参加できるのも、[「リーマンサット・プロジェクト」](https://www.rymansat.com/)の良いとこかと。


尚、子供達はテレビを見れなくなっても、youtubeを見るので、このシステムの効果は全くありません。
音声出力も微妙なイントネーションなので、これからはチコちゃんを連発します。

* * *
[「リーマンサット・プロジェクト」](https://www.rymansat.com/)は「普通の人が集まって宇宙開発しよう」を合言葉に活動をしている民間団体です。
他では経験できない「宇宙開発プロジェクト」に誰もが携わることができます。

興味を持たれた方は https://www.rymansat.com/join からお気軽にどうぞ。

[新春アドベントカレンダー](https://qiita.com/rsp-dgkz/items/497225739b88c817a90c)、次は　@rhiro さんの「PlantUMLを使った宇宙服のモデリング」です。お楽しみに！