Raspberry Pi 作品集
気象情報をスマホにメールで送信する
気象情報をスマホにメールで送信する
B+ と言うモデルを3台購入。
最初に取り組んだのが、照度・気温・湿度・気圧を測定する電子工作で、出力は ”キャラクタLCD” だった。
最初に取り組んだのが、照度・気温・湿度・気圧を測定する電子工作で、出力は ”キャラクタLCD” だった。
しかし、これだと Raspberry Pi を常に見に行かなければならない。
そこで、一定間隔で測定した結果を、自分の携帯に送信出来れば家にいなくとも見れると、 メールで通知するプログラムを ”Python” と言う言語で書いた。
スポンサー リンク
     
 目 次
Raspberry Pi 壁掛け型『百葉箱』 
1. Raspberry Pi モデル B+
使用中の「Raspberry Pi」は、初期のモデル「B+」でリビジョンは「0010」。
ハードウェアのモデルを確認する方法。
cat /proc/cpuinfo
Pythonによる 基盤のリビジョン番号を確認するコマンド。
sudo python
>>> import RPi.GPIO as GPIO
>>> GPIO.RPI_REVISION
・・・ Ctrl + D で終了
>>> import RPi.GPIO as GPIO
>>> GPIO.RPI_REVISION
・・・ Ctrl + D で終了
OSのバージョンを確認するコマンド。
cat /etc/os-release
カーネルのバージョンを確認するコマンド。
uname -a
Pythonのバージョンを確認するコマンド。
python --version
2. 使用した部品
①.湿度センサー:
 HIH6130:スイッチサイエンス 3,743 円
②.気圧センサー:
 MPL115A2:秋月電子通商 600 円
③.照度測定用CdSセル(光センサー):
 GL5528 1MΩ:秋月電子通商 40 円
④.ADコンバーター:
ADS1015 スイッチサイエンス 1,393 円
ADS1015 スイッチサイエンス 1,393 円
④.ADS1015: 12 ビット、3.3kSPS、4 チャネル・デルタ・シグマ ADC。
CdSセル(光センサー)のアナログ情報を入力して、デジタル情報に変換。
ADS1015は、12 ビット(4096)のデータに変換するので約4000段階の値が取得できる。
 
 
CdSセル(光センサー)のアナログ情報を入力して、デジタル情報に変換。
ADS1015は、12 ビット(4096)のデータに変換するので約4000段階の値が取得できる。

PGA (プログラマブル・ゲイン・アンプ) と発振器と VREF とコンパレータと I2C 搭載。https://www.ti.com/product/ja-jp/ADS1015
3. 気象情報取得回路図
4. Python プログラム
Python PGM List
#! /usr/bin/env /usr/bin/python
# -*- coding: utf-8 -*-
 
import datetime
import time
import signal, sys
from Adafruit_ADS1x15 import ADS1x15
import smbus
import mpl1152a2
from acm1602 import acm1602
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate
 
# アナログ変換セットアップ
ADS1015 = 0x00
ADS1115 = 0x01
gain = 4096
sps = 250
adc = ADS1x15( ic=ADS1015 )
 
# メールセットアップ
def create_message2(from_addr, to_addr, subject, body, encoding):
    # 'text/plain; charset="encoding"'というMIME文書を作ります
    msg = MIMEText(body, 'plain', encoding)
    msg['Subject'] = Header(subject, encoding)
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Date'] = formatdate()
    return msg
 
def send_via_gmail(from_addr, to_addr, msg):
    s = smtplib.SMTP('smtp.gmail.com', 587)
    s.ehlo()
    s.starttls()
    s.login <span style="color: red;">('メールアドレス@gmail.com', 'パスワード')</span>
    s.sendmail(from_addr, [to_addr], msg.as_string())
    s.close()
 
# ループ
SLEEPTIME = 3600
while True:
 
    # 日時取得
    d1 = datetime.datetime.today()
    d2 = datetime.datetime.strftime(d1,"%Y-%m-%d/%H:%M:%S")
 
    # 照度取得
    volts = adc.readADCSingleEnded( 0, gain, sps ) / 1000
#if volts > 1:
#   print( "Well Lighted : " + str(volts) + "V" )
#else:
#   print( "Dark : " + str(volts) + "V" )
 
    # 湿度・気温・気圧取得
    i2c_channel = 1
    i2c = smbus.SMBus( i2c_channel )
    dac = i2c.read_i2c_block_data( 0x27, 0, 4 )
    h = ( ( dac[0] & 0x3f ) << 8 ) | dac[1]
    humi = (float)(h) / 16383 * 100
    t = ( dac[2] << 6 ) | (dac[3] >> 2)
    temp = (float)(t) /16383 * 165 - 40
    pres = mpl1152a2.getpressur( i2c_channel )
 
    # メール送信
    if __name__ == '__main__':
        from_addr = 'xxxxx@gmail.com'
        to_addr = 'yyyyy@hotmail.co.jp'
        subject = u'3F-気象情報'.encode('ISO-2022-JP')
        body = '%s\n' % d2  + u' 照度 :
         ' + str(volts) + " V\n" + u' 温度 :
         %.2f C\n' % temp  + u" 湿度 :
         %.2f %%\n" % humi + u" 気圧 :
         %.2f hPa\n" % pres + u"onjipi より、送信しています。\n"
        msg = create_message2(from_addr, to_addr, subject, body,'ISO-2022-JP')
        send_via_gmail(from_addr, to_addr, msg)
 
    time.sleep( SLEEPTIME )
    5. pythonからGmailを送信する際のSMTPAuthenticationError
SMTPAuthenticationError。
 File "/usr/lib/python2.7/smtplib.py", line 613, in login
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (534, '5.7.9 Application-specific password required. Learn more at\n5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor 15-20020aa7914f000000b0058d9428e482sm8421722pfi.85 - gsmtp')
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (534, '5.7.9 Application-specific password required. Learn more at\n5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor 15-20020aa7914f000000b0058d9428e482sm8421722pfi.85 - gsmtp')
対策:
2段階認証プロセスを使用している場合は、googleアカウントのパスワードではなく、アプリ パスワードを使ってログインする。
2段階認証プロセスを使用している場合は、googleアカウントのパスワードではなく、アプリ パスワードを使ってログインする。
アプリ パスワードの取得要領
6. まとめ
まずは、POPメール(PC)で試したのち、スマホ(DOCOMO)にも送信することが出来た。
 
この過程で、メールボックスの内容を見る方法が判ったり、自動で・大量のメールを送る方法なども理解でき、ハッカー気分に浸る。

この過程で、メールボックスの内容を見る方法が判ったり、自動で・大量のメールを送る方法なども理解でき、ハッカー気分に浸る。
参考書やネットの情報を頼りに、年末年始、昼夜を問わず没頭した。久しぶりに熱中できることに巡り合い、『気力』なるものに改めて気づく。
参考:Raspberry Pi 気象情報をキャラクタLCDに表示
参考:Raspberry Pi 監視カメラを構築し遠隔監視が出来るようにする
以上。
 (2015.01.05)
スポンサー リンク
     
 























