IoTで快適な生活環境を目指して 第二弾

会長ロブロスと申す。会長ではありませぬが平にご容赦を。
※本名称は日本の偉大な巨匠に尊敬の念を込めおります。

今回のIoT記事は、球磨川Fallenから引き継いで、

「IoTを利用して、遠く離れた部屋の電気がついているのか消えているのか知りたい」

でござる。気になる方はこちらで以前の記事を読めるのでござる。

そもそもIoTとは何ぞという説明を簡単につけまする
I:Internet
o:of
T:Things
簡単に言えば、身の回りにある色々な物をインターネットで繋いでしまおうぞという事じゃ。これまではインターネットと言えばパソコンだけの話じゃったが、モノとセンサーをつないで、モノの状態変化をネットワークから取得し適切なアプリケーションで表示し、仕事や生活を豊かにする事じゃよ。

このことを知った悪友戊生呑から次のような相談をされたのじゃ。
「最近離れの物置の電気が勝手についているような気がするのよ いちいち見に行くのも面倒じゃからどうにかならんかのぅ・・・」と。
そこで離れを見て考えたのが、「離れの物置にセンサーを据え付け、明るくなったら通知があればよくないか」と考え作ったのじゃ。その際に戊生呑から使わないスマホを「ロブロスこれ使うか」と渡され、本文で書く仕組みを作ることに至ったのじゃよ。

材料

Raspberry Pi Zero WH(以降ラズパイ)を1つ USBケーブル(OTG対応)を1つ
MCP3208を1つ CDSセルを1つ
ジャンパーワイヤー12本 抵抗器(10kΩ)を1つ

他に今回用意したのが下に書いた物じゃ
・スマホを1台
・ラズパイ用電源1つ
・英語を見て嫌にならぬ気持ち,最後まで諦めぬ心

作り方

最初にスマホの設定から行うのじゃ。
スマホに次のソフトをインストールするのでござる.。
Blynk + ESP8286Loader
これをしないとラズパイからの情報を受け取った結果が表示できない為、絶対必須でござる。
ここで一つBlynkというアプリについて簡単に説明をさせていただくぞ。
Blynkアプリをスマホにインストールして諸々の設定を行うことによって、センサーの情報がインターネットを経由し、動作の結果をスマホに表示してくれるのじゃ。今回はスマホ画面にラズパイで仕込みを行ったセンサー値の結果が表示されるのじゃ。
詳しく知りたいと思ふ者がいれば「Blynk 使い方」で検索するとよろしかろう。

ラズパイ側の準備

回路図を示したく思ふ。実際に繋いだ配線は下のようになったでござる。
照度センサー回路図照度センサー作成回路

本体側接続

ボード側 対応するラズパイ側GPIOピン番号
+(電源部) 1
GND 6
MCP3208側 対応するラズパイ側GPIOピン番号
Vdd 1
Vref 1
AGND 1
CLK 23
Dout 21
Din 19
/CS/SHDN 24
DGND 1
CH0 6

そして肝心なプログラムじゃがその前に必要なライブラリを用意するのだぞ。
pi@raspberrypi:~ $ sudo apt install wiringpi
pi@raspberrypi:~ $ git clone https://github.com/blynkkk/blynk-library.git
pi@raspberrypi:~ $ cd blynk-library/linux
pi@raspberrypi:~/blynk-library/linux $ make clean all target=raspberry
それなりに時間がかかるからお茶と饅頭を楽しみつつ気長に待つのじゃ。

プログラム

肝心の内容は下に書いておるぞ。

# -*- coding: utf-8 -*-
#!/usr/bin/python
import BlynkLib #大文字小文字で間違えぬ事じゃ 間違えると大層面倒なことになるぞ
import sys
import spidev
import RPi.GPIO as GPIO
from time import sleep

BLYNK_AUTH = '自身で取得したプロジェクトの認証キーを入力するのじゃ'
V_REF = 3.29476
CHN = 0
blynk = BlynkLib.Blynk(BLYNK_AUTH)
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 1000000

def get_voltage():
    dout = spi.xfer2([((0b1000+CHN)>>2)+0b100,((0b1000+CHN)&0b0011)<<6,0])
    bit12 = ((dout[1]&0b1111) << 8) + dout[2]
    volts = round((bit12 * V_REF) / float(4095),4)
    return volts

try:
    while True:
        volts = get_voltage()
        if volts < 2: #Cdsセルに光が当たった時の抵抗値変化を見てるのじゃ
            #暗いと判断しておるのでスマホにその合図を送っておる
            blynk.virtual_write(0, 0)
        else:
            #明るいと判断しておるのでスマホにその合図を送っておる
            blynk.virtual_write(0, 255)
        sleep(60)#今回は1分毎に確認をしておるぞ

except KeyboardInterrupt:
    pass

finally:
    spi.close()
    GPIO.cleanup()

最後に上が透明な箱に入れて、電源コードを繋ぐ穴をあけて電源を給電し、設置して終了じゃよ。これで戊生呑の手元のスマホで部屋の電気がついているかどうか確認が出来るわけじゃ。
写真は密閉ケースに入れておるが、これは電源供給の方法の違いだけじゃよ。
(戊生呑は直接電源供給、此方はモバイルバッテリーを使用しておるぞ)
バッテリー給電完成品

結局の所、原因は飼い猫のニャデムのいたずらじゃったそうな。。。某に聞かれても存ぜぬよ。

費用とかどうなんじゃと?野暮なことを聞くでないっ!!

Share

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Optionally add an image (JPEG only)