خوب این مشخص هست
اگر میخواهید وقتی پیام روشن شدن دریافت شد به سایر به جز فرستنده پیام ارسال بشه که ساده می باشد داخل یک حلقه شرط بررسی میکنید شماره دریافتی اگر شماره ای که میخواهید ارسال بکنید یکسان نبود ارسال انجام بشه.
اگر برای دستور های خاصی میخواهید شماره های خاصی تنظیم بکنید. مثلا در این فضا به شماره های 1 تا 3 ارسال بکنه. کافی است یک آرایه نیز ایجاد بکنید که در آن محل مشخص بکنید به چه کسانی پیام رو ارسال بکنه.
دلیل اینکه پیام ها به صورت رندوم گاهی ارسال و گاهی ارسال نمیشود قفل کردن ماژول سیم کارت در ارسال پیام های پشت هم هست. برای رفع این مشکل. کافی است متن پیام و شماره هایی که میخواهید برای آنها ارسال بکنید را از قبل داخل حافظه ماژول سیم کارت تنظیم بکنید.
برای این کار پس از این که ماژول سیم کارت روشن شد و آماده کار شد دستور های زیر را باید ارسال بکنید.
"AT+CPMS=\"ME\",\"ME\",\"ME\""
"AT+CMGD=1,4"
// در اینجا کل حافظه را پاک کرده اید
// این بخش را یکبار انجام بدهید
“AT+CMGW="+989123456789"” //شماره ای که میخواید پیام را سیو بکنید
//حال متن پیام مورد نظر خود را وارد میکنید
// در اینجا به شما اعلام میشود که پیام شما در حافظه شماره x ذخیره شد
// این بخش را به تعداد شماره ها و متن های مختلفی که میخواهید تکرار بکنید
حال شما یک آرشیو کامل از پیام های آماده داخل ماژول سیمکارت دارید.
برای ارسال پیام کافی است دستور
AT+CMSS=x //شماره ای که دستگاه داده است
ارسال بکنید تا پیام مورد نظر به شماره مورد نظر ارسال بشود. - از این لینک میتوانید اطلاعات بیشتری را دریافت بکنید
البته پیشنهاد بنده در این روش متن ها را برای یک شماره ایجاد بکنید. و در نهایت با دستور
AT+CMSS=x,"+989123456789"
متن مورد نظر که ذخیره شده است را به این شماره جدیدی که تایین کرده اید ارسال بکند.
در این روش متن ارسالی دچار خطا نمیشود و سرعت ارسال پیام بیشتر میشود.
حتما پس از اجرا این دستور منتظر جواب OK باشید و بعدش دستور ارسال پیام بعدی را بدهید. از دیلی برای این کار استفاده نکنید چون بسته به شلوغی شبکه امکان دارد زمان برگشت OK متفاوت باشد.
این موضوع که اعلام کردم هر بار موقع روشن کردن ماژول سیمکارت اطلاعات را پاک و از نو تنظیم بکنید نیز به این دلیل می باشد که در تست های بنده در حدود یک الی 2 هفته خاموش بودن سیستم این اطلاعات به صورت رندوم پاک میشوند و نمیتوان بهشون اعتماد کرد و وقتی در زمان روشن شدن تنظیم میشود مطمئن هستید تا زمانی که روشن هست مشکلی پیش نمی آید.
در نهایت برای این که پیامک برای چه شخصی ارسال بشود یا نشود را در یک گراف بکشید سپس با ایجاد شرط و حلقه هدف خود را ایجاد بکنید. به این صورت در زمینه برنامه نویسی گیج نمیشوید و نقشه ای از مراحل کار خود دارید.
از این 2 سایت برای بررسی چارت کدی که نوشته اید میتوانید استفاده بکنید.
https://app.code2flow.com/
https://codetoflow.com/
www.mymap.ai
ویرایش اول:
دستور AT+CPMS برای تنظیم کردن حافظه می باشد و بله باید بر روی ME تنظیم بکنیم تا از حافظه خود ماژول استفاده بشود.
همچنین بعد از تنظیم تمامی پیام ها دستور
AT+CPMS="SM","ME","SM"
نیز ارسال بکنید.
همچنین دقت بنمایید به توضیحات بالاتر. عرض کردم بعد از تنظیم کردم ماژول سیمکارت این دستور ها را ارسال بکنید.
حال توضیح بیشتر در مورد این که چرا این کار را انجام میدهیم.
هر بار شما میخواهید دستور ارسال پیام را بدهید ابتدا دستور میدهید که میخواهید یک پیام به یک شماره ای ارسال بشود. سپس از سمت ماژول یک کارکتر > می آید که متن پیام را وارد بکنید و زمانی که متن پیام را وارد میکنید با علامت پایان متن که پیام ارسال بشود.
گاهی پیش می آید به دلیل وجود نویز در خط ارتباطی بین ماژول و میکروکنترلر دیتا ارسالی دچار خطا میشود و متن های اشتباهی تایپ میشود و در صورتی که این متن تایپ شده خیلی ایراد سنگین داشته باشد پیام ارسال نمیشود و به شما با ارور بر میگردد.
برای رفع این مشکل راهکار این است که پیام را داخل سیو مسیج های داخلی خود سیمکارت ذخیره کرده باشیم. به این صورت شما فقط دستور میدهید که متن (برای مثال شماره 3) به شماره فلان ارسال بشود. نیازی نیست میکروکنترلر و ماژول سیمکارت درگیر ارسال و دریافت پیام بشوند و پس از این دستور ماژول اقدام به ارسال پیام میکند و در صورتی که شارژ نداشته باشد و آنتن دهی کافی نباشد به شما ارور مربوطه را میدهد.