مقاله ای برای کسانی که می خواهند آردوینو را مجبور به ارسال اس ام اس از این طریق کنندماژول GSM . ماژول NEOWAY M590 مبتنی بر تراشه SIM900 برای ایجاد مناسب است سیستم دزدگیر خانگی, خانه هوشمند. همچنین یک ماژول GSM جایگزین وجود دارد که مستقیماً از طریق 5 ولت به آردوینو متصل می شود: Sim800L EVB v2.0
فرمول بندی مسئله
- تنها با استفاده از آردوینو و یک ماژول GSM، LED را از طریق تماس تلفنی خود کنترل کنید.
- ارسال پیامک (در حالی که از طریق دستوری که از طریق مانیتور پورت در Arduino IDE می آید)
اتصال به آردوینو
ماژول GSM را به آردوینو وصل می کنیم.
ماژول 5 ولت -> 5 ولت آردوینو
ماژول GND -> آردوینو GND
ماژول TX -> پین دیجیتالی 2 آردوینو
ماژول RX -> پین دیجیتالی 3 آردوینو
پینوت در عکس قابل مشاهده است. ترتیب مخاطبین به شرح زیر است: 1 - +5V، 2 - GND، 7 - TX، 8 - RX.
ماژول را می توان از 4 ولت تا 5 ولت تغذیه کرد، من از خروجی 5 ولت استفاده کردم.
این ماژول به برق جداگانه نیاز دارد زیرا در اوج مصرف تا 2A مصرف می کند. یک خازن به احتمال زیاد کمکی نخواهد کرد. بنابراین، هنگامی که توسط آردوینو تغذیه می شود، ممکن است کار نکند یا از کار بیفتد.
زمین آردوینو و ماژول GSM با منبع تغذیه جداگانه باید متصل شوند، اما ابتدا باید ولتاژ بین این "زمین ها" را با یک مولتی متر اندازه گیری کنید. مقداری بلوک های کامپیوتریمنابع تغذیه دارای افت احتمالی در سراسر کیس و زمین USB تا 100 ولت هستند. جریان وجود دارد بسیار کوچک است و نمی تواند بکشد، اما به راحتی می توان یک آردوینو یا یک ماژول GSM یا هر دو را با هم از بین برد.
طرح
#عبارتند از< نرم افزار سریال. h> نرم افزار سریال mySerial(2, 3); // RX، TX int ch = 0 ; int led = 13 ; String val = "" ; void setup() (تاخیر (2000); //زمان مقداردهی اولیه ماژول pinMode (led، OUTPUT) ; digitalWrite (LED، LOW)؛ سریال. شروع (9600)؛ //سرعت پورت سریال. println ("تستر GSM نسخه 1.0"); mySerial. شروع (9600)؛ mySerial. println ("AT+CLIP=1"); //روشن کردن تاخیر شناسه تماس گیرنده (100) ; mySerial. println ("AT+CMGF=1"); //حالت رمزگذاری پیامک - عادی (برای انگلیسی)تاخیر (100); mySerial. println("AT+CSCS=\"GSM\"" ); //حالت کدگذاری متنتاخیر (100); ) void loop () ( if (mySerial . موجود () ) ( //اگر ماژول GSM چیزی برای ما ارسال کرد، پس while (mySerial.available()) ( // رشته ورودی را در متغیر val ذخیره کنید ch = mySerial. خواندن()؛ val += char (ch); تاخیر (10); ) if (val . indexOf ( "RING" ) > - 1 ) (//اگر تماسی شناسایی شد، شماره را بررسی کنید //اگر شماره تماس گیرنده مال ما باشد. شماره خود را بدون "+" وارد کنید سریال. println( "--- RING Master Detected ---") ؛ mySerial. println ("ATH0"); //قطع اتصال digitalWrite (LED، HIGH); // LED را به مدت 3 ثانیه روشن کنیدتاخیر (3000); digitalWrite (LED، LOW)؛ // رله را خاموش کنید ) ) else سریال. println(val); //خط دریافتی را در مانیتور پورت چاپ کنید val = "" ; ) اگر ( سریال. در دسترس () ) ( //اگر چیزی در مانیتور پورت وارد شوددر حالی که ( سریال. در دسترس () ) ( // رشته را در متغیر val ذخیره کنید ch = سریال. خواندن()؛ val += char (ch); تاخیر (10); )//mySerial.println(val); //انتقال تمام دستورات تایپ شده در مانیتور پورت به ماژول GSM if (val . indexOf ( "sendsms" ) > - 1 ) (//اگر دستور ارسال پیامک را مشاهده کردید اس ام اس (رشته ("سلام جهان")، رشته ("+71234567890"));//به شماره +71234567890 پیامک ارسال کنید ) val = "" ; //پاک کردن)) پیامک خالی (متن رشته، تلفن رشته) { سریال//روال ارسال پیامک سریال. println("ارسال پیامک شروع شد") ; mySerial. println ("AT+CMGS=\"" + تلفن + "\"" ); تاخیر (500); mySerial. چاپ (متن)؛ تاخیر (500); mySerial. چاپ ((char ) 26 ) ; تاخیر (500);
. println ("ارسال پیامک کامل شد"); تاخیر (2000); )
![](https://i0.wp.com/2150692.ru/images/faq/neoway_m590/port1.png)
معاینه
GPRS
در ماژول نسخه 1.30 مورد بررسی، پشتیبانی GPRS کاهش یافته است. من نتوانستم با نام DNS آن به سرور متصل شوم (به عنوان مثال mysite.ru)، فقط با آدرس IP آن موفق شدم. در ماژول دیگر SIM800L چنین مشکلی وجود نداشت.
لیست برخی از دستورات AT: | AT+CMGF=1 برحالت متنی | |||
(پیامک فقط به زبان لاتین) | AT+CSCS= "GSM" | |||
بر رژیم | AT+CLIP=1 شناسایی شماره تماس ورودی را فعال کنید |
|||
اگر فرمانی با 0 ارسال کنید، شناسایی شماره غیرفعال می شود و ماژول به جای شماره تماس گیرنده فقط پیام "RING" را ارسال می کند. | AT+CMGS="+79123456789" | |||
ارسال اس ام اس | ATI | |||
اطلاعات دستگاه را دریافت کنید | AT+IPR=19200 | |||
تنظیم سرعت پورت | AT+GSN | |||
IMEI ماژول را برمی گرداند | AT+CCLK؟ | |||
زمان را از ماژول بخوانید | AT+CCLK=«سال/میلیمتر/روز، ساعت:مم: ss+zz» که در آن ترتیب "سال / ماه / تاریخ، ساعت: دقیقه: ثانیه + منطقه زمانی" است، داده ها باید با صفرهای ابتدایی ارسال شوند، به عنوان مثال، اگر ماه ما "4" است، "04" باید ارسال شود . آن را پس بگیریدزمان فعلی |
|||
و تاریخ را می توان با ارسال همان دستور، فقط با علامت "؟" ارسال کرد: | AT+CMEE=0 سطح اطلاعات خطا می تواند از 0 تا 2 باشد. 0 - غیر فعال به سادگی ERROR را می نویسد. 1 - کد خطا بر خواهد گشتکد دیجیتال خطاها برای کار با ماژول از طریق ترمینال، حالت های ATV1، ATE1 AT+CMEE=2 برای برقراری ارتباط با میکروکنترلر راحت تر است، بهتر است از ATV0، ATE0 و AT+CMEE=0 استفاده کنید - این کار را آسان تر می کند. پاسخ های دریافتی را پردازش کنید. این تنظیمات پس از راه اندازی مجدد ماژول ذخیره نمی شوند، بنابراین باید این دستورات را در کد برنامه قرار دهید. |
|||
AT+CSQ | اطلاعات در مورد کیفیت سیگنال ماژول دو عدد +CSQ: 17.0 را برمی گرداند 17 - سطح سیگنال. می تواند در محدوده 0..31 یا 99 باشد. هر چه بیشتر بهتر است، اما 99 به معنای عدم وجود آن است. 0 - میزان خطای ارتباطی (اصطلاحاً RXQUAL). می تواند از 0 تا 7 باشد، هر چه عدد کمتر باشد، کیفیت ارتباط بهتر است. |
|||
AT+COPS؟ | اطلاعات مربوط به اپراتور که ماژول در شبکه آن ثبت شده است | |||
ATD+79121234567; | گرفتن شماره ("؛" لزوما) ماژول تماس خواهد گرفت عدد مشخص شدهو یکی از گزینه ها را برمی گرداند BUSY - شماره مشغول است NO DIALTONE - بدون سیگنال در خط NO CARRIER - بدون شبکه یا مشکل دیگری (به عنوان مثال، بدون پول در حساب) پاسخ NA - بدون پاسخ اتصال - یک تماس وجود دارد! |
|||
AT+CMGR=3.0 |
ماژول KEYES SIM900 GSM GPRS با کیفیت بسیار بالا |
![]() |
![]() |
![]() |
اتصال شیلد GSM GPRS به آردوینو
در این قسمت به بررسی مسائل مربوط به اتصال ماژول های GSM به برد Aduino می پردازیم. تقریباً همه نمونه ها بر اساس Arduino Uno هستند، اما بیشتر نمونه ها برای بردهای Mega، Nano و غیره نیز استفاده خواهند شد.
اتصال ماژول SIM800
برای اتصال به یک برد آردوینو، یک ماژول SIM800L، یک مبدل ولتاژ کاهنده، سیم های اتصال و یک باتری 12 ولتی نیاز دارید. ماژول SIM800L به یک ولتاژ غیراستاندارد آردوینو 3.7 ولتی نیاز دارد.
پین اوت ماژول SIM800 در شکل نشان داده شده است.
برد آردوینو باید از طریق به کامپیوتر متصل شود کابل یو اس بی. باتری 12 ولت را از طریق مبدل وصل کنید: -12 ولت به زمین آردوینو، از مبدل زمین به مبدل منفی، +12 ولت به مبدل مثبت. خروجی های ماژول TX و RX باید به پایه های 2 و 3 آردوینو متصل شوند. چندین ماژول را می توان به هر پین دیجیتال متصل کرد.
ماژول اتصال A6
ماژول A6 ارزانتر از SIM900 است و اتصال به آردوینو بسیار آسان است. ماژول با ولتاژ 5 ولت تغذیه می شود، بنابراین اتصال به عناصر کاهش ولتاژ اضافی نیاز ندارد.
برای اتصال به یک برد آردوینو (در در این موردبررسی شده آردوینو UNO)، ماژول GSM A6، سیم های اتصال. نمودار اتصال در شکل نشان داده شده است.
پایه RX از ماژول GSM باید به TX در برد آردوینو وصل شود، پایه TX باید به پایه RX در آردوینو وصل شود. زمین از ماژول به زمین در میکروکنترلر متصل می شود. پین Vcc در ماژول GSM باید به PWR_KEY متصل شود.
اتصال با استفاده از شیلد GSM-GPRS
قبل از اتصال، توجه به ولتاژ تغذیه سپر مهم است. جریان در زمان تماس یا ارسال داده می تواند به مقادیر 15-2 A برسد، بنابراین نباید سپر را مستقیماً از آردوینو تغذیه کنید.
قبل از اتصال به آردوینو، باید یک سیم کارت روی شیلد GSM-GPRS نصب کنید. همانطور که در شکل نشان داده شده است باید جامپرهای TX و RX را نیز نصب کنید.
اتصال به شرح زیر انجام می شود - اولین تماس (سیم زرد در شکل) از محافظ باید به TX در آردوینو متصل شود. پین دوم (سیم سبز) به RX در آردوینو متصل می شود. زمین از سپر به زمین از aruino متصل است. برق از طریق کابل USB به میکروکنترلر تامین می شود.
طرح اتصال بین شیلد و برد آردوینو در شکل نشان داده شده است.
برای کار، باید کتابخانه GPRS_Shield_Arduino را نصب کنید.
برای بررسی صحت مدار مونتاژ شدهشما باید کارهای زیر را انجام دهید: RESET و GND را در آردوینو وصل کنید (این منجر به انتقال مستقیم داده ها از شیلد به رایانه می شود)، سیم کارت را در شیلد قرار دهید و برق محافظ را روشن کنید. برد آردوینو باید به کامپیوتر متصل شود و دکمه پاور را فشار دهید. اگر همه چیز به درستی متصل شود، LED قرمز روشن می شود و LED سبز چشمک می زند.
شرح مختصری از تعامل از طریق دستورات AT
دستورات AT یک مجموعه هستند تیم های ویژهبرای یک مودم، متشکل از کوتاه رشته های متنی. برای اینکه مودم بتواند دستور داده شده را تشخیص دهد، خطوط باید با حروف در شروع شوند. زمانی که مودم داخل است، رشته پذیرفته می شود حالت فرمان. دستورات AT را می توان با استفاده از یک ارتباط ارسال کرد نرم افزارو به صورت دستی از صفحه کلید. تقریباً تمام دستورات را می توان به 3 حالت تقسیم کرد - تست که در آن ماژول پاسخ می دهد که آیا از دستور پشتیبانی می کند یا خیر. خواندن - خروجی پارامترهای فرمان فعلی. نوشتن - مقادیر جدید نوشته خواهد شد.
فهرست پرکاربردترین دستورات AT:
- AT - برای بررسی اینکه آیا ماژول به درستی وصل شده است یا خیر. اگر همه چیز درست باشد، OK برگردانده می شود.
- الف/ – دستور قبلی را تکرار کنید.
- AT+IPR؟ - به دست آوردن اطلاعات در مورد سرعت پورت. پاسخ +IPR خواهد بود: 0 OK (0 در این مورد خودکار است).
- AT+ICF؟ - تنظیم انتقال پاسخ +ICF: بیت، برابری خواهد بود.
- AT+IFC؟ - کنترل انتقال پاسخ IFC + خواهد بود: ترمینال از ماژول، ماژول از ترمینال (0 – بدون کنترل، 1 – کنترل برنامه، 2 - سخت افزار).
- AT+GCAP – قابلیت های ماژول را نشان می دهد. یک نمونه پاسخ +GCAP:+FCLASS،+CGSM است.
- AT+GSN – دریافت ماژول IMEI. نمونه پاسخ 01322600XXXXXXXXX.
- AT+COPS؟ - اپراتورهای موجود را نشان می دهد.
- AT+CPAS – وضعیت ماژول. پاسخ +CPAS: 0. 0 – آماده برای کار، 3 – تماس دریافتی، 4 – اتصال صوتی، 2 – ناشناخته.
- AT+CCLK؟ - اطلاعات مربوط به زمان و تاریخ فعلی
- AT+CLIP=1 – شناسه تماس گیرنده را فعال/غیرفعال کنید. 1 - فعال، 0 - غیرفعال.
- AT+CSCB=0 – دریافت پیامک های ویژه. 0 - مجاز، 1 - غیرفعال است.
- AT + CSCS = "GSM" - رمزگذاری پیام SMS. می توانید یکی از کدگذاری های زیر را انتخاب کنید: IRA، GSM، UCS2، HEX، PCCP، PCDN، 8859-1.
- AT+CMEE=0 – دریافت اطلاعات خطا.
- AT+CPIN=XXXX – کد پین سیم کارت را وارد کنید.
- AT&F - بازنشانی به تنظیمات کارخانه.
- AT+CPOWD=1 – خاموش شدن فوری (0) یا عادی (1) ماژول.
- ATD+790XXXXXXXXX – با شماره +790XXXXXXXXXX تماس بگیرید.
- ATA - پاسخ به تماس.
- AT+CMGS=”+790XXXXXXXXX”> پیامک آزمایشی – ارسال پیامک به شماره +790XXXXXXXXX.
در این مورد ما در نظر گرفتیم دستورات اساسیبرای ماژول SIM900. برای ماژول های مختلفدستورات ممکن است کمی متفاوت باشد. داده های ماژول از طریق ارائه خواهد شد برنامه ویژه"ترمینال" که باید روی رایانه شما نصب شود. همچنین می توانید دستورات را از طریق مانیتور پورت در Arduino IDE به ماژول ارسال کنید.
طرح هایی برای کار با ماژول GSM
ارسال پیامک با استفاده از SIM900 به عنوان مثال
قبل از ارسال پیام، باید ماژول را پیکربندی کنید. اول از همه، شما باید تبدیل به قالب متن پیام منتقل شده. برای این دستور AT+CMGF=1 وجود دارد. شما باید کدگذاری را با استفاده از دستور AT+CSCS="GSM" به GSM تبدیل کنید. این رمزگذاری راحت ترین است، زیرا کاراکترها در کد ASCII نشان داده می شوند که به راحتی توسط کامپایلر قابل درک است.
سپس باید یک پیام کوتاه شماره گیری کنید. برای این کار دستوری با شماره مشترک AT+CMGS=»+79XXXXXXXXXX» r ارسال می شود که در پاسخ از شما خواسته می شود یک متن پیامکی تایپ کنید. شما باید یک پیام ارسال کنید. پس از تکمیل، باید کد ترکیبی Ctrl+Z را ارسال کنید، ماژول امکان ارسال متن را به گیرنده می دهد. وقتی پیام ارسال شد، OK برگردانده می شود.
تعامل با ماژول بر اساس شاخص هایی است که به هر پیام جدید اختصاص داده می شود. با استفاده از این فهرست می توانید تعیین کنید که کدام پیام حذف یا خوانده شود.
دریافت پیامک. برای خواندن پیامک از دستور AT + CNMI = 2,2,0,0,0 استفاده کنید. ماژول کی میاد؟ پیام متنی، به پورت سریال +CMTI ارسال می کند: "SM",2 (در این مورد 2 است شماره سریالپیام ها). برای خواندن آن باید دستور AT+CMGR=2 را ارسال کنید.
پذیرایی تماس صوتی. اول از همه، برای انجام یک مکالمه، باید یک بلندگو و میکروفون را به ماژول متصل کنید. وقتی تماسی دریافت می شود، شماره ای که از آن تماس گرفته شده نشان داده می شود. برای کار، باید کتابخانه GSM را فعال کنید:
#عبارتند از
اگر سیم کارت مسدود شده است، باید کد پین آن را وارد کنید. اگر کد پین مورد نیاز نیست، این قسمت باید خالی بماند.
#define PINNUMBER ""
در setup()، انتقال داده به کامپیوتر باید مقداردهی اولیه شود. گام بعدییک متغیر محلی برای ردیابی وضعیت اتصال شبکه ایجاد می کند. طرح تا زمانی که سیم کارت به شبکه وصل نشود اجرا نمی شود.
boolean notConnected = true;
تابع gsmAccess.begin() برای اتصال به شبکه استفاده می شود. هنگامی که اتصال برقرار شد، مقدار GSM_READY برگردانده می شود.
vcs.hangCall(); - عملکردی که نشان می دهد مودم آماده دریافت تماس است.
getvoiceCallStatus() – وضعیت طرح را تعیین می کند. اگر کسی تماس بگیرد، RECEIVINGCALL را برمیگرداند. برای ثبت یک عدد، باید از تابع retrieveCallingNumber() استفاده کنید. وقتی به تماس پاسخ داده شد، TALKING برمی گردد. سپس طرح منتظر شخصیت می ماند خط جدیدبرای قطع گفتگو
یک اتصال GPRS برقرار کنید و داده ها را به یک سرور راه دور ارسال کنید
ابتدا باید کتابخانه SoftwareSerial را نصب کنید که به شما امکان انتقال اطلاعات سریال و اتصال ماژول GSM و میکروکنترلر آردوینو را می دهد.
برای ارسال اطلاعات به سرور، باید دستورات زیر را ارسال کنید:
AT+SAPBR=1,1 – باز کردن حامل.
سه دستور بعدی مربوط به تنظیم تنظیمات اتصال شبکه است.
AT+SAPBR=3,1,\”APN\”,\”internet.mts.ru\” – انتخاب اپراتور mts، نام نقطه دسترسی.
AT+SAPBR=3,1,\”USER\”,\”mts \” – کاربر mts را انتخاب کنید.
AT+SAPBR=3,1، \”PWD\”,\” mts\”
AT+SAPBR=1,1 – برقراری اتصال.
AT+HTTPINIT – مقداردهی اولیه http.
AT+HTTPPARA=”URL” – آدرس URL.
AT+HTTPREAD - در انتظار پاسخ.
AT+HTTPTERM – توقف http.
اگر همه چیز به درستی انجام شود، خطوط با دستورات AT در مانیتور پورت ظاهر می شود. اگر ارتباطی با مودم وجود نداشته باشد، هر بار یک خط نشان داده می شود. هنگامی که اتصال GPRS با موفقیت برقرار شد، LED روی ماژول شروع به چشمک زدن می کند.
من می خواهم یک راه بسیار ساده را به شما ارائه دهم کنترل از راه دورمنبع تغذیه
ما از سوکت های آماده RC استفاده خواهیم کرد، بنابراین نیازی به لحیم کاری نداریم. این بسیار جالب است، زیرا بهتر است 220 ولت (برای مبتدیان) را لمس نکنید.
کد
اگر از GSMSHIELD استفاده نمی کنید، بلکه از کتابخانه دیگری استفاده می کنید، البته کد متفاوت خواهد بود، اما اصل یکسان خواهد بود. در فواصل زمانی معین، اگر پیامک خوانده نشده ای داریم، آن ها را تجزیه می کنیم و اگر دستور معتبری از یک شماره مجاز آمده باشد، یک سیگنال رادیویی با توابع mySwitch.switchOff یا mySwitch.switchOn ارسال می کنیم و آدرس آن را به آنها ارسال می کنیم. سوکتتوجه داشته باشید در مورد من، برای شیلد از Seeedstudio، باید به GSM.cpp می رفتم و پین های مشخص شده را به 7 و 8 تغییر می دادم./* کد نمونه سوئیچ GSM آردوینو روشن/خاموش کردن پریزهای کنترل شده رادیویی نویسنده: ولادیسلاو راس، 2014 تماس: [ایمیل محافظت شده]شما باید دانلود کنید: 1. rc-switch https://code.google.com/p/rc-switch/ 2. GSMSHIELD http://www.gsmlib.org/ برای GSMSHIELD: * برای تغییر پین ها برای نرم افزارسریال، از دو خط در GSM.cpp استفاده کنید. *اگر شما هستیدبا استفاده از Mega، خط "#define MEGA" را در HWSerial.h حذف کنید * می توانید پیام های اشکال زدایی را در پورت سریال با تعریف DEBUG_ON */ #include "SIM900.h" #include فعال کنید.
چالش ها و مسائل؟
اگر سوکت ها نمی خواهند به هیچ کدام سوئیچ شوند، می توانید سعی کنید سیگنالی را از کنترل از راه دور اصلی به گیرنده دریافت کنید. rc-switch دارای کد نمونه است.بعدش چی؟
چگونه می توان این پروژه را بیشتر توسعه داد؟اولا، ما هنوز یک دسته پین روی خود آردوینو و روی شیلد GSM باقی مانده است. می توانید چند سنسور یا دستگاه را به آنها متصل کنید. به عنوان مثال، نظارت بر دما از راه دور یا آبیاری گل ها را انجام دهید.
ثانیا ما فقط از SMS استفاده کردیم و ماژول می تواند صدا و GPRS را نیز ارسال کند. GPRS می تواند داده های بسیار بیشتری را انتقال دهد. علاوه بر این، مجبور نیستید هنگام تماس تلفن را قطع کنید، اما، برای مثال، تماس را بپذیرید و به آنها اجازه دهید در محل به آنچه در حال رخ دادن است گوش دهند.
همچنین این امکان وجود دارد که بخواهید پیامک کنترلی را نه از یک شماره، بلکه از چندین شماره دریافت کنید. در این مورد، من توصیه می کنم اعداد را در دفترچه آدرس ذخیره کنید.