Explorer(IE)のバージョンをサポートしておりません。最適なウェブサイトパフォーマンスを実現するため、最新バージョンのブラウザへアップデートしていただくことをお勧めします。簡単な4つの検索方法1.検索したい用語を入力した後、そのままエンターキーを押すか、サーチアイコンをクリックしてください。入力された用語でそのまま検索されます。2.検索したい用語を入力すると、ドロップダウンで検索の提案が表示されます。提案された項目をクリックすると、関連のページが直接表示されます。3.検索の提案の右端にマウスを持っていくと「検索」のリンクが表示されます。これをクリックすると、提案された用語に基づく検索結果が表示されます。4.検索結果のページには、結果を絞り込むフィルタが表示されます。こちらもご活用ください。Piを利用してクラウドまで接続する方法を解説します。これにより、温度センサーの情報をクラウドまで届けられるようにします。Piやクラウドでで動作するアプリケーションを全てブラウザだけで作成します。全体的なイメージは、次の図の通りです。全体の構成コンピューターそのもののハードウェアや仕組みはわかっていても、「いざクラウドで繋げてみようとするとどこから手をつけたら良いか考えるだけでうんざり」してしまうハードウェア寄りな方も、「Webやスマホのアプリは得意でもスマホじゃないセンサーデバイスには縁遠い」というソフトウェア寄りの方も、ぜひこの機会にセンサーデバイスからクラウドまで一通りつなぐという体験へ踏み込んで行きましょう。EGGTM」を次回紹介します。Piから受信できるようにします。Pi側で受信して、その結果をブラウザで確認するまでが今回の目標です。これまでの記事においてBLEとセンサーの準備はできているものとして話を進めますが、お手元にない場合は、以下の記事をご覧いただいて準備してください。REDTM」を利用し、ブラウザを使って作成します。BOOKS)【改訂版】」(工学社刊)をオススメします(赤い表紙の書籍は旧版ですので緑の表紙の新版をお探しください)。準備するものハードウェア今回利用するハードウェア等の備品は以下の通りです。次回使用する物品も含まれています。電池ジャンパーワイヤ準備方法は、下記記事を参照してください。nano2をご利用の場合は、リンク先のソフトウェアをご利用ください。コンパイル方法などは上記記事に記載の方法でお試しください。B+)を前提とした内容となります。それぞれ利用可能なSIMカードをご用意ください。<次回以降使用します>キャリア各社またはMVNO各社の販売するSIMカードをご用意ください。ACアダプターをご利用の場合は、3A〜4Aの電流で、DCプラグ・ジャック(内径:φ2.1mm、外径:φ5.5mm、センタープラス)のものをご用意ください。microSDカード耐用性や準備の時間短縮を考慮して、16GB以上で読み書きのデータ転送速度の速いもの(概ねUHSスピードクラス3以上)を推奨します。最低限8GBの容量の物をご利用ください。作業用のパソコンからmicroSDカードを読み書きするために使用します。SDカードを差込めるパソコンの場合は、microSDカードを差し込めるアダプターをご用意ください。Pi本体と作業用のパソコンを接続するために使用します。(必要な場合のみ)LANケーブルを作業用のパソコンに直接差込める場合は不要です。作業用パソコンWindows、macOS、Linuxのいずれかを利用できるパソコンをご用意ください。LANケーブルを利用でき、インターネットに接続できる必要があります。ソフトウェア今回最初の準備に必要なソフトウェアは以下の通りです。インストールをして利用できるような状態にしてください。Piの準備手順の中で紹介します。Etcher(エッチャー)SDカードへの書き込みを行うソフトウェアです。作業用のパソコンで使用しますのであらかじめインストールをしてください。Windows、macOS、Linuxで利用可能です。Piへの接続に使用します。Chrome、Firefox、Safari、Edgeをご利用ください。Explorerは使用しないでください。作業用のパソコンで使用します。Piの準備に取り掛かりましょう。Liteシリーズ専用のOSイメージファイルをダウンロードします。LiteベースのOSイメージとなっています。Lite版をベースにしているため、初期状態でデスクトップ環境は入っていませんのでご注意ください。LINEのフォーラムサイトにあるOSイメージ一覧のページへブラウザでアクセスします。この中の最もバージョンが大きい項目をクリックします。」または、「US英語版イメージファイルのダウンロード(472MB)」をクリックするとダウンロードが開始されます。日本語版とUS版の違いは言語のほかキーボードレイアウトの設定やタイムゾーンの設定が異なります。9時間前の時間)がそれぞれ設定されています。EtcherでmicroSDカードへイメージ書き込みダウンロードができたら、Etcherで書き込みを行います。先ほどダウンロードしたファイルを指定して、用意したmicroSDカードへ書き込みます。Etcherを作業用のパソコンで開きます。先ほどダウンロードしたファイルを最初に選択します。ダウンロードしたファイルは、ZIPファイルのままでも、展開した後のファイルでもどちらでも指定可能です。作業用のパソコンに、microSDカードを認識させます。USBのアダプターか、SDカードスロットがあるパソコンであれば、SDカードのアダプターなどを使って認識させることができます。パソコンがmicroSDカードを認識すると、Etcherの画面でもmicroSDカードが選択されます。画面上に用意したmicroSDカードが認識されていることを確認してください。EtcherでmicroSDが認識された後の様子これで準備ができましたので、右側のFlashをクリックして書き込みを開始します。管理者権限が必要な場合は、パスワードを聞かれることがありますので、その場合は適宜入力して対応してください。書き込みを終えたら、microSDカードを作業用のパソコンから取り外してください。注意)今回はSSHを使用しませんが、後でSSHを使用したい場合は、作業用のパソコンにmicroSDカードを認識させてから、sshという名前の空のファイルをmicroSDカードのbootフォルダー(またはbootと書かれたドライブ)にコピーしてください。SSHを利用できるようになります。Etcherを利用した直後は、認識されていない場合があるので、microSDカードを入れ直してから作業を行なってください。Pi財団の公式サイトの説明(英語)をご覧ください。Dを取り付けてください。PiにLANケーブルを取り付けましょう。Piに、もう一方は、作業用のパソコンまたは、スイッチングハブなど、最終的に作業用のパソコンと通信できる状態に接続してください。裏表に気をつけて差し込んでください。このようになれば準備完了です。Piで動かしてみましょう。Piに差し込んでください。DのボードにあるDCジャックへアダプターを差し込んでください。PiのステータスLEDがあります。そのLEDが赤く点灯し、緑も点滅し始めます。赤いLEDが繰り返し点滅し続けている場合は、電圧が足りていませんので、USBケーブルを変更したり、ACアダプターを利用したりするなどの対応を行ってください。続いて、作業用のパソコンでブラウザを開きます。ブラウザのURLには、以下のアドレスを入力してください。http://raspberrypi.local:8100すると以下のようなログイン画面が表示されます。上記アドレスで表示できない場合は、固定IPを簡易に設定できますので、こちらの説明を参照して設定してください。Liteシリーズ専用のOSイメージを利用した場合にのみ適用可能です。OSイメージファイルでは利用できません。REDログイン画面UsernameとPasswordには、それぞれ「pi」と「raspberry」を指定します。OSで初期設定されるユーザーIDとパスワードです。注意)今回はこのまま使用しますが、実際に使い続ける場合は、パスワードなどを変更するようにしてください。パスワードの変更方法はここでは記載しませんが、このOSイメージの場合は、raspi-configを使用した方法でパスワードを変更できます。ログインすると以下のようなNode-REDの画面が現れます。通常のNode-REDと異なり、赤色を基調とした色合いになっています。Pi側の準備は完了です。続いてBLEデバイスの準備を行います。BLEデバイスの準備BLEデバイス側は、温度センサーやボタン電池など全て以前の記事(第1回、第5回)通りにブレッドボードに組み上げておきましょう。プログラムの書き込みも完了させ、電源もこの段階で入れておきましょう。今回は、BLEデバイスに接続された温度センサー(ADT7410)の値を読み出して、ブラウザ上で値を表示してみましょう。Piを操作し、ブラウザ上で温度センサーのデータ表示を行います。フローのエディター画面へ移りましょう。REDにアクセスしてログインすると、以下のようにサンプルフローが現れます。サンプルフローが表示された様子ここでは最初に新しいフローのワークスペース(フローを作成する場所)を追加します。すると下の図のように新しいワークスペースが追加されます。続いて、左側の箱の一覧を見て見ましょう。これはノードパレットと呼ばれるもので、1つ1つの箱、つまりノードを種類ごとに列挙したものです。BLE」という名前のノードを探します。このノードをドラッグして以下のように追加したワークスペースに載せます。BLE」ノードがノードパレットにもう1つ存在しますが、2つは別物です。今回使うものは「input」と書かれたグループにあるものを使用します。BLE」ノード(input)を追加したワークスペースに載せた様子さらに追加したノードをダブルクリックすると、そのノードの設定ができるようになります。それではやってみましょう。BLE」ノード(input)の設定ダイアログこのようなダイアログ画面が画面右側からスライドして出てきます。この画面では、BLEデバイスからのデータ出力をON/OFFしたり、出力するデータの書式を指定することができます。ここではまず、どのBLEデバイスを使うかを設定します。鉛筆アイコンをクリックしてBLEデバイスの設定を行いましょう。鉛筆アイコンをクリックするとさらに次のようなダイアログ画面がスライドして出現します。この画面では、実際に接続するBLEデバイスを選択します。チェックを入れてください。Temperature」を選択します。見えない場合は、以下の手順を行います。Characteristics(GATT特性)が表示されます。実際には、以下のように表示されます。Characteristicsが表示された様子ここで、今回使用するBLEデバイスのソースコード「main.cpp」を見てみましょう。58行目付近から以下のような箇所があります。CharacteristicのUUIDとなります。上記の表現では配列表記になっているのですが、それぞれの値の16進数を文字列としてつなげたHEX文字列として表してみると以下のようになります。713d0002503e4c75ba943148f18d941eこの値が、先ほどのダイアログのところに出ていることを確認しましょう。読み取り対象のUUIDが一覧にあることを確認このように出ているのが見えます。Characteristicがサポートする操作を表します。「Notify」は定期的なデータ通知を、「Read」は読み取り実行操作をそれぞれ実施します。このようにBLEデバイスの指定ができたら、今度は設定を保存します。現在のダイアログの「Add」をクリックします。ダイアログ右上のAddボタンさらに、まだダイアログが表示されていますから、今度は「Done」をクリックして保存します。ダイアログ右上のDoneボタンこれで全てのダイアログが消えました。それではフローの作成の続きに移りましょう。Characteristicからデータを読み取る必要があります。BLE」ノードへ、とあるメッセージを届ける必要があります。BLE」ノードは、届いたメッセージをもとに情報の読み取りを行うようにできているためです。BLE」ノードへ届けるメッセージは、以下のようなものです。使用しません(何か入っていても無視されます)Node-REDでは、ノードとノードとの間をメッセージが移動します。このメッセージとは、実体としてはJavascriptのオブジェクトですが、意味合いとしてはラベルと値の集合体となります。このラベルのことを、ここではJavascriptの用語に合わせてプロパティ名と表記しています。このようなメッセージはどうやって用意すればよいでしょうか。いくつか方法がありますが、今回は、「inject」ノードと呼ばれる機能を使います。このノードは、ブラウザからの操作や、あるいは一定時間ごとの起動(タイマー起動)により、特定のメッセージを発信させることができます。BLE」ノードの近くに置きましょう。続いて、2つのノードをこのように線でつなげます。「timestamp」と書かれているノードをダブルクリックして、「inject」ノードの設定をしましょう。このダイアログでは、以下のように先ほどのUUID「713d0002503e4c75ba943148f18d941e」をTopicに指定します。表示名を変更するためにNameに「温度読み取り」と入れます。それ以外の値はそのまま変更なしで大丈夫です。入力したら右上の「Done」をクリックします。読み取った値を確認するためのノードも追加しておきます。BLE」ノードの右下あたりに置いてください。BLE」ノードと「debug」ノードも線でつなげます。以下のようになればOKです。続いて、不要なフローのワークスペースを削除します。「サンプルフロー」は今回使用しませんので、次の手順で取り除いてください。「サンプルフロー」のタブをクリックしてサンプルフローを表示します。右上の「三」のメニューから以下のように「Flows」「Delete」を選択してクリックします。メニューからフローの削除を選択すると現在表示している「サンプルフロー」が削除されます。BLE受信フローのデプロイフローを作成したので、これを実際に動かしてみましょう。フローを動かすには、「デプロイ」と呼ばれる操作を行います。デプロイとは、配備や配置といった用語に当たる言葉で、ソフトウェアを起動してサービスを開始できる状態にすることを指します。デプロイを行わないと、変更・作成したフローは消えてしまいますので必ずデプロイを行うようにしてください。デプロイは「Deploy」と書かれた右上のボタンで行います。デプロイが必要な場合は、自動的にエディターが以下のような色付きの表示になります(ピンクの枠は、こちらで強調のためにつけたものですのでピンクの枠は表示されません)。フローのデプロイボタン(クリック可能な状態)この状態ではデプロイ可能なので、クリックしてデプロイを実施します。すると、以下のようにボタンの表示がグレーに変わります。この状態ではデプロイが不要なため、「Deploy」ボタンは押せないようになっています。フローのデプロイボタン(クリックした後の状態)それでは、動かした様子を見て見ましょう。BLE受信フローの動作確認エディター右側のタブから「debug」を選択します。するとデバッグ用の表示を閲覧できます。上にあるゴミ箱マークのアイコンをクリックします。すると、すでに出ている表示が削除されます。現在は、まだ何もしていないので表示を削除すると何も出てきません。それでは、BLEデバイスから温度情報を取ってみましょう。BLEデバイスは電源を入れておいてください。「温度読み取り」と書かれたノードの左側にあるペダルの部分をクリックしてみてください。すると、あらかじめ設定したメッセージが発信されます。BLE」ノードは「timeout」となりました。最初のリクエストは、BLEデバイスにつなぎに行くのですが、時間内に繋がらない場合はこのような状態になります。その場合でも、10秒〜30秒ほど少し時間をおいてまたペダルをクリックしてみてください。Piを再起動してください。うまく接続ができると以下のように「connected」状態と表示され、「debug」タブにはメッセージの内容が表示されます。温度読み取りを実行して成功した時の様子このメッセージの表示は、中身の構造を見ることができます。「characteristics」と書かれているあたりをクリックすると、展開表示することができます。「buffer[2]」と書かれたところもクリックしてみると、中身のデータを見ることが可能です。buffer[2]の中身のデータを表示した様子これで、温度センサーの値がBLEデバイス経由で取得できました。このままでは単なる数値のデータだけとなってしまいます。これでは摂氏温度ではなくわかりにくいので、フローを変更してこの数値データを温度の値に変換をしてみましょう。温度センサーを使おう」の「温度計測のプログラム」の記事を確認してみましょう。すると、さらに、ADT7410で取得した温度データを小数点以下まで表示させるために、データを整数部分と小数点以下の部分に分けます。記載がありますので、小数点付きの値を整数部と小数点部(小数点第二位まで)に分けて送信していることがわかります。このため、フローでは、上記とは逆に2つの数値データから小数点も含む温度の値を計算します。具体的に変更を行ってみましょう。今回は、メッセージの値を変更するため、「change」ノードを使用します。BLE」ノードの右下に置いてください。msg.payload」と書かれたノード)をダブルクリックして、設定ダイアログを表示させます。「change」ノードの設定Nameには「温度へ変換」と入力します。ところにあるプルダウンボタンをクリックして「expression」と書かれた項目を選択しましょう。これは、JSONata(ジェイソナータ)と呼ばれるJSONオブジェクトを加工するための簡易言語です。JSONオブジェクトとは、今回は、ノードで送受信する「メッセージ」部分に当たります。この言語はデータを加工することだけが目的であるため、余計な文法がなく、Javascriptなどで書くよりも表記がより簡素になります。「expression」を選択したら、「to」のテキストボックスの右側に「...」の表示が現れるのでこのボタンをクリックします。JSONata記述画面の表示するとダイアログが切り替わり、JSONataの表記を編集するための画面に変わります。ピンクの枠で囲ったところに数値データを計算する式を入力します。JSONata記述画面の式入力エリア今回は、以下のような表記を入力します。100)この意味は、「メッセージにあるpayload」の「characteristics」プロパティの値について、その値の「713d0002503e4c75ba943148f18d941e」で示される値(すなわち、数値データ)の最初の値(「'0'」で表されています)と、その次の値(「'1'」で表されています)を100で割った値を足す、というものです。入力したら、右上の「Done」をクリックして、JSONataダイアログを閉じ、さらにもう一度「Done」をクリックして「change」ノードのダイアログを閉じましょう。最後にメッセージの経路を変更しましょう。BLE」ノードから「温度へ変換」と書かれたノードに線をつなぎ、「温度へ変換」と書かれたノードから「debug」ノードへ線をつなぐようにします。BLE」ノードから「debug」ノードへの線は削除します。すると以下のようなフローになります。最後に、デプロイを実施しましょう。このままでは変更が反映されないので必ずデプロイを行なってください。変更したフローの動作確認それでは、デプロイしたフローの動きを見てみます。先ほどと同様に、「温度読み取り」のペダルをクリックして、画面右側の「debug」タブの値を見てみましょう。RED」を利用してブラウザだけで作成しました。Piに接続したブラウザで見えるようになりました。数バイトデータの情報をJSONオブジェクトとして変換して扱うのは冗長と思われたかもしれませんが、その冗長さと引き換えに値の加工のしやすさや処理の作成しやすさ、あるいは変更しやすさといった利点がもたらされています。試行錯誤を重ねるなら、処理の作成や変更がしやすい方が助かりますね!次回は、取得した温度センサーの値をクラウドで見えるようにするための設定を行います。Pi側のフローの変更と、クラウドのセットアップ、それにクラウド側のアプリケーションの作成を行います。EGG」を使用します。ブラウザだけでクラウドアプリケーションを用意して動かしてみましょう。LINEの協力により作成されました。日本語アナログ・デバイセズは、ウェブサイトの利便性を向上させるためにCookieを使用しています。弊社の会員サービスへ安全にログイン頂くための必要不可欠なCookieと、機能性を高めウェブサイトを最適化するためのCookieがあります。ウェブサイト上での活動データの収集は、弊社の製品およびサービスを改善するために使用されます。当サイトが提供できる最高のパフォーマンスと機能をお使いいただくために、クッキーを承認することをお勧めします。クッキーの詳細をご覧ください。プライバシーポリシーの詳細はこちらをご覧ください。承認して続ける承認して続ける使用されるCookieは、次のように分類されます。必要不可欠なCookie:analog.comの閲覧に必要、または機能的に提供される特定のCookieです。顧客情報をネットワーク送信するという目的に使用されます。お客様が要求するオンラインサービス(技術問合せ送信や、オンラインでの製品購入など)を提供するために必要不可欠です。分析/パフォーマンスCookie:これらのCookieにより、訪問者の数を認識してカウントし、訪問者がWebサイトをどのように移動するかなど、ウェブ分析またはその他の形式の情報を測定できます。これにより、たとえばユーザーが探しているものを簡単に見つけられるようにウェブサイト上のリンクを設定/調整するなど、ユーザビリティの改善に役立ちます。機能的Cookie:これらのCookieは、お客様が当社のウェブサイトに戻ったときにお客様を認識するために使用されます。これにより、コンテンツをパーソナライズし、個人設定(言語や地域の選択、会員サービスへのログイン情報など)を記憶することができます。これらのCookieの情報が失われると、サービスが機能しなくなる場合がありますが、ウェブサイトが機能しなくなることはありません。ターゲティング/プロファイリングCookie:これらのCookieは、当社のWebサイトへのアクセス、およびサービスの使用、アクセスしたページ、追跡したリンクを記録します。この情報を使用して、ウェブサイトとそこに表示される広告を顧客の興味に関連するものにします。その目的のためにこの情報を第三者と共有する場合があります。時間のないエンジニアの皆さんのために、セミナー情報や興味のある製品に関連したさまざまな技術情報を集めてタイムリーにお届けします。AnalogDialogueなどもご紹介しています。