با استفاده از ایمیل از حرکت سوژه ها مطلع شوید.

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

با ساخت این پروژه، با اتصال سنسور حرکت PIR به آردوینو و همچنین با استفاده از برنامه پایتون، میتوانید از حرکت سوژه ها توسط ایمیلتان مطلع شوید و گامی به سوی کاهش شکاف دنیای مجازی و دنیای واقعی بردارید.
آردوینو قلب این پروژه است. وقتی که حرکتی آشکار شود، پیام را از سنسور PIR دریافت می کند و از طریق پورت USB به کامپیوتر دستور می دهد تا یک ایمیل ارسال کند.

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


برای ساخت این پروژه، علاوه بر یک کامپیوتر متصل به اینترنت برای ارسال ایمیل، به قطعات زیر نیاز دارید

آردوینو UNO R3 × 1
سنسور PIR × 1
برد بورد × 1
سیم جامپر × 1

academy 940809 email sending movement detector 02

 

گام دوم: سیم بندی و اتصالات


سنسور PIR تنها چیزی است که باید به آردوینو وصل کنید. راه ساده این است که سنسور PIR را مستقیما به آردوینو وصل کنید. با این وجود سیم هایی که به آردوینو می روند کمی شل هستند، بنابراین بهتر است برای اتصال این دو، از سیم بندی بردبورد که در شکل زیر نشان داده شده است، استفاده کنید.

academy 940809 email sending movement detector 03

گام سوم:کد آردوینو


با حرکت سوژه، آردوینو یک پیام از طریق اتصالUSB به کامپیوتر ارسال می کند. این عکس العمل می تواند باعث ایجاد تعداد زیادی ایمیل شود. به همین دلیل، اگر فاصله ی زمانی حرکت سوژه از مقدار تعیین شده ای کمتر باشد، آردوینو پیام متفاوتی را می فرستد تا از ارسال تعداد زیادی ایمیل های تکراری جلوگیری کند.


int pirPin = 7;
int minSecsBetweenEmails = 60; // 1 min
long lastSend = -minSecsBetweenEmails * 1000l; 
void setup()
{
  pinMode(pirPin, INPUT);
  Serial.begin(9600);
}
void loop()
{
  long now = millis();
  if (digitalRead(pirPin) == HIGH)
  {
    if (now > (lastSend + minSecsBetweenEmails * 1000l))
    {
      Serial.println("MOVEMENT");
      lastSend = now;
    }
    else
    {
      Serial.println("Too soon");
    }
  }
  delay(500);
}
 


متغیر “minSecsBetweenEmails” حداقل فاصله ی زمانی بین ایمیل های ارسالی است و به هر مقداری که احساس می کنید منطقی می باشد، قابل تغییر است. در اینجا روی 60 ثانیه تنظیم شده است، بنابراین در هر دقیقه بیشتر از یک ایمیل ارسال نخواهد شد.
متغیر “lastSend” برای پیگیری آخرین درخواست ارسالی از طریق ایمیل استفاده می شود. این متغیر با یک عدد منفی مقداردهی اولیه می شود و معادل منفی تعداد میلی ثانیه های مشخص شده در متغیر “minSecsBetweenEmails” است. این متغیر تضمین می کند که سنسور PIR می تواند بلافاصله بعد از آشکارسازی حرکت ،آردوینو را تحریک کند.
برای به دست آوردن تعداد میلی ثانیه ها از وقتی که آردوینو شروع به ارسال پیام می کند و مقایسه آن با آخرین زمانی که پیامی فرستاده شده است، در داخل حلقه از تابع “millis()” استفاده می شود. فقط اگر تعداد ثانیه های مشخصی از زمان آخرین ارسال گذشته باشد پیام “MOVEMENT” ارسال می شود. در غیر این صورت حتی اگر حرکتی آشکار شود، پیام “Too soon” ارسال خواهد شد.
قبل از بارگذاری برنامه پایتون، می توانید سیستم آردوینو را فقط با استفاده از باز کردن سریال مانیتور (Serial Monitor) روی IDE آردوینو آزمایش کنید.

 

academy 940809 email sending movement detector 04

گام چهارم: نصب پایتون و PySerial


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

نصب پایتون روی ویندوز


آخرین نسخه فایل نصبی برنامه پایتون برای ویندوز را از اینجا دریافت کنید.
اگر از 3 Python استفاده کنید، در هنگام کار با PySerial روی ویندوز مشکلاتی به وجود می آید. برای رفع این مشکلات از 2 Python استفاده کنید.

academy 940809 email sending movement detector 05


هنگامیکه پایتون نصب شد، در Start menu کامپیوتر شما گروهی از نرم افزارها قابل مشاهده خواهند بود. باید تغییراتی را در ویندوز اعمال کنید تا به شما اجازه دهد تا از Command Prompt پایتون استفاده کنید. برای نصب PYserial به این تغییرات نیاز است. حالا باید مواردی را به PATH environment variable اضافه کنید.

academy 940809 email sending movement detector 06


برای انجام این کار به Control panel ویندوز بروید و گزینه System Properties را انتخاب کنید. سپس از قسمت Advance روی گزینه Environment Variables کلیک کنید و از پنچره باز شده در قسمت System Variables گزینه “Path” را انتخاب کنید. در مرحله ی بعد گزینه ی “Edit” را انتخاب کنید و در قسمت “Variable Value” بدون پاک کردن متن هایی که وجود دارد متن ";C:\Python27" را اضافه کنید.
فراموش نکنید که ";" باید قبل از نوشتن متن جدید ذکر شود.
برای اطمینان از صحت عملکرد آن، یک Command Prompt (DOS Prompt) جدید باز کنید و دستور “python” را وارد کنید. شما باید چیزهایی شبیه به این تصویر ببینید:

academy 940809 email sending movement detector 07

 

 نصب PySerial


از هر سیستم عاملی که استفاده می کنید، برای PySerial 2.6 بسته .tar.gz را از اینجا دانلود و نصب کنید.


بعد از دانلود یک فایل به نام pyserial-2.7.tar.gz دارید. اگر از ویندوز استفاده می کنید، باید فایل را از حالت فشرده خارج کنید. متاسفانه این یک فایل Zip عادی نیست، بنابراین برای خارج کردن آن از حالت فشرده، به نرم افزاری به نام 7-zip نیاز دارید.



اگر از مک یا لینوکس استفاده می کنید، یک Terminal session باز کنید و در پوشه ای که pyserial-2.6.tar.gz دانلود شده "cd" را قرار دهید. سپس برای باز کردن پوشه نصب از دستور زیر استفاده کنید.


$ tar -xzf pyserial-2.6.tar.gz 
 


بقیه روش ها در تمام سیستم عامل ها به صورت یکسان است. از command Prompt / Terminal session و “cd” در پوشه pyserial-2.6 استفاده کنید، سپس دستور زیر را اجرا کنید:


sudo python setup.py install

 

academy 940809 email sending movement detector 08

گام پنجم : کد پایتون


حالا باید برنامه پایتون را تولید کنید. برای انجام اینکار کد زیر را در فایلی به نام “movement.py” کپی کنید. روی مک و لینوکس می توانید از ویرایشگر “nano” استفاده کنید. روی ویندوز ساده ترین روش تولید فایل استفاده از ویرایشگر پایتون 'IDLE” است که از گروه نرم افزارهای پایتون در start menu قابل دسترسی است.


import time
import serial
import smtplib
 
TO = 'این آدرس ایمیل توسط  spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید'
GMAIL_USER = 'این آدرس ایمیل توسط  spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید'
GMAIL_PASS = 'putyourpasswordhere'
 
SUBJECT = 'Intrusion!!'
TEXT = 'Your PIR sensor detected movement'
  
ser = serial.Serial('COM4', 9600)
 
def send_email():
    print("Sending Email")
    smtpserver = smtplib.SMTP("smtp.gmail.com",587)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo
    smtpserver.login(GMAIL_USER, GMAIL_PASS)
    header = 'To:' + TO + '\n' + 'From: ' + GMAIL_USER
    header = header + '\n' + 'Subject:' + SUBJECT + '\n'
    print header
    msg = header + '\n' + TEXT + ' \n\n'
    smtpserver.sendmail(GMAIL_USER, TO, msg)
    smtpserver.close()
   
while True:
    message = ser.readline()
    print(message)
    if message[0] == 'M' :
        send_email()
    time.sleep(0.5)


قبل از اجرای برنامه پایتون، باید تغییراتی در پیکربندی اعمال شود که همه این ها در کد وجود دارد.
برنامه فرض می کند که تمام ایمیل ها از اکانت gmail فرستاده می شوند. بنابراین اگر gmail ندارید بهتر است یک اکانت بسازید ، حتی اگر فقط برای این پروژه استفاده شود.
در کد بالا، در مقابل متغیر “TO” آدرس ایمیلی را که میخواهید پیغام ها به آن ارسال شود را یادداشت کنید. در مقابل متغیر “GMAIL_USER” هم آدرس gmail خود و رمز عبور آن را یادداشت کنید که برای بازیابی ایمیل های شما استفاده می شود.
اگر دوست دارید متن پیامی که ارسال می شود را تغییر بدهید می توانید از قسمت text این کار را انجام دهید.
همچنین شما باید پورت سریال آردوینو را مانند خط زیر ویرایش کنید:


ser = serial.Serial('COM4', 9600)


برای ویندوز عبارتی شبیه “COM4” و برای مک و لینوکس عبارتی شبیه به “/dev/tty.usbmodem621” میبینید. با باز کردن IDE آردوینو این عبارت ها را که در گوشه پایین سمت راست آن نوشته شده است، پیدا کنید. این موضوع نشان دهنده ی آن است که پورت تان به آردوینو متصل است.

academy 940809 email sending movement detector 9


زمانی که این تغییرات را اعمال کردید، می توانید برنامه را از Command Prompt / Terminal با دستور زیر اجرا کنید:
python movement.py
هنگامی که حرکتی در مقابل سنسور رخ دهد، شما چیزی شبیه به عکس زیر دریافت می کنید و پس از مدت کوتاهی پیام مورد نظرتان به ایمیل مقصد خواهد رسید.

academy 940809 email sending movement detector 10


توجه کنید که “Too soon” نیز در پیام ها وجود دارد.

حالا که شما با استفاده از آردوینو موفق به ارسال ایمیل شدید، می توانید این سیستم را روی سنسور های دیگر هم جایگزین کنید. مثلا شاید بخواهید گزارش ساعتی از دما را به ایمیل خود ارسال کنید.
همچنین می توان سنسور PIR را مستقیما به آردوینو متصل کرد و با چراغ های LED پیام های حرکتی را هشدار داد.
منبع : سایت adafruit

 

افزودن نظر
  • هیچ نظری یافت نشد

دسته بندی ها

Icon Arduino
آردوینو
Icon Raspberry Pi
رسپبری پای
Icon Launchpad
لانچ پد
Icon St
برد های دیسکاوری
Icon Sensors
سنسورها
Icon Other
سایر پروژه ها

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


محبوبترین آموزش ها


شماره تماس: ۵۹ ۸۳ ۰۲ ۸۸ ۰۲۱

info@caferobot.ir

ایران | تهران

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

ورود

ثبت


x

مطلب مفیدی بود؟

برای دریافت جدیدترین آموزش ها و خبرها در ایمیل خود، در خبرنامه کافه ربات عضو شوید