دماسنج بدون تماس با رزبری پای (کرونا – ارسال ایمیل با تصویر)
از زمان شیوع کرونا ، شناسایی افرادی که تحت تأثیر ویروس قرار گرفته اند بسیار دشوار شده است. برای حل این مسئله ، از دماسنج های مختلف برای اندازه گیری دمای بدن استفاده می شود. این دستگاه ها دارای سنسور دمای مادون قرمز بدون تماس هستند که می توانند دمای بدن را بدون هیچگونه تماس فیزیکی اندازه گیری کنند.
در این پروژه با برد رزبری پای یک دماسنج بدون تماس میسازیم و در صورت بالاتر بودن دمای بدن شخص از محدوده امن، یک ایمیل همراه با تصویر فرد مشکوک به کرونا برای شما ارسال میشود.
کار کامل این پروژه در فیلم زیر قابل مشاهده است :
قبلا پروژه های مختلفی را در زمینه کرونا راه اندازی کردیم:
- کنترل آسانسور با حرکت دست با برد آردوینو (بدون تماس – کرونا)
- ساخت دماسنج بدون تماس با آردوینو (مخصوص کرونا و ثبت در اکسل)
- پروژه دماسنج کرونا با موبایل اندروید و آردوینو (ثبت تصویر و خروجی اکسل)
- پروژه تب سنج کرونا ارزان قیمت با آردوینو و سنسور DS18B20
محتویات
قطعات مورد نیاز
- برد رزبری پای ( هر نسخه ای میتواند کار کند)
- دوربین Pi
- MLX90614 – سنسور مادون قرمز دما
Raspberry Pi: رزبری پای یک رایانه به اندازه کارت بانکی است که برای اهداف آموزشی طراحی شده است. با توجه به قیمت و مشخصات شگفت انگیز آن مانند wifi داخلی ، بلوتوث و GPIO برای مهندسان الکترونیک و علاقمندان بسیار محبوب شده است. جهت کسب اطلاعات بیشتر، مقاله رزبری پای چیست را بخوانید.
سنسور دما MLX90614 IR: سنسورهای زیادی در بازار موجود است که می توانند دما و رطوبت را اندازه گیری کند. آنچه این سنسور را از سایر سنسورها متمایز می کند این است که می تواند به ما دمای جسم را بدهد، اما بقیه سنسور ها دمای محیط را اندازه گیری میکنند.
اتصال سنسور MLX90614 به رزبری پای
در ابتدا ، ما کتابخانه و بسته های مورد نیاز برای ارتباط سنسور MLX90614 با رزبری پای را بارگیری خواهیم کرد.
مرحله 1: فعال کردن ارتباط I2C از تنظیمات Raspberry Pi.
sudo raspi-config را تایپ کنید و سپس به interfacing options بروید.
به گزینه I2C رفته و آن را فعال کنید.
مرحله 2: بسته / کتابخانه MLX90614 را با رفتن به آدرس https://pypi.org/project/PyMLX90614/#files بارگیری کنید ، سپس کلیک راست کرده و آدرس پیوند را کپی کنید.
به ترمینال رزبری پای بروید و 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 برقرار است یا خیر. اگر برقرار باشد شما باید خروجی زیر را در ترمینال مشاهده کنید.
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 اجرا خواهیم کرد. خروجی دریافتی من در زیر نشان داده شده است. من چندین بار برنامه را اجرا کردم تا بررسی کنم وقتی که دستم را روی آن قرار می دهم مقادیر تغییر می کنند یا نه.
ما با موفقیت ارتباط بین Raspberry Pi خود با MLX90614 را برقرار کردیم.
اتصال دوربین Pi به رزبری پای
مرحله 1: فعال کردن دوربین از تنظیمات Raspberry Pi.
sudo raspi-config را تایپ کنید و سپس به interfacing options بروید.
به Camera بروید و Camera را فعال کنید.
مطابق شکل زیر ، ماژول دوربین را وصل کنید.
مرحله 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
در نهایت فقط باید کد کامل را در برد رزبری پای خود بارگذاری کنید. کد پایتون تصویر را از دوربین میگیرد و در رزبری پای ذخیره میکند و همچنین آن را از طریق ایمیل ارسال میکند.
موارد موجود در فایل : سورس کامل