آموزش رزبری پایپروژه رزبری پای

دماسنج بدون تماس با رزبری پای (کرونا – ارسال ایمیل با تصویر)

از زمان شیوع کرونا ، شناسایی افرادی که تحت تأثیر ویروس قرار گرفته اند بسیار دشوار شده است. برای حل این مسئله ، از دماسنج های مختلف برای اندازه گیری دمای بدن استفاده می شود. این دستگاه ها دارای سنسور دمای مادون قرمز بدون تماس هستند که می توانند دمای بدن را بدون هیچگونه تماس فیزیکی اندازه گیری کنند.

در این پروژه با برد رزبری پای یک دماسنج بدون تماس میسازیم و در صورت بالاتر بودن دمای بدن شخص از محدوده امن، یک ایمیل همراه با تصویر فرد مشکوک به کرونا برای شما ارسال میشود.

کار کامل این پروژه در فیلم زیر قابل مشاهده است :

قبلا پروژه های مختلفی را در زمینه کرونا راه اندازی کردیم:

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

قطعات مورد نیاز

  1. برد رزبری پای ( هر نسخه ای میتواند کار کند)
  2. دوربین Pi
  3. MLX90614 – سنسور مادون قرمز دما

Raspberry Pi: رزبری پای یک رایانه به اندازه کارت بانکی است که برای اهداف آموزشی طراحی شده است. با توجه به قیمت و مشخصات شگفت انگیز آن مانند wifi داخلی ، بلوتوث و GPIO برای مهندسان الکترونیک و علاقمندان بسیار محبوب شده است. جهت کسب اطلاعات بیشتر، مقاله رزبری پای چیست را بخوانید.

سنسور دما MLX90614 IR: سنسورهای زیادی در بازار موجود است که می توانند دما و رطوبت را اندازه گیری کند. آنچه این سنسور را از سایر سنسورها متمایز می کند این است که می تواند به ما دمای جسم را بدهد، اما بقیه سنسور ها دمای محیط را اندازه گیری میکنند.

سنسور دما بدون تماس MLX90614
سنسور دما بدون تماس MLX90614

اتصال سنسور MLX90614 به رزبری پای

در ابتدا ، ما کتابخانه و بسته های مورد نیاز برای ارتباط سنسور MLX90614 با رزبری پای را بارگیری خواهیم کرد.

مرحله 1: فعال کردن ارتباط I2C از تنظیمات Raspberry Pi.

sudo raspi-config را تایپ کنید و سپس به interfacing options بروید.

فعال کردن ارتباط I2C در رزبری پای

به گزینه I2C رفته و آن را فعال کنید.

مرحله 2: بسته / کتابخانه MLX90614 را با رفتن به آدرس https://pypi.org/project/PyMLX90614/#files بارگیری کنید ، سپس کلیک راست کرده و آدرس پیوند را کپی کنید.

کپی کردن آدرس سنسور MLX90614

به ترمینال رزبری پای بروید و wget را تایپ کنید و پیوند کپی شده را مانند زیر پیست کنید.

Wget https://files.pythonhosted.org/packages/67/8a/443af31ff99cca1e30304dba28a60d3f07d247c8d410822411054e170c9c/PyMLX90614-0.0.3.tar.gz

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

این دستور کتابخانه را با نام PyMLX90614-0.0.3.tar.gz بارگیری می کند. سپس با دستور زیر فایل را استخراج کنید.

tar -xf PyMLX90614-0.0.3.tar.gz

سپس ما باید برخی از بسته های مورد نیاز را با استفاده از دستورات زیر نصب کنیم.

sudo apt-get install python-setuptools 
sudo apt-get install -y i2c-tools

سپس با استفاده از دستور

cd PyMLX90614-0.0.3/

به پوشه استخراج شده بروید و دستور زیر را اجرا کنید.

sudo python setup.py install

پس از انجام مراحل ، کافیست سنسور MLX90614 را با Raspberry pi مانند مداری که در زیر آورده شده متصل کنید.

شماتیک مدار دماسنج بدون تماس با رزبری پای

بعد از اتصال مدار مانند تصویر بالا، با دستور

i2cdetect -y 1

بررسی کنید که ارتباط I2C برقرار است یا خیر. اگر برقرار باشد شما باید خروجی زیر را در ترمینال مشاهده کنید.

خروجی ترمینا رزبری پای برای I2C

0x5A نشان دهنده آدرس سنسور است. اکنون ، ما یک پرونده جدید mlxread.py ایجاد کرده و یک نمونه برنامه برای بررسی داده ها از حسگر می نویسیم. کد مربوط به این پرونده در زیر آورده شده است.

from smbus2 import SMBus
from mlx90614 import MLX90614
bus = SMBus(1)
sensor = MLX90614(bus, address=0x5A)
print "Ambient Temperature :", sensor.get_ambient()
print "Object Temperature :", sensor.get_object_1()
bus.close()

پس از ایجاد پرونده ، آن را با افزونه پایتون python mlxread.py اجرا خواهیم کرد. خروجی دریافتی من در زیر نشان داده شده است. من چندین بار برنامه را اجرا کردم تا بررسی کنم وقتی که دستم را روی آن قرار می دهم مقادیر تغییر می کنند یا نه.

خروجی افزونه پایتون برای سنسور دما MLX90614

ما با موفقیت ارتباط بین Raspberry Pi خود با MLX90614 را برقرار کردیم.

اتصال دوربین Pi به رزبری پای

مرحله 1: فعال کردن دوربین از تنظیمات Raspberry Pi.

sudo raspi-config را تایپ کنید و سپس به  interfacing options بروید.

به Camera بروید و Camera را فعال کنید.

فعال کردن دوربین Pi در رزبری پای

مطابق شکل زیر ، ماژول دوربین را وصل کنید.

اتصال ماژول دوربین به Raspberry pi

مرحله 2: برای بررسی اینکه آیا دوربین به درستی متصل شده است ، ما یک عکس آزمایشی می گیریم و آن را در دسک تاپ خود ذخیره می کنیم.

raspistill -o Desktop/image.jpg

با دستور بالا یک تصویری با نام image در دسکتاپ شما ذخیره میشود.

ارسال ایمیل دما SMTP با رزبری پای

در اینجا ما یک حساب Gmail را تنظیم میکنیم تا در صورت بالاتر رفتن دما از حد مشخص، یک ایمیل همراه با عکس ارسال کند. SMTP یک پروتکل انتقال ایمیل ساده است که توانایی ارسال و دریافت پیام های الکترونیکی را فراهم می کند و توسط گروه ویژه مهندسی اینترنت (IETF) مدیریت می شود.

این آموزش فقط با حساب های GMAIL کار می کند و برای جلوگیری از هرگونه خطای احتمالی ، توصیه می شود از یک حساب Gmail تازه استفاده می کنید. به طور پیش فرض ، Google به کاربران اجازه نمی دهد با استفاده از اسکریپت پایتون ایمیل ارسال کنند. برای انجام این کار ، باید با ورود به تنظیمات حساب برخی تغییرات را ایجاد کنیم.

مرحله 1: به گوشه سمت راست بروید و روی مدیریت حساب Google خود کلیک کنید.

مدیریت حساب جیمیل برای ارسال ایمیل با رزبری پای

مرحله 2: روی Security کلیک کنید و به “دسترسی کمتر به برنامه امن” (Less Secure App Access) بروید.

دسترسی کمتر به برنامه امن در جیمیل

مرحله 3: برنامه کم امنیت (less secure app) را فعال کنید.

مرحله 4: برای ارسال / دریافت ایمیل از اسکریپت پایتون ، با شناسه یک ایمیل دیگر نیز این کار را تکرار کنید.

مرحله 5: بسته های مورد نیاز را بارگیری کنید.

sudo apt-get install ssmtp
sudo apt-get install mailutils​

اگر در اجرای دستور با کپی پیست کردن به خطایی برخوردید ، آن را به صورت دستی تایپ کنید.

مرحله 6: پس از نصب همه کتابخانه ها ، باید تغییراتی را در پرونده ssmtp.conf ایجاد کنیم ، جایی که باید جزئیات ایمیل فرستنده را وارد کنیم.

sudo nano /etc/ssmtp/ssmtp.conf

به پایین پیمایش کنید و این را جایگذاری کنید،

mailhub=smtp.gmail.com:587
AuthUser=آدرس ایمیل وارد کنید
AuthPass=پسورد ایمیل را وارد کنید
UseSTARTTLS=YES
UseTLS=YES

کد پایتون برای خواندن دما از MLX90614 و ارسال ایمیل با تصویر

برنامه پایتون تمام عملیات لازم را برای خواندن داده های سنسور ، مقایسه آنها با مقدار آستانه و سپس ارسال ایمیل با تصویر پیوست انجام می دهد.  ایمیل توسط smtplib ارسال می شود ،کد کامل در انتهای صفحه قرار داده شده است. ما در اینجا بعضی از قسمت های کد را بررسی میکنیم.

در مرحله اول باید کتابخانه های مورد نیاز را فراخوانی کنیم و سپس آنها را پیکربندی کنیم.

import RPi.GPIO as gpio
import picamera
import time
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders
from email.mime.image import MIMEImage
from smbus2 import SMBus
from mlx90614 import MLX90614

سپس آدرس ایمیل فرستنده ، آدرس ایمیل گیرنده ، موضوع ایمیل ، متن و پیام پیوست را تعریف می کنیم.

fromaddr = "test2718test@gmail.com"    # آدرس فرستنده
toaddr = "electrofunedu@gmail.com"     # آدرس گیرنده
mail = MIMEMultipart()
mail['From'] = fromaddr
mail['To'] = toaddr
mail['Subject'] = "Temperature value exceed alert"
body = "Please find the attached image"

سپس جزئیات ایمیل ارسالی را با کد زیر تعیین میکنیم.

def sendMail(data):
    mail.attach(MIMEText(body, 'plain'))
    print data
    dat='%s.jpg'%data
    print dat
    attachment = open(dat, 'rb')
    image=MIMEImage(attachment.read())
    attachment.close()
    mail.attach(image)
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(fromaddr, "test12345@")
    text = mail.as_string()
    server.sendmail(fromaddr, toaddr, text)
    server.quit()

سپس ، ما یک تابع ایجاد می کنیم تا تصویری که از طریق ایمیل ارسال می شود را ضبط کند و همچنین تصویر را با تاریخ و ساعت ذخیره کند.

def capture_image():
    data= time.strftime("%d_%b_%Y|%H:%M:%S")
    camera.start_preview()
    time.sleep(5)
    print data
    camera.capture('%s.jpg'%data)
    camera.stop_preview()
    time.sleep(1)
    sendMail(data)

سپس ، برخی از پیکربندی های PiCamera را انجام می دهیم.

camera = picamera.PiCamera()
camera.rotation=0
camera.awb_mode= 'auto'
camera.brightness=55

در نهایت while1 بی نهایت اجرا میشود و داده ها را از سنسور دما MLX90614 میخواند. اگر دما از محدوده تعیین شده بالاتر برود، تابع capture_image () فراخوانی می شود و عکس ثبت میشود و در نهایت تابع sendMail ایمیل را ارسال میکند.

اندازه گیری دما و ارسال هشدار ایمیل با PI

در نهایت فقط باید کد کامل را در برد رزبری پای خود بارگذاری کنید. کد پایتون تصویر را از دوربین میگیرد و در رزبری پای ذخیره میکند و همچنین آن را از طریق ایمیل ارسال میکند.

اندازه گیری دمای بدن بدون تماس با رزبری پای

ایمیل ارسالی از رزبری پای برای هشدار دما

موارد موجود در فایل : سورس کامل

دانلود فایل های پروژه

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

دوره آموزش الکترونیک
دوره آموزش آردوینو

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *