ラズパイにセンサーを取り付けて温度・湿度を計測し、その結果をメール送信するプログラムを作成しました。
はじめに
部屋の湿度が高めです。
「PCの内部で結露、故障、なんて嫌だから、湿度を上手に管理する方法はないかな?」
「常に除湿器を稼働させておく訳にもいかないし、湿度が高くなったらお知らせをしてくれる、そんなプログラムを作れないだろうか?」
こういったところから始まりました。
2022年6月20日辺りにこのプログラムは完成しました。メモなどを見て過去を振り返りながら書いています。
ラズパイのGPIOにI²Cで温湿度センサーを繋げて、プログラムでセンサーを制御し室温・湿度を取得、メール送信させます。
電子工作の経験ほぼ無し、はんだ付けは学校の授業で体験した程度ですので、まずは道具の購入から入りました。
コードはPythonで記述。センサーで単発計測を行いsmbusで温湿度を取得、計測結果をsmtplibでメール送信します。
計測・送信の定期実行はcronで行います。決まった時間になると、または温度・湿度が制限を超えた時、こんなメールがラズパイから送られてきます。
2022/6/21/21/3
temperature: 27
humidity: 68
作成のプロセスをいくつかに分けると…
- 準備(温湿度センサー・はんだごての購入)
- はんだづけ
- 回路を繋ぐ
- プログラム作成Ⅰ(smbus)
- プログラム作成Ⅱ(smtplib)
- cronの設定
前半がセンサーをラズパイに繋げる作業であり、後半はプログラミングでセンサーを制御する作業になります。
今回は前半である1. 準備、2. はんだづけ、及び3. 回路を繋ぐについてです。
準備
必要なもの
温湿度測定のために必要なものをリストアップすると
- ラズパイ
- 温湿度センサー
- ジャンパー線(オスーメス型)
- ブレッドボード
- はんだ付けの道具
ラズパイ
RaspberryPi4B
手持ちのメモリ4GBのものを使用
センサーを繋いだ状態
温湿度センサー
続いて、温湿度センサー。こちらはSENSIRION製のSHT31-DISを選択しました。
普段、ラズパイの学習に『これ一冊でできる!ラズベリーパイ超入門』を読んでいますが、こちらのI²Cデバイスの章では温湿度計測にHoneywell製のHIH-6130を使用しています。
おおよそのモジュールの値段。
調べてみると、SHT31を使用したものが1,000円、HIH-6130を使用したものが3,500円程度でした。失敗する可能性を考慮して、今回はお手頃なSHT31にしました。
秋葉原の秋月電子さんで購入しました。お店の奥のパーツキャビネットに入っていました。チャック袋で売られているんですね。小さい箱で梱包されているイメージだったので意外でした。
ピンヘッダは付属しています。はんだ付けはされていません。
SHT31
サイズは14×12㎜
ピンは10本のものが付属
(半分にカットして使用)
詳しくないのですが、各社が開発したセンサーをボード化したものを、モジュール、という呼び方で販売しているようです。センサー自体は上部の黒い立方体、ということでしょうか。
はんだ付け後
センサーは約3×3㎜
ジャンパー線・ブレッドボード
手持ちのものを使用。以前、ラズパイのGPIOを使いLEDを点灯させる実験用に秋葉原で購入したものです。
オスーオス型は色各種あったのですが、オスーメス型は赤と青しか持っていませんでした。役割毎に色を変えた方がわかりやすかったですね。
はんだ付けの道具
センサーモジュールのピンヘッダのはんだ付け作業に必要となります。
太洋電機産業製で揃えました。購入にあたり日本はんだ付け協会様のページ「はんだごての選び方」を参考にさせていただきました。
はんだごて:PX-335
温度調整機能付きセラミックヒーター
こてさきはPX-2RT-Bが付属
(コードクリップは付属しません)
コードの長さは1.4m程度
制御温度350℃に達するとランプが点滅してお知らせしてくれます。
こて台:ST-27
重量485g
ST-40BWとST-53SPが付属
(金属クリーナーとスポンジ)
火傷や事故は困るのでしっかりしたものを選択しました。
PX-335 & ST-27
はんだごてを挿した状態
高さ:約19cm(赤)
幅 :約24cm(青)
はんだごての抜き差しの際、扱いにくさや危険を感じることはなかったです。無事、作業を終えることができました。
ヒートクリップはH-2SLを購入。H-1SとH-1Lがセットになっているようです。
はんだはSD-60を選択しました。経験者の友人曰く鉛入りは融点が低いので扱い易いらしいです。健康被害については、今後はんだづけをする機会が増えた時に考えることにします。
どのこてさきが適切なのか全くわからないので、念のためPX-2RT-2Cを購入。加えてはんだ吸取線CP-1515を購入。この二つは結局使用しませんでした。
フラックスは購入しませんでした。使いどころがわたしには判断できないだろう、と思いましたので。
はんだごて一式で計7,000円弱でした。今回だけで終わらせるのはもったいないので、使う機会を見つけていきたいです。
はんだ付け
はんだ付けでI²Cアドレスを決める
はんだ付けの仕方が、後のコーディングで指定するI²Cアドレスに影響します。単純にピンヘッダとセンサーの端子の隙間をはんだで埋めればよい、ということではなく、目的に叶うはんだ付けのやり方があるようです。
正しいはんだ付けの方法を探っていきます。
秋月電子さんのwebサイトで「SHT31使用 高精度温湿度センサモジュールキット」のページからSHT31-DIS仕様書(日本語)が確認できます。
こちらの第3章、及び第3.4章の説明を読むに、
- ADDR端子の未接続状態は禁止
- ADDR端子を接地でアドレス0x44(デフォルト)
- ADDR端子を電源ラインに接続でアドレス0x45
つまり、何もしなければ自動でアドレスが0x45になるのではなく、何かの理由でADDR端子を電源ラインに繋がなければならない時に0x45を使えるよ、という感じなんでしょうか?
0x44がデフォルト、と書いてあるのでそれに従います。
では、具体的にどうしたらいいのか?
センサーに同梱の取扱説明書には、ADRとGNDをはんだブリッジで接地するとアドレスが0x44になる、と書いてあります。これですね。
ピンヘッダの取付
はんだ付けしていきます。VDD、SDA、SCLはそのまま、ADRとGNDはブリッジさせる…。
初心者が慣れない作業に四苦八苦するも、なんとかなりました。出来が良いとは言えないのでしょうけど、成功した、ということにしておきます。
こんな出来ではありますが、2022年9月20日現在でも温湿度を計測したデータを返してくれています。
回路を繋ぐ
ラズパイの端子を確認
ラズパイとセンサーを繋げます。
ラズパイのGPIOは以下の端子を使用しました。
- 1番 3.3v
- 3番 I2C SDA
- 5番 I2C SCL
- 9番 GND
『これ一冊でできる!ラズベリーパイ超入門』を参考にしています。GPIOの配置がわかりやすい図で説明されています。
もともとケースのファンに1、9番を繋いでいたので、こちらは17番3.3vと34番GNDに変更しました。
SHT31の端子を確認
温湿度センサーSHT31に付属している説明書に各端子の役割が記載されていますし、センサーモジュール本体にもプリントされています。
繋ぐ
ブレッドボードにはんだ付けしたセンサーのピンを差し込み、ラズパイとセンサーの各端子の間をジャンパー線で繋ぎます。
こちらも『これ一冊でできる!ラズベリーパイ超入門』を参考にしました。使用しているセンサーは異なりますが、ラズパイとセンサーで同じ名前(役割)の端子を繋げればよい、その様子がわかりやすいです。
次回へ続く
今回はここまでです。
次の投稿では、はんだ付け及び回路の接続がうまくできているのか、その確認を行います。そして4. プログラム作成Ⅰ(smbus)について書く予定です。
読んでくださった方、ありがとうございました。
著者名 | 書籍名 | 出版 | 発行年月日 | 参照頁 |
---|---|---|---|---|
福田和宏 | これ一冊でできる!ラズベリーパイ超入門 | ソーテック社 | 初版 :2020/2/29 第3刷:2021/4/20 | 227~ |
サイト名 | ページタイトル | URL | 参考にした日付 |
---|---|---|---|
日本はんだ付け協会 | https://handa-npo.com/ | 2022/9/22 | |
はんだごての選び方 | https://handa-npo.com/knowledge03 | 同上 | |
秋月電子通商 | https://akizukidenshi.com/catalog/default.aspx | 同上 | |
SHT31使用 高精度温湿度センサモジュールキット | https://akizukidenshi.com/catalog/g/gK-12125/ | 同上 | |
SHT31-DIS仕様書(日本語) | https://akizukidenshi.com/download/ds/sensirion/Sensirion_Humidity_Sensors_SHT3x_DIS_Datasheet_V3_J.pdf | 同上 | |
取扱説明書 | https://akizukidenshi.com/download/ds/akizuki/AE-SHT3x_manu_v1.0.pdf | 同上 |