أريد أن أعرض مكتبة لـ GSM / GPRS Shield لـ Arduino من Keyestudio. اشتريت هذا الجهاز بسبب السعر. في الصين ، تبين أنها أرخص مرتين تقريبًا من نظيرتها من Amperka ، وثلاث مرات من iAruino. سبب كتابة هذا النص هو عدم وجود مكتبة مقبولة على Keyestudio للعمل معها.
لا يعتبر العمل من خلال مجموعة من أوامر AT. لا تتناسب مكتبات الأجهزة المماثلة الأخرى بشكل مباشر. على أي حال ، لم أستطع تشغيلهم.
في رأيي ، اضطررت إلى تكييف مكتبة Amperkovskaya الأكثر تفصيلاً لهذه اللوحة ، وبالتالي حاولت الحفاظ على توافق الشفرة المكتوبة لدرع Amperkovsky.
الارتباط
الفعلي بالمكتبة:
github.com/andrewinc/keyestudio-gsm-gprs-shield
تستخدم Amperka شريحة Sim900R في درعها ، وهنا Sim900. الاختلاف الأكثر أهمية في إشارة ST: فهو في مكتبة المصدر والدرع ، ولكنه ليس في Keyestudio. وفي الوقت نفسه ، كان من الممكن أن تقوم بتمكين أو تعطيل الشريحة. ولكن هناك زر SIM900_Power ، مما دفعني إلى الأفكار السيئة حول نقص قدرة البرامج على تشغيل الشريحة. لحسن الحظ ، كانوا مخطئين.
دبوس 9 - يتحكم في إدراج الشريحة ، وهو نفس بديل زر الطاقة ، يشار إلى PK على لوحة Amperka.
لم يؤثر فرق بسيط في إصدار الشريحة على قدراتها ، على أي حال ، تمكنت من بدء مكالمة وإرسال واستقبال الرسائل القصيرة باستخدام الأمثلة المقدمة في المكتبة. أعتقد أن هذا هو الاتجاه الرئيسي لاستخدام هذا الدرع.
الإعدادات المادية
يتواصل المجلس مع Arduino من خلال واجهة UART. بالنسبة لأولئك الذين لا يعرفون UART ، هذه هي دبابيس TX و RX. بواسطة TX - تتبع البيانات من Arduino ، و RX - back.
يوجد أيضًا مفتاح تبديل "UART_Port - DBG_Port" ، لكنني لم أستخدم هذا المنفذ. ظل المفتاح في "UART_Port".
ميزة اللوحة هي أنها لا تعمل خارج الصندوق. إذا انتبهت إلى حالة الوثب بعد فتح الحزمة (انظر الصورة أعلاه) ، يمكنك رؤية الوصلات TXD c 0 و RXD مع 1. في Arduino ، يتم استخدام نفس الدبابيس لـ TX و RX. هذه هي المشكلة بالضبط ، لأن هم مشغولون بتنزيل الرسم ، كما يستخدمون لتبادل المعلومات من خلال الكائن التسلسلي ، مدفوع. وللتصحيح. عند توصيل Arduino بالدرع ، يحدث تعارض وتفشل البرامج الثابتة.
المسلسل البرمجيات
من المعروف أن Arduino UNO لديه واجهة تسلسلية واحدة فقط ، ولكن عائلتهم بأكملها ، على سبيل المثال ، Arduino Mega. يرتبط Serial1 بزوج من TX1 و RX1 ، بالمثل لـ Serial2 و Serial3.
لاستخدام Arduino UNO ، فمن المعقول استخدام Serial Software. يكفي توصيل المكتبة المناسبة ، وإنشاء الكائن نفسه ، مشيرًا إلى دبابيس Arduino التي تأتي منها إشارات TXD و RXD من shield'a:
#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7);
في هذا المثال ، تم توصيل TXD بالطرف 6 ، و RXD متصل بـ 7.
برنامج تمكين رقاقة
لا يمكن توصيل رقاقة تشغيل / إيقاف الشريحة - 9 ، على عكس TX و RX ، بدبابيس Arduino الأخرى ، على أي حال ، لم تكن هناك مفاتيح على الدرع لذلك.
لتشغيل الشريحة تحتاج إلى إرسال إشارة عالية من 9 دبابيس ، انتظر 1-3 ثوانٍ وقم بتطبيق إشارة منخفضة عليها. ثم عادة في الكود يمكنك رؤية الانتظار بالثواني 5-15. كل هذا يشبه معالجة زر الطاقة على الهاتف الخلوي ، ثم تنزيله وإنشاء اتصال بالشبكة.
في مكتبة المصدر من Amperka ، كانت هناك ملاحظات من خلال إشارة ST. من خلاله ، في عملية التشغيل ، تم فحص الحالة: هل الشريحة تعمل؟ للأسف ، في غياب هذه الإشارة ، تتشابه طرق تشغيل وإيقاف الشريحة مع الأخوة التوأم ، لأنه يتم أيضًا إرسال ستروب طويل 9 دبوس لإيقاف التشغيل. لم يتم دمج هذه الطرق في طريقة واحدة بسبب توافق الشفرة
وبسبب الكسل العادي .
كيف يعمل
المكتبة نفسها مرتبطة بالخط:
#include <GPRSk_Shield_Arduino.h>
ثم يمكنك إنشاء كائن بناءً على فئة GPRSk وتمرير نفس mySerial إلى المنشئ أو تحديد Serial1 للأجهزة ، Serial2 ، إلخ. مثال:
GPRSk gprs(mySerial);
عادةً ما تتم تهيئة المسلسل و mySerial في وظيفة الإعداد ، ومع ذلك ، إذا كنت لا تخطط لإرسال معلومات تصحيح الأخطاء إلى شاشة Arduino IDE ، يمكنك القيام بذلك باستخدام تهيئة mySerial فقط.
بعد ذلك ، يتم إيقاف تشغيل الشريحة باستخدام طريقة gprs.powerOn () ومن ثم يتم استدعاء gprs.init () ، والتي ستعود صحيحة إذا كانت الشريحة جاهزة لاستقبال / إرسال المعلومات.
عند الانتهاء من جميع هذه المهام ، يمكنك إرسال SMS:
gprs.sendSMS("+79007654321", "Hello SMS from Keyestudio!");
قراءة المشاركات الجديدة:
char message[160]; char phone[16]; char datetime[24]; if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); }
إجراء مكالمات:
gprs.callUp("+79007654321");
الخ.
في إطار المكتبة ، يتم إرفاق أمثلة "Amperkov" ، حيث يتم تغيير Serial1 فقط إلى البرنامج. تم اختبارهم على Keyestudio GSM / GPRS Shield وأظهروا أدائهم.
التغذية
وقد أظهرت الملاحظات أن هذه "السندويتش" من درع Arduino UNO و GPRS تفتقر إلى الطاقة من USB. يتم التعبير عن ذلك من خلال إصدار خطأ بشكل منهجي باستخدام طريقة gprs.init ()
كان هناك أيضًا طاقة غير كافية 200mA (9V) لموصل الطاقة Arduino القياسي بالإضافة إلى طاقة USB. بدلاً من ذلك ، في بعض الأحيان مرت gprs.init () وأحيانًا لا. أعتقد أن إمدادات الطاقة 5V 1-1.5A ستكون كافية تمامًا.
العيوب:
- تستخدم المكتبة فترات الإيقاف المؤقت () ، والتي تقطع تنفيذ جميع التعليمات البرمجية للتحكم.
- من المفترض أنه لم يتم تثبيت رمز PIN على بطاقة SIM
- لا يدعم نص رسائل SMS السيريلية.
آمل أن تكون هذه المكتبة مفيدة ، بالإضافة إلى بعض الملاحظات حول العمل مع هذا الدرع.