اصنع منبه لرسائل البريد الإلكتروني باستخدام الراسبيري باي

مبتدئ

image_pdf

مقدمة

يعتبر المنبه من الوسائل التي يستخدمها الأفراد لتذكيرهم بمواعيدهم المهمة في السابق اعتاد الناس على وضع الساعة الرملية وفي وقتنا الحاضر أصبحت الأجهزة الذكية محلًا لها، في هذا الدرس ستتعلم كيفية صناعة منبه لرسائل البريد الإلكتروني باستخدام الراسبيري باي والثنائي المشع للضوء.

منبه لرسائل البريد الإلكتروني

المواد والأدوات

raspberry-pi-e-mail-notifier-using-leds

 1× راسبيري باي

raspberry-pi-e-mail-notifier-using-leds

 1× سلك (HDMI)

raspberry-pi-e-mail-notifier-using-leds

1× محول تيار (5V-2A)

منبه لرسائل البريد الإلكتروني

 1× كرت ذاكرة

منبه لرسائل البريد الإلكتروني

1× لوحة تجارب – حجم كبير

منبه لرسائل البريد الإلكتروني

حزمة أسلاك توصيل (ذكر – أنثى)

منبه لرسائل البريد الإلكتروني

 1× ثنائي مشع للضوء أحمر (LED)

 

منبه لرسائل البريد الإلكتروني1× ثنائي مشع للضوء أخضر (LED)

raspberry-pi-e-mail-notifier-using-leds

2× مقاومة 220 Ω

توصيل الدائرة

وصل الدائرة الكهربائية كما في الشكل حتى تتمكن من صنع منبه لرسائل البريد الإلكتروني.

للمزيد حول توصيل الراسبيري باي مع الثنائي المشع للضوء يمكنك الرجوع للدرس نظام التحكم ومراقبة الإضاءه عن بعد

منبه لرسائل البريد الإلكتروني

تهيئة الراسبيري باي

أولا، سوف تحتاج إلى تثبيت نظام الراسبيان على الراسبيري باي إذا لم تكن قد فعلت ذلك قم بالإطلاع على  الدرس الأول نظام تشغيل الراسبيري باي

وبعد تثبيت النظام، يمكنك تهيئة النظام من خلال الرجوع  للدرس الثاني تهيئة نظام التشغيل

افتح الشاشة السوداء LXterminal للبدء باستخدام الراسبيري باي.

raspberry-pi-e-mail-notifier-using-leds

للبدء، قم بإستخدام الـ Termial  لتحديث الراسبيري باي إلى أحدث إصدار.

sudo apt-get update
sudo apt-get upgrade

ثم أعد تشغيل الراسبيري باي.

reboot

حمّل البايثون على الراسبيري باي.

sudo apt install python3 idle3

بعد ذلك حمّل مكتبة adafruitblinka.

sudo pip3 install adafruit-blinka

حمّل آخر مكتبة imapclient.

sudo pip3 install imapclient

الكود البرمجي

ستشاهد في قائمة Programming وجود برنامج جديد وهو Python 3 (IDLE) انقر عليه.

التحكم بالمصابيح

 من قائمة File اختر  New File.

انسخ الكود لنظام منبه لرسائل البريد الإلكتروني والصقه بالملف الفارغ لكن هناك أمور مهمة عليك العمل بها قبل رفع الكود البرنامجي إلى الراسبيري باي.

import time
import board
from imapclient import IMAPClient
from digitalio import DigitalInOut, Direction HOSTNAME = 'imap.gmail.com' MAILBOX = 'Inbox' MAIL_CHECK_FREQ = 10 # check mail every 10 seconds # The following three variables must be customized for this # script to work USERNAME = 'Your Email' PASSWORD = 'Your Passsword' NEWMAIL_OFFSET = 0 # setup Pi pins as output for LEDs green_led = DigitalInOut(board.D18) red_led = DigitalInOut(board.D23) green_led.direction = Direction.OUTPUT red_led.direction = Direction.OUTPUT def mail_check(): # login to mailserver server = IMAPClient(HOSTNAME, use_uid=True, ssl=True) server.login(USERNAME, PASSWORD) # select our MAILBOX and looked for unread messages unseen = server.folder_status(MAILBOX, ['UNSEEN']) # number of unread messages # print to console to determine NEWMAIL_OFFSET newmail_count = (unseen[b'UNSEEN']) print('%d unseen messages' % newmail_count) if newmail_count > NEWMAIL_OFFSET: green_led.value = True red_led.value = False else: green_led.value = False red_led.value = True time.sleep(MAIL_CHECK_FREQ) while True: mail_check()
شرح الكود البرمجي

هنا نستعدي المكتبات الضرورية لنظام منبه لرسائل البريد الإلكتروني مثل time و board و imapclient و DigitalInOut, Direction.

import time
import board
from imapclient import IMAPClient
from digitalio import DigitalInOut, Direction

في HOSTNAME يتم تعريف اسم المستضيف جميل Gmail.

وفي MAILBOX يتم توضيح أي المجلدات التي سيتم فحصها هنا سنستخدم المجلد Inbox.

HOSTNAME = 'imap.gmail.com'
MAILBOX = 'Inbox'

المتغير NEWMAIL_OFFSET يحمل القيمة 0 وستستخدم هذه القيمة فيما بعد لمقارنة عدد رسائل البريد الالكتروني.

NEWMAIL_OFFSET = 0

في المتغير MAIL_CHECK_FREQ يتم تعيين المدة الزمنية التي سيتم بها فحص مجلد Inbox هنا سيتم فحصه كل ثانية للتأكد من وجود رسائل جديدة أم لا.

MAIL_CHECK_FREQ = 1 # check mail every 1 second

في المتغير USERNAME ضع الايميل الخاص بك.

وفي المتغير PASSWORD ضع كلمة السر.

USERNAME = 'Your Email'
PASSWORD = 'Your Passsword'

في المتغير green_led يتم تعريف المدخل المستخدم لربط الثنائي المشع للضوء الأخضر وهو GPIO 18.

 وفي المتغير red_led يتم تعريف المدخل المستخدم لربط الثنائي المشع للضوء الأحمر وهو GPIO 23.

green_led = DigitalInOut(board.D18)
red_led = DigitalInOut(board.D23)

في الدالة def mail_check سيتم أخذ الصلاحية لتسجيل الدخول للبريد الالكتروني بناء على البيانات الموجودة في المتغيرين USERNAME  و PASSWORD.

def mail_check():
# login to mailserver
server = IMAPClient(HOSTNAME, use_uid=True, ssl=True)
server.login(USERNAME, PASSWORD)

في المتغير unseen يتم فحص مجلد Inbox.

unseen = server.folder_status(MAILBOX, ['UNSEEN'])

في المتغير newmail_count يتم حساب عدد الرسائل التي لم تقرأ بعد.

سينطبع على الشاشة unseen messages وبجانبها عدد الرسائل التي لم تقرأ وسيتم تحديث المتغير كل ثانية.

newmail_count = (unseen[b'UNSEEN'])
print('%d unseen messages' % newmail_count)

raspberry-pi-e-mail-notifier-using-leds

إذا كان عدد الرسائل المرسلة المخزنة في NEWMAIL_OFFSET أكبر من القيمة المعينة في المتغير NEWMAIL_OFFSET سيضيء الثنائي المشع للضوء الأخضر ليفيد الأفراد بوجود رسائل جديدة.

وإذا كان أقل سيضيء الثنائي المشع للضوء الأحمر وهكذا يستمر النظام.

if newmail_count > NEWMAIL_OFFSET:
green_led.value = True
red_led.value = False
else:
green_led.value = False
red_led.value = True

time.sleep(MAIL_CHECK_FREQ)

يمكنك رفع الكود البرمجي واختبار صحة الخطوات.

لا تنس فصل وحدة مزود الطاقة بعد الانتهاء من استخدام نظام منبه لرسائل البريد الإلكتروني.

 

X
Product added to the cart