遅ればせながら、Raspberry Pi Picoを入手しました。一足早くてにいれるぜーと思って、海外サイトから購入をしていたのですが、日本での発売のほうが思いの外早く、自分の手元に届いたのは4月も半ばをすぎていました。なんというか運の悪い…。Lチカも含めていろいろと試していたのですが、たまにMuエディタを使用する記載があるのですが、自分のRaspberryPiのメニューを見てもMuエディタがありません。昔はあったと思ったのですが…。ということで、Muエディタをインストールしてみました。
続きを読むArduino IDE 2.0を使用してみました
前々から噂では聞いていた、Arduino IDE 2.0
を使ってみました。
現在beta5というバージョン状況ですが、実用的に使えるのか気になるところです。あとはArduino
が使えるのはもちろんなのですが、手持ちの多いSeeeduino
などからも使えるかをみてみたいと思います。どちらかというとSeeeduino
などが問題なく動作できれば、今後はこちらのバージョンに移行していこうと思っています。
まだ、位置づけ的にはExperimentalなものなので不具合があっても仕方ないと思って使いましょう。
続きを読む
Node.js経由でRaspberryPiやObnizからLINEへの通知を行ってみる
前からも持ってはいたのですが、obniz Board 1Y
(以降Obnizとします)を入手しました。これまでObniz
を使って行っていたのはWeb経由でのアプリ開発まではおこなっていました。具体的には以下のようなものをつくっています。
この中ではObniz
はタイマー処理、大型のソレノイドの制御(木魚を鳴らす)、リレー制御(ブッダマシン起動)を行っています。基本的にはUIありきという内容だったのでWebのインターフェースを使用するのもちょうどよかったのかなと思います。
個人的にはあまりWebのUI開発に関しては得意ではないので、出来ればNode.js
などのコードから直接から制御できればいいなと思っていました。ただ、手を付けられていませんでした。
そんな中、「obniz IoT コンテスト 2021 | elchika」が開催されるという話をきいたので、ちょっと使ってみようと思いました。(アイデアに使うかはまだ決めていない)
そこで検索したところ以下のようなものがあることを見つけました。Node.jsで動くことは知っていましたが、LINEのNotifyのメッセージを送信することができるようでした。
今回はこちらを利用して、Obniz
だけでなく、RaspberryPiでもNode.js
をつかってメッセージ送信をしてみようと思います。
分解用の道具を購入してみました
部屋の掃除をしていたら、昔使っていたTVチューナーのリモコンがでてきました。なんとなく嫌な予感がしていたのですが的中。 アルカリ電池が泡吹いてました。(液漏れして結晶化といったほうがいいのかも)
しかたなく、電池を取り出してきれいにしたのですが、電池が接触しているバネ部分などは腐食しているので電池を取り替えて動いたとしても ちょっとがっかりという印象になってしまいます。せっかくなので分解してきれいにしようかなと思ったのですが、このリモコン、爪でとまっているだけなのに全然開く気配がありません。
通常であればギターピックのようなものを使用するのですが(以下の精密ドライバーセットについていたもの)、今回は隙間がかなり狭く、これでもうまく爪を外すことができませんでした。
そこで、今回は2つのものを購入してみました。一つは分解工房さんのヘラ、もう一つはKingsdun ヘラセットです。
個人的に良かったのは分解工房さんのヘラでした。かなり狭いところでも簡単にひらくことができました。個人で気にはもう少しヘラが広いタイプのものを購入したほうが便利だったかなと思いますが、今回購入したタイプでもかなり気に入っています。
iPhoneの分解にも使えるようです。
Kingsdun ヘラセットに関しては正直ピンセットでいいかな。6本セットで微妙な先端のものもあるので、もう少し本数少なくてもいいと思います。
問題なく分解できました
2つの道具を使うことで無事にリモコンは分解できました。あとは、接点部分を清掃するだけです。
拡大するとこんな感じ。紙やすりで削ってきれいにするかなあというところでしょうか。あるいは無水エタノールと綿棒できれいにする手もあるかもしれません。
おわりに
分解の心強い味方ができました。やはり道具がいいと、作業もしやすくなりますね。 毎回のことですが、アルカリ電池の結晶化は本当に困った現象ですよね…
以下のヘラのほうがお勧めかもしれません。金属部が広いので爪を取るのが便利そう。
iPadをHDMI経由でモニタ表示した際の非表示領域がもったいないのでなんとかしたい!
仕事でiPadを使った子供向けのプログラミングの授業を行っていて、そのときに発生した悩みをようやく解決できそうなので情報をまとめました。悩みとは以下の画面の赤く枠を付けた部分になります。
悩み(その1)
プロジェクタにiPadを縦向きに表示させるのですが、プロジェクタは横向きの画面なのでiPadを縦向きに接続すると、余白が黒くなりかなり表示領域が小さくなってしまいます。100インチぐらいのプロジェクタでも実際には1/3程度の表示領域になってしまうということもあります。さすがにちょっともったいないなあとおもっていました。
最近はサイネージの需要もあり、縦向きに配置することができるモニタも増えているので、このあたりは解決するかなと思っていたのですが…まだまだ、モニタ縦向きに配置しても、設定上は横向きの解像度に設定しているため、モニタの向きが変えられないということはよくあります。(モニタ側で解像度設定ができるといいのですが、できないものがほとんどのようです)プロジェクタに関して言えば、縦向き表示できるようなものはそもそもなく、たまにあっても恐ろしく値が張るようなものしかないといった状況でした。
ピボット(画面回転)対応ディスプレイ(縦向きに回転できるPC用のモニタ)もありますが27インチほどにとどまっているようです。そのうちもう少し大きめのものがでてくるとは思いますが、それを使うとかなり大きい縦向きモニタも使えると思うのですが…
悩み(その2)
iPad(Lightning)とHDMIの変換を行うには以下を使っています。
USB Type-Cポートの場合には以下のようなものを使うことになると思います。
授業を行っているので、このようなアダプタを少なくとも週に4回ぐらいはこの抜き差しをしていることもあり、アダプタのケーブル部分にも、コネクタ部分にも負荷がかかり壊れる可能性もあるなあとよく思います。個人的にはHDMIケーブルは長さも割とありケーブルにも重さがあるため、痛みやすくコネクタも強度が低いと感じています。
そういう悩みもあり、有線での接続をなんとか無線接続にできればという希望もあります。接続による遅延に関してはAirPlay
にて試しましたがほぼ気にならない程度だったので、先程の悩みであった以下を解決できないか考えて見ようと思います。
- 縦向きモニタの対応(表示有効範囲の拡大化)
- 無線化(コネクタ部の故障不安の軽減)
今回はそれに対する試行錯誤をまとめています。
無線化を考えてみた
無線化を行うデバイスとアプリFire TV StickとAirReceiverを導入
AmazonデバイスであるFire TV StickにAirPlay接続をするアプリであるAirReceiver(有料)をインストールしてみます。
これを導入することで無線化を簡単にすることができます。遅延に関してはほぼない感じですし、PCになどを使用することもないので割と安価に仕上げることはできるかなと思います。
上記2つ購入しても5千円オーバーぐらいでしょうか。セールでFire TV Stickを購入できればもっと安く揃えることは可能です。
Fire TV Stickの画面がHDCPのためにキャプチャできない…と思ったのですが、Fire TV StickのADBを使用することでキャプチャができました。
以下のようにAirReceiver
アプリをインストールしていきます。
そして、起動後にAirPlayで接続を行うと以下のように表示することができます。
黒く残った非表示領域がもったいない…横に向けると一応非表示領域は小さくできるのですが…
MakeCode以外でも普通に使用できます。
これで無線化に関しては簡単実現できていますが、縦向きのモニタには対応していないので表示領域の有効化はできません。大きな表示のできるモニタがあっても、非表示領域のために、その数分の1しか表示領域がないのは残念です。
WindowsPCで使用可能なAirPlay
アプリを使用する
続いてはWindowsでも使用可能なAirPlay
アプリを仕様するという方法です。これを使用するとWindows側でPCのモニタの方向を回転させる機能があるのでそれをしようすることで、縦向きモニタのように使用する事ができます。モニタを縦向きにしてiPadの有効表示領域を増やすことには成功しています。
自分は以下の2つのアプリをつかってみました。
AirServer(有料)
かなり古参のAirPlay
アプリです。
これを使うと操作遅延が発生するので、操作しながらのレクチャーを中心にする用途としては使いにくいかな?
本格的に使用するには有料にする必要があります。自分はビジネス用途だったので4290円で購入しました(これも少し高いなあ)。AirPlay
アプリは基本有料のものがほとんどですね。
ApowerMirror(有料)
WiFi経由でも、USBケーブル経由でもiPadなどのモニタをミラーリングすることのできるアプリになります。
こちらは割と遅延が少ないのでかなりお勧めですし、価格も前者よりも安価なのもいいですね。
ApowerMirror
は有線接続にするとほとんど遅延もないので、iPadの画面を表示しながらスライド表示をするような授業を行うときにはこれを使用しています。
非表示の部分が黒くなるぐらいであれば、スライドなどを余白に表示できれば効果を考えればよいかもしれません。ただ、子どもたちが見たときに何を見ればいいのかわからなくなるほどの情報量があるので、使い所を考えたほうがいいのかも?
以下の表示では、画面の左側にApowerMirror
でのiPadの映像、右側にはPDFの表示をしています。
個人的にはこの組み合わせはかなり気に入っていますけどね。
よしRaspberryPiでも参戦だ!
こういう用途でもRaspberryPiは使用できるのか調べてみました。検索すると以下のようなエントリが見つかりました。
RPiPlay
を使用することでAirPlay
対応になるとのことです。これは早速ためしてみないと!
参考にしたエントリの情報でほぼ大丈夫かなと思ったのですがトラブルの引きの強い私はすんなりとは行かなかったです。
以下が公式のリポジトリになります。
ここからgit
コマンドを使用して導入を行っていきます。
リポジトリのクローン
$ git clone https://github.com/FD-/RPiPlay.git
$ cd RPiPlay
クローンができたら、ビルドを行っていきます。
ビルド
$ sudo apt install cmake $ sudo apt install libavahi-compat-libdnssd-dev $ sudo apt install libplist-dev $ sudo apt install libssl-dev $ mkdir build $ cd build $ cmake .. $ make
ビルド時にはエラーのような表示も行われますが実際にはうまく行っているようです。ビルドの完了をしたら以下のように起動します。
$ ./rpiplay -n MyAirPlay -b auto -r 270
この実行により縦向き画面モード(270°の回転)となり、オプションで設定を行ったMyAirPlay
という名前でAirPlay
デバイスを検出することができます。
以下の様に認識されます。
そして、問題なくAirPlay
の使用してのキャストができるようになりました。
270度の回転(縦向きモニタへの対応)もアプリ側でできているので悩みが一気に解決して素晴らしい!厳密に言うと解像度の縦横比の問題で非表示領域が小さくなっているだけなのですが…
それでも有効な領域が増えているのでかなりマシです。
rpiplay
の起動オプション
現時点では、以下のオプションが実装されています。
- -n name … ネットワーク名に現れるAirPlayデバイス名を指定します。
- -b ( on | auto | off) … 常に黒い背景を表示するか、アクティブな接続中のみ表示するか、表示しないかを指定します。
- -r ( 90 | 180 | 270) … 画像の回転を90度の倍数で指定します。
- -f ( horiz | vert | both ) … 画像の反転を指定します。画像の反転を指定します。
- -l … ローレイテンシーモードを有効化。オーディオやビデオのフレームを受信すると同時に関連するタイムスタンプを無視してレンダリングすることで遅延を減らします。再生が途切れたり、オーディオとビデオの同期がずれるという副作用が発生することもあるので注意が必要です。
- -a ( hdmi | analog | off ) … オーディオ出力デバイスの設定
- -vr renderer … 使用するビデオレンダラを選択します。rpi、gstreamer、またはダミーのビデオレンダラが設定可能。(デフォルトはgstreamerのようです)
- -ar renderer … 使用するオーディオレンダラを選択します。rpi、gstreamer、またはダミーのオーディオレンダラが設定可能。(デフォルトはgstreamerのようです)
- -d … デバッグログを有効にします。コンソール出力が多いため、再生が途切れることがあります。
- -v または -h … ショートヘルプとバージョン情報を表示します。
おわりに
今回に関してはMacがあれば問題ないのかも?ただ、WindowsPCしかない場合にはAirPlayの有料アプリを使うことになってしまうのかなというところに、RaspberryPiでの救世主的なアプリの発見。しかも、画面回転にも対応しているとは!
HDMIモニタを縦向き表示しているサイネージだけでなく、30インチ程度のピボット(画面回転)対応ディスプレイを持っている場合でもかなり有効な気がします。縦向きのゲームなどでも対応できるならかなり有効なのではないですかね?
個人的には入力ソースに関わらず、モニタ側で強制的に入力方向の設定できるようになるといいのですが…。