جدول المحتويات:
- الخطوة 1: اذهب واحصل على الأشياء
- الخطوة 2: رؤوس اللحام
- الخطوة 3: إدراج
- الخطوة 4: Resolder
- الخطوة 5: قم بتوصيل الهوائي
- الخطوة 6: أدخل بطاقة SIM
- الخطوة 7: التهيئة
- الخطوة 8: الرسائل النصية
- الخطوة 9: الصوت
فيديو: برنامج Arduino Cellular Shield التعليمي: 9 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-02-02 14:32
يسمح لك 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.
الخطوة 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 لمشاهدة أحدث مشاريعي.
موصى به:
برنامج Arduino Hang Guardian - برنامج Arduino Watchdog Timer التعليمي: 6 خطوات
برنامج Arduino Hang Guardian - برنامج Arduino Watchdog Timer التعليمي: مرحبًا بالجميع ، هذا يحدث لنا جميعًا. تقوم ببناء مشروع ، وتوصيل جميع المستشعرات بحماس ، وفجأة ، يتوقف Arduino ولا تتم معالجة أي مدخلات. "ما الذي يحدث؟" ، ستسأل وتبدأ في البحث في الكود الخاص بك ، فقط لإعادة
الحد الأدنى من برنامج Raspberry Pi Torrent Machine التعليمي: 4 خطوات (بالصور)
Bare Minimum Raspberry Pi Torrent Machine Tutorent: Hai people. يعد التورنت دائمًا منقذًا للحياة ونأمل أن يكون Raspberry Pi متصلًا بلا رأس يفعل ذلك من أجلك مدهشًا حقًا. من خلال برنامج تعليمي ، سأساعدك جميعًا على إنشاء Torrent Machine باستخدام Pi التي يمكن تشغيلها بلا رأس ويمكنك استخدام Andro
برنامج Arduino GPS Shield التعليمي: حاسبة المسافة: 5 خطوات
برنامج Arduino GPS Shield التعليمي: حاسبة المسافة: GPS أو نظام تحديد المواقع العالمي هو نظام ملاحة لاسلكي قائم على الأقمار الصناعية يسمح لك بالحصول على موقعك وإرشادك عبر مواقع أخرى من خلال خريطة معترف بها ومحددة مسبقًا مثل خرائط Google ، وفي عالم اردوينو ، ثي
برنامج Sparkfun CAN Bus Shield التعليمي: 6 خطوات
برنامج Sparkfun CAN Bus Shield التعليمي: تلقي الرسائل وإرسالها باستخدام Sparkfun CAN Bus Shield ما هو CAN؟ تم تطوير ناقل CAN بواسطة BOSCH كنظام بث رسائل متعدد البرامج يحدد الحد الأقصى لمعدل الإشارة البالغ 1 ميجابت في الثانية (بت في الثانية). على عكس الشبكة التقليدية
برنامج TFT Shield التعليمي: 4 خطوات
دروس TFT Shield: اليوم ، سوف تتعلم كيف يمكنك إنشاء واستخدام الأزرار في مشاريع Arduino TFT التي تعمل باللمس. أنا أستخدم 2.8 & quot؛ Kuman's 2.8 & quot؛ تم دمج TFT Shield مع Arduino UNO من Kuman. المكافأة: يأتي TFT Shield من Kuman مزودًا بقلم مجاني يمكنك استخدامه