- المكونات مطلوبة
- واجهة MLX90614 مع Raspberry Pi
- واجهة كاميرا Pi مع Raspberry Pi
- إعداد بريد SMTP الإلكتروني مع Raspberry Pi
- كود Python لـ Pi لقراءة درجة الحرارة من MLX90614 وإرسال بريد إلكتروني مع صورة
- قياس درجة الحرارة وإرسال تنبيه بالبريد باستخدام PI
منذ تفشي كورونا ، أصبح من الصعب للغاية تحديد المتأثرين بالفيروس أم لا. لحل هذه المشكلة ، غالبًا ما تستخدم أجهزة قياس درجة حرارة الجسم. تحتوي هذه الأجهزة على مستشعرات درجة حرارة الأشعة تحت الحمراء التي لا تلامس والتي يمكنها قياس درجة حرارة الجسم دون أي اتصال جسدي.
هناك العديد من مسدسات درجة الحرارة المتاحة في السوق ، ولكن لا يقدم أي منها أي تنبيه أو إشعار بالبريد الإلكتروني للسلطات العليا لاتخاذ الإجراءات المناسبة عندما تتجاوز درجة الحرارة حدًا معينًا. في هذا المشروع ، سوف نتعامل مع مستشعر درجة حرارة الأشعة تحت الحمراء ونرسل تنبيهات البريد الإلكتروني مع صورة الشخص إذا تجاوزت درجة حرارة أي شخص القيمة المحددة.
في عالم اليوم ، أحدثت إنترنت الأشياء ثورة في حياتنا من خلال تطوير عدد من الأنظمة التي يمكن مراقبتها والتحكم فيها عن بُعد. في هذا المشروع ، سنستفيد من قوة إنترنت الأشياء وسنقوم ببناء جهاز مراقبة درجة الحرارة مع تنبيهات البريد الإلكتروني باستخدام Raspberry Pi و MLX90614 و PiCamera.
في السابق قمنا أيضًا ببناء موازين حرارة أخرى مماثلة لقياس درجة حرارة الجسم ، يمكنك العثور عليها هنا.
- ميزان حرارة رقمي قائم على اردوينو باستخدام MAX30205
- فحص درجة حرارة الجسم بدون تلامس باستخدام RFID و Arduino مع MLX90614
- مسدس ميزان الحرارة بالأشعة تحت الحمراء غير المتصل باستخدام Arduino
- ميزان حرارة مثبت على الحائط لا يلامس باستخدام اردوينو
- ميزان حرارة ذكي باستخدام اردوينو مع تطبيق Android
المكونات مطلوبة
نحن هنا نستخدم Raspberry Pi 3 Raspbian OS. تمت مناقشة جميع متطلبات الأجهزة والبرامج الأساسية مسبقًا ، يمكنك البحث عنها في مقدمة Raspberry Pi و Raspberry PI LED Blinking للبدء ، بخلاف ما نحتاج إليه:
- Raspberry Pi 3 (أي إصدار سيكون جيدًا).
- كاميرا باي.
- MLX90614 - مستشعر درجة حرارة الأشعة تحت الحمراء.
- توصيل الأسلاك.
- اللوح.
- مزود الطاقة (5 فولت ، 2 أمبير / 3 أمبير)
هذا المشروع بسيط إذا قسمنا المشروع إلى أجزاء.
- فهم وتواصل MLX90614 مع Raspberry Pi.
- الشروع في استخدام Pi Camera.
- إعداد بريد SMTP الإلكتروني مع Raspberry pi.
- تطوير وفهم الكود النهائي.
Raspberry Pi: Raspberry Pi هو كمبيوتر بحجم بطاقة الائتمان تم تصميمه للأغراض التعليمية. نظرًا لسعره ومواصفاته المذهلة مثل wifi على متن الطائرة ، وبلوتوث ، ورأس GPIO القابل للبرمجة ، وعدد الخيارات الممكنة لإنشاء تطبيق ، فقد تم اعتماده من قبل المطورين وهواة الإلكترونيات. يمكنك البحث عنه في مقدمة Raspberry Pi و Raspberry PI LED Blinking لبدء عملية التمهيد.
MLX90614 مستشعر درجة الحرارة بالأشعة تحت الحمراء: هناك العديد من المستشعرات المتوفرة في السوق والتي يمكن أن توفر لنا درجة الحرارة والرطوبة. ما يجعل هذا المستشعر مختلفًا عن جميع المستشعرات الأخرى هو أنه يمكن أن يمنحنا درجة حرارة الجسم وأن المستشعرات الأخرى تعطي درجة الحرارة المحيطة. لقد استخدمنا مستشعر DHT11 و LM35 على نطاق واسع للعديد من التطبيقات حيث يجب قياس الرطوبة الجوية أو درجة الحرارة.
ولكن هنا لصنع مسدس حراري لا يحتاج إلى اتصال جسدي ويمكنه قياس درجة حرارة الجسم بدلاً من درجة الحرارة المحيطة ، نستخدم MLX90614 القائم على الأشعة تحت الحمراء. لمعرفة المزيد حول دوائر مستشعر الأشعة تحت الحمراء والأشعة تحت الحمراء ، اتبع الرابط.
يتم تصنيع مستشعر MLX90614 بواسطة أنظمة Melexis Microelectronics المتكاملة ، وهو يعمل على مبدأ مستشعر الأشعة تحت الحمراء الحرارية لقياس درجة الحرارة. تتكون هذه المستشعرات من وحدتين مدمجتين داخليًا لإعطاء ناتج درجة الحرارة. الوحدة الأولى هي وحدة الاستشعار التي تحتوي على كاشف الأشعة تحت الحمراء تليها الوحدة الثانية التي تقوم بحساب البيانات باستخدام معالجة الإشارات الرقمية (DSP). يعمل هذا المستشعر وفقًا لقانون Stefan-Boltzmann الذي يفسر الطاقة التي يشعها الجسم الأسود من حيث درجة حرارته. بعبارات بسيطة ، يصدر أي جسم طاقة الأشعة تحت الحمراء وستكون شدتها متناسبة طرديًا مع درجة حرارة ذلك الجسم. يقوم مستشعر MLX90614 بتحويل القيمة الحسابية إلى 17 بت ADCويمكن الوصول إليه باستخدام بروتوكول الاتصال I2C. تقيس هذه المستشعرات درجة الحرارة المحيطة وكذلك درجة حرارة الجسم بمعايرة دقة تبلغ 0.02 درجة مئوية. لمعرفة المزيد حول ميزات مستشعر MLX90614 ، راجع ورقة البيانات MLX90614.
ميزات MLX90614:
- جهد التشغيل: 3.6 فولت إلى 5 فولت
- نطاق درجة الحرارة المحيطة: -40 درجة مئوية إلى 125 درجة مئوية
- نطاق درجة حرارة الجسم: -70 درجة مئوية إلى -382.2 درجة مئوية
- الدقة / المعايرة: 0.02 درجة مئوية
- 17 بت ADC.
- اتصالات I2C.
واجهة MLX90614 مع Raspberry Pi
أولاً ، سنقوم بتنزيل المكتبة والحزم المطلوبة لواجهة MLX90614 بنجاح.
الخطوة 1: تمكين I2C من إعداد Raspberry Pi.
اكتب sudo raspi-config ثم انتقل إلى خيارات الواجهة.
انتقل إلى خيار I2C وقم بتمكينه.
الخطوة 2: قم بتنزيل الحزمة / مكتبة MLX90614 بالانتقال إلى https://pypi.org/project/PyMLX90614/#files ، ثم انقر بزر الماوس الأيمن وانسخ عنوان الرابط.
انتقل إلى محطة RPI واكتب wget والصق الرابط المنسوخ كما هو موضح أدناه.
Wget
سيتم تنزيل المكتبة في اسم الملف المضغوط "PyMLX90614-0.0.3.tar.gz" . ثم استخرج المجلد بامتداد tar -xf file name أو استخدم الأمر أدناه للقيام بنفس الشيء.
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 باستخدام الدائرة الموضحة أدناه. تم تصميم دائرة Raspberry Pi MLX90614 أدناه باستخدام التآكل.
إذا تم إجراء التوصيلات والتثبيت بشكل صحيح ، فيمكننا التحقق مما إذا كنا نحصل على قيمة عنوان المستشعر على ناقل I2C باستخدام الأمر i2cdetect -y 1 .
إذا كان كل شيء يعمل كما هو متوقع ، فيمكننا رؤية الإخراج أدناه على جهازك.
يمثل 0x5A عنوان المستشعر كما هو مذكور في ورقة البيانات. يظهر مقتطف ورقة البيانات نفسه أدناه.
الآن ، سنقوم بتشغيل اسم ملف جديد mlxread.py ونكتب نموذجًا لبرنامج للتحقق من البيانات من المستشعر. يتم إعطاء رمز لنفسه أدناه.
من smbus2 استيراد SMBus من mlx90614 استيراد MLX90614 bus = SMBus (1) sensor = MLX90614 (bus، address = 0x5A) طباعة "Ambient Temperature:"، sensor.get_ambient () اطبع "Object Temperature:"، sensor.get_object_1 () bus. أغلق()
بمجرد إنشاء الملف ، سنقوم بتشغيله بامتداد python python mlxread.py. الإخراج الذي تلقيته مبين أدناه. قمت بتشغيل البرنامج عدة مرات للتحقق مما إذا كانت القيم تتغير عندما أحرك يدي عليه.
Woah ، لقد نجحنا في ربط MLX90614 مع Raspberry Pi الخاص بنا كما يمكنك التأكيد من الصورة أعلاه.
واجهة كاميرا Pi مع Raspberry Pi
الخطوة 1: تمكين الكاميرا من إعداد Raspberry Pi.
اكتب sudo raspi-config ثم انتقل إلى خيارات الواجهة.
انتقل إلى الكاميرا وقم بتمكين الكاميرا.
الآن ، قم بتوصيل وحدة الكاميرا كما هو موضح أدناه.
الخطوة 2: للتحقق مما إذا كانت الكاميرا متصلة بشكل صحيح ، نلتقط صورة اختبارية ونحفظها في سطح المكتب لدينا (نحن نستخدم إصدار Full GUI Raspbian OS)
raspistill -o Desktop / image.jpg
سيمكن هذا الكاميرا من النقر فوق صورة تحمل الاسم وتخزينها على سطح المكتب.
إعداد بريد SMTP الإلكتروني مع Raspberry Pi
في هذا القسم ، سوف نفهم كيف يمكننا تعيين حساب GMAIL الخاص بنا لإرسال رسائل تنبيه بمجرد أن تتجاوز درجة الحرارة القيمة المحددة مسبقًا.
SMTP هو بروتوكول بسيط لنقل البريد وهو بروتوكول طبقة تطبيق مسؤول عن خدمة البريد الإلكتروني باستخدام TCP / IP. يوفر القدرة على إرسال رسائل البريد الإلكتروني واستلامها ويتم إدارته بواسطة فريق مهام هندسة الإنترنت (IETF).
يعمل هذا البرنامج التعليمي فقط مع حسابات GMAIL ولتجنب أي أخطاء محتملة ، يوصى باستخدام حساب Gmail جديد.
افتراضيًا ، لا تسمح Google للمستخدمين بإرسال بريد إلكتروني باستخدام برنامج Python النصي. لإنجاح هذا الأمر ، يتعين علينا تمكين بعض التطبيقات الأقل أمانًا من خلال الدخول في إعدادات الحساب.
الخطوة 1: انتقل إلى الزاوية اليمنى وانقر فوق إدارة حساب Google الخاص بك.
الخطوة 2: انقر فوق الأمان وانتقل لأسفل إلى "وصول التطبيقات الأقل أمانًا".
الخطوة 3: تفعيل التطبيق الأقل أمانًا.
الخطوة 4: كرر مع معرف البريد الإلكتروني الآخر أيضًا لإرسال / استقبال البريد الإلكتروني من برنامج Python النصي.
الخطوة 5: قم بتنزيل الحزم المطلوبة.
سودو الرابطة بين الحصول على تثبيت ssmtp سودو الرابطة بين الحصول على تثبيت mailutils
إذا كنت تتلقى خطأ في تشغيل الأمر عن طريق النسخ واللصق ، فاكتبه يدويًا.
الخطوة 6: بعد الانتهاء من تثبيت جميع المكتبات ، نحتاج إلى إجراء تغييرات في ملف ssmtp.conf حيث يتعين علينا إدخال تفاصيل البريد الإلكتروني للمرسل
انتقل إلى sudo nano /etc/ssmtp/ssmtp.conf
قم بالتمرير لأسفل حتى النهاية والصق هذا ،
mailhub = smtp.gmail.com: 587 AuthUser = YourEmailAddress AuthPass = YourEmailPassword UseSTARTTLS = YES UseTLS = نعم
لقد قمت أيضًا بمشاركة لقطة شاشة لأجهزتي للرجوع إليها.
لقد استخدمت للتو لوحة توصيل لإجراء اتصالي ، يبدو إعداد أجهزتي شبيهًا به عند توصيل MLX90614 والكاميرا.
كود Python لـ Pi لقراءة درجة الحرارة من MLX90614 وإرسال بريد إلكتروني مع صورة
يقوم برنامج python بجميع العمليات اللازمة لقراءة بيانات المستشعر ، ومقارنتها بقيمة الحد الأدنى ، وتفويض البريد الإلكتروني ، ثم إرسال البريد الإلكتروني مع الصورة المرفقة. في البداية ، سوف نطلب إعلان البريد الإلكتروني للمكتبات والمرسل والمستقبل. يمكن إرسال البريد الإلكتروني عن طريق smtplib ، لكننا نريد فقط تنظيم البريد الإلكتروني بموضوع ونص ومرفق آخر ، ويتم ذلك بمساعدة ملحقات بريد الإنترنت متعددة الأغراض (MIME). يمكن العثور على الكود الكامل في أسفل هذه الصفحة.
استيراد RPi.GPIO مثل gpio استيراد picamera استيراد وقت استيراد smtplib من email.MIMEM استيراد متعدد الأجزاء MIMEM متعدد الأجزاء من البريد الإلكتروني. MIMEText استيراد MIMEText من البريد الإلكتروني. MIMEBase استيراد MIMEBase من برامج تشفير استيراد البريد الإلكتروني من email.mime.image استيراد MIMEImage من استيراد smbus2 استيراد SMBus من mlx90614
بعد ذلك ، نحدد عنوان البريد الإلكتروني للمرسل وعنوان البريد الإلكتروني للمستلم وموضوع البريد الإلكتروني والجسم ورسالة المرفقات.
fromaddr = "[email protected]" # قم بتغيير عنوان البريد الإلكتروني وفقًا لذلك toaddr = "[email protected]" mail = MIMEMultipart () mail = fromaddr mail = toaddr mail = "درجة الحرارة تتجاوز التنبيه" body = "يرجى العثور على المرفق صورة"
بعد ذلك ، نقوم بإنشاء وظيفة يمكننا من خلالها إرسال بريد إلكتروني.
def sendMail (data): mail.attach (MIMEText (body، 'normal')) طباعة البيانات 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.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
وأخيرًا ، لدينا حلقة (1) تعمل بلا حدود. سيقرأ البيانات من مستشعر درجة الحرارة MLX90614 وإذا تجاوزت درجة الحرارة القيمة المحددة ، فسيتم استدعاء وظيفة capture_image () والتي تستدعي بعد ذلك وظيفة sendMail (data) لإرسال التقاط الصورة عبر البريد الإلكتروني.
قياس درجة الحرارة وإرسال تنبيه بالبريد باستخدام PI
عندما تكون الأجهزة والبرامج جاهزة ، ما عليك سوى تشغيل رمز python (الوارد أدناه) على جهاز pi. سيطبع قيمة درجة الحرارة المقروءة من المستشعر كما هو موضح أدناه.
إذا تجاوزت درجة حرارة الجسم درجة حرارة العتبة ، فسيقوم برنامج python الخاص بنا بالتقاط صورة من الكاميرا وحفظها على raspberry pi ومشاركتها عبر البريد الإلكتروني. يظهر أدناه نموذج بريد إلكتروني تم إرساله من Raspberry Pi.
يمكن أيضًا العثور على العمل الكامل للمشروع في الفيديو المرتبط أدناه. آمل أن تكون قد استمتعت بالمقال ، إذا كان لديك أي أسئلة ، فيرجى تركها في التعليقات أدناه أو يمكنك أيضًا استخدام منتدياتنا لنشر أسئلتك والتواصل مع المجتمع.