- المكونات المطلوبة:
- شرح العمل:
- شرح أربع ميزات للهاتف المحمول Raspberry Pi:
- مخطط الدائرة وشرحها:
- شرح البرمجة:
في مشروع DIY هذا ، سنقوم ببناء هاتف محمول بسيط باستخدام Raspberry Pi ، حيث يتم استخدام وحدة GSM لإجراء المكالمة أو الرد عليها وإرسال أو قراءة الرسائل القصيرة ، كما أن هاتف Raspberry Pi هذا به ميكروفون ومكبر صوت للتحدث حول هذا الهاتف . سيعمل هذا المشروع أيضًا كواجهة مناسبة لوحدة GSM مع Raspberry Pi ، مع كل الكود اللازم لتشغيل أي وظائف أساسية للهاتف. في السابق قمنا ببناء نفس النوع من الهواتف المحمولة البسيطة باستخدام Arduino ، تحقق هنا
المكونات المطلوبة:
- Raspberry Pi 3 (أي طراز)
- وحدة GSM
- 16x2 LCD
- لوحة مفاتيح 4x4 (يمكن للمستخدم استخدام لوحة مفاتيح غشائية)
- 10 كيلو وعاء
- اللوح
- توصيل سلك العبور
- مزود الطاقة
- مكبر الصوت
- ميكروفون
- شريحة جوال
- مكبر الصوت
- دائرة مضخم الصوت (اختياري)
شرح العمل:
في مشروع Raspberry Pi Mobile Phone هذا ، استخدمنا وحدة GSM و Raspberry Pi 3 للتحكم في ميزات النظام بالكامل وربط جميع المكونات في هذا النظام. A 4X4 أبجدية لوحة المفاتيح يستخدم لأخذ كل نوع من المدخلات مثل: أدخل رقم الجوال، الرسائل النوع، مكالمة، وتلقي مكالمة، إرسال الرسائل القصيرة، وقراءة SMS الخ GSM وحدة SIM900A يستخدم للتواصل مع شبكة الاتصال والمراسلة هدف. لقد قمنا أيضًا بتوصيل ميكروفون ومكبر صوت للمكالمات الصوتية وصوت الرنين ويتم استخدام شاشة LCD مقاس 16 × 2 لعرض الرسائل والتعليمات والتنبيهات.
الأبجدية الرقمية هي طريقة لإدخال الأرقام والحروف الأبجدية باستخدام نفس لوحة المفاتيح. في هذه الطريقة ، قمنا بتوصيل لوحة مفاتيح 4x4 مع Raspberry Pi وكتابة رمز لقبول الحروف الهجائية أيضًا ، تحقق من الرمز في قسم الكود أدناه.
العمل في هذا المشروع سهل. سيتم تنفيذ جميع الميزات باستخدام لوحة المفاتيح الأبجدية الرقمية. تحقق من الكود الكامل والفيديو التوضيحي أدناه لفهم العملية بشكل صحيح. سنشرح هنا جميع الميزات الأربعة للمشاريع أدناه.
شرح أربع ميزات للهاتف المحمول Raspberry Pi:
1. إجراء مكالمة:
لإجراء مكالمة باستخدام هاتفنا القائم على Raspberry Pi ، علينا الضغط على "C" ثم إدخال رقم الهاتف المحمول الذي نريد إجراء مكالمة عليه. سيتم إدخال الرقم باستخدام لوحة المفاتيح الأبجدية الرقمية. بعد إدخال الرقم نحتاج مرة أخرى للضغط على "C". الآن سيعالج Raspberry Pi توصيل المكالمة بالرقم الذي تم إدخاله باستخدام الأمر AT:
ATDxxxxxxxxxx ؛
2. تلقي مكالمة:
تلقي مكالمة أمر سهل للغاية. عندما يتصل شخص ما برقم SIM الخاص بالنظام ، والموجود في وحدة GSM ، فسيعرض نظامك رسالة "Incoming…" على شاشة LCD مع رقم المتصل الوارد. الآن نحتاج فقط إلى الضغط على "أ" لحضور هذه المكالمة. عندما نضغط على "A" ، سيرسل Raspberry Pi أمرًا معينًا إلى وحدة GSM:
ATA
3. إرسال الرسائل القصيرة:
عندما نريد إرسال رسالة نصية قصيرة باستخدام الهاتف القائم على Raspberry Pi ، فإننا نحتاج إلى الضغط على "D". سيطلب النظام الآن رقم المستلم ، ويعني "لمن" نريد إرسال الرسائل القصيرة. بعد إدخال الرقم ، نحتاج إلى الضغط مرة أخرى على "D" والآن تطلب شاشة LCD رسالة. نحتاج الآن إلى كتابة الرسالة ، مثلما ندخل في الهاتف العادي ، باستخدام لوحة المفاتيح ثم بعد إدخال الرسالة نحتاج إلى الضغط على "D" مرة أخرى لإرسال الرسائل القصيرة. لإرسال رسالة SMS ، يرسل Raspberry Pi الأمر المحدد:
في + CMGF = 1
وإرسال 26 إلى GSM لإرسال الرسائل القصيرة.
4. تلقي وقراءة الرسائل القصيرة:
هذه الميزة بسيطة أيضًا. في هذا ، سيتلقى GSM رسائل نصية قصيرة ويخزنها في بطاقة SIM. ويراقب Raspberry Pi باستمرار إشارة الرسائل القصيرة المستلمة عبر UART. كلما ظهرت رسالة جديدة ، ستظهر شاشة LCD نص "رسالة جديدة" وبعد ذلك نحتاج فقط إلى الضغط على "B" لقراءة الرسائل القصيرة. إشارة الرسائل القصيرة المستلمة هي:
+ CMTI: "SM" ، 6 حيث 6 هو موقع الرسالة حيث تم تخزينها في بطاقة SIM.
عندما يتلقى Raspberry Pi إشارة "استلام الرسائل القصيرة" هذه ، فإنه يستخرج موقع تخزين الرسائل القصيرة ويرسل الأمر إلى GSM لقراءة الرسائل القصيرة المستلمة. وعرض نص "رسالة جديدة" على شاشة LCD.
في + CMGR =
الآن يرسل GSM رسالة مخزنة إلى Raspberry Pi ثم يقوم Raspberry Pi باستخراج الرسائل القصيرة الرئيسية وعرضها على شاشة LCD.
ملاحظة: لا يوجد تشفير لميكروفون ومكبر الصوت.
تحقق من الكود الكامل والفيديو التوضيحي أدناه لفهم العملية بشكل صحيح.
مخطط الدائرة وشرحها:
16x2 LCD دبابيس RS و EN و D4 و D5 و D6 و D7 متصلة برقم GPIO pin 18 و 23 و 24 و 25 و 8 و 7 من Raspberry Pi على التوالي. يتم توصيل دبوس Rx و Tx الخاص بوحدة GSM مباشرة بـ Raspberry Pi pin Tx و Rx على التوالي (يجب توصيل أرض Raspberry Pi و GSM ببعضهما البعض). لوحة المفاتيح 4x4 ، ترتبط دبابيس الصف R1 و R2 و R3 و R4 مباشرة برقم GPIO pin 12،16 و 20 و 21 من Raspberry Pi و Column pin للوحة المفاتيح C1 و C2 و C3 و C4 مرتبطة برقم GPIO pin 26 ، 19 ، 13 و 6 من Raspberry Pi. يتم توصيل MIC مباشرة بميكروفون + وميكروفون لوحدة GSM ويتم توصيل السماعة في sp + و sp- pin لوحدة GSM بمساعدة دائرة مضخم الصوت هذه ، لتضخيم صوت الإخراج. تعد دائرة مضخم الصوت هذه اختيارية ويمكنك توصيل السماعة مباشرة بوحدة GSM بدون مضخم الصوت هذا.
شرح البرمجة:
جزء البرمجة من Raspberry Pi Mobile Phone معقد قليلاً للمبتدئين. نحن نستخدم لغة Python هنا للبرنامج. إذا كنت مبتدئًا في Raspberry Pi ، فيجب عليك التحقق من البرامج التعليمية السابقة الخاصة بنا لبدء استخدام Raspberry Pi وتثبيت وتكوين Raspbian Jessie OS في Pi.
في هذا الكود ، أنشأنا لوحة مفاتيح def (): وظيفة للتفاعل مع لوحة مفاتيح بسيطة لإدخال الأرقام. ولإدخال الحروف الأبجدية ، قمنا بإنشاء معرف alphaKeypad (): بحيث يمكن استخدام لوحة المفاتيح نفسها لإدخال الحروف الهجائية أيضًا. الآن لقد جعلنا لوحة المفاتيح هذه متعددة الوظائف مثل مكتبة لوحة مفاتيح Arduino. باستخدام لوحة المفاتيح هذه ، يمكننا إدخال أحرف وعدد صحيح باستخدام 10 مفاتيح فقط.
مثل إذا ضغطنا على المفتاح 2 (abc2) ، فسيظهر "أ" وإذا ضغطنا عليه مرة أخرى ، فسيحل محل "أ" إلى "ب" وإذا ضغطنا مرة أخرى ثلاث مرات ، فسيظهر "ج" في نفس المكان في شاشات الكريستال السائل. إذا انتظرنا بعض الوقت بعد الضغط على المفتاح ، فسينتقل المؤشر تلقائيًا إلى الموضع التالي في شاشة LCD. الآن يمكننا إدخال الحرف أو الرقم التالي. يتم تطبيق نفس الإجراء على المفاتيح الأخرى.
def keypad (): لـ j في النطاق (4): gpio.setup (COL، gpio.OUT) gpio.output (COL، 0) ch = 0 لـ i في النطاق (4): إذا كان gpio.input (ROW) = = 0: ch = MATRIX إرجاع ch بينما (gpio.input (ROW) == 0): قم بتمرير gpio.output (COL، 1)
def alphaKeypad (): lcdclear () setCursor (x، y) lcdcmd (0x0f) msg = "" بينما 1: key = 0 count = 0 key = keypad () if key == '1': ind = 0 maxInd = 6 المفتاح = '1' getChar (مفتاح ، ind ، maxInd)……………….
بادئ ذي بدء ، قمنا في هذا البرنامج النصي بيثون بتضمين بعض المكتبات المطلوبة ودبابيس محددة لشاشات الكريستال السائل ولوحة المفاتيح والمكونات الأخرى:
استيراد RPi.GPIO كوقت استيراد تسلسلي لاستيراد gpio msg = "" alpha = "1! @.،:؟ ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =،،،] ROW = COL =………………
حان الوقت الآن لإعطاء التوجيه للدبابيس:
gpio.setwarnings (خطأ) 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. الإخراج (م 12 ، 0)
ثم قم بتهيئة الاتصال التسلسلي كما يلي:
المسلسل = serial.Serial ("/ dev / ttyS0" ، معدل البث بالباود = 9600 ، المهلة = 2)
الآن نحن بحاجة إلى كتابة بعض الوظائف لقيادة LCD. وظيفة def lcdcmd (ch): تُستخدم لإرسال الأمر إلى LCD و def lcdwrite (ch): تُستخدم الوظيفة لإرسال البيانات إلى شاشة LCD. إلى جانب هذه الوظائف ، def lcdclear (): يستخدم لمسح شاشة LCD ، ضبط setCursor (x، y): يستخدم لضبط موضع المؤشر على شاشة LCD و def lcdprint (Str): يستخدم لطباعة السلسلة على شاشة LCD.
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) إذا كان ch & 0x20 == 0x20: gpio.output (D5، 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0 ؛ l = len (Str) لـ i في النطاق (l): lcdwrite (ord (Str)) def setCursor (x، y): إذا كان y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
بعد ذلك نحتاج إلى كتابة بعض الوظائف لإرسال الرسائل القصيرة واستقبال الرسائل القصيرة وإجراء المكالمات وحضور المكالمة.
وظيفة def call (): تستخدم لإجراء المكالمة. ووظيفة def ReceiverCall (data): تستخدم لإظهار الرسالة الواردة والرقم على شاشة LCD. أخيرًا def attCall (): يستخدم لحضور المكالمة.
وظيفة def sendSMS (): تستخدم لكتابة وإرسال الرسالة بمساعدة وظيفة alphaKeypad () . و وظيفة def ReceiverSMS (data): تستخدم و تسترجع موقع الرسائل القصيرة. أخيرًا def readSMS (index): يستخدم لعرض الرسالة على شاشة LCD.
يمكنك العثور على جميع الوظائف المذكورة أعلاه في التعليمات البرمجية الواردة أدناه.
هذه هي الطريقة التي يمكنك بها تحويل Raspberry Pi الخاص بك إلى هاتف محمول بمساعدة وحدة GSM. تحقق أيضًا من هاتف Raspberry Pi الذي يعمل باللمس.