学習リモコンにする

このキットには赤外線の信号を受け取ったり、送信したりできるモジュールがついています。

身の回りのリモコンで動く家電の多くが赤外線を使って信号を送っているため、この信号をobnizで受け取って保存することができます。
保存した信号をまたobnizから送信すれば、保存しておいたリモコンの信号を出すことができるので、家のエアコンも外出先の自分のスマホから動かせるようになります。

受信する

身の回りにはたくさんの赤外線が飛んでいます。リモコンですらたくさんあります。
しかし、テレビのリモコンを使っても冷房が勝手につかないように、それぞれ同じ赤外線を使っていてもそれを使って送っている中身が別々になっています。

obnizの赤外線モジュールは多くの赤外線の信号をそのまま取得することができます。

赤外線の信号を受信するためのブロックがあります。

このブロックは赤外線がなんでもいいから1つ届くまでプログラムを止めて待ってくれます。

これは便利です。待っててくれるわけですから、待たせてるときにリモコンを持ってきて、覚えさせたい赤外線をボタンを押して出せば受信できます。

しかし、受信した信号をどうやって保存しましょうか。
受信した信号は大量の数字になります。紙に書くわけには行きません。

しかもブロックプログラムは画面を閉じると終了してしまうので、せっかく取得したデータも消えてしまいます。

クラウドに保存するブロックがあります。それをつかってobnizクラウドに保存することにしましょう。それならプログラムを閉じてもまた取り出すことができます。

クラウドに保存するためにはクラウドにログインしている必要があります。サインアップからアカウントを作成し、obnizの「登録」を行って下さい。

この赤外線の信号をクラウドに保存できるブロックが「Kit」の中にあります。
このブロックの保存データとして、さっきのブロックを入れることで、
受信した瞬間に自動的にクラウドに保存してくれます。

これならプログラムをもう一度開いてもクラウドから保存したものを取り出すことができます。

保存するときに名前をつけることができます。今回は扇風機の赤外線信号を"電源"という名前で覚えさせることにします。下の画像のようになります

ボタンが押されたら受信して保存

では、まずは受信をしてみましょう。

ボタンを用意してボタンが押されたら赤外線受信まちにして、受信したら”電源”という名前で保存するようにします。

そして、受信したかどうかが分かりやすいように、受信したらラベルに「受信しました」と文字を出すようにします。

<!-- Block Program Example -->
<xml xmlns="http://www.w3.org/1999/xhtml">
  <variables>
    <variable type="obniz" id="X2:3=S(hsdv0mk{aavHW">obniz</variable>
    <variable type="UIButton" id="80uQ37Yg!_RM@zbm[`cF">button</variable>
    <variable type="UIButton" id="#7$4fAkr(P%;.%JaKIy`">backbutton</variable>
    <variable type="UIButton" id="akidXEU*0XQ}VT^!o6Sp">rightbutton</variable>
    <variable type="UIButton" id="KBvD*sLV+fD7(ieEkq5x">leftbutton</variable>
    <variable type="UIButton" id="=ug=$DV-jzFr2PH9Q@`4">flagdown</variable>
    <variable type="" id="hpvY$6K[tgY$$/L_8%xc">count</variable>
    <variable type="dcmotor" id="V?6USN(jVhQ,P{82]/*M">dcmotor</variable>
    <variable type="airobotkit" id="Jk=/mw~HxfZs@VDVmFYY">airobotkit</variable>
    <variable type="led" id="!MAt1@Dsy)#f.p,K@;=%">led</variable>
    <variable type="iothomekit" id="hion2sTZs?@3_c=KyM[5">iothomekit</variable>
    <variable type="UILabel" id="g($Ni{y93Ym7k/=Vw)2(">label</variable>
  </variables>
  <block type="obniz_connect" id="HDp1mlcGAj5s`;!=llnb" x="82" y="63">
    <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
    <value name="obniz_id">
      <shadow type="text" id="5TP31WDvYyD%Gwf+wL1.">
        <field name="TEXT">OBNIZ_ID_HERE</field>
      </shadow>
    </value>
    <next>
      <block type="obniz_parts_iothomekit_wired" id="lCCqbv}35^vCE+iF(FBu">
        <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
        <field name="IoTHomeKit" id="hion2sTZs?@3_c=KyM[5" variabletype="iothomekit">iothomekit</field>
        <next>
          <block type="obniz_ui_button" id="5zgP!4zTny%4h(fymJ?P">
            <field name="button" id="80uQ37Yg!_RM@zbm[`cF" variabletype="UIButton">button</field>
            <value name="text">
              <shadow type="text" id="yPT(4T-yp0[)q4Qk,~[R">
                <field name="TEXT">受信</field>
              </shadow>
            </value>
            <next>
              <block type="obniz_ui_label_create" id="JmHgISXsMof%7X.th_aS">
                <field name="UILabel" id="g($Ni{y93Ym7k/=Vw)2(" variabletype="UILabel">label</field>
                <next>
                  <block type="obniz_ui_label_settext" id="$[u[,^NiKO!fzQaiTd5d">
                    <field name="UILabel" id="g($Ni{y93Ym7k/=Vw)2(" variabletype="UILabel">label</field>
                    <value name="text">
                      <shadow type="text" id="!$!S9L!}PD%%?7CoW:(4">
                        <field name="TEXT">ボタンを押してね</field>
                      </shadow>
                    </value>
                    <next>
                      <block type="obniz_util_repeat" id="@z_O1F`ymhWnHUw$zLQI">
                        <statement name="DO">
                          <block type="controls_if" id="m?i:%NagP%kg:v/t|a?h">
                            <value name="IF0">
                              <shadow type="logic_boolean" id="V!K_}YIt~iYoGYkM(x:t">
                                <field name="BOOL">TRUE</field>
                              </shadow>
                              <block type="obniz_ui_button_click" id=".fkC?!0M,W)P:T:J-(uc">
                                <field name="button" id="80uQ37Yg!_RM@zbm[`cF" variabletype="UIButton">button</field>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="obniz_util_save" id="J!E!dUeY7y?y:Ze%-JTB">
                                <value name="value">
                                  <block type="obniz_parts_iothomekit_get_ir" id="DN$a7~glj6b`z1nG,bW8">
                                    <field name="IoTHomeKit" id="hion2sTZs?@3_c=KyM[5" variabletype="iothomekit">iothomekit</field>
                                  </block>
                                </value>
                                <value name="key">
                                  <shadow type="text" id="zh1*}Vy||J(|v1Y,yQN9">
                                    <field name="TEXT">電源</field>
                                  </shadow>
                                </value>
                                <next>
                                  <block type="obniz_ui_label_settext" id="UDQa$NSNc-qy0|8MU+L#">
                                    <field name="UILabel" id="g($Ni{y93Ym7k/=Vw)2(" variabletype="UILabel">label</field>
                                    <value name="text">
                                      <shadow type="text" id="A}Lx600E70YBU1VugJ~(">
                                        <field name="TEXT">受信しました</field>
                                      </shadow>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>

このプログラムを動かして、ボタンを押して受信まちにしましょう。
キットの上にある緑の基盤の辺りに覚えさせたいリモコンを向けて覚えさせたいボタンを押しましょう。

画面上に「受信しました」が表示されたら保存成功です!

送信する

送信はとても簡単です。
ただ、覚えさせた信号を取り出してきて赤外線から送信するだけです。

まずはクラウドからデータを取り出す部分です。「Kit」にある「iothomekitから信号"をロードする」がそのブロックです。

「電源」という名前で保存することにしたので、取り出す時も「電源」で取り出します。

このブロックを赤外線を送信するためのブロックにつけることで送信ができるようになります。

送信ボタンも用意して、押したときに送信できるようにしましょう。
完成したプログラムはこのようになります。

<!-- Block Program Example -->
<xml xmlns="http://www.w3.org/1999/xhtml">
  <variables>
    <variable type="obniz" id="X2:3=S(hsdv0mk{aavHW">obniz</variable>
    <variable type="UIButton" id="80uQ37Yg!_RM@zbm[`cF">button</variable>
    <variable type="UIButton" id="#7$4fAkr(P%;.%JaKIy`">backbutton</variable>
    <variable type="UIButton" id="akidXEU*0XQ}VT^!o6Sp">rightbutton</variable>
    <variable type="UIButton" id="KBvD*sLV+fD7(ieEkq5x">leftbutton</variable>
    <variable type="UIButton" id="=ug=$DV-jzFr2PH9Q@`4">flagdown</variable>
    <variable type="UIButton" id="|KCJHTvLU;*ZWe|2H::Y">sendbutton</variable>
    <variable type="" id="hpvY$6K[tgY$$/L_8%xc">count</variable>
    <variable type="dcmotor" id="V?6USN(jVhQ,P{82]/*M">dcmotor</variable>
    <variable type="airobotkit" id="Jk=/mw~HxfZs@VDVmFYY">airobotkit</variable>
    <variable type="led" id="!MAt1@Dsy)#f.p,K@;=%">led</variable>
    <variable type="iothomekit" id="hion2sTZs?@3_c=KyM[5">iothomekit</variable>
    <variable type="UILabel" id="g($Ni{y93Ym7k/=Vw)2(">label</variable>
  </variables>
  <block type="obniz_connect" id="HDp1mlcGAj5s`;!=llnb" x="82" y="63">
    <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
    <value name="obniz_id">
      <shadow type="text" id="5TP31WDvYyD%Gwf+wL1.">
        <field name="TEXT">OBNIZ_ID_HERE</field>
      </shadow>
    </value>
    <next>
      <block type="obniz_parts_iothomekit_wired" id="lCCqbv}35^vCE+iF(FBu">
        <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
        <field name="IoTHomeKit" id="hion2sTZs?@3_c=KyM[5" variabletype="iothomekit">iothomekit</field>
        <next>
          <block type="obniz_ui_button" id="$hMkH5Kn+5BKDHnR~*7N">
            <field name="button" id="|KCJHTvLU;*ZWe|2H::Y" variabletype="UIButton">sendbutton</field>
            <value name="text">
              <shadow type="text" id="vK5uPXIcBkV/7NgXa;Vl">
                <field name="TEXT">送信</field>
              </shadow>
            </value>
            <next>
              <block type="obniz_ui_button" id="5zgP!4zTny%4h(fymJ?P">
                <field name="button" id="80uQ37Yg!_RM@zbm[`cF" variabletype="UIButton">button</field>
                <value name="text">
                  <shadow type="text" id="yPT(4T-yp0[)q4Qk,~[R">
                    <field name="TEXT">受信</field>
                  </shadow>
                </value>
                <next>
                  <block type="obniz_ui_label_create" id="JmHgISXsMof%7X.th_aS">
                    <field name="UILabel" id="g($Ni{y93Ym7k/=Vw)2(" variabletype="UILabel">label</field>
                    <next>
                      <block type="obniz_ui_label_settext" id="$[u[,^NiKO!fzQaiTd5d">
                        <field name="UILabel" id="g($Ni{y93Ym7k/=Vw)2(" variabletype="UILabel">label</field>
                        <value name="text">
                          <shadow type="text" id="!$!S9L!}PD%%?7CoW:(4">
                            <field name="TEXT">ボタンを押してね</field>
                          </shadow>
                        </value>
                        <next>
                          <block type="obniz_util_repeat" id="@z_O1F`ymhWnHUw$zLQI">
                            <statement name="DO">
                              <block type="controls_if" id="m?i:%NagP%kg:v/t|a?h">
                                <mutation elseif="1"></mutation>
                                <value name="IF0">
                                  <shadow type="logic_boolean" id="V!K_}YIt~iYoGYkM(x:t">
                                    <field name="BOOL">TRUE</field>
                                  </shadow>
                                  <block type="obniz_ui_button_click" id=".fkC?!0M,W)P:T:J-(uc">
                                    <field name="button" id="80uQ37Yg!_RM@zbm[`cF" variabletype="UIButton">button</field>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="obniz_util_save" id="J!E!dUeY7y?y:Ze%-JTB">
                                    <value name="value">
                                      <block type="obniz_parts_iothomekit_get_ir" id="DN$a7~glj6b`z1nG,bW8">
                                        <field name="IoTHomeKit" id="hion2sTZs?@3_c=KyM[5" variabletype="iothomekit">iothomekit</field>
                                      </block>
                                    </value>
                                    <value name="key">
                                      <shadow type="text" id="zh1*}Vy||J(|v1Y,yQN9">
                                        <field name="TEXT">電源</field>
                                      </shadow>
                                    </value>
                                    <next>
                                      <block type="obniz_ui_label_settext" id="UDQa$NSNc-qy0|8MU+L#">
                                        <field name="UILabel" id="g($Ni{y93Ym7k/=Vw)2(" variabletype="UILabel">label</field>
                                        <value name="text">
                                          <shadow type="text" id="A}Lx600E70YBU1VugJ~(">
                                            <field name="TEXT">受信しました</field>
                                          </shadow>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                                <value name="IF1">
                                  <block type="obniz_ui_button_click" id="Q|D%mhl{KR~k~n7[:;tw">
                                    <field name="button" id="|KCJHTvLU;*ZWe|2H::Y" variabletype="UIButton">sendbutton</field>
                                  </block>
                                </value>
                                <statement name="DO1">
                                  <block type="obniz_parts_iothomekit_send_ir" id="S@v/`|5g!rFxc0%DcCn%">
                                    <field name="IoTHomeKit" id="hion2sTZs?@3_c=KyM[5" variabletype="iothomekit">iothomekit</field>
                                    <value name="key">
                                      <block type="obniz_util_load" id="AWl;jbl[`qn|SQ$65#LK">
                                        <value name="key">
                                          <shadow type="text" id=")r,~MXCqKDL(R4._eYnZ">
                                            <field name="TEXT">電源</field>
                                          </shadow>
                                        </value>
                                      </block>
                                    </value>
                                  </block>
                                </statement>
                              </block>
                            </statement>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>

これを実行するとボタンが2つ出てきます。

先ほど、受信した場合はクラウドに保存されていますので、もう受信しなくても大丈夫です。
送信を押して赤外線を出してみましょう。

うまくいかない場合は、IoT Home Kitの場所や向きを変えてみたり、もう一度受信してみましょう。



Next : Control IR from Google Home

You will Get in Few Days

Circuit for Starter “obniz Board” is available on Amazon and other online stores.
You can get it at below

Our products and resellers

Forum

Visit our developer’s forum to discuss and discover technologies.

Forum

Contact

Feel free to contact out support and technical team.

Contact us