トカゲ飼いが温湿度ログから始める Raspberry Pi 講座

##■はじめに
温湿度のロガーを作りたいという要望から新たに Raspberry Pi を構築します。
Raspberry Pi Imager が出ていたりするので、その確認も兼ねています。
例によって、Raspberry Pi とはなんぞや、という方向けの記事となっております。

手元の Windows マシンから各種準備とセットアップを行いますが、
余計な説明や詳細な用語解説はせず、温湿度を Ambient に送信して確認が出来ることをゴールに設定しています。

今回ははんだやはんだごてを使う必要はないものを選びました。

##■使うもの
- Raspberry pi 3 Model B<br>
https://www.switch-science.com/catalog/3050/<br>
Zero でも 4 でも構いません。
- DHT11温湿度センサー<br>
https://akizukidenshi.com/catalog/g/gM-07040/
- Raspbian OS を書き込む micro SD カード<br>
micro SD カードを使うので USB の **SD カードリーダーも別途**必要です。<br>
Class 10 であればメーカー問わずなんでも構いません。<br>
使い回す場合は入っているデータは必ず退避し、フォーマットの上使用して下さい。
- ジャンパーワイヤ(オス - メスのもの)<br>
https://www.switch-science.com/catalog/2294/<br>
- 5V/3A を許容する AC アダプタ<br>
http://akizukidenshi.com/catalog/g/gM-12001/<br>
- ニッパー
- メールアドレス<br>
Ambient に登録するため、メールアドレスが必要です。
- ブラウザ(Chrome等)

##■作業はじめ
まずは micro SD カードをフォーマットします。
SD カードリーダーに micro SD を挿して、 PC に繋ぎます。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/de391c4a-ebc2-0b9d-424f-d7468987c68a.jpeg)
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/e0d9b418-5d0a-23b0-f97f-2628800e2822.jpeg)

フォーマットを選択します。
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/546c3e4d-b3d1-0356-6c25-9ccca72fa6de.jpeg)
開始を選択します。
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/ee5e2edb-73cb-dbfe-2ef7-d7478421b3bb.jpeg)
データが存在する場合、注意が出ますが、そのまま OK を選択します。
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/4447fc7e-7406-9ca6-4b37-adb9f150e0ab.jpeg)
フォーマットが完了したら OK を選択します。
![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/2030ef21-3cc5-2089-30a7-015aaeb7311a.jpeg)

#■ Raspberry Pi Imager をダウンロードする
micro SD に OS を書き込むソフトウェアを以下からダウンロードします。
Download for Windows を選択してください。
https://www.raspberrypi.org/software/
![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/3df81438-ca2f-7b7e-eaef-8c47a71d0f69.jpeg)
ダウンロードが完了したら、 imager_1.6.1.exe を選択します。
![8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/8d23780a-eca8-27ff-1490-9e90e9525657.jpeg)
#■ Raspberry Pi Imager をインストールする
インストーラが起動します。
そのまま Install を選択します。
![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/625ca055-e2c8-b4ee-ebe1-030308e19f4a.jpeg)
インストールが完了したら、チェックを入れたまま、 Finish で Raspberry Pi Imager を起動します。
![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/2f057b11-756e-5b0a-a40c-985f8d1ac324.jpeg)
#■ Raspberry Pi Imager で micro SD に OS を書き込む
Operating System の CHOOSE OS を選択します。
![11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/4d8f2adf-3767-ba91-ee88-b5a4df42179d.jpeg)
Raspberry PI OS(32-bit)を選択します。
![12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/49805171-9a40-aef1-6e3c-63efbb840270.jpeg)
Storage の CHOOSE STORAGE を選択します。
![13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/5e45f536-d64d-d7d2-2647-3b6b45f1fc5f.jpeg)
micro SD を挿した USB を指定します。
![14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/c08914b0-7a94-fd5b-3741-daf78c4a3ca4.jpeg)
CTRL + SHIFT + X キーを入力します。
![15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/55f8588f-99f3-d4e3-01c3-edba009d0f79.jpeg)
OS 書き込み時のメニューが表示されます。
![16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/da69a472-f516-6ca6-a356-61bfcd389c73.jpeg)
Set hostname にチェックを入れて mypi と入力、 Enable SSH にチェックを入れて、pi ユーザーのパスワードを入力します。
![17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/58fd0d9b-0db6-573a-65f6-1fabe54fd57e.jpeg)
下にスクロールして、Configure Wifi にチェックを入れます。
ご自宅の Wi-fi ルーターに記載されている SSID/Password を入力してください。
Wifi country は JP を選択します。
![18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/22f04d6e-5aef-86f2-7363-49e16c705e42.jpeg)
Set locale settings にチェックを入れ、Timezone に Asia/Tokyo を選択します。
keyboard layout は US のままにしてください。
![19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/c562cf9d-4471-2d04-43bd-9f0dfd09bff9.jpeg)
残りはそのままにして SAVE を選択します。
![20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/21d979b7-7eef-24bf-44d1-ffbe9dbad2d3.jpeg)
WRITE を選択します。
![21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/76cc5443-185d-50f6-72e2-8576fd0f6974.jpeg)
YES を選択して書き込みを開始します。
![22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/23fc412b-a048-b2c4-4eac-dbaffaf3ce03.jpeg)
書き込みが完了したら、CONTINUE を選択します。
![23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/6c450e25-0d84-efb3-8b89-74623e184483.jpeg)

#■ Raspberry Pi に micro SD に OS を挿入する
Raspberry Pi の本体の裏側にスロットに micro SD に挿入します。
![rasp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/0383c909-f424-d35b-d285-566374d5403c.jpeg)
そのまま電源を接続して、赤いランプが点灯し始めることを確認してください。

#■ Windows PowerShell を使い、Raspberry Pi に SSH 接続する
Windows のメニューから PowerShell を起動します。
![24.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/cc4a8098-486a-205f-8bb6-8757d2be4ef4.jpeg)
ssh するホストを入力、実行します。

```
PS > ssh pi@mypi.local
```

yes/no の入力を求められますので、yes を入力します。
![25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/a073633d-1061-0517-b682-c74985cd0740.jpeg)
パスワードの入力を求められますので、OS を書き込む際のパスワードを入力してください。
SSH で Raspberry Pi へのログインが完了します。
![26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/053aa26f-78fd-f4ad-5fc7-11f597803e08.jpeg)

#■ Raspberry Pi に DHT11 を接続する
Raspberry Pi の立っているピンに DHT11 を接続します。
赤い線を一番左上、黒い線を1つ開けた次のピン、緑の線をその隣に挿します。
![rasp2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/8043a2a4-0f00-9729-9653-ac3f3c4f1dae.jpeg)

#■ DHT11 用の Python コードを clone する
github から Python コードを clone します。

```
pi@mypi:$ git clone https://github.com/szazo/DHT11_Python.git
```

![28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/717afdf3-5e72-a662-afd4-40b9d7a99118.jpeg)

#■ DHT11 用の Python コードを実行してテストする
実際に clone したコードが実行できるかを確認します。

```
pi@mypi:$ cd DHT11_Python
pi@mypi:$ python example.py
```

以下のように温湿度が表示されれば問題ありません。
![30.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/49a8b44a-86d8-4775-1813-2f67242fd0e3.jpeg)

#■ Ambient のアカウントを取得する
Ambient をブラウザの URL バーに入力します。

https://ambidata.io/

画面右上のユーザー登録(無料)からユーザー登録を行います。
![31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/c44b5737-4b51-82f9-fc9f-c38cd4996282.jpeg)
メールアドレスとパスワードの入力が終わったら、ユーザー登録(無料)を選択します。
![32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/0ef0e749-d2c3-c038-dfe7-f4d1349c9fd0.jpeg)
メールアドレスに認証 URL が送られてくるため、確認して認証します。
認証が出来たら、画面右上のログインを選択します。
登録したメールアドレスとパスワードを入力したらログインを選択します。
![33.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/0ff4c037-e007-10c7-0914-4db84c00c437.jpeg)

#■ Ambient にチャネルを作成する
チャネルを作るを選択します。
![34.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/9b8402f8-3ad4-5546-7dfd-d2ecb071e771.jpeg)
チャネルが払い出されます。
画面はこのままにしてください。
![35.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/f7ad7564-fe99-6d91-009b-e7e96bfe9b0d.jpeg)

#■ Ambient に DHT11 で取得したデータ送信をする Python コードを clone する
Ambient に DHT11 で取得した温湿度データを送信する Python コードを clone します。
clone 後、先ほどのチャネル情報を clone したコードに書き込みます。

```
pi@mypi:$ git clone https://github.com/Yukisama00/reptile.git
pi@mypi:$ cd reptile
pi@mypi:$ vi dht11.py
```

頭の # を削除して、ブラウザで表示したままにしたチャネルID を CHANNEL_ID、ライトキーを WRITE_KEY と置き換えます。
![38.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/3f61a811-06da-7ff8-22f9-166a458e6695.jpeg)

書き換えが出来たら、コードを移動させます。

```
pi@mypi:$ mv dht11.py ../
```

#■ Ambient のモジュールをインストールする
そのままでは上記のコードは使えないため、追加でモジュールをインストールします。

```
pi@mypi:$ pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git
```

![40.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/63cc06a5-c4c1-14f9-d0d6-7673d7326e14.jpeg)

#■ Ambient に DHT11 で取得したデータ送信をする Python コードを実行する
同様に温湿度が表示されることを確認します。

```
pi@mypi:$ python dht11.py
```
![41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/9839e0c0-5b6a-65b1-2fcb-e32b742e8e94.jpeg)

#■ Ambient を設定する
チャネルの設定をします。
![42.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/430e1b1c-c865-3ea1-3fda-3a9c4bfaf216.jpeg)
一番右にあるアイコンを選択します。
設定変更が表示されるので選択します。
![43.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/0555feb5-5f75-1a54-24d0-ce641f5955fb.jpeg)
チャネル名を mypi 、データ1を temperature、データ2を humidity とします。
カラーなどは好きに設定してください。
設定できたらチャネル属性を設定するを選択します。
![44.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/08853689-a5b1-6e2f-15c9-9ef49c3867f7.jpeg)
元の画面のチャネル一覧を選択し、ボート一覧を選択します。
![45.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/492ce369-2db9-9596-5b69-d8279117ac78.jpeg)
ボードを作るを選択します。
![46.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/55ee7664-e7ac-1a4f-dcc1-4c8691b01993.jpeg)
ボードが作成されました。
![47.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/69922d95-fb42-0e68-14db-60eaaa4b3210.jpeg)
画面上部のグラフアイコンを選択します。
![48.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/a8f0b43b-2051-a4aa-6cc1-a777542cb49d.jpeg)
ボード作成画面になります。
チャネル/データ設定を選択します。
![49.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/e2f3604e-ea7d-7af6-b3c0-fd1a99b3e3da.jpeg)
室温のチャートを作成します。
設定出来たら設定するを選択します。
![50.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/28c9a766-057d-da99-cb8b-a9e506bd2165.jpeg)
同様の手順で湿度のチャートも作成します。
![51.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/317a8047-a827-3ee6-86d2-3eac5fec4b8f.jpeg)
チャートが描画できました。
![52.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/acc2c0bf-846f-7ac6-5d3d-dcaaf6ce6fd4.jpeg)

#■ Ambient へのデータ送信を1分毎に実行する

```
pi@mypi:$ sudo vi /etc/crontab
```

最下段に
* * * * * pi /usr/bin/python /home/pi/DHT11_Python/dht11.pyを追加します。
![54.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492248/0ab273a5-b270-4e80-ce8e-635e56bf7cb0.jpeg)

##■ おわりに
Raspberry Pi を利用した温湿度のログを残す手順を紹介致しました。

##■ 参考URL
https://dev.classmethod.jp/articles/raspberry-pi-imager-v1-6-update/
https://ambidata.io/refs/python/