جدول المحتويات:

برنامج Arduino Cellular Shield التعليمي: 9 خطوات (بالصور)
برنامج Arduino Cellular Shield التعليمي: 9 خطوات (بالصور)

فيديو: برنامج Arduino Cellular Shield التعليمي: 9 خطوات (بالصور)

فيديو: برنامج Arduino Cellular Shield التعليمي: 9 خطوات (بالصور)
فيديو: Arduino MKR GSM 1400 Cellular Kit Setup Tutorial with Arduino IoT Cloud || [Part 1] 2024, شهر نوفمبر
Anonim
درع اردوينو التعليمي
درع اردوينو التعليمي

يسمح لك Arduino Cellular Shield بإجراء مكالمات هاتفية وإرسال رسائل نصية. أدمغة هذا الدرع هي SM5100B وهي وحدة خلوية قوية قادرة على أداء العديد من مهام معظم الهواتف المحمولة القياسية. يتطلب هذا الدرع استخدام بطاقة SIM للاتصال بشبكة خلوية. البرنامج التعليمي التالي هو برنامج تعليمي بسيط لتهيئة الدرع ، وإرسال واستقبال الرسائل النصية والمكالمات الهاتفية. لمعرفة المزيد حول وظائف الوحدة ، تأكد من مراجعة أوراق البيانات على صفحة منتج Sparkfun.

الخطوة 1: اذهب واحصل على الأشياء

اذهب واحصل على الأشياء
اذهب واحصل على الأشياء

سوف تحتاج:

(x1) الدرع الخلوي (x1) موصلات Arduino القابلة للتكديس (x1) هوائي رباعي النطاق (x1) Arduino Uno

(لاحظ أن بعض الروابط الموجودة على هذه الصفحة هي روابط تابعة. وهذا لا يغير تكلفة العنصر بالنسبة لك. أعيد استثمار أي عائدات أحصل عليها في إنشاء مشاريع جديدة. إذا كنت ترغب في الحصول على أي اقتراحات لموردين بديلين ، فيرجى السماح لي أعرف.)

الخطوة 2: رؤوس اللحام

رؤوس اللحام
رؤوس اللحام
رؤوس اللحام
رؤوس اللحام
رؤوس اللحام
رؤوس اللحام

أدخل الرؤوس في الدرع وقم بلحامها في مكانها.

الخطوة 3: إدراج

إدراج
إدراج
إدراج
إدراج

أدخل دبابيس الرأس في المقابس الموجودة في Arduino.

الخطوة 4: Resolder

ريسولدر
ريسولدر

عادة ما يكون اتصال كابل الهوائي بوحدة SM5100B غير جيد جدًا. أعد لحام كل توصيلات الكبل بالوحدة لضمان التوصيل.

الخطوة 5: قم بتوصيل الهوائي

قم بتوصيل الهوائي
قم بتوصيل الهوائي
قم بتوصيل الهوائي
قم بتوصيل الهوائي

قم بربط الهوائي بكابل الهوائي.

الخطوة 6: أدخل بطاقة SIM

إدراج بطاقة SIM
إدراج بطاقة SIM
إدراج بطاقة SIM
إدراج بطاقة SIM
إدراج بطاقة SIM
إدراج بطاقة SIM
إدراج بطاقة SIM
إدراج بطاقة SIM

أدخل بطاقة SIM بإحكام في مقبس بطاقة SIM.

الخطوة 7: التهيئة

التهيئة
التهيئة

قم بتشغيل الكود التالي على Arduino:

/*

درع SparkFun الخلوي - رسم عينة تمريرية SparkFun Electronics كتبها Ryan Owens 3 / الوصف: هذا الرسم التخطيطي مكتوب لواجهة Arduino Duemillanove إلى درع خلوي من SparkFun Electronics. يمكن شراء الدرع الخلوي من هنا: https://www.sparkfun.com/commerce/product_info.php؟products_id=9607 في هذا الرسم يتم تمرير الأوامر التسلسلية من برنامج طرفي إلى الوحدة الخلوية SM5100B ؛ ويتم نشر الردود الواردة من الوحدة الخلوية في الجهاز. تم العثور على مزيد من المعلومات في تعليقات الرسم. يجب إدخال بطاقة SIM مفعلة في حامل بطاقة SIM على اللوحة من أجل استخدام الجهاز! يستخدم هذا الرسم التخطيطي مكتبة NewSoftSerial التي كتبها ميكال هارت من Arduiniana. يمكن تنزيل المكتبة على عنوان URL هذا: https://arduiniana.org/libraries/NewSoftSerial/ يتم توفير هذا الرمز بموجب ترخيص Creative Commons Attribution. يمكن العثور على مزيد من المعلومات هنا: https://creativecommons.org/licenses/by/3.0/ (استخدم الكود الخاص بنا بحرية! من فضلك تذكر فقط أن تعطينا رصيدًا عند استحقاقه. شكرًا!) * / #include // تضمين NewSoftSerial مكتبة لإرسال أوامر تسلسلية إلى الوحدة الخلوية. #include // يستخدم لمعالجة السلاسل char incoming_char = 0 ؛ // سوف يحمل الحرف الوارد من المنفذ التسلسلي. الخلية التسلسلية للبرنامج (2 ، 3) ؛ // إنشاء منفذ تسلسلي "وهمي". الدبوس 2 هو دبوس Rx ، والدبوس 3 هو دبوس Tx. إعداد باطل () {// تهيئة المنافذ التسلسلية للاتصال. Serial.begin (9600) ؛ cell.begin (9600) ؛ //هيا بنا نبدأ! Serial.println ("بدء اتصال SM5100B …") ؛ } حلقة فارغة () {// إذا كان الحرف يأتي من الوحدة الخلوية … إذا (cell.available ()> 0) {incoming_char = cell.read () ؛ // احصل على الحرف من المنفذ التسلسلي الخلوي. Serial.print (incoming_char) ؛ // اطبع الحرف الوارد على الجهاز. } // إذا كانت هناك شخصية قادمة من المحطة الطرفية إلى Arduino… if (Serial.available ()> 0) {incoming_char = Serial.read ()؛ // احصل على الحرف القادم من المحطة إذا (incoming_char == '~') // إذا كانت تلدة… incoming_char = 0x0D؛ //… تحويل إلى حرف إرجاع آخر إذا (incoming_char == '^') // إذا كان علامة إقحام علوية … incoming_char = 0x1A؛ //… التحويل إلى ctrl-Z cell.print (incoming_char) ؛ // أرسل الحرف إلى الوحدة الخلوية. Serial.print (incoming_char) ؛ // Echo it back to the terminal}} / * SM5100B Quck Reference for AT Command Set * ما لم يتم إنهاء أوامر AT بالضغط على مفتاح "الإدخال". 1.) تأكد من اختيار نطاق GSM المناسب لبلدك. بالنسبة للولايات المتحدة ، يجب ضبط النطاق على 7. لتعيين النطاق ، استخدم هذا الأمر: AT + SBAND = 7 2.) بعد تشغيل Arduino مع تثبيت الدرع ، تحقق من أن الوحدة تقرأ وتتعرف على بطاقة SIM. مع فتح نافذة صغيرة وضبطها على منفذ Arduino و 9600 buad ، قم بتشغيل Arduino. يجب أن يبدو تسلسل بدء التشغيل كما يلي: بدء اتصال SM5100B … + SIND: 1 + SIND: 10 ، "SM" ، 1 ، "FD" ، 1 ، "LD" ، 1 ، "MC" ، 1 ، "RC" ، 1 ، "ME" ، 1 يبدأ الاتصال بالوحدة بعد عرض السطر الأول. يخبرنا خط الاتصال الثاني ، + SIND: 10 ، ما إذا كان بإمكان الوحدة رؤية بطاقة SIM. إذا تم الكشف عن بطاقة SIM كل حقل آخر هو 1 ؛ إذا لم يتم اكتشاف بطاقة SIM ، فكل حقل آخر هو 0. 3.) انتظر اتصال الشبكة قبل أن تبدأ في إرسال الأوامر. بعد استجابة + SIND: 10 ، ستبدأ الوحدة تلقائيًا في محاولة الاتصال بشبكة. انتظر حتى تتلقى repsones التالية: + SIND: 11 + SIND: 3 + SIND: 4 استجابة + SIND من الوحدة الخلوية تخبر حالة الوحدات. فيما يلي عرض سريع لمعاني الاستجابة: تم إزالة 0 بطاقة SIM ، تم إدخال بطاقة SIM واحدة ، 2 وحدة Ring 3 3 AT جاهزة جزئيًا ، 4 وحدة AT جاهزة تمامًا 5 معرفات للمكالمات الصادرة 6 المكالمات الصادرة معرفها = 7 خدمة الشبكة هي متاح لمكالمة طوارئ 8 فقدت الشبكة 9 تشغيل الصوت 10 اعرض حالة كل دليل هاتف بعد العبارة الأولى 11 مسجل في الشبكة بعد التسجيل على الشبكة يمكنك بدء التفاعل. فيما يلي بعض الأوامر البسيطة والمفيدة للبدء: لإجراء مكالمة: أمر AT - رقم هاتف ATDxxxyyyzzzz بالتنسيق: (xxx) yyy-zzz try ---- cell.print ("ATDxxxyyyzzzz") ؛ إذا أجريت مكالمة هاتفية ، فتأكد من الرجوع إلى ورقة بيانات الأجهزة لتوصيل ميكروفون ومكبر صوت بالدرع. لإرسال رسالة نصية: أمر AT - AT + CMGF = 1 يضبط هذا الأمر وضع الرسالة النصية على "نص". أمر AT = AT + CMGS = "xxxyyyzzzz" (حرف إرجاع) "نص للإرسال" (CTRL + Z) هذا الأمر محير بعض الشيء لوصفه. يتم إدخال رقم الهاتف بالصيغة (xxx) yyy-zzzz داخل الاقتباسات المزدوجة. اضغط على "دخول" بعد إغلاق عروض الأسعار. بعد ذلك أدخل النص المراد إرساله. قم بإنهاء الأمر AT بإرسال CTRL + Z. لا يمكن إرسال هذه الشخصية من محطة Arduino. استخدم برنامج طرفي بديل مثل Hyperterminal أو Tera Term أو Bray Terminal أو X-CTU. يمكن لوحدة SM5100B أن تفعل أكثر من ذلك بكثير! تحقق من أوراق البيانات الموجودة على صفحة المنتج لمعرفة المزيد حول الوحدة. * /افتح المنفذ التسلسلي في الجهاز. على جهاز Mac يتم ذلك عن طريق كتابة: screen /dev/tty.usbmodemfa131 9600 (استبدل tty.usbmodemfa131 بعنوان Arduino التسلسلي الخاص بك) انتظر لترى التسلسل التالي الذي تم إرجاعه: بدء اتصال SM5100B … + SIND: 3 + SIND: 4 + SIND: 11 (إذا لم يتم إرجاع هذا التسلسل ، فتحقق من رموز الخطأ المدرجة أسفل الرمز أعلاه ، وقم بتصحيح الأخطاء بشكل مناسب. قد تحتاج إلى تعيين الوحدة النمطية لاستخدام أمريكا الشمالية - انظر أدناه - قبل أن تسجل في الشبكة (على سبيل المثال + SIND 11)) أرسل الأوامر التالية إلى المنفذ التسلسلي: أرسل هذا للاستخدام في أمريكا الشمالية: AT + SBAND = 7 اضبط الوقت الحالي - yy / mm / dd: AT + CCLK = "13/05/15، 11: 02:00 "إرسال مكالمة تجريبية: ATD4155551212

الخطوة 8: الرسائل النصية

رسائل نصية
رسائل نصية

قم بتنزيل وتثبيت SerialGSM في مكتبة Arduino الخاصة بك.

لإرسال رسالة نصية ، قم بزيارة البرنامج التعليمي للوحدة الخلوية Tronixstuff واستخدم رمز المثال 26.3:

إذا كنت ترغب في تشغيل رمز المثال لتلقي نص ، فقم بتوصيل مؤشر LED بالطرف 8 ووضعه في سلسلة بمقاوم 220 أوم على الأرض.

لإرسال رسالة نصية ، تفضل بزيارة البرنامج التعليمي للوحدة الخلوية Tronixstuff واستخدم رمز المثال 26.5:

أرسل أحد الأوامر التالية إلى الوحدة الخلوية الخاصة بك:

// يضيء مؤشر LED # a1

// يطفئ المصباح # a0

الخطوة 9: الصوت

صوت
صوت
صوت
صوت
صوت
صوت

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

لتهيئة مكالمة صوتية ، قم بتحميل الكود التالي:

//**********************************************************************************

// إجراء مكالمة // // رمز احتياطي يستند إلى: // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }

To receive a voice call upload the following code

//**********************************************************************************

// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // // ************************************************ ************************************ #include #define BUFFSIZ 90 // إعداد مجموعة شار في المخزن المؤقت [BUFFSIZ] ؛ شار بوفيدكس // متغيرات حالة الشبكة int network_registered ؛ شبكة int_AT_ جاهزة ؛ // متغيرات حالة الكود int firstTimeInLoop = 1 ؛ int firstTimeInOtherLoop = 1 ، كثافة العمليات س ؛ // سوف يحمل الحرف الوارد من المنفذ التسلسلي. char incoming_char = 0 ؛ // إنشاء منفذ تسلسلي "وهمي". الدبوس 2 هو دبوس Rx ، والدبوس 3 هو دبوس Tx. الخلية التسلسلية للبرنامج (2 ، 3) ؛ إعداد باطل () {// تهيئة منفذ Arduino التسلسلي للتصحيح. Serial.begin (9600) ؛ // تهيئة منفذ تسلسلي افتراضي للتحدث إلى الهاتف. cell.begin (9600) ؛ //مرحبا بالعالم. Serial.println ("بدء اتصال SM5100B …") ؛ تأخير (1000) ؛ // تعيين حالة الشبكة الأولية network_registered = 0 ؛ network_AT_ready = 0 ؛ } // قراءة سلاسل AT من readATString (باطل) الدرع الخلوي {char c؛ Buffidx = 0 ؛ // البدء في البداية لـ (x = 0 ؛ x 0) {c = cell.read () ؛ إذا (c == -1) {at_buffer [buffidx] = '\ 0' ؛ إرجاع؛ } إذا (ج == '\ n') {متابعة ؛ } إذا ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'؛ إرجاع؛ } at_buffer [buffidx ++] = c ؛ }}} // معالجة سلاسل AT باطلة ProcessATString () {if (strstr (at_buffer، "+ SIND: 8")! = 0) {network_registered = 0؛ Serial.println ("شبكة الشبكة غير متوفرة") ؛ } إذا (strstr (at_buffer، "+ SIND: 11")! = 0) {network_registered = 1 ؛ Serial.println ("الشبكة مسجلة") ؛ } إذا (strstr (at_buffer، "+ SIND: 4")! = 0) {network_AT_ready = 1 ؛ Serial.println ("شبكة AT جاهزة") ؛ }} void loop () {/ * إذا استدعيت للمرة الأولى ، قم بالتكرار حتى تصبح الشبكة و AT جاهزين * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0؛ while (network_registered == 0 || network_AT_ready == 0) {readATString () ؛ ProcessATString () ، }} if (firstTimeInOtherLoop == 1) {// ابحث عن مكالمة واردة if (strstr (at_buffer، "+ CPAS: 3")! = 0) {// Answer the phone cell.println ("ATA")؛ firstTimeInOtherLoop = 0 ، }}}

صورة
صورة

هل وجدت هذا مفيدًا أو ممتعًا أو ترفيهيًا؟ تابعواmadeineuphoria لمشاهدة أحدث مشاريعي.

موصى به: