ارسال و دریافت sms با شیلد sim900a آردوینو
ماژول sim900a یکی از معروفترین ماژولهای gsm/gprs با هسته پردازشی بسیار قوی AMR926EJ-S میباشد. توسط این ماژول میتوان عمیات برقرای تماس،ارسال و دریافت اساماس ، ارسال فکس و هچنین نبادل اطلاعات با اینترنت را انجام داد.از طریق کنترل این ماژول می توانید در هر جای کره زمین که امواج موبایل موجود می باشد دستگاه های خود را کنترل و به تبادل اطلاعات بپردازید.در ادامه این مطلب با مرجع تخصصی آردوینو ،دیجی اسپارک همراه باشید. شیلد sim900a با تمامی آردوینوهای استانداز سازگار بوده و میتوان آن راه بر روی آردوینوهای استتاندار قرار داد. این شیلد را میتوان به وسیلهی پروتکل سریال به آردوینو متصل نمود و توسط دستورات AT Command کنترل نمود.
ویژگی شیلد sim900a
- پشتیبانی از دو باند ۹۰۰ و ۱۸۰۰ مگاهرتز
- GPRS کلاس ۸/۱۰
- ایستگاه موبایل GPRS کلاس B
- مطابق با GSM phase 2/2+
- دارای جک اسپیکر و میکروفون
- کنترل از طریق AT Command
- جریان مصرفی بسیار پایین در حدود ۱٫۵ میلیآمپر در حالت خواب
- کد کنندههای صدا Half rate (HR) ,Full rate (FR) ,Enhanced Full rate (EFR)
- عمل کرد هندس فری AMR ,Half rate (HR),Full rate (FR)
- ۱۲ عدد GPIO به همراه ۲عدد pwm و ۱ عدد
قطعات در شیلد sim900a
- Power select –انتخاب تغذیه ماژول که از ولتاژ آردوینو استفاده کند یا ولتاژ خارجی
- Power jack – جک تغدیه اتصال به ۴٫۸ الی ۵ ولت
- Antenna interface – اتصال به آنتن خارجی
- Serial port select – تنظیم استفاده از پورت سریال نرمافزاری یا سخت افزاری
- Hardware Serial – D0/D1 of Arduino/Seeeduino (منظور همان ارتباط سریال معمولی است که به وسیله پین شماره ۰ و ۱ انجام میشود.)
- Software serial – D7/D8 of Arduino/Seeeduino only (منظور ارتباط سریالی است که به وسیله سایر پینهای دیجیتال آردوینو انجام میشود)
- Status LED – هنگام روشن بودن بودن ماژول این چراغ روشن میشود
- Net light – هنگامی که ماژول به اینترنت متصل شود این چراغ روشن میشود
- UART of SIM900 – UART پینهای
- Microphone – میکروفون
- Speaker اسپیکر-
- GPIO,PWM and ADC of SIM900 – GPIO,PWM and ADC pins breakout of SIM900
- Power key – سوئیچ تغذیه
سخت افزار مورد نیاز
آردوینو Uno
شیلد sim900a
آمادهسازی شیلد sim900a
در ابتدا پینهدر را بر روی شیلد sim900a آردوینو لحیم کنید و سپس شیلد را بر روی آردوینو Uno قرار دهید.
در هنگامی که شما shield sim900a را خریداری میکنید ، جامپر مربوط به تنظیم سریال سخت افزاری یا نرمافزاری همانند حالت زیر میباشد:
اکنون میابست جامپر را جدا کرده و در وضعیت زیر قرار دهید:
هم اکنون کتابخانهی شیلد sim900a را از لینک زیر دانلود کنید.این کتابخانه توسط تیم تخصصی دیجی اسپارک اصلاح شده است و فقط برای این شیلد تست شده است .این کتابخانه از دو پین شماره ۷ و ۸ به منظور ارتباط سریال نرمافزاری با آردوینو استفاده میکند.
دانلود کتابخانه shiled GSM sim900a arduino
معرفی توابع به کار رفته شده در این پروژه
char DeleteSMS(byte position)
برای اینکه بتوانید پیامها را در این ماژول دریافت کنید باید حافظه اساماس سیم کارت خود را خالی کنید ، زیرا سیمکارت شما قابلیت ذخیره ۲۰ اساماس را دارد ، پس باید حافظه سیمکارت خود را خالی کنید.برای دیلیت اساماس ها باید از تابع فوق استفاده کنید. position شمارهی خانهی حافظه سیم کارت میباشد که عددی بین ۱ الی ۲۰ میباشد.این تابع در صورتی که با موفقیت اساماس مورد نظر را حذف کند مقدار ۱ و در غیر این صورت مقدار ۰ را بر میگرداند.
مثال: در این مثال تمام حافظه اساماسهای سیم کارت را پاک میکند.
for(i=1;i<=20;i++) { sms.DeleteSMS(i); }
char SendSMS(byte *number_str, char *message_str)
به وسیلهی این تابع میتوان پیامکی به شماره مورد نظر ارسال کنیم. به جای آرگمان اول شماره تلفنی که میخواهیم به آن اساماس ارسال کنیم و به جای آرگمان دوم متن اساماس قرار میگیرد.این تابع در صورتی که عملیات ارسال موفقیتآمیز بود مقدار ۱ و در غیراینصورت مقدار ۰ را برمیگرداند.
مثال:در این مثال به شماره +۹۸۹۱۳۶۹***** یک پیام حاوی متن hi this is a test from gsm shield ارسال میشود.
if (sms.SendSMS("+9891369*****", "hi this is a test from gsm shield")) { Serial.println("nSMS sent OK."); } else { Serial.println("nError sending SMS."); }
تابع فوق دارای یک اورلود دیگر میباشد که به وسیلهی آن میتوانید به شمارهی ذخیره شده در حافظه سیمکارت یک پیامک ارسال کنید . این تابع به صورت زیر میباشد:
char SendSMS(byte sim_phonebook_position, char *message_str)
به جای آرگمان sim_phonebook_position موقعیت شماره موردنظر موجود د حافظه سیمکارت قرار میگیرد.( این عدد بین ۱ الی ۲۰ میباشد). همچنین بهجای آرگمان دوم متن پیام قرار میگیرد.
مثال: در این مثال به شمارهای که در خانهی شماره ۱ سیمکارت ذخیره شده ، پیامی حاوی متن hi this is a test from gsm shield ارسال میکنیم.
if (sms.SendSMS(1, “hi this is a test from gsm shield”)) { Serial.println("nSMS sent OK."); } else { Serial.println("nError sending SMS."); }
char IsSMSPresent(byte required_status)
به وسیلهی این تابع متوجه میشویم که اساماسی با وضعیت مورد نظر ما وجود دارد یا نه. required_statusمیتواند دارای مقادیر زیر باشد:
SMS_UNREAD – اساماس خوانده نشده
SMS_READ – اساماس خوانده شده
SMS_ALL – تمام اساماسهای خوانده شده
این تابع در صورتی که اساماسی با وضعیت مورد نظر نا وجود نداشته باشد مقدار ۰ را برمیگرداند.همچنین در صورتی که اساماسی با وضعیت مورد نظر ما وجود داشته باشد مقداری بین ۱ الی ۲۰ ( این مقدار مشخص کننده موقعیت اساماس در سیمکارت میباشد) بر میگرداند. اگر قبل از رسیدن به این تابع پیامکی دریافت شود ، پیام در وضعیت SMS_UNREAD قرار میگیرد ولی به محض اینکه این تابع فراخوانی شود پیامک دریافت شده در وضعیت خوانده شده قرار میگیرد.
char GetSMS(byte position, char *phone_number, char *SMS_text, byte max_SMS_len)
به وسیلهی این تابع میتوان اساماسی را در حافظهی مشخص سیمکارت بخوانیم.
position:شماره خانهی حافظهی سیم کارت (عددی بین ۱ الی ۲۰)
phone_number: اشاره گری است که شماره فردی که اساماس ارسال کرده است در آن ریخته میشود.
SMS_text :اشارهگری است که متن پیام در آن ریخته میشود.
max_SMS_len :حداکثر تعدادی کاراکتری از اسام اس است که درون SMS_text ریخته میشود.
مثال:
در این مثال میخواهیم اساماس دریافت شده را بخوانیم. پس ابتدا باید موقعیت این پیام را در حافظه سیمکارت توسط تابع IsSMSPresent بیابیم و سپس توسط تابع GetSMS ، آن را بخوانیم:
GSM gsm; char position; char phone_num[20]; // array for the phone number string char sms_text[100]; // array for the SMS text string position = gsm.IsSMSPresent(SMS_UNREAD); if (position) { // there is new SMS => read it gsm.GetGSM(position, phone_num, sms_text, 100); Serial.println(“DEBUG SMS phone number: “, ۰); Serial.println(phone_num, 0); Serial.println(“rn SMS text: “); Serial.println(sms_text); }
پروژه
در این پروزه با استفاده از یک کلید یک اساماس را برای شماره مورد نظر ارسال میکنیم ، همچنین مداوم چک میکنیم که اگر پیامی اساماسی برای ماژول ارسال شود ، آن را دریافت کند و بر روی سریال مانیتور نرمافزار نمایش دهد.
اتصالات شیلد Sim900a به آردوینو
شیلد gsm مستقیم بر روی برد آردوینو uno قرار میگیرد. یک عدد تاج سوییچ به صورت پولآپ داخلی به پین شماره ۲ آردوینو متصل میشود. تذکر: در این پروژه برای تشخیص فشرده شدن کلید از کتابخانه دیبانسینگ (Deboouncing) استفاده شده است که میتوانید آموزش آن را در لینک زیر مشاهده کنید. آموزش دیبانسنگ کلید در آردوینو
کد راه اندازی شیلد Sim900A
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
پس ازفشرده شدن کلید باید LED بر روی شیلد روشن شود.
پس از عملیات فوق حدود یک دقیقه زمان میبرد که شیلد sim900 فعال شود .در صورتی که مراحل را به درستی انجام داده باشید ، بر روی سریال مانیتور عبارت زیر را مشاهده میکنید:
عالیه 🙂 لطفا درباره راههای بی سیم ارتباط بازم مطلب بزارید 🙂
به روی چشم مسلم جون
میخوای در رابطه با LED بزارم ک بیشتر خوشت بیاد؟
اره مسلم خیلی ال ایدی دوست داره خخخخ
:/
سلام علیرضا من دارم پایتون یاد میگیرم داش کمک میکنی تلگرام منو اد کن
با سلام
کاربر گرامی امکان دریافت راهنمایی فقط و فقط از طریق سایت و همین بخش نظرات امکان پذیر است. اسپارکرها نمیتوانند برای هر کاربری به صورت مجزا وقت بگذارند.
با سلام
من داخل این پروژه به یه مشکل بر خوردم
من از این شید برای راه اندازی رله استفاده میکنم ولی نمی تونم از تابع DeleteSMS استفاده کنم میشه داخل پروژه از این تابع هم استفاده کنید
سلام
کاربرد این تابع خیلی راحته فقط کافیه بنویسین sms.DeleteSMS(i);
سلام
یه سوال داشتم من از این پروژه برای کنترل وسایل برقی استفاده می کنم فقط مشکل اینجاست که وقتی آردوینو از طریق پورت USB به لپتاپ وصل هست و داخل نرم افزار آردوینو هستم و سریال مانیتور هم بازه برنامه به خوبی کار میکنه و SMS دریافت میکنه و سایل را کنترل می کنه ولی وقتی از طریق آدابتور وصل میکنم هیچ عکس العملی نشون نمیده
جامپر را هم به حالت سخت افزاری و نرم افزاری تغیر دادم
گرند ماژول رو به گرند آردوینو وصل کن.
با سلام آیا میشه این رو به رزبری پای وصل کرد؟لطفا زود جواب بدید که لازمش دارم
سلام بله
کافیست پین شاره ۷ و ۸ ماژول را به پین های rx , tx رزبری متصل کنین
با سلام و سپاس از آموزش بسیار خوبی که ارائه کردید فقط یه سئوالی داشتم ،
برای بستن تابع ، مثل قطع ارتباط یا ارسال ۱ بار sms از چه دستوری باید استفاده کنیم؟
در کلاس اصلی که در آردوئینو مطرح شده از تابع end استفاده شده.
ممنونم از شما
باسلم معلومه که واقعا کار کردی آفرین نه مثل حتی سایتهای خارجی که کپی می کنند.ممنون.
با سلام
از توجه شما سپاسگزارم، تلاش ما در دیجی اسپارک ارتقاء سطح علمی کاربران است.
سلام
من از آردینو مگا استفاده می کنم.
می خواستم بدونم که اگر من در این شیلد، پین ۲ رو به پین ۱۰ وصل کنم. و شاخه پین ۲ رو کج کنم که به آردینو وصل نشه، میتونم این شیلد رو وصل کنم و ازش استفاده کنم؟
درود
در صورتی که پین های RX و tx به درستی متصل شوند مشکلی پیش نمی آید و می توانید از آن استفاده نمایید
موفق باشید
سلام
برای من متن های فارسی اصلا معلوم نیستن و عکسا خیلی بزرگن هر چی صفحه رو کوچیک بزرگ می کنم. میشه لطفا صفحه رو درست کنید؟ مرسی
سلام مرسی از سایتتون این مطلبتون بد نمایش داده میشه اگه میشه درستش کنید فکر کنم عکساتون بزگن
مرسی
با سلام و تشکر از توجه شما، مورد رفع شد.
سلام،
توابع این برنامه فقط برای شیلد کاربرد دارند؟
نمی شه برای ماژول های جدا هم به کارشون برد؟
با سلام و تشکر از توجه شما، بررسی کنید و اگر جواب داد از همین طریق برای اطلاع رسانی اقدام کنید.
سلام فرقی با هم ندارند.
سلام اگه ممکنه اموزش ماژول http://e******.ir/%D9%85%D8%A7%DA%98%D9%88%D9%84-gps-gsm-gprs/1413-%D8%A8%D8%B1%D8%AF-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2-sim900.html بزارید متشکر از سایت خوبتون
سلام ممنون از سایت خوبتون اگه میتونید اموزش ماژول http://******.ir/%D9%85%D8%A7%DA%98%D9%88%D9%84-gps-gsm-gprs/1413-%D8%A8%D8%B1%D8%AF-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2-sim900.html
را بزارید
با سلام
ایا میشود از این کتابخانه برای sim800a هم استفاده کرد؟
سلام
خواستم بدونم اگه بخوایم از AT Command های دیگه مثلا چک کردن شارژ سیم کارت استفاده کنیم کجای کتابخانه های sim900 باید فراخوانیشون کنیم یا باید کل برنامه رو تغییر بدیم ممنون میشم جواب بدید.
با سلام
برای این موضوع باید At commandهای مربوط به ussd را در دیتاشیت مربوطه مطالعه کنید.
سلام
دوست عزیز دستورات AT مشخصه ولی من پروژه ام رو با کتابخانه های GSM.Zip بالا نوشته ام حالا این دستورات AT رو کجا باید اضافه کرد …GSM.h,SMS.h,SIM900.h ممنون میشم کمک بدید.
” AT + CUSD = , ” * 140 * 1# ” , درخواست شارژ ایرانسل
سلام
من هنگامی که شیلد رو روی برد Arduino Uno نصب می کنم، و دکمه ی powerkey را به مدت یک یا دو ثانیه هم فشار می دم، ولی چراغ status LED بعد از چند بار چشمک زدن خاموش میشه.
میشه راهنماییم کنید؟؟؟
با سلام
ضمن تشکر از توجه شما، لطفا سیم کارت مورد استفاده با سیم کارت اپراتور دیگر جابجا کنید. سپس بررسی کنید.
سلام
ببخشید امکانش هست کد فعال سازی gprs یا پروژه کاملش رو هم بزارید هر جا گشتم دنبال پروژش چیزی پیدا نکردم
با سلام
ضمن تشکر از توجه شما، بررسی خواهیم کرد و در صورتی که نیاز عمده کاربران باشد، اقدام خواهیم کرد. شما میتوانید سوالهایی را که به هنگام کار با آن روبرو میشوید را از همین طریق اعلام کنید.
با سلام و سپاس از آموزش بسیار خوبی که ارائه کردید فقط یه سئوالی داشتم ،
برای بستن تابع ، مثل قطع ارتباط یا ارسال ۱ بار sms از چه دستوری باید استفاده کنیم؟
در کلاس اصلی که در آردوئینو مطرح شده از تابع end استفاده شده.
ممنونم از شما
با سلام
ضمن تشکر از توجه شما برای این منظور میتوانید از دستورات AT در کدها استفاده کنید. مانند این نمونه کد:
void sendSMS(String number, String mess) {
SIM900.print(“AT+CMGF=1\r”);
delay(100);
SIM900.println(“AT + CMGS = \”” + number + “\””);
delay(100);
SIM900.println(mess);
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
}
if (v==”salam”){
(sms.SendSMS(“09389817833”, “Arduino SMS”));
}
اینجا من یه چیزی تعریف کردم که هروقت یه پیام فرستادم به شیلد
“salam”
جواب رو arduino sma
میفرسته
حالا من یه سلام که میفرستم
پشت سر هم جواب رو arduino sma برام میفرسته
در صورتی که من میخوام یه بار برام جواب رو بفرسته
به نظر شما با چه دستوری میتونم این کارو انجام بدم؟
توی setupهم گذاشتم نشد
توی loopهم میزارم پشت سر هم این پیام رو میفرستهarduino sma
اگه امکان داره کمکم کنید
با تشکر???
با سلام
ضمن تشکر از توجه شما، برای این منظور از کد دستوری زیر استفاده کنید.
void sendSMS(String number, String mess) {
SIM900.print(“AT+CMGF=1\r”);
delay(100);
}
سلام با تشکر از سایت خوبتون
من میخوام مقدار دمارو با سنسورlm35اندازه بگیرم بعد مقدار دمارو باsmsارسال کنم چطور میتونم این کارو انجام بدم
متغیردما من از نوعfloatاست من توی متن پیام مجاز نیستم متغیر floatبزارم باید بریزم توی یه متغیر دگه از نوعcharبعد مقدار رو ارسال کنم
چطور میتونم این کارو انجام بدم
از تابعsprintfهم استفاده کردم نشد
اگه امکانش هست راهنماییم کنید یک هفته است که چشام درومد انقد کد تست کردمدجواب نداد
من این پروژه رو برای دانشگاه میخوام ترو خدا راهنماییم
با سلام
ضمن تشکر از توجه شما، کاربر گرامی قبل از اینکه زمان را از دست بدهید، به دیجی اسپارک مراجعه کنید. پاسخ گویی و رفع عیب شما کاربران از خدمات دیجی اسپارک است. برای این منظور از کد زیر استفاده کنید
char buffer[64];
snprintf(buffer, sizeof buffer, “%f”, myFloat);
سلام تشکر از پاسخ شما
تابع (snprintf) داخل اردوینو تعریف نشده است جواب نمیدهد
موقع کامپایل کردن خطا میدهد
چکارش کنم؟
سلام مجدد، خواهش میکنم. لطفا متن خطا دریافتى در کامپایلر آردوینو را دقیقا کپى و ارسال کنید.
با سلام
dtostrf(tempc,4,2,matn);
مشکل من با این کد حل شد
داخلhelpاردوینو خوندم که از توابع sprintfنمیشه برای متقیرfloatاستفاده کرد
باید از dtostrfاین کد استفاده کنیم
با تشکر از راهنمایی خوبتون ????
فقط یه سوال دیگه داشتم خدمت شما این کتاب خونه ای که شما دادیت فقط برای sim900است؟
نمیش از sim800استفاده کنیم؟
سلام مجدد
خواهش میکنم. در پاسخ به سوال شما، خیر نمیتوانید از این کتابخانه براى sim800 استفاده کنید. ماژول sim800 کتابخانه خاص خودش را دارد.
با عرض سلام و خسته نباشید، آیا امکان استفاده از این کتابخونه برای ماژول SIM908 وجود داره؟
با سلام
ضمن تشکر از توجه شما، به طور معمول کتابخانههای Sim900 و Sim908 یکسان هستند. برای اطلاع دقیقتر بایستی که این موضوع را تست کنید. سپس نتیجه را از همین طریق اعلام کنید تا دیگر کاربران هم استفاده کنند.
ممنون. فقط یه سوال دیگه داشتم. من از Arduino mega استفاده میکنم. پایه های rx , tx ماژول sim رو باید به کدوم پایه های arduino وصل کنم؟
سلام مجدد، خواهش میکنم. اگر از شیلد استفاده میکنید، نیازی به اتصال مجزا ندارید، شیلد را روی برد قرار دهید. اگر از ماژول استفاده میکنید، پایه tx ماژول به پین RX برد و پایه rx ماژول به پین TX برد باید متصل شوند.
سلام من از شیلد با آردینو نانو استفاده کردم پروژه کامل جواب میده ولی بعد از گذشت یک روز به شیلد تماس میگیری میگه خاموشه ولی در عمل روشنه هر سه چراغ روشنن و چشمک نمی زنن اول فکر کردم شیلد مشکل داره عوض کردم جواب نگرفتم همون مشکل سرجاشه با چه AT میشه فهمید مشکل پیدا کرده شیلد رو ریست کرد راهنمای بفرمایید ممنون میشم.
با سلام
ضمن تشکر از توجه شما، برای این منظور دستور AT را از طریق سریال مانیتور ارسال کنید. اگر پیغامی برگرداند، نشانه سالم بودن است.
وقتی وقفه خارجی آردینو رو به پایه RI شیلد وصل میکنم به محض دریافت اس ام اس با تماس فعال می شه ولی نمیشه از دستورات کتابخونه sim900 تو حلقه وقفه استفاده کرد چون عملا اجرا نمیشن و آردینو هنگ میکنه و دیگه بر نمی گرده به حلقه loop برنامه.
سلام.من با sim 800c وuno پیام فرستادم به این شکل که کد برنامه رو آپلود بعد سریال مانیتور میزدم و شماره در com میزدم وبه همین شکل متنی که میخواستم بفرستم و پیام ارسال میشد.
حالا میخوام بدون نوشتن چیزی ازطرف من درcom این پیام ارسال شود.مثلا سنسور دما(lm35) قرار بدم وقتی دما از حد مشخص شده بالا رفت یه پیام به شماره من ارسال کند.راه اندازی سنسور دما رو هم بلدم .ممنون میشم اگر کمک کنید .پاسخ اینجا دنبال کنم ؟
@meysam18888 تلگرام بنده
با سلام
کاربر گرامی برای این منظور باید دانش برنامه نویسیتان را تقویت کنید. همچنین دقت داشته باشید که اهداف دیجی اسپارک آموزش پروژه محور است نه انجام پروژه برای دیگران! اگر توانایی کد نویسی ندارید بتدا دانش برنامه نویسی و الکترونیک فرا گیرید و سپس به سراغ انجام پروژه روید. این طور برداشت نشود که شما هر کاری خواستید بکنید بیایید و در دیجی اسپارک مطرح کنید و بدون تلاش خودتان به جواب برسید. شما فقط میتوانید ارورها و اشکالاتتان را در اینجا مطرح کنید. نویسندههای دیجی اسپارک که در هر لحظه در دسترس نیستند تا به تلگرام شما مراجعه کنند.
سلام
واقعا جای تشکر داره به دلیل اینهمه زحماتی که میکشید
به مشکلی بر خوردم امیدوارم بتونید کمکم کنید
من این برنامه که میخوام اپ کنم نرم افزار اردیونو این ارور رو به من میده لطفا راهنماییم کنید
**************************************************************
Arduino: 1.8.5 (Windows 10), Board: “Arduino/Genuino Uno”
C:\Users\Amir\Documents\Arduino\sketch_oct22b\sketch_oct22b.ino: In function ‘void loop()’:
C:\Users\Amir\Documents\Arduino\sketch_oct22b\sketch_oct22b.ino:78:70: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
if (sms.SendSMS(“+9891317*****”, “hi this is a test from gsm shield”))
^
C:\Users\Amir\Documents\Arduino\sketch_oct22b\sketch_oct22b.ino:78:70: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read()’:
(.text+0x0): multiple definition of `__vector_3′
libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read()’:
(.text+0x0): multiple definition of `__vector_5′
libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here
libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read()’:
(.text+0x0): multiple definition of `__vector_4′
libraries\GSM\GSM3SoftSerial.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino/Genuino Uno.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
********************************************
با سلام
ضمن تشکر از توجه شما، بنده این برنامه را ننوشتهام ولی با توجه به ارور دریافتی لطفا شماره موبایل را در کدها درست کنید. سپس امتحان کنید در هر صورت چه رفع مشکل شد و چه رفع نشد از همین طریق اطلاع رسانی کنید.
سلام: کد زیر رو برای پروژه ام نوشتم.منتها یهerorr میده نمیدونم بخاطر چیه؟
لطفا اگر امکانش هست بگین مشکلش چیه؟خیلی هم عجله دارم.!!!
باتشکر.
email: m.ostovan95@gmail.com
خطا:
(((Arduino: 1.8.1 (Windows 10), Board: “Arduino/Genuino Uno”
C:\Users\M.OSTO1\Desktop\GSM_GPRSLibrary_SMS\GSM_GPRSLibrary_SMS.ino:1:20: fatal error: SIM900.h: No such file or directory
#include “SIM900.h”
^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
)))
برنامه:
((#include “SIM900.h”
#include “Bounce2.h”
#include
#define BUTTON_PIN””
#define BUTTON_PI””
#define BUTTON_P””
//If not used, is better to exclude the HTTP library,
//for RAM saving.
//If your sketch reboots itself proprably you have finished,
//your memory available.
//#include “inetGSM.h”
//If you want to use the Arduino functions to manage SMS, uncomment the lines below.
#include “sms.h”
SMSGSM sms;
Bounce debouncer=Bounce();
Bounce debouncer1=Bounce();
Bounce debouncer2=Bounce();
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char sms_position;
char phone_number[20];
char sms_text[170];
int i,k,j,l;
int a ;
void setup()
{
digitalWrite(9,HIGH);
//sms_position == a;
//ernal pull-up :
pinMode(BUTTON_PIN,INPUT_PULLUP);
pinMode(BUTTON_PI,INPUT_PULLUP);
pinMode(BUTTON_P,INPUT_PULLUP);
pinMode(4,OUTPUT);
pinMode(9,OUTPUT);
// After setting up the button, setup the Bounce instance :
debouncer.attach(BUTTON_PIN);
debouncer1.attach(BUTTON_PI);
debouncer2.attach(BUTTON_P);
debouncer.interval(50);
// Setup the LED :
Serial.begin(9600);
if (gsm.begin(9600))
{
Serial.println(“nstatus=READY”);
started=true;
}
else
{
Serial.println(“nstatus=IDLE”);
}
// if(started)
// {
//
//}
for(a=1;a<=20;a++)
{
sms.DeleteSMS(a);
}
// }
};
void loop()
{
//i == 0;
debouncer.update();
// Call code if Bounce fell (transition from HIGH to LOW) :
if ( debouncer.fell() )
{
Serial.println("press");
if(started)
{
if (sms.SendSMS("+989382666304", "no power"))
{
Serial.println("nSMS sent OK.");
}
else
{
Serial.println("nError sending SMS.");
}
}
}
debouncer1.update();
if ( debouncer1.fell() )
{
Serial.println("press");
if(started)
{
if (sms.SendSMS("+989382666304", "power"));
{
Serial.println("nSMS sent OK.");
}
}
}
if(started)
{
//Read if there are messages on SIM card and print them.
sms_position=sms.IsSMSPresent(SMS_UNREAD);
if (sms_position)
{
// read new SMS
Serial.print("SMS postion:");
Serial.println(sms_position,DEC);
sms.GetSMS(sms_position, phone_number, sms_text, 100);
// now we have phone number string in phone_num
Serial.println(phone_number);
// and SMS text in sms_text
Serial.println(sms_text);
if(!strcmp(sms_text,"on")){
digitalWrite(4,HIGH);
Serial.println("LED TURN ON");
delay(5000);
for(a=1;a<=5;a++)
{
sms.DeleteSMS(a);
}
// Serial.print("delete sam");
//+ for(a=1;a<=5;a++)
// {
// sms.DeleteSMS(a);
// }
}
if(!strcmp(sms_text,"of")){
Serial.println("LED TURN OFF ");
digitalWrite(4,LOW);
delay(5000);
//sms.DeleteSMS;
Serial.print("delete sam");
for(a=1;a<=5;a++)
{
sms.DeleteSMS(a);
}
// for(a=1;a<=5;a++)
//{
// sms.DeleteSMS(a);
//}
}
else{
digitalWrite(4,HIGH);
for(a=1;a<=5;a++)
{
sms.DeleteSMS(a);
}
}
// for(a=1;a<=50;a++)
//{
// sms.DeleteSMS(a);
//}
}
//else
{
//Serial.println("NO NEW SMS,WAITTING");
}
debouncer2.update();
if ( debouncer2.fell() ){
Serial.println("press");
i++;
switch (i) {
case 1:
Serial.println("first");
sms.SendSMS("+989382666304", " A");
break;
case 2:
Serial.println("second");
sms.SendSMS("+989382666304", " B");
break;
case 3:
sms.SendSMS("+989382666304", "C ");
// Serial.println("end");
// delay(10000);
// Serial.println("reset");
break;
case 4:
sms.SendSMS("+989382666304", " D");
break;
case 5:
sms.SendSMS("+989382666304", " E");
digitalWrite(9,LOW);
break;
}
i == 0;
j == 0;
k == 0;
l == 0;
}
}
//for(a=1;a<=10;a++)
//{
// sms.DeleteSMS(a);
// }
for(a=1;a<=10;a++)
{
sms.DeleteSMS(a);
}
}))
با سلام و تشکر از توجه شما
ارور مربوط به کتابخانه SIM900.h میباشد. لطفا از آموزش نصب کتابخانه در نرم افزار آردوینو مراحل را پیش بروید. سپس موارد را اطلاع رسانی کنید.
#include “SIM900.h”
#include “Bounce2.h”
#include
#define BUTTON_PIN 3
#define BUTTON_PI 1
#define BUTTON_P 6
//If not used, is better to exclude the HTTP library,
//for RAM saving.
//If your sketch reboots itself proprably you have finished,
//your memory available.
//#include “inetGSM.h”
//If you want to use the Arduino functions to manage SMS, uncomment the lines below.
#include “sms.h”
SMSGSM sms;
Bounce debouncer=Bounce();
Bounce debouncer1=Bounce();
Bounce debouncer2=Bounce();
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char sms_position;
char phone_number[20];
char sms_text[170];
int i,k,j,l;
int a ;
void setup()
{
digitalWrite(9,HIGH);
//sms_position == a;
//ernal pull-up :
pinMode(BUTTON_PIN,INPUT_PULLUP);
pinMode(BUTTON_PI,INPUT_PULLUP);
pinMode(BUTTON_P,INPUT_PULLUP);
pinMode(4,OUTPUT);
pinMode(9,OUTPUT);
// After setting up the button, setup the Bounce instance :
debouncer.attach(BUTTON_PIN);
debouncer1.attach(BUTTON_PI);
debouncer2.attach(BUTTON_P);
debouncer.interval(50);
// Setup the LED :
Serial.begin(9600);
if (gsm.begin(9600))
{
Serial.println(“nstatus=READY”);
started=true;
}
else
{
Serial.println(“nstatus=IDLE”);
}
// if(started)
// {
//
//}
for(a=1;a<=20;a++)
{
sms.DeleteSMS(a);
}
// }
};
void loop()
{
//i == 0;
debouncer.update();
// Call code if Bounce fell (transition from HIGH to LOW) :
if ( debouncer.fell() )
{
Serial.println("press");
if(started)
{
if (sms.SendSMS("+989382666304", "no power"))
{
Serial.println("nSMS sent OK.");
}
else
{
Serial.println("nError sending SMS.");
}
}
}
debouncer1.update();
if ( debouncer1.fell() )
{
Serial.println("press");
if(started)
{
if (sms.SendSMS("+989382666304", "power"));
{
Serial.println("nSMS sent OK.");
}
}
}
if(started)
{
//Read if there are messages on SIM card and print them.
sms_position=sms.IsSMSPresent(SMS_UNREAD);
if (sms_position)
{
// read new SMS
Serial.print("SMS postion:");
Serial.println(sms_position,DEC);
sms.GetSMS(sms_position, phone_number, sms_text, 100);
// now we have phone number string in phone_num
Serial.println(phone_number);
// and SMS text in sms_text
Serial.println(sms_text);
if(!strcmp(sms_text,"on")){
digitalWrite(4,HIGH);
Serial.println("LED TURN ON");
delay(5000);
for(a=1;a<=5;a++)
{
sms.DeleteSMS(a);
}
// Serial.print("delete sam");
//+ for(a=1;a<=5;a++)
// {
// sms.DeleteSMS(a);
// }
}
if(!strcmp(sms_text,"of")){
Serial.println("LED TURN OFF ");
digitalWrite(4,LOW);
delay(5000);
//sms.DeleteSMS;
Serial.print("delete sam");
for(a=1;a<=5;a++)
{
sms.DeleteSMS(a);
}
// for(a=1;a<=5;a++)
//{
// sms.DeleteSMS(a);
//}
}
else{
digitalWrite(4,HIGH);
for(a=1;a<=5;a++)
{
sms.DeleteSMS(a);
}
}
// for(a=1;a<=50;a++)
//{
// sms.DeleteSMS(a);
//}
}
//else
{
//Serial.println("NO NEW SMS,WAITTING");
}
debouncer2.update();
if ( debouncer2.fell() ){
Serial.println("press");
i++;
switch (i) {
case 1:
Serial.println("first");
sms.SendSMS("+989382666304", " A");
break;
case 2:
Serial.println("second");
sms.SendSMS("+989382666304", " B");
break;
case 3:
sms.SendSMS("+989382666304", "C ");
// Serial.println("end");
// delay(10000);
// Serial.println("reset");
break;
case 4:
sms.SendSMS("+989382666304", " D");
break;
case 5:
sms.SendSMS("+989382666304", " E");
digitalWrite(9,LOW);
break;
}
i == 0;
j == 0;
k == 0;
l == 0;
}
}
//for(a=1;a<=10;a++)
//{
// sms.DeleteSMS(a);
// }
for(a=1;a<=10;a++)
{
sms.DeleteSMS(a);
}
}
سلام مجدد
کاربر گرامی شما از دو کتابخانه SIM900.h و Bounce2.h استفاده کردهاید. هردو را نصب کنید.
با سلام
من همین چیزایی که توی سایت فرمودین انجام دادم و بعد از فشرده شدن کلید nstatus=READY ظاهر میشه اما هیچ اسمسی ارسال نمیشه و SMS postion:-2 رو همش می نویسه مشکل کجاست ؟ لطفا راهنمایی کنید
باتشکر فراوان بابت زحماتتون و سایت عالیتون
با سلام و تشکر ازشما
عددهای position در محدوده ۱ تا ۲۰ هستند و عدد منفی وجود ندارد. ممکن است مواردی را اشتباه انجام داده باشید. از دیگر کاربران که در این زمینه تجربه عملی دارند، تقاضا دارم تا در این بحث شرکت کنند.
سلام
اگه یه ویدئو از نحوه کارش بذارید عالی میشه.
ممنون
با سلام و تشکر از شما
انشاءالله در آموزشهای بعدی با ویدیو منتشر خواهیم کرد.
اگه ممکنه برای ارسال صدا یا تصویر از طریق ماژول هایی مثل nrf یا esp راهنمایی کنید. یا از هر طریق دیگری بدون استفاده از سیمکارت.
با سلام
در خصوص ارسال صوت با این ماژولها بایستی کتابخانههای آنها را بررسی بفرمایید. در خصوص Nrf این موضوع در آموزش کار با ماژول NRF24 در قسمت نظرات مطرح شده است. لطفا بررسی بفرمایید.
این پیغام چیه که موقع کامپایل برای من اومد؟
خیلی ممنون میشم جواب بدید
C:\Users\rad&beh\Desktop\Documents\Arduino\Gsmsh\Gsmsh.ino: In function ‘void loop()’:
C:\Users\rad&beh\Desktop\Documents\Arduino\Gsmsh\Gsmsh.ino:78:70: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
if (sms.SendSMS(“+9891317*****”, “hi this is a test from gsm shield”))
^
C:\Users\rad&beh\Desktop\Documents\Arduino\Gsmsh\Gsmsh.ino:78:70: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp:148:41: warning: character constant too long for its type
p_char = strchr((char *)(gsm.comm_buf),’+CMGL’);
^
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp: In member function ‘boolean SIMCOM900::readCall(char*, int)’:
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp:220:42: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
_tf.getString(“”, “\””, number, nlength);
^
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp:220:42: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp: In member function ‘int SIMCOM900::getCCI(char*)’:
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp:304:49: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
_tf.getString(“AT+QCCID\r\r\r\n”,”\r\n”,cci, 21);
^
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp:304:49: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp: In member function ‘int SIMCOM900::getIMEI(char*)’:
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp:329:38: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
_tf.getString(“\r\n”,”\r\n”,imei, 16);
^
C:\Users\rad&beh\Desktop\Documents\Arduino\libraries\GSMSHIELD\SIM900.cpp:329:38: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
با سلام
بخشی از کدهای شما دچار مشکل شده است. میبایست مجددا از روی سایت کپی کنید.
سلام
من از شیلد اردینو سیم ۹۰۰ استفاده می کنیم ولی به سیم کارتم وصل نمیشه ومیشه راجع به اتصالات این مدار بیشتر توضیح بدید ممنون
با سلام
لطفا نوع ماژول و اتصالات و ولتاژ را اعلام بفرمایید.
سلام
ممنون از سایت خوبتون
من چند بار برنامه رو تست کردم و جواب گرفتم ولی الان LEDهای روی شیلد روشن نمیشه status&netlight میشه بگید مشکل از کجاست
با سلام
لطفا اطلاعات کاملتری شامل تغذیه و اتصالات و اقداماتی که انجام دادهاید، ارسال کنید.