تعتبر لوحة الملاحظات اللاسلكية مصطلحًا انتقائيًا للغاية لهذا المشروع ، حيث إنها تتمتع بنطاق واسع جدًا بدلاً من كونها مجرد لوحة إعلانات بسيطة. أولاً يجب أن نفهم الغرض من هذا المشروع ، في هذا النظام يمكننا عرض رسالة أو إشعار على بعض أجهزة العرض مثل LCD ، ويمكن ضبط هذه الرسالة بسهولة أو تغييرها من أي مكان في العالم ، فقط باستخدام خدمة الرسائل القصيرة الخاصة بك الهاتف المحمول. أيا كان الإشعار الذي نريد عرضه ، فما عليك سوى إرسال الرسائل القصيرة لهذا النص ، مع بعض البادئة واللاحقة.
هذا مفيد جدًا في الفنادق والمراكز التجارية والكليات والمكاتب ويمكن استخدامه في أي مكان ، حتى في المنزل. كما يمكنك تعيين رسالة مثل "عدم الإزعاج" عند بوابة غرفة فندقك ، ويمكنك تعيين رسالة عند باب منزلك عندما تكون بعيدًا ، وبالطبع يتم استخدامها كلوحة إعلانات في المدارس والكليات وقاعات السينما وما إلى ذلك. نعم ، إنها ليست مجرد لوحة رسائل بسيطة ، فائدة هذا المشروع هي أنه يمكنك تعيين أو تغيير الرسالة أو الإشعار من أي مكان ، فقط إرسال الرسائل القصيرة من هاتفك. يمكنك أيضًا التحقق من مشروع مشابه ولكن على نوع مختلف من العرض: Arduino Scoreboard باستخدام Outdoor P10 LED Matrix Display.
لقد استخدمنا سابقًا مرفق الرسائل القصيرة للهاتف المحمول لأمن المنزل والتحكم في الأجهزة المنزلية عن بُعد: مستشعر PIR ونظام الأمان المستند إلى GSM وأتمتة المنزل القائمة على GSM باستخدام Arduino
شرح العمل:
في هذا المشروع ، يتم استخدام Arduino UNO للتحكم في العملية بأكملها ، وحدة GSM (SIM900A) لتلقي الرسائل القصيرة / الرسائل المرسلة من الهاتف المحمول وشاشات الكريستال السائل لعرض الرسالة.
يمكننا إرسال بعض الرسائل أو الإشعارات مثل "#Circuit Digest *" ، "# نحن نرحب بك *" من خلال الرسائل القصيرة. هنا استخدمنا بادئة في سلسلة الرسالة وهي "#". تُستخدم هذه البادئة لتحديد بداية الرسالة أو الإشعار. ويتم استخدام "*" كلاحقة للإشارة إلى نهاية الرسالة أو الإشعار.
عندما نرسل رسالة نصية قصيرة من الهاتف المحمول إلى وحدة GSM ، يتلقى GSM تلك الرسائل القصيرة ويرسلها إلى Arduino. الآن يقرأ Arduino رسالة SMS هذه ويستخرج رسالة الإشعار الرئيسية من السلسلة المستلمة ويخزنها في سلسلة أخرى. ثم يرسل الرسالة المستخرجة إلى شاشة LCD مقاس 16 × 2 باستخدام الأوامر المناسبة.
مزيد من العمل لهذا النظام موضح في قسم "وصف الكود" أدناه. قبل الدخول في تفاصيل البرمجة ، يجب أن نعرف عن وحدة GSM.
وحدة GSM:
تُستخدم وحدة GSM في العديد من أجهزة الاتصالات التي تعتمد على تقنية GSM (النظام العالمي للاتصالات المتنقلة). يتم استخدامه للتفاعل مع شبكة GSM باستخدام جهاز كمبيوتر. لا تفهم وحدة GSM إلا أوامر AT ، ويمكنها الاستجابة وفقًا لذلك. الأمر الأساسي هو "AT" ، إذا كان GSM يستجيب بشكل جيد ، فإنه يعمل بشكل جيد وإلا فإنه يستجيب بـ "ERROR". هناك العديد من أوامر AT مثل ATA للرد على مكالمة ، ATD لطلب مكالمة ، AT + CMGR لقراءة الرسالة ، AT + CMGS لإرسال الرسائل القصيرة إلخ.) ، مثل "AT + CMGS \ r". يمكننا استخدام وحدة GSM باستخدام هذه الأوامر:
ATE0 لصدى قبالة
AT + CNMI = 2،2،0،0،0
ATD
في + CMGF = 1
AT + CMGS = "رقم الجوال"
>> الآن يمكننا كتابة رسالتنا
>> بعد كتابة الرسالة
Ctrl + Z إرسال الأمر (26 في النظام العشري).
أدخل = 0x0d في HEX
و SIM900 هو استكمال رباعية الموجات GSM / جي بي آر إس وحدة التي توفر GSM / جي بي آر إس 850/900/1800 / 1900MHz والأداء لنقل الصوت والرسائل القصيرة والبيانات مع انخفاض استهلاك الطاقة.
سيركويت دسكريبتيون:
تعتبر اتصالات لوحة الملاحظات اللاسلكية باستخدام GSM و Arduino بسيطة كما هو موضح في الشكل أدناه. هنا يتم استخدام شاشة الكريستال السائل (LCD) لعرض "الإشعار" أو الرسالة ، والتي يتم إرسالها عبر الهاتف المحمول كرسائل نصية قصيرة. تتصل دبابيس بيانات LCD وهي RS و EN و D4 و D5 و D6 و D7 برقم دبوس اردوينو الرقمي 7 و 6 و 5 و 4 و 3 و 2. ويتم توصيل دبوس Rx و Tx لوحدة GSM مباشرة في Tx و Rx دبوس اردوينو على التوالي. ويتم تشغيل وحدة GSM باستخدام محول 12 فولت.
وصف الكود:
رمز البرنامج سهل الفهم ؛ الشيء الجديد هنا هو وظيفة تهيئة GSN gsm_init () ، والتي تم شرحها في النهاية.
في البرنامج ، نقوم أولاً بتضمين مكتبة لشاشات الكريستال السائل (LCD) ثم نقوم بتعريف دبابيس البيانات والتحكم لشاشات الكريستال السائل وبعض المتغيرات.
#تضمن
بعد ذلك ، تتم تهيئة الاتصال التسلسلي بسرعة 9600 بت في الثانية ويعطي توجيهًا للدبوس المستخدم. وتهيئة GSM Module في حلقة الإعداد.
إعداد باطل () {lcd.begin (16،2) ؛ Serial.begin (9600) ؛ pinMode (الصمام ، الإخراج) ؛ الكتابة الرقمية (led ، عالية) ؛ lcd.print ("تهيئة GSM…") ؛ gsm_init () ، lcd.setCursor (0،0) ؛ lcd.print ("إشعار لاسلكي") ؛
لتلقي البيانات بشكل تسلسلي ، نستخدم وظيفتين ، إحداهما هي Serial.available والتي تتحقق من أي بيانات تسلسلية قادمة أم لا ، والأخرى هي Serial.read الذي يقرأ البيانات التي تأتي بشكل تسلسلي.
باطل serialEvent () {while (Serial.available ()) {char ch = (char) Serial.read ()؛ str = الفصل ؛ إذا (ch == '*') {temp = 1 ؛ lcd.clear () ؛ lcd.print ("تم استلام الرسالة") ؛ تأخير (1000) ؛ }}}
بعد استلام البيانات بشكل تسلسلي ، نقوم بتخزينها في سلسلة ويتم التحقق من هذه السلسلة من أجل "#" و "*" ، للعثور على بداية ونهاية الإشعار أو الرسالة. ثم أخيرًا تتم طباعة Notice على شاشة LCD باستخدام lcd.print:
حلقة فارغة () {لـ (int t = 0؛ t <60000؛ t ++) {serialEvent ()؛ إذا (temp == 1) {x = 0، k = 0، temp = 0؛ بينما (x
وظيفة التهيئة 'gsm_init () ' لـ GSM مهمة هنا ، حيث أولاً ، يتم فحص وحدة GSM سواء كانت متصلة أم لا عن طريق إرسال أمر "AT" إلى وحدة GSM. إذا تم تلقي الرد "موافق" ، فهذا يعني أنه جاهز. يستمر النظام في التحقق من الوحدة حتى تصبح جاهزة أو حتى يتم استلام "موافق". ثم يتم إيقاف تشغيل ECHO عن طريق إرسال الأمر ATE0 ، وإلا فإن وحدة GSM ستكرر جميع الأوامر. ثم يتم التحقق أخيرًا من توفر الشبكة من خلال "AT + CPIN؟" الأمر ، إذا كانت البطاقة المُدخلة عبارة عن بطاقة SIM وكان رقم التعريف الشخصي موجودًا ، فإنه يعطي الاستجابة + CPIN: READY. يتم أيضًا التحقق من هذا بشكل متكرر حتى يتم العثور على الشبكة. يمكن فهم ذلك بوضوح من خلال الفيديو أدناه.
باطل gsm_init () {lcd.clear () ، lcd.print ("البحث عن وحدة..") ؛ منطقية at_flag = 1 ؛ while (at_flag) {Serial.println ("AT") ؛ while (Serial.available ()> 0) {if (Serial.find ("OK")) at_flag = 0 ؛ } تأخير (1000)؛ }