• モノづくりとアイデアで暮らしを豊かに。『STAGEA』

    火災が発生したら、LINEにメッセージを送信します。
    室温が50度を超えたら、火災と判断します。
    右の図の下の方に表示されている[H10NOTIFY]FIREが、H10から送信されたメッセージです。
    本来は、二酸化炭素や一酸化炭素の増加ペースや、室温の上昇など、複数の要素を総合的に判断して火災と判断するべきですが、プログラムが複雑になり、初心者向けではなくなるため、室温だけで判断します。
    LINEにメッセージを送る方法を理解していただきたいと思います。

    ここでは室温の上昇をメッセージ送信の条件としていますが、条件(プログラム)を変えることで、侵入検知や換気タイミングの通知などにも応用できます。


    LINEの準備

    H10などのような外部機器やWebサービスなどからLINEにアクセスするには、以下のアドレスを使います。

    notify-api.line.me

    このアドレスは、全ユーザー共通のアドレスなので、このアドレスにメッセージを送っても誰からのメッセージで、宛先は誰なのか判らないため、メッセージを送ることができません。
    これを識別するため、【トークン】を取得する必要があります。

    トークンの取得は、LINE Notifyホームページで行います。
    検索エンジンなどで「LINE Notify」で検索してください。

    検索結果から、最も適当な内容のリンクをクリックしてください。

    画面右上の【ログイン】をクリックします。

    ログインすると、画面右上の文字がアカウント名に変わります。
    アカウント名の右側にあるプルダウンメニューをクリックして、【マイページ】を選択します。

    【トークンを発行する】をクリックします。

    メッセージの宛先とするトークルームを選択します。
    既にお使いのトークルームのほか、ここで作成するトークン専用のトークルームを選択できます。
    トークン名を自由に決めていただき、送信先のトークルームを選択します。
    ここではトークン名を【H10NOTIFY】とし、送信先を【1:1でLINE Notifyから通知を受け取る】を選択します。

    表示されたトークンをコピーします。
    画面に書かれている通り、トークンは1回しか表示されません。
    誤ってトークンを保存前に画面を閉じた場合、再度作成する必要があります。

    このトークンは、H10に書き込むプログラムの中に埋め込んで利用します。


    H10のセットアップ

    (1)こちらからプログラムをダウンロードして展開(解凍)します。

    (2)Arduinoソフトウェアを起動します。
    一度もArduinoソフトウェアを使ったことがない場合、こちらを参考にインストールと設定を行ってください。

    (3)初期表示されているプログラムを全て削除し、(1)でダウンロードしたプログラムを貼り付けます。
    ※初期表示されているプログラムが自分で作ったプログラムである場合、保存してから削除してください。

    (4)プログラムの上のほうにある以下の記述を、お使いのWiFiアクセスポイントの設定にあわせて書き換えてください。

    const char ssid[] = "YOUR_SSID";
    const char passwd[] = "YOUR_PASSWORD";

    (5)少しスクロールさせると、トークンと、送信するメッセージを記述する場所があります。

    void sendnotify() と書かれた行のすぐ下にある

      const char* token = "Sx2pN----------------------------rodwHO";
      const char* message = "FIRE";

    この2つを書き換えます。
    const char* token の部分に、LINEで取得したトークンを、
    const char* messageの部分に送信するメッセージを記述します。
    この例では、FIREと送信されます。

    H10への書き込み

    (1)H10を一度もパソコンに接続したことがない場合は、こちらのページを参考にセットアップをします。

    (2)ジャンパピンを書き込みモードに変更します。

    通常、副MCUは主MCUと接続されています。
    この操作を行うことで、副MCUの接続先をUSBに変更して、ソフトウェアの書き込みができる状態にします。
    この操作を忘れると、プログラムの書き込みができないのでご注意ください。

    (3)H10とパソコンをUSBケーブルで接続します。

    ※必要に応じてArduinoの設定の中にあるCOMポートの設定を行います。
    COMポートの番号を間違えると転送エラーになります。
    H10を買い替えたり、パソコンを買い替えたり初期化したりすると番号が変わることが多いため注意が必要です。

    パソコンから認識されない場合、以下の内容をご確認ください。
    ・ジャンパピンを書き込みモードにセットします。
     →この操作をすることで、副MCUの通信先を主MCUからUSBコントローラ(パソコン)に切り替えて、パソコンから送られてくるプログラムを受信できる状態にします。
    ・DCジャックにACアダプタを接続します。
     →乾電池駆動(停電モードでの動作)では、2分に一度、20秒間しか副MCUの電源が入らないため、プログラムを書き込むことができません。

    (4)H10のDCジャックからプラグを抜き、数秒待ってから挿し直し、5~10秒程度待ってから、Arduinoの【マイコンボードに書き込む】ボタンをクリックします。

    H10は、DCジャックから電源供給を開始して5秒後に副MCUに通電を開始します。
    通電が開始されたら、主MCUから30秒以内に正しいデータフォーマットで返信が行われないと、フリーズしたと判断して副MCUを自動的に再起動します。
    副MCUが再起動している間は、プログラムの転送はできません。
    従って、DCジャックを挿し直したら、5~25秒の間にArduinoの【マイコンボードに書き込む】ボタンをクリックしてプログラムを転送します。

    下半分の黒い部分に次のようなメッセージが表示されたら書き込み完了です。

    もしここで、上記のような画面ではなくエラーメッセージが表示される場合、以下の点を確認してください。

    ・サンプルのコードをコピーアンドペーストする時、
      – 間違えて余計な文字などを書き込んでいませんか?
      – ショートカットキー([Ctrl] or [command] + V)を連打して二重貼り付けしていませんか?
      – ショートカットキーを押し損ねてソースコードの末尾にVなどが入っていませんか?
      – Arduinoインストール直後に最初から入っているプログラム雛形の続きに貼り付けていませんか?
      – チャンネルキーやライトキーを書き換える際、誤ってダブルクォーテーション記号を消していませんか?
      – プログラムの中の空白部分(スペース)を誤って消した時、全角スペースを入れていませんか?
    ・ジャンパーピンのポジションを通常モードからプログラム書き込みモードに変更しましたか?
    ・DCジャックにACアダプタ等を接続していますか?
     →バックアップ乾電池での動作では書き込みできません。
    ・DCジャックにACアダプタ等を差し込んでから5~25秒の間にプログラム書き込み操作をしていますか?

    10分程度考えて原因にたどり着かなかった場合、ダウンロードしたプログラムコードを使って貼り付けるところからやり直した方が早いです。
    その際、Arduinoの編集画面に書かれているプログラムコードはスペース記号1つ残らず完全に削除してから貼り付けます。
    1行編集するごとに【マイコンボードに書き込む】を押しながら進めることで、エラーを特定しやすくする方法もあります。
    動作確認

    正しくプログラムが書き込めたら、動作確認をします。
    プログラム書き込み直後のH10は、基板上のジャンパピンがプログラム書き込みモードの位置になっているはずですので、ノーマルの位置に戻します。
    H10からUSBコードを抜いて、DCジャックに接続されているACアダプタのコードを挿しなおします。

    (1)H10のDCジャックにACアダプタを差し込みます。

    (2)H10の人感センサーが見えるように上向きに置き、部屋から出て、数分後に部屋に戻ります。

    このプログラムの初期状態では、人感センサーが反応した時、LINEグループにメッセージを送るように作っています。
    プログラムがうまく動かない時、何度も基板にドライヤーの熱風を当てるのはよくないため、LINEグループとの連携確認は人感センサーを使って行います。

    (3)人を検知して以下のようなメッセージが送られてきたら、LINEとの連携はできています。

    (4)火災が発生した時にメッセージ送信が行われるように、プログラムを修正します。
    arduinoソフトウェアを起動してプログラムを開いてください。

    (5)arduinoソフトウェアの画面を、以下の記述があるところまでスクロールさせてください。

    (6)現在、「人感センサが1回でも反応したら火災フラグを1にする」とプログラムされていることが確認できます。

                if(HUMAN>=1){
                    fireflag=1;
                }else{
                }

    (7)「室温が50度を超えたら火災フラグを1にする」と書き換えます。

                if(TEMP>=50){
                    fireflag=1;
                }else{
                }

    (8)再度、H10のACアダプタを取り外し、ジャンパピンを書き込みモードに変更して、プログラムを書き込みます。

    (9)ジャンパピンを通常モードに戻して、DCジャックにACアダプタを差し込みます。

    (10)ドライヤーでH10に熱風を当てて、人がぎりぎり触れる温度になったらLINEグループにメッセージが届くことを確認します。
    ※火傷には十分気をつけてください。
    ※プリント基板や電子部品は、製造の過程でペースト状のハンダに部品を載せて200度程度のオーブンに入れて製造されるため、熱には強くできています。
    過度に恐れる必要はありませんが、熱しすぎには注意してください。
    故障の原因となります。