ガジェット通信 GetNews

見たことのないものを見に行こう
「ジャスティス・リーグ」特集サイト

体重計の値を赤外線受信モジュールで取得してみよう─にゃんてっく☆やせないアイツ【vol6】

DATE:
  • ガジェット通信 GetNewsを≫

既製品の体重計と連携する

こんにちは、猫を愛するエンジニア夫婦、はとね(@hatone)ときょろ(@kyoro353)です。

前回は猫の食事をLINEへ通知することに成功しました。今回は、前回組んだ実装をベースに既製品の体重計と連携していきます。

既製品の体重計を使うことにしたけど、一体どんな体重計を選べばよいでしょうか? できるだけ、本体を分解したり改造したりしないでデータを読み取れるとありがたいのだけど……。

きょろ
「そう思って今回は赤外線でデータを取得できるタイプの体重計を選んでみたよ。計測データを体重計から赤外線で送信し、その情報が手元のモニターに表示されるんだ。このデータをセンサーで読み取れば、改造なしで体重計の値を取得できそうだね。Amazonで2500円くらいで売っているよ」

Hashy SALUTE ワイヤレス体重計(PK)BH-2580

赤外線とリモコン

そもそも、赤外線を使ってどんなデータのやり取りをしているんでしょう?

赤外線を使って操作というと、テレビのリモコンをイメージします。機械とリモコンが赤外線を介してどんなやりとりをしてるのか知りたくなってきました。

赤外線を使って操作するリモコン

きょろ
「リモコンの赤外線の搬送周波数は、多くの場合38kHz。データをエンコードしてバイナリ化し、この搬送周波数の赤外線をON/OFFさせることで、機器間での通信を実現しているんだ。

だから、リモコンと同じ信号を出せば同じように動作をさせることができるし、同じように受信してデコードすると、同じように解釈することができるんだよ。赤外線っていっても、目に見えないだけでただの光だからね。モールス信号と同じようなものだと思えばわかりやすいかな!」

リモコンが発する赤外線の信号を記録し、同じパターンで出力して、テレビやエアコンなど複数のデバイスをお手軽に制御できる学習リモコンも多くの製品が出ている分野です。スマートフォンからも簡単に使えるIRKitなどが有名ですね。

IRKitも、本体に向けてテレビやエアコンのリモコンを操作した瞬間の赤外線の信号パターンを保存して、それをスマートフォン上のアプリから再現することで、機器の制御を行っています。

38kHzの赤外線でやりとりされるということはわかったけれど、エンコードされているデータをそんな簡単に読めるものなんでしょうか?

きょろ
「38kHzの搬送周波数で送るのは共通だけど、どういうふうにデータをエンコードするかの仕様はまちまちなんだ。だからデバイスによって、何をどんなふうに信号として送っているかは解析してみないとわからない。

大手メーカーごとに決まったフォーマットというのもあって、それを真似ているケースも多いんだ。

実際は、実機をもとに検証してみるのが一番確実だね。また、オンライン上では有志の人たちが解析していたりもするので、それを参考にさせてもらうのもいいと思うよ」

赤外線って猫には見えるの?

そういえば前回、超音波は猫に聞こえてるの?って話題になったけど、赤外線は猫に見えてたりするのかな。たぶん見えてないと思うんですが、ちょっと気になるなぁ。

ときどき、私たちには見えない”何か”を見つめているバジル

どーじん先生
「はとねさん、大丈夫です。猫には赤外線は見えないはずです! 赤外線が見える動物は、あまり多くないんです」

あ、どーじん先生! 良かったー。
なんでそう思ったかというと、猫って夜目がきくじゃないですか。だから、赤外線カメラとかと同じ機能を持っていてもおかしくないかなぁという気がして。

どーじん先生
「確かに、猫は暗いところに強いですね! 実は猫には、網膜の後ろにタペタムっていう反射鏡みたいなものがあって、少しの光でも目の中で増幅できるようになっています。それと、瞳孔も大きく開けるので、光をたくさん取り入れられる。

他にも猫は音やニオイにも敏感だし、モノの配置を空気の流れから敏感に感じ取れるヒゲもあるし、暗闇で頼りになる器官がいろいろあるんですよ」

そうなんですね!でも、人間にはタペタムみたいな器官はないですよね。同じ哺乳類なのに、目ってそんなに違うものなんですか?

どーじん先生
「もちろんタペタムの有無も違いますし、持っている細胞にも違いがありますよ。猫は、色を見分ける能力を持つ細胞三種類のうち、赤色を感じる細胞を持っていません。哺乳類の祖先は夜行性だったから二色型色覚で十分だったんですね。

一部の霊長類はこの二色型色覚から進化して、色を三種類の細胞で見分けるようになりました。これは、果実を得るために、赤色が見える個体が生き残りやすかったからじゃないかと考えられています」

何でも見えていたほうが生存に有利そうなのに、なんかもったいないですね(笑)。猫も赤外線が見えてたら、暗闇をもっとエンジョイできそうです。

どーじん先生
「赤外線が見えたら、狩りしやすそうですよね。なんてったって、すべての生物は赤外線を出してますからね」

え、生物はみんな赤外線を出してるんですか???

どーじん先生
「絶対零度を除いたすべての物体は、どんなものも電磁波を出してるんです。で、ちょうど生物くらいの温度のエネルギーだと、赤外線が対応しているという」

それで狩りに利用できるんですね……。

どーじん先生
「たとえば、一部のヘビは赤外線を感知して、ネズミなどを暗闇で狩っています。ピット器官というくぼみが顔にあるんですが、そのなかに赤外線が入ると皮膜の温度が上がって、サーモグラフィーみたいに見えるんです。ピット器官は吸血コウモリにもあって、噛み付くべき血管の位置を温度で感知しているらしいですよ」

赤外線って、目と違う器官で感知するんですか!?

どーじん先生
「そうですね、ヘビのピット器官は熱を利用してますね。赤外線があたると温度が上がるというのは、実は赤外線が発見されたときの理由だったりもします。赤外線の存在は1800年、ハーシェルという学者の実験で明らかになりました。

太陽光ってプリズムに透過させると、虹みたいに光が分けられるじゃないですか。その赤色光の外側に温度計を置いたら、目で何も見えてないところなのに温度が上がってるのがわかったんですね」

猫がヘビを真似てる!?

赤外線って、そんなに簡単な仕組みで検知できるんですねぇ……。

もっとカメラめいたもので検出するんだとばかり思ってました。人間にも欲しい器官ですね(笑)。

どーじん先生
「人間が作り出して使ってる赤外線センサーの機械も、多くはヘビと同じような、温度変化を利用した機構のはずです。マジ、ヘビリスペクトですよ」

でも熱で検出するんなら、自分の出してる赤外線も検出器官に入っちゃったり、狙った物体と周囲の物体の赤外線も区別しにくそうですけど。

どーじん先生
「そういう問題はありますね。たとえば『赤外線天文学』ってジャンルでは、望遠鏡をヘリウムで冷却していたり、地球が出す熱を避けるために宇宙の天文衛星から赤外線観測をしていたりします。

動物の赤外線検出器官でも、そういうノイズが多くなるはずで、赤外線では世界を高精度で見れないと思いますよ。

赤外線は水分に吸収されるから遠くまで見えないし、波長が長いから光が回折しちゃってイメージがボケボケになったりします。サーモグラフィー映像だと、人間の顔はのっぺりと輪郭なく映るじゃないですか。あんな感じかも」

そんな面倒な器官、なんでヘビは手に入れたんでしょうか? なんか、猫もヘビも、暗闇でネズミを狩るって点では似たようなものなのに、狩りに使う器官がこんなに違うなんて不思議です。

どーじん先生
「ヘビは地中生活を経て、一回視覚を失ってるって説があります。きっとそのときにピット器官で獲物を狩る個体が生まれて、一気に繁殖したんでしょう。対して猫は、基本的に地上生活で、真の暗闇を生き延びる必要はなかった。

でも、猫とヘビが似てるって指摘は面白いですね。意外と的を射ているかもしれません。実は猫が威嚇するときの『シャーッ』って声は、ヘビを擬態したものだって説があるんですよ。

しかも、猫によっては、威嚇のときにツバを吐きかける動作をするんですが、これもヘビと共通。追い詰められた猫のしっぽの振り方も、ヘビに似てる。こうやってヘビを真似ることで、きっと敵に備わってるであろう、ヘビを避ける本能に訴えかけるんでしょうね。

それと、トラ猫がまるっと寝ているときの模様が、とぐろを巻いたヘビそっくりだから、これも擬態の一種なんじゃないかって説もあります」

ヘビっぽい?

ヘビとか人間とか機械とか、いろんな存在を経由して猫を考えてみるのは面白いですねぇ……。

どーじん先生
「共通してる部分がいろいろあるし、共通してるのに違う部分もありますからね。

たとえば、ヘビのピット器官で熱を感じている受容体は、人間にもあるんですが、人間ではワサビやシナモンなどの刺激を感じる役割を持っていたりします。

哺乳類だと低温を感じるのにも使われているっていう説もあるので、ネコもこの受容体で『冷たい!』って感じてるのかもしれません。

こういう比較から学ぶことも多いので、猫をもっと知るためには、猫以外の動物の知識を積極的に調べてみるのもいいと思いますよ~!」

赤外線モジュールをESP8266に取り付けてみる

きょろ
「前回まで組み立てた基盤に赤外線モジュールを取り付けてみよう。今回使うのは、この受信モジュールだよ」

赤外線リモコン受信モジュール PL-IRM2121(38kHz)

さっそく、データシートを見ていきましょう。


PL-IRM2121のデータシート

左から、
Vout
GND(グランド)
Vcc(電源0)

という順番に並んでいます。

VccとGNDで、電源供給の1セットになります。またVoutには、Voh(High Level Output Voltage)とVol(Low Level Output Voltage)があります。

今回の赤外線モジュールの場合は、何も受信していない間はVoutの値が4.5V(Voh)出ており、38kHzの信号を受信している間だけVoutの値が下がり、Volになります。

きょろ
「ちなみに、38kHzの赤外線だけに反応するように作られているのは誤動作やノイズ対策のためだよ。自然界にはさまざまな赤外線が飛んでいるので、38kHzだけに反応するようにすることで、確実に制御用の信号を読み分けることができるんだ」

きょろ
「じゃあ、データシートの読み方を確認したので、前回まで組み立てた基板に赤外線モジュールを取り付けてみよう」

赤外線モジュールを取り付ける

赤外線モジュールの値をコンソールから取得してみる

きょろ「ESP8266上で動く赤外線モジュールを受信して解釈してくれるライブラリがあるから、それを使っていくよ。」

今回はIRremoteESP8266というライブラリを使用します。

サンプル一覧から、「IRremoteESP8266」→「IRrecvDumpV2」を開きます。


「IRremoteESP8266」→「IRrecvDumpV2」を開く

サンプルコードが読み込まれたら、受信するピンの番号を合わせます。

今回は14から、5へ書き換えました。これをESP8266へ流し込んで、体重計から送られてくるデータを読み取ってみます。

赤外線モジュールを体重計の赤外線LEDに近づける Dumpできた値

きょろ
「次はこの取得できたデータ値を元に、体重のデータを読み取ってみよう。

とてもありがたいことに、同じモデルの体重計を使って @td2skさんが「Qiita Arduinoで全自動体重記録計を作る」という記事をQiitaに書かれていているので、この内容を参考にさせてもらおう。先人の知恵をお借りしながら、解析するプログラムを書いていくよ」
参考:Qiita Arduino で全自動体重記録計を作る(@td2skさん)

今回、書いたコードはこちらです。

きょろ
「それじゃあ、体重計の数値を解釈できるようになったので、これを実際に流して試しに乗ってみよう」

おお、数字が見えました!


猫の体重ではありません(笑)

というわけで、体重計の数値を赤外線モジュールを使って取得することができました。

次回は、これをトイレに取り付けて、通知するようにしていきます。

ジンジャーの体重:現在6.4kg

執筆:はとね(大島 孝子)
きょろ(井上 恭輔)
協力:どーじん先生(宮本 道人)
編集:大内 孝子

著者プロフィール

はとね(大島 孝子)
アメリカ西海岸で日々奮闘するバックエンド寄りのエンジニア。
高校時代パソコン研究部に所属し、NHK BS2 高校生ITキング決定戦というTV番組で全国3位、Web教材開発コンテストThinkQuest@JAPAN 2004で最優秀賞を受賞。2011年に、情報処理推進機構が主催する「未踏ソフトウェア創造事業」に採択される。2012年にインターネット広告代理店へ入社して米国駐在員として渡米し、2014年にAT&T Internet of Things Hackathon and Accelerator SeriesというIoTでは最大級のハッカソンでFooDrawというプロダクトを制作して全米1位を獲得。現在はメルカリにて、CXIチームのエンジニアとして働いている。

きょろ(井上 恭輔)
Webやアプリの開発に留まらず、ハードウェアの設計や量産まで幅広く手がけるエンジニア。高専在学中の2006年に情報処理推進機構が主催する「未踏ソフトウェア創造事業」に採択され、スーパークリエータ/天才プログラマーの認定を受ける。
2008年にミクシィ入社。iOS/Android向けテスト配信サービス「DeployGate」の立ち上げにを行い、2014年に寿退職ののち渡米。
日経BP主催のAndroid Application Award(A3)において優秀賞および特別賞、高専プロコン最優秀賞&文部科学大臣賞、AT&T IoT Hackathon 全米部門優勝など。
現在の趣味はドローン撮影とダイエット。

【PR】あなたの本当の評価がわかる!年収提示サービス「moffers」

登録した詳細な経験・スキル情報に基づき、企業が「年収」を明示した形でスカウトを行う、エンジニアのための転職サービス「moffers」がオープンしました!

あなたの本当の評価がわかる「moffers」に登録してみませんか?

【moffers参加企業】
日産自動車、富士通、本田技研工業、富士通、三菱電機、サイバーエージェント、ソニーネットワークコミュニケーションズ、リクルートテクノロジーズ、ほか

WebからIoT、自動運転、AIまで幅広い業種・職種がラインナップしています。この機会にぜひご登録ください!

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。