sciencompassサイトマップsciencompass今勉強していること、これまで勉強してきたことを発信してます。半導体物理や数学、英語などの記事を書いています。2019年8月18日センサーなどをつなぐだけで簡単にIoT化ができるObnizを使って、エアコンの遠隔操作リモコンを作ってみました。公式HPのチュートリアルにまさにやりたいことが載っていたので、それを参考にしながら工作しました。今回作成したいリモコンの概要について整理します。やりたいことは、1:エアコンのOn/Offをスマホを使って外出先から操作するです。暑い夏や寒い冬に家に帰る前にエアコンの電源を付けることが出来るようにすることが目的です。それだけだと、エアコンをつける必要があるのかどうかわからないので、2:現在の部屋の温度を取得して表示する機能も欲しいです。快適な気温のときにわざわざエアコンをつける必要はないですからね。この二つだけで十分と言えば十分なのですが、ちゃんと信号を送っているのか確認するために、3:信号を送ったらブザーを鳴らす機能も追加します。家にいない時には確認できませんが、まあ練習ということで付けてみます。先ほどの機能を実現するにあたって必要な部品は次のとおりです。Kitに付属の赤外線モジュールを使用します。UDB-05LFPNその他、ブレッドボードとピンヘッダ、ピンソケットを用意します。用意した部品をくみ上げたのが次の写真です。Obnizの0~3番ピンが赤外線モジュール、4~6番ピンが温度センサー、7番ピンと10番ピンが圧電ブザーと接続しています。HTMLプログラム公式HPの制作例にある”遠隔エアコン操作!”で示されているソースコードを流用します。obniz.io遠隔エアコン操作!https://obniz.io/ja/explore/30obnizはWebから操作できるハードウェアです。難しかったハードウェアもWEB技術なら簡単に扱えます。WEBで使える豊富なライブラリとハードウェアを組み合わせることもできます。WEBにある1つのソフトウェアから世界中に置いたすべてのハードウェアをコントロー...サンプルのソースコードとその説明に関しては、上記のページをご参照ください。ここでは、そこで公開されているソースコードをどのように改造したかを紹介します。ボタンタッチ時の動作を非同期関数へ変更まず、変更したのはボタンを押したときに起動する関数を非同期関数に変更したことです。この理由としては、ボタンを押して赤外線の信号を送信した後に、ブザーを一定の間鳴らすためです。Obnizでは、代表的な電子部品のパーツライブラリが公開されており、ブザーは下記のページで公開されています。これを見ると、ブザーを鳴らすためにはobnizでwait関数を使う必要があることがわかります。このwait関数が非同期関数であるため、ボタンを押したときに動作する関数も非同期関数にする必要があるわけです。obnizhttps://obniz.io/ja/sdk/parts/Speaker/README.mdobnizはWebから操作できるハードウェアです。難しかったハードウェアもWEB技術なら簡単に扱えます。WEBで使える豊富なライブラリとハードウェアを組み合わせることもできます。WEBにある1つのソフトウェアから世界中に置いたすべてのハードウェアをコントロー...ボタンを押したときの動作部分だけを抜き出すと次のようになります。今回使用した温度センサー、LM35DZのObnizライブラリも公開されています。それを使うと簡単に温度を取得することが出来ます。obnizhttps://obniz.io/ja/sdk/parts/LM35DZ/README.mdobnizはWebから操作できるハードウェアです。難しかったハードウェアもWEB技術なら簡単に扱えます。WEBで使える豊富なライブラリとハードウェアを組み合わせることもできます。WEBにある1つのソフトウェアから世界中に置いたすべてのハードウェアをコントロー...実際、先に紹介したサンプルソースコードも公開されている関数を使って温度を取得しています。この関数を使って取得した温度と、市販の温度計の温度にずれがあることがわかりました。そこで、このずれを補正することが出来ないか、考えました。LM35DZで温度を取得できる仕組みですが、大気の温度によってLM35DZから出力される電圧が線形に変化します。したがって、この出力電圧を読むことで、現在の気温を知ることが出来ます。Obnizで公開されているライブラリの中身はわかりませんが、おそらく電圧値を読み取って、計算によって温度を求めていると思います。仕様書に書かれているICの特性はあくまで一般的な、あるいは代表的、平均的なICの特性であって、一つ一つのICの特性はある一定のばらつきをもっていると考えられます。そこで、市販の温度計の値とセンサからの値が一致するように補正をかけます。