پروژه الکترونیکپروژه های پایتونپروژه های رزبری پای

آموزش برقراری تماس و ارسال پیامک با رزبری پای و ماژول Sim900

سلام. آموزش برقراری تماس و ارسال پیامک با رزبری پای و ماژول Sim900 را آماده کردیم.

پروژه زنگ زدن و اس ام اس با برد Raspberry Pi و سیم 900

در این پروژه رزبری پای قصد داریم یک تلفن همراه ساده با استفاده از برد Raspberry Pi بسازیم که در آن از ماژول GSM برای برقراری تماس یا پاسخ دادن به تماس و ارسال و دریافت پیام کوتاه استفاده میشود. همچنین این تلفن دارای میکروفن و بلندگو است.

در این پروژه ساخت موبایل، ما از ماژول GSM و Raspberry Pi 3 برای کنترل کل سیستم و تمام اجزای موجود در این سیستم استفاده کرده ایم. یک صفحه کلید آلفانومریک 4×4 برای گرفتن انواع ورودی مانند: شماره تلفن همراه ، نوع پیام ها ، برقراری تماس ، دریافت تماس ، ارسال پیام کوتاه ، خواندن پیام کوتاه و … استفاده می شود. ماژول GSM SIM900A برای برقراری ارتباط با شبکه برای تماس و پیام استفاده می شود. از LCD 16×2 برای نمایش پیام ها ، دستورالعمل ها و هشدارها استفاده می شود. Alphanumeric روشی است برای وارد کردن اعداد و حروف هر دو با استفاده از یک صفحه کلید استفاده میشود.

فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

موبایل ساخته شده با رزبری پای چه ویژگی هایی دارد ؟

1. برقراری تماس: برای برقراری تماس با استفاده از تلفن مبتنی بر Raspberry Pi ، باید “C” را فشار داده و سپس باید شماره موبایل را که می خواهیم با آن تماس برقرار کنیم، وارد کنیم. با استفاده از صفحه کلید شماره وارد می شود. پس از وارد کردن شماره ، مجدداً باید “C” را فشار دهیم. اکنون Raspberry Pi برای برقراری تماس با شماره وارد شده خودش دستور زیر را اجرا میکند.

ATDxxxxxxxxxx; <Enter>     xxxx شماره مورد نظر شما است

2. دریافت تماس: دریافت تماس بسیار آسان است. وقتی شخصی به شماره سیم کارت شما، که در ماژول GSM قرار داده شده است، تماس می گیرد، سیستم شما پیام “Incoming…” را روی ال سی دی کاراکتری به همراه شماره فرد نشان می دهد. برای جواب دادن به این تماس، فقط باید “A” را فشار دهیم. هنگامی که “A” را فشار می دهیم ، Raspberry Pi دستور زیر را به ماژول GSM ارسال می کند:

ATA <enter>

3. ارسال پیامک: وقتی می خواهیم با استفاده از تلفن رزبری پای خود پیامکی بفرستیم، باید “D” را فشار دهیم. سیستم شماره گیرنده را درخواست می کند، یعنی “به چه کسی” می خواهیم اس ام اس ارسال کنیم. بعد از وارد کردن شماره ، باید دوباره “D” را فشار دهیم و اکنون ال سی دی از شما متن پیام را می خواهد. حال باید با استفاده از صفحه کلید، پیام را تایپ کنیم، و بعد از وارد کردن پیام باید دوباره “D” را فشار دهیم تا پیام کوتاه ارسال شود. سپس رزبری پای خودش این دستور را پردازش میکند و به ماژول سیم 900 میفرستد.

AT+CMGF=1 <enter>
AT+CMGS=”xxxxxxxxxx” <enter>   xxxx شماره مورد نظر شماست

4. دریافت و خواندن پیام کوتاه: این ویژگی نیز ساده است. ماژول Sim 900 پیامکی را دریافت کرده و آن را در سیم کارت ذخیره می کند. و Raspberry Pi بطور مداوم وضعیت پیامک های دریافتی را از طریق UART نظارت می کند. هر زمان که پیام جدید وجود داشته باشد، ال سی دی متن “New message” را نشان می دهد و پس از آن فقط باید “B” را فشار دهیم تا پیامک نمایش داده شود. نشانه پیامک دریافت شده با دستور زیر است :

+CMTI: “SM”,6  شش مکانی است که پیامک در سیم کارت قرار گرفته است

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

AT+CMGR=<SMS stored location><enter>

توضیحات شماتیک پروژه

شماتیک این پروژه در تصویر زیر نشان داده شده است.

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

پروژه زنگ زدن و اس ام اس با برد Raspberry Pi و سیم 900

شماتیک توضیحات خاصی ندارد قطعات مدار به سادگی به هم متصل شده اند.

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

  1. برد رزبری پای (هر مدل)
  2. ماژول GSM Sim900
  3. ال سی دی کاراکتری 16*2
  4. صفحه کلید 4×4
  5. پتانسیومتر 10 کیلو اهم
  6. بلندگو
  7. میکروفن
  8. آمپلی فایر (اختیاری)

برنامه نویسی ماژول SIM900 با رزربری پای

در این پروژه ما از زبان پایتون برای برنامه نویسی Raspberry PI استفاده میکنیم. کد کامل در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های کد را توضیح میدهیم.

در اینجا ما برای وارد کردن شماره توسط صفحه کلید از تابع def keypad(): استفاده میکنیم. و برای وارد کردن حروف الفبا از Def alphaKeypad () استفاده میکنیم. مثلا اگر کلید 2 را دو بار فشار دهیم اول a و سپس b را نمایش میدهد. و اگر دیگر دکمه را فشار ندهیم همان b ثبت میشود و اگر بار دیگر فشار دهیم c نمایش داده میشود. (مانند گوشی های دکمه ای قدیمی که با کیبورد عددی، حروف نیز تایپ میشد)

def keypad():
   for j in range(4):
     gpio.setup(COL[j], gpio.OUT)
     gpio.output(COL[j], 0)
     ch=0
     for i in range(4):
       if gpio.input(ROW[i])==0:
         ch=MATRIX[i][j]
         return ch
         while (gpio.input(ROW[i]) == 0):
           pass
     gpio.output(COL[j],1)
def alphaKeypad():
    lcdclear()
    setCursor(x,y)
    lcdcmd(0x0f)
    msg=""
    while 1:
        key=0
        count=0
        key=keypad()
        if key == '1':
            ind=0
            maxInd=6
            Key='1'
            getChar(Key, ind, maxInd)
            .... .....
            ..... .....

اول از همه، در این اسکریپت پایتون ما چند کتابخانه را فراخوانی میکنیم و سپس پین های ال سی دی، صفحه کلید و … را تعریف میکنیم.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
import RPi.GPIO as gpio // کتابخانه پین های GPIO
import serial // کتابخانه ارتباط سریالی
import time // کتابخانه تاخیر

msg=""
alpha="1!@.,:?ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 *#"
x=0
y=0

MATRIX = [ // تعریف کلید های کیبورد
            ['1','2','3','A'],
            ['4','5','6','B'],
            ['7','8','9','C'],
            ['*','0','#','D']
         ]
ROW = [21,20,16,12] // پین های ردیف های کیبورد
COL = [26,19,13,6]// پین های ستون های کیبورد
... .....
..... .....

سپس نوع پین ها را تعیین میکنیم.

gpio.setwarnings(False) // نا دیده گرفتن هشدار ها
gpio.setmode(gpio.BCM)
gpio.setup(RS, gpio.OUT) // تنظیم پین های ال سی دی به عنوان خروجی
gpio.setup(EN, gpio.OUT)
gpio.setup(D4, gpio.OUT)
gpio.setup(D5, gpio.OUT)
gpio.setup(D6, gpio.OUT)
gpio.setup(D7, gpio.OUT)
gpio.setup(led, gpio.OUT) // تنظیم پین ال ای دی
gpio.setup(buz, gpio.OUT) // تنظیم پین بازر
gpio.setup(m11, gpio.OUT) // تنظیم پین
gpio.setup(m12, gpio.OUT)
gpio.setup(button, gpio.IN) // تنظیم پین دکمه
gpio.output(led , 0)
gpio.output(buz , 0)
gpio.output(m11 , 0)
gpio.output(m12 , 0)

سپس ارتباط سریال را پیکربندی میکنیم و سرعت آن را 9600 قرار میدهیم.

Serial = serial.Serial("/dev/ttyS0", baudrate=9600, timeout=2)

سپس ما نیاز داریم برخی توابع را بنویسیم تا بتوانیم ال سی دی را کنترل کنیم. تابع def lcdcmd(ch): برای ارسال دستور به ال سی دی استفاده میشود. تابع lcdwrite(ch) برای ارسال داده ها به ال سی دی استفاده میشود. lcdclear(): برای پاک کردن LCD استفاده میشود. def setCursor(x,y): نیز برای تعیین موقعیت نشانگر استفاده میشود. و در نهایت lcdprint(Str): برای نوشتن رشته های متن روی ال سی دی استفاده میشود

def lcdcmd(ch): 
  gpio.output(RS, 0)
  gpio.output(D4, 0)
  gpio.output(D5, 0)
  gpio.output(D6, 0)
  gpio.output(D7, 0)
  if ch&0x10==0x10:
    gpio.output(D4, 1)
    .... .....
    ..... ....
def lcdwrite(ch): 
  gpio.output(RS, 1)
  gpio.output(D4, 0)
  gpio.output(D5, 0)
  gpio.output(D6, 0)
  gpio.output(D7, 0)
  if ch&0x10==0x10:
    gpio.output(D4, 1)
  if ch&0x20==0x20:
    gpio.output(D5, 1)
    .... .....
    ..... ....
def lcdclear():
  lcdcmd(0x01)
 
def lcdprint(Str):
  l=0;
  l=len(Str)
  for i in range(l):
    lcdwrite(ord(Str[i]))
def setCursor(x,y):
    if y == 0:
        n=128+x
    elif y == 1:
        n=192+x
    lcdcmd(n)

سپس باید بعضی تابع ها را برای برقراری تماس و ارسال پیامک بنویسیم.

تابع Def call (): برای برقراری تماس استفاده می شود. و عملکرد def ReceCall (data): برای نمایش پیام و شماره ورودی در LCD استفاده می شود. attendCall(): نیز برای پاسخ دادن به تماس استفاده میشود.

تابع def sendSMS (): برای نوشتن و ارسال پیام به کمک عملکرد alphaKeypad () استفاده می شود. و عملکرد def ReceSMS (data): برای دریافت محل پیامک و استخراج آن استفاده میشود. در آخر Def readSMS (index): برای نمایش پیام بر روی LCD استفاده می شود.

فیلم عملکرد پروژه

بنابراین اینگونه است که می توانید Raspberry Pi خود را با کمک ماژول GSM به تلفن همراه تبدیل کنید. این تلفن هوشمند Raspberry Pi Touch Screen را نیز بررسی کنید.

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

موارد موجود در فایل : سورس ، شماتیک پروژه 

برای دانلود فایل ها باید عضو آیرنکس باشید، تنها چند ثانیه زمان لازم است.

ورود / ثبت نام

[lrm_form default_tab=”register” logged_in_message=””]

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید
امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
محمد رحیمی

محمد رحیمی

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

4 نظر

  1. سلام خیلی ممنون از این آموزش
    ببخشید خواهشا راهنماییم کنید.
    این سایت با چه چیزی ساختید؟
    و این قالب سایت اسمش چیه از کجا می تونم تهیش کنم؟
    یک سایت اینطوری می خوام با وردپرس بسازم.
    خواهشا جواب بدید.

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

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