はじめに
PCからサンプルデータをAWS IoT経由でDynamoDBへ送信するまでは、前回の記事で試しましたが、実際にIoTといえば、デバイスからの生データを処理するもの。ということで、生データ(温度データ)を定期的に取得し、データを保存するまでを実際にやってみたいと思います。
データを保存して終わりではつまらないので、データ分析や、グラフ化がツールと連携が可能なAmazon Elastic Searchに生データを送信し、Kibanaでグラフ表示するまでを最終的には実装します。(全2回)
システム構成図
準備するもの
・Raspberry Pi3 Model B 一式(本体、電源ケーブル、microSD)
・温度センサー
・ジャンパーワイヤー
・抵抗器
・ブレッドボード
どれを買えばいいのかわからない人のために、自分が買ったものを載せておきます。(ラズパイ以外 Amazonで購入)
SODIAL(R) 2xDS18B20 18B20 TO-92温度計温度センサ
https://www.amazon.co.jp/gp/product/B0746CMDSL/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1ELEGOO 50 PCS オスメスジャンパーワイヤ200mm (無料 170 タイポイント ブレッドボード)
https://www.amazon.co.jp/gp/product/B06ZZXH4XT/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1uxcell カーボン抵抗 炭素皮膜抵抗器 アキシャルリードタイプ 1/4W 250V 10K Ohm 50 本入
https://www.amazon.co.jp/gp/product/B01149WW1K/ref=ppx_yo_dt_b_asin_title_o01_s01?ie=UTF8&psc=1
※ラズパイ一式を合わせても、1万円ちょっとくらいでした。
↓届いた部品
※ブレッドボードはジャンパーワイヤーの箱の中に入ってます。
設定、手順
では、実際に設定していきますが、設定はラズパイの起動までは完了している体で、紹介していきます。(ここも記載するともっと長くなるので割愛。)
※起動まではこちらの記事が写真も多く、分かりやすかったです。
https://qiita.com/Higemal/items/c817b96c3806f23b35f6
★参考サイト(記事の下部に記載)を参考に
今回使う「DS18B20」温度センサの特徴を学びながら、以下画像の様にラズパイに部品を設定していきます。
・DS18B20温度センサの特徴 参考サイトより抜粋
今回は「DS18B20」という温度センサを使用します。「DS18B20」は、「1-Wire」というインターフェースを使用した部品で、ラズベリーパイには1-Wire用のモジュールがあらかじめインストールされています。設定を有効にするだけですぐに使用できます!
1-Wire – マキシム
1-Wire – Wikipedia
1-Wire はマキシム・インテグレーテッドの登録商標であり、接地線と一本の信号線(兼電力供給線)だけで低速なデータ転送を行うバス規格である。
配線が終わったら、「DS18B20」センサの「1-Wire」を有効化。
ターミナルを開いて以下の順で設定を追加します。
nano /etc/modules
※「nano」はラズパイの標準エディタです。
以下2行を追加します。
w1-gpio
w1-therm
保存します。
次に、Raspbian 2015-01-31(NOOBS 1.3.12)以降のOSを使用している場合に必要な作業で、設定手順は先程と同じ、/boot/config.txtファイルに1行追記。
nano /boot/config.txt
追記するのは以下。
dtoverlay=w1-gpio-pullup,gpiopin=4
すべて完了したら、以下手順で、再起動。
menu → Shutdown → Reboot → OK
上記、画像のように、以下のファイルをテキストエディタで開いてください。
「 /sys/bus/w1/devices 」にファイルが生成され、「28-031868f200ff」というフォルダができており、「w1_slave」とうファイルに温度データが入っています。
中身のデータの「t=」のあとが温度データです。
※値は1000倍されているため、「24.375℃」ということになります。
ここまでほぼ★参考サイトの通りになります。
1-wireで通信しているのでプロトコルの詳細はWikipediaで確認しておくと良いと思います。
https://ja.wikipedia.org/wiki/1-Wire
ちなみに、
■■■■■ ssh 接続で行う場合は以下の通り START ■■■■■
まず、ターミナルを開き、ip addr コマンドでIPを確認。控えておく。
menu → Raspberry Piの設定 → インターフェイスタブで
SSHを有効にチェック。
ラズパイを再起動します。
同じネットワーク内であれば、以下で接続が可能。
ssh pi@<ラズパイのIP>
※パスワードが聞かれると思いますが、デフォルトは「raspberry」になります。
※接続できれば、温度センサデータを取得するまでの設定は同じです。
■■■■■ SSHの接続 END ■■■■■
温度センサーが本当に機能してるか、
途中で、「DS18B20」センサを指で抑えてみます。
上記の通り、温度が上昇し、指を離してみると温度が下がりました。
t=24500
↓
t=24500 ※センサーを抑える
↓
t=29375 ※指を離す
↓
t=27000
↓
t=25500
※だいたい2~3秒で定期的に表示
センサーデータを取得できたので、
次の記事で、AWS IoT → DynamoDB → Lambda → Amazon ESとデータを流していきます。
https://qiita.com/0_1geek311/items/fa92823b35b892a899ca