温度センサーから取得したデータをAWS IoT→DynamoDB経由でAmazon ESにデータを送信する＜1/2＞

#はじめに
PCからサンプルデータをAWS IoT経由でDynamoDBへ送信するまでは、前回の記事で試しましたが、実際にIoTといえば、デバイスからの生データを処理するもの。ということで、生データ（温度データ）を定期的に取得し、データを保存するまでを実際にやってみたいと思います。

データを保存して終わりではつまらないので、データ分析や、グラフ化がツールと連携が可能なAmazon Elastic Searchに生データを送信し、Kibanaでグラフ表示するまでを最終的には実装します。（全2回）

#システム構成図
<img width="525" alt="img.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367782/032eeafe-52d8-c2b3-731b-835698bf6afc.jpeg">

#準備するもの
・Raspberry Pi3 Model B　一式（本体、電源ケーブル、microSD)
・温度センサー
・ジャンパーワイヤー
・抵抗器
・ブレッドボード

どれを買えばいいのかわからない人のために、自分が買ったものを載せておきます。（ラズパイ以外　Amazonで購入）
>SODIAL(R) 2ｘDS18B20 18B20 TO-92温度計温度センサ
https://www.amazon.co.jp/gp/product/B0746CMDSL/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1

>ELEGOO 50 PCS オスメスジャンパーワイヤ200mm (無料 170 タイポイント ブレッドボード)
https://www.amazon.co.jp/gp/product/B06ZZXH4XT/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

>uxcell カーボン抵抗 炭素皮膜抵抗器 アキシャルリードタイプ 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

※ラズパイ一式を合わせても、１万円ちょっとくらいでした。

↓届いた部品
![img.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367782/eb31337d-e8a9-9ca4-1ed6-837b0a0cc373.jpeg)
※ブレッドボードはジャンパーワイヤーの箱の中に入ってます。

#設定、手順
では、実際に設定していきますが、設定はラズパイの起動までは完了している体で、紹介していきます。（ここも記載するともっと長くなるので割愛。）

※起動まではこちらの記事が写真も多く、分かりやすかったです。
https://qiita.com/Higemal/items/c817b96c3806f23b35f6


★参考サイト（記事の下部に記載）を参考に
今回使う「DS18B20」温度センサの特徴を学びながら、以下画像の様にラズパイに部品を設定していきます。

・DS18B20温度センサの特徴　参考サイトより抜粋
>今回は「DS18B20」という温度センサを使用します。「DS18B20」は、「1-Wire」というインターフェースを使用した部品で、ラズベリーパイには1-Wire用のモジュールがあらかじめインストールされています。設定を有効にするだけですぐに使用できます！

>1-Wire – マキシム
>1-Wire – Wikipedia
>1-Wire はマキシム・インテグレーテッドの登録商標であり、接地線と一本の信号線（兼電力供給線）だけで低速なデータ転送を行うバス規格である。

・配線画像
![img1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367782/3dc89831-b4e3-1b30-1d9e-8d08f58c4ece.png)

配線が完了するとこんな感じです。
![img2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367782/7a6a5833-1752-e094-5050-205ae4666ff4.jpeg)

配線が終わったら、「DS18B20」センサの「1-Wire」を有効化。
ターミナルを開いて以下の順で設定を追加します。

```
nano /etc/modules
```
※「nano」はラズパイの標準エディタです。

以下２行を追加します。
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

※今回はラズパイをモニタに映します。
![img-3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367782/866ffd55-29c7-94a4-4a16-da6e30a0a473.jpeg)

上記、画像のように、以下のファイルをテキストエディタで開いてください。

「 /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を有効にチェック。
![img-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367782/5a7c4b22-f870-b4fc-266c-db34ab8b3814.jpeg)

ラズパイを再起動します。

同じネットワーク内であれば、以下で接続が可能。

```
 ssh pi@＜ラズパイのIP＞
```
※パスワードが聞かれると思いますが、デフォルトは「raspberry」になります。
![img-5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367782/5c9eff1a-54fe-23b7-8dfa-0c19fc609f6a.jpeg)
※接続できれば、温度センサデータを取得するまでの設定は同じです。

■■■■■　SSHの接続　END　■■■■■


温度センサーが本当に機能してるか、
途中で、「DS18B20」センサを指で抑えてみます。
![img-6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367782/45446c19-4bb7-3be4-f7a5-bf81752eb316.jpeg)
上記の通り、温度が上昇し、指を離してみると温度が下がりました。
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





★参考サイト
https://deviceplus.jp/hobby/raspberrypi_entry_018/