سخت افزار سیم کارت GSM - GPRS میکروکنترلر AVR

ارسال پیامک فارسی با استفاده از ماژول Sim800L و میکروکنترلر AVR

sim800l-farsi-sms-digispark-
نوشته شده توسط علی زاهدی

پیش از این آموزش راه اندازی ماژول Sim800L را در پست پروژه SMS کنترل با Sim800L و میکروکنترلر Atmega8 کنترل با پیامک، توضیح داده‌ایم. در این پست قصد داریم تا ارسال پیامک فارسی با استفاده از ماژول Sim800 و میکروکنترلر AVR را آموزش دهیم.

 


حالت های کاری ماژول Sim800L


برای ارسال و دریافت پیامک در ماژول Sim800L دو حالت کاری مشخص شده است که عبارتند از حالت Text و حالت PDU) PDU مخفف Protocol Data Unit می باشد). برای تعیین حالت کاری ماژول از دستور (AT+CMGF=(0 or 1 استفاده می شود. اگر برابر یک قرار بگیرد ماژول در حالت Text عمل میکند و اگر برابر با صفر قرار بگیرد ماژول در حالت PDU عمل خواهد کرد. در مدل های قدیمی ماژول های GSM برای ارسال پیامک فارسی باید ماژول در حالت PDU راه اندازی می شد. اما سری جدید ماژول هی شرکت SIMCOM مانند ماژول Sim800L این قابلیت را دارند که پیام های یونیکد یا UCS2 را بدون رمز گذاری PUD ارسال کنند و برای ارسال پیامک فارسی فقط کافی است Unicode ها را به رشته HEX تبدیل  کرده و سپس ارسال نمایید.

برای ترجمه ی متن مورد نظر خود به Unicode  می توانید از جدول زیر استفاده نموده و یا از برنامه موجود در لینک استفاده کنید.

farsi-unicode

 

اتصالات مدار

  • پایه ۷ میکروکنترلر به قطب مثبت ولتاژ ۵ ولت.
  • پایه ۸ میکروکنترلر به قطب منفی ولتاژ ۵ ولت.
  • پایه ۱۴ میکروکنترلر با استفاده از یک مقاومت به قطب مثبت و همچنین همانند تصویر به کلید متصل می شود.
  • پایه شماره ۲ میکروکنترلر به پایه TX ماژول.
  • پایه شماره ۳ میکروکنترلر به پایه RX ماژول.
  •  پایه VCC ماژول به قطب مثبت و همچنین پایه GND به قطب منفی متصل میشود.

اتصالات ماژول Sim800l ارسال پیامک فارسی - دیجی اسپارک

پیشنهاد می شود برای تامین ولتاژ میکروکنترلر و ماژول Sim800L  از ماژول مبدل تغذیه LM2596 استفاده نمایید. توجه داشته باشید که قبل از متصل کردن ولتاژ خروجی تغذیه به مدار آن را روی ۴٫۲ ولت تنظیم کنید.

 


لوازم مورد نیاز


  1. میکروکنترلر ATmega8
  2. ماژول GSM Sim800L
  3. ماژول مبدل تغذیه LM2596
  4. مقاومت ۱۰ کیلو اهم
  5. کلید فشاری Push Button

 


کد AVR در CodeVision


جهت اجرای کدها باید در نرم افزار کدویژن، کدها را آماده کرده و سپس پروگرام کنید. چنانچه این روش را نمی‌دانید به آموزش نحوه ی ساخت پروژه جدید و پروگرام کردن میکروکنترلر مراجعه کنید. پس از ساخت پروژه‌ی جدید در نرم افزار کدویژن CodeVision کدهای زیر را داخل آن کپی کنید. سپس تراشه میکروکنترلر Atmega8 را پروگرام کنید.

 

#include <mega8.h>
#include <delay.h>
#include <stdio.h>

#define key PINB.0

const char enter=13,ctrlz=26,double_quote=34;
char send[128];

void main(void)
  {
  DDRB=0x00;
  PORTB=0x01;
  UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
  UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
  UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
  UBRRH=0x00;
  UBRRL=0x33;
  delay_ms(12000);
  while (1)
    {
    if(key==0)
      {
      sprintf(send,"AT+CMGF=1%c",enter);
      puts(send);
      delay_ms(500);
      sprintf(send,"AT+CSCS=%cHEX%c%c",double_quote,double_quote,enter);
      puts(send);
      delay_ms(500);
      sprintf(send,"AT+CSMP=49,167,0,8%c",enter);
      puts(send);
      delay_ms(500);
      // در دستور زیر بجای ستاره ها شماره موبایل مورد نظر خود را وارد نمایید.
      sprintf(send,"AT+CMGS=%c09*********%c%c",double_quote,double_quote,enter);
      puts(send);
      delay_ms(1000);
      // پیام مورد نظر ترجمه شده به مقدار HEX.
      puts("0633064406270645060C00200627064A06460020067E064A06270645002006270632002006450627069806480644002000530069006D00380030003000200627063106330627064400200634062F0647002006270633062A002E000D062F064A062C064A002006270633067E062706310643");
      delay_ms(5);
      putchar(ctrlz);
      while(key==0);
      }
    }
  }

 


ارسال پیامک فارسی ماژول Sim800L


کتابخانه ها

در ابتدا کتابخانه های مورد نیاز را به برنامه اضافه می کنیم.این کتابخانه ها عبارتند از:

mega8.h : برای دسترسی به رجیستر های میکروکنترلر Atmega8 باید این کتابخانه را به برنامه اضافه نمایید.

delay.h : این کتابخانه برای استفاده از تاخیر ها است که دو تابع ()delay_ms و ()delay_us داخل این کتابخانه قرار دارد.

stdio.h : تابع sprintf در این کتابخانه موجود است و برای پیکربندی رشته‌ها مورد استفاده قرار می‌گیرد.

در ادامه پایه شماره ۱۴ میکروکنترلر را با نام key معرفی شده است. سپس کد اسکی کاراکتر های enter ، ” و ctrl+z را با نام های مناسب تعریف شده. رشته ای با نام send برای ارسال دستورات از درگاه USART به ماژول Sim800L تعریف شده است.

 

تابع main

در تابع اصلی برنامه (main) ابتدا پایه شماره ۱۴ میکروکنترلر بعنوان ورودی معرفی شده است و درگاه USART میکرو فقط به صورت فرستنده فعال شده است. یک تاخیر ۱۲ ثانیه (برای مدت زمانی که نیاز است تا ماژول Sim800L وارد شبکه شود) بکار رفته است. سپس در حلقه بینهایت شرطی قرار داده شده که در زمان وصل بودن کلید متصل به پایه ۱۴ میکروکنترلر ، پیامک ارسال شود.

 


تنظیمات ماژول Sim800L


داخل شرط ابتدا با استفاده از دستور AT+CMGF=1 ماژول Sim800L را در حالت Text قرار داده و سپس با استفاده از دستور “AT+CSCS=”HEX نوع داده های ارسالی را به صورت HEX تعریف می کنیم. در ادامه با استفاده از دستور AT+CSMP=49,167,0,8 مقدار DCS صحیح (Schedule Data Coding) را برای پیام های Unicode مشخص می کنیم که مقدار ۰x08 می باشد. می توان این مقدار را با تغییر پارامتر چهارم دستور AT+CSMP به ‘۸’ تنظیم کنیم. با استفاده از دستور “*********AT+CMGS=“09 شماره ای که باید پیام برای آن ارسال شود را مشخص کرده و  با استفاده از دستور ()puts پیام تبدیل شده به مقدار HEX را به ماژول ارسال می کنیم و پس از آن برای ارسال شدن پیام، کد اسکی ۲۶ که معادل ctrl+z است را ارسال میکنیم. دستور (while(key==0 به این منظور نوشته شده است، که اگر کلید به صورت مداوم وصل باشد فقط یک بار دستورات داخل شرط اجرا شود و چند پیام متوالی ارسال نشود. توجه داشته باشید درهنگام پروگرام کردن کد روی میکروکنترلر AVR، فیوزبیت‌ها بر روی ۸ مگاهرتز تنظیم شود.

 


عملکرد مدار


نحوه عملکرد مدار به این صورت است که پس از وصل کردن ولتاژ مدار و وارد شدن ماژول Sim800L به شبکه، با هر بار فشردن کلید پیامک برای شماره تعریف شده داخل برنامه ارسال می شود.

ارسال SMS فارسی با ماژول SIm800l - دیجی اسپارک

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک و دانشجوکیت  و digispark  و  daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید. در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

علی زاهدی

برنامه نویس و طراح سیستم های مبتنی بر میکروکنترلر

دانسته هایتان را مانند یک ساعت مچی در دست کنید، نه صرفا به این خاطر که نشان دهید آن را دارید. بلکه به این خاطر که اگر کسی از شما ساعت را پرسید، برایش بگویید.
لرد چسترفیلد

تبادل نظر و رفع عیب با ثبت دیدگاه

۹۳ دیدگاه

  • سلام
    چه راحت!
    ولی دوست عزیزم برای ارسال پروژه زیاد عجله نکنید یعنی میکرو بدون کریستال هم مگر کار میکند؟؟!!
    شاید بفرمایید با کریستال داخلی ولی این شاید برای شما راحت باشد و ما که مبتدی هستیم برایمان سخت است! لطفا شماتیک و نوضیحات را کامل ارایه بفرمایید .
    این مسئله به کرات مشاهده شده است .کد ناقص.شماتیک ناقص .فقط موضوع جالب انتخاب شده است.
    با تشکر

    • سلام،باتشکر از توجه شما
      بله چون باودریت ۹۶۰۰ هست این قابلیت هست که با کریستال داخلی راه اندازی بشه،و این که اگر با دقت متن رو مطالعه کنید، لینک اموزش دیگری داخل متن هست که در آن تنظیم کریستال موقع پروگرام کردن توضیح داده شده است.
      درخصوص بخش انتهایی هم، دقت داشته باشید که تمامی موارد در دیجی اسپارک به صورت کامل طی دو مرحله تست میشوند و زیر نظر تیم تحریریه منتشر می‌شوند. طبیعی است اگر جایی مشکلی مشاهده میکنید، به عنوان کاربری که از خدمات دیجی اسپارک استفاده می‌کند، در راستای رفع آن اطلاع رسانی کنید. اگر اینطور نیست، پس از حاشیه سازی خودداری کنید.

    • سلام روز بخیر
      آقا من این ماژولو راه اندازی کردم اما با زدن کلید اس ام‌اس ارسال نمیشه
      ماژول من بدون انتن هست چراغ ringدائم روشن و چداغ نت چشمک میزنه اما اس ام اس ارسال نمیشه لطفا راهنماسی کنید

      • با سلام
        لطفا وضعیت چشمک زدن چراغ NET را به طور دقیق شرح دهید که چشمک زدن آن هر چند دقیقه یک بار است؟

        • سلام ممنون بابت پاسخگویی شما ، درست شد اون مشکل ، مساله آنتنش بود

          فقط یه سوال من میتونم با زدن کلید اس ام اس رو همزمان یا با تاخیر جزئی برای دوتا شماره ارسال کنم ؟؟

          • با سلام از توجه شما سپاسگزارم
            در صورتی که کدنویسی بصورت صحیح انجام شود. بله این امکان نیز وجود خواهد داشت.

            • میشه یه راهنمایی بفرمایید که من کدوم بخش رو باید اصلاح کنم ؟
              اون بخشی که شماره تلفن رو وارد میکنیم ، اونجا یه هط باید اضافه کنیم یا کل حلقه باید دوباره تکرار شه ؟؟

              • با سلام
                میتوانید قسمت داخل شرط را بصورت کامل کپی و با یک تاخیر مشخص پایین تر دوباره داخل شرط بنویسید.

  • سلام
    میشه لطفا توضیح بدید بدون استفاده از پایه pwrkey ماژول، چگونه اون رو خاموش یا روشن می کنید؟

      • سپاسگزارم
        اگر امکان داره توضیح بدیدبرای روشن و خاموش کردن ماژول چه کار کنیم؟ به چه روشی یا با چه دستوری میتوانیم ماژول را خاموش و روشن کنیم؟

  • سلام .اگه امکانش هست بگید چه مدل انتن قوی تری رو میشه رویه این ماژول قرار داد.چون در انتن دهی ضعیفه

  • با سلام و احترام ممنون از برنامه ارسال اس ام اس میخاستم ۳۰ ثانیه بعد با شماره مورد نظر تماس بگیره ولی خیلی تلاش کردم متاسفانه نمیتونم جواب بگیرم ماژول سیم sim800l هست لطفا راهنماییم کنید sprintf(send,”ATD912XXXXXXX”,enter );
    اینرو ارسال میکنم اس میاد ولی تماس برقرار نمیشه
    میخاستم یه جوری باشه بتونم شماره تماسهای دیگری رو بدون وارد شدن داخل برنامه یا از طریق اس ام اس یا کی پد وارد کنم برای این برنامه خاصی ندارید ممنون از راهنماییهاتون

    • سلام، با تشکر از توجه شما
      فکر میکنم علت این که تماس برقرار نمی شود این است که، ابتدای شماره از ۰ یا +۹۸ را استفاده نکرده اید.
      و درخصوص این که شماره موبایل رو داخل برنامه وارد نکنید، میتونید زمانی که پیام را دریافت کردید داخل رشته ای ذخیره کنید، داخل این رشته از خانه ۲۳ تا ۳۶ شماره موبایل ارسال کننده ی پیام ذخیره می شود با استفاده از حلقه ی for شماره موبایل رو از رشته استخراج کنید و داخل رشته ی دیگری ذخیره کنید. با این روش هم میتوانید هم شماره موبایل رو شرط قرار بدین و هم میتونید با شماره ی ذخیزه شده تماس بگیرین.
      ;[for(i=23;i<36;i++)num[i-23]=receive[i

  • سلام و ممنون بابت آموزش عالیتون
    یه سوالی هست که هیچکس توضیح نداده تا الان
    وقتی که متن پیام ما بیشتر از ۱۴۰ کاراکتر باشه و بخوایم کل متنمون توی گوشی موبایل تنها تو یه پیام نشون داده بشه چیکار کنیم ؟
    چون نهایتا میشه ۱۴۰ کاراکتر انگلیسی یا ۷۰ کاراکتر فارسی ارسال کرد

    • سلام، با تشکر از توجه شما
      برای این مورد که شما میفرمایید بایستی دیتاشیت ماژول بررسی شود. در ادامه آموزش های sim800 این مورد را هم در نظر خواهیم گرفت.

      • با سلام و وقت بخیر
        بنده دقیقا همین کدی که در این صفحه قرار دادین رو نوشتم ولی ارسالی انجام نمیشه . لطفا راهنمایی بفرمایین.تشکر

        • با سلام
          لطفا تغذیه ماژول sim800l را بررسی نمایید.ماژول های GSM دارای بخش تغذیه بسیار حساسی هستند.

      • با عرض سلام و خدا قوت استاد عزیز.
        این برنامه ایا روی atmega 32 و ماژول sim908 هم میشه انجام بشه؟

        • با سلام
          بله میکروکنترلر ATmega32 میتواند جایگزین شود. اما برای ماژول SIM908 بایستی ابتدا لیست AT Command های ماژول را چک کنید و در صورت یکی بودن دستورات از ماژول SIM908 استفاده کنید.

  • سلام من تازه دارم با آردینو کار میکنم میشه بفرمایید این سه کتابخانه را چطور میتوانم دریافت کنم

  • سلام
    سیمکارت ایرانسل روی SIM800L گذاشتم، زنگ میخوره و زنگ هم میزنه ولی پیام ارسال نمی کنه. با همراه اول مشکلی نداره. چکار باید بکنم؟ تنظیمات خاصی داره؟
    ممنون

    • باسلام
      کامند زیر را به برنامه اضافه نمایید و لطفا بار دیگر بررسی نمایید و نتیجه را از همین طریق اعلام نمایید.
      AT+CSMP=17,167,0,0

    • با سلام
      فقط کافی است با یک فاصله زمانی ۳ تا ۴ ثانیه تمامی کد داخل شرط را یک بار دیگر داخل برنامه بنویسید.

    • خسته نباشید من دو تا ورژن از کدویژن دارم که روی ورژن جدید پیام ارسال نمیشه و روی ورژن قدیمی lcd کار نمیکنه .ممنون میشم اگر راهنمایی کنید

  • از راهنماییتون ممنونم من این کار را انجام دادم اس ام اس به دوتا خط میاد اما برای خط دوم علائم عجیب غریب میفرسته

    • با سلام
      بله امکان پروگرام کردن همین برنامه بر روی برد آردوینو UNO هست. برای دریافت اطلاعات بیشتر میتوانید آموزش موجود در لینک زیر را مطالعه کنید.
      https://bit.ly/3ieeuJP

  • من خیلی به آموزشتون نیاز دارم اگه میشه کد هاشو بگید با همین شماتیکی که گفتید .
    خواهش میکنم ممنون میشم بگید آقای زاهدی من تازه کارم و خیلی به آموزشتون نیاز دارم .
    خوتهش میکنم.

    • با سلام
      بله، این روش برای میکروکنترلر های ATmega328, ATmega168, ATmega88, ATmega48 و ATmega8 قابل استفاده است.

  • سلام وقت بخیر
    من‌ابن پروژه را بستم بعد از وصل تغذیه روی ماژول اس ام‌اس ، چراغ رینگ ثابت روشن و چراغ نت چشمک زن هستن
    اما با زدن کلید اس ام اس ارسال نمیشه راهنمایی کنید لطفا

  • سلام و خسته نباشین ماژول سیم ۸۰۰ درست کار میکنه وقتی سیم کارت و جا میزنم بعد چند ثانیه میشه بهش زنگ زد یعنی شبکه رو شناسایی میکنه میکرو رو هم پروگرم کردم و تغذیه جفتشون جداست اما وقتی PINB.14 رو به منفی پنج میکرو وصل میکنم پیامی نمیفرسته ، لطفا راهنماییم کنین

    • با سلام
      میکروکنترلر های AVR در هر پروت ۸ پایه بیشتر ندارند و شما بایستی کلید را به پایه PINB.0 متصل کنید. مقاومت ۱۰ کیلو را نیز فراموش نکنید.

  • سلام وقت بخیر من از این مدار میخوام به عنوان فیدبک ۱۲ عدد دستگاه استفاده کنم ایا میشه؟ اگه میشه چجوری باید اون ۱۲ ورودی رو نصب کنم

    • با سلام
      بله این امکان وجود دارد بایستی برای هر ورودی یک پایه داخل میکروکنترلر به صورت ورودی تعریف شود. سپس شرط داخل کد آموزش برای هر ورودی نوشته شود.

      • سلام
        من هر کاری مسکنم اسن ماژول sim800L به شبکه وصل نمیشه
        با هرچیزی امتحتن کردم با منبع تغذیه آزمایشگاهی اتمحان کردم ۳ آمپر بهش دادم
        حتی تا ۸ ولت ولتاژ رو زیاد کردم (خشبختانه نسوخت)
        ولی این ماژول به شبکه وصل نشد حتی ماژول lm2596 هم امتحان کردم نشد
        سیمکارت هم پین کد نداره
        سیمکارت ایرانسل هست
        لطفا راهنمایی کنید

        • با سلام
          بنده احتمال میدم ولتاژ ۸ ولت به ماژول آسیب زده باشه ولی شما بررسی کنید که سیمکارت به صورت صحیح قرار گرفته باشه و آنتن دهی محیطی که دارین ماژول رو اونجا تست میکنید مناسب باشه.

    • با سلام
      بله این امکان وجود دارد. در برنامه تنها بایستی کتابخانه mega32.h را اضافه کنید. در بخش سخت افزار بایستی مطابق پایه های mega32 اتصالات را انجام دهید.

  • سلام‌مهندس وفت شما بخیر ، من دوتا سوال دارم ممنون میشم راهنمایی کنین منو
    من میخوام با یک شدن پایه ورودی اس ا ام اس ارسال شه که با تغییر شرط اول این کارو انجام دادم ، اما یکبار اجرا میشه و همون حالت میمونه با یک کردن مجدد خروجی اس ام اس ارسال نمیشه ، و اینکه میخوام دوتا شماره ارسال شه اونم نمیشه ، چند حالت و امتحان کردم نشد
    ممنون از راهنمایی شما

    • با سلام
      مشکل اول مربوط به دستور while(key==0); است. شرط این دستور بایستی با شرط کلی یکسان باشد. برای ارسال به دو شماره بایستی با یک delay تقریبا ۳ ثانیه ای تمامی این دستورات داخل شرط غیر از while برای شماره جدید بنویسید.

      • مهندس جان سلام دلیل اینکه این ماژول بعد از ۶ ثانیه دائم ریستارت میشه چیه ، ؟
        چراغ اول روشن هست دومی بعد از ۶ بار چشمک هردو باهم ریست میشن

        • با سلام
          ری استارت شدن ماژول ممکن است بخاطر جریان ضعیف تغذیه و یا آنتن دهی نامناسب باشد.

  • سلام چه جوری میشه شماره موبایلی که میخوایم بهش پیام ارسال بشه .با sms برای میکرو تعریف کنیم. ممنون

    • با سلام
      اگر با دقت کد را مطالعه کنید، دستور “AT+CMGS=%c09*********%c%c” را داخل آن مشاهده می کنید. شما شما می‌تواند شماره موبایل مورد نظر خود را در این قسمت بجای * ها بگذارید.

      • ببخشید مثل اینکه سوالمو درست نپرسیدم .منظورم این بود که شماره ای رو که می خوایم داخلAT+CMGS=%c09*********%c%c قرار بگیره با گوشی برای مدار sms کنیم
        ممنون

        • با سلام
          برای این کار باستی پس از دریافت پیامک از ماژول Sim800 قسمت مربوط به متن پیام که شماره مورد نظر شما داخل آن ذخیره شده است را از ارایه دریافت SMS جدا کنید. سپس این شماره را در یک آرایه دیگر ذخیره کنید. و داخل دستور AT+CGMS قرار دهید.

  • سلام و وقت بخیر.
    من مدار رو با ماژول sim800c بستم و کار میکنه. منتهی میخوام پیام به چندتا شماره که داخل میکرو ذخیره شده ارسال بشه. سوال اول اینکه شماره تلفنم با چه نوع متغیری باید ذخیره بشه و چجوری اونو تو دستور sprint فراخوانی کنم. ممنون میشم کدشو برام بفرستین.

    • با سلام
      میتوانید شماره های مورد نظر خود را در آرایه ذخیره کرده و با دستور s% آرایه مربوط به شماره را به بافر خود اضافه کنید.

  • سلام
    مهندس لطفا چیزی بگذارید که متفاوتتون کنه از بقیه سایتها ! منظورم مطالب خاصه حتی اگر غیر رایگان باشه ! این باعث تفاوت سطح علمی و کار شما با دیگرانه !
    من مشکلم پردازش پیامک فارسیه دریافتی با ماژوله چون فرمتش unicode هستش و باید به utf8 تبدیل کنم بعد مقایسه و پردازش کنم .
    با keil 5 و Stm32f کار میکنم ممنون میشم در صورت امکان راهنمایی کنید که آیا کد دستوری یا تابعی براش وجود داره یا نه یا یک مطلب بهش اختصاص بدید حتی غیر رایگان.
    اینجا در صورت پاسخ شما برام ایمیل ارسال میشه که بیام چک کنم؟
    با تشکر

    • با سلام
      در کتابخانه های خود نرم‌افزار چنین تابعی وجود ندارد و در صورت نیاز بایستی خودتان این تابع را به برنامه اضافه کنید.

  • سلام
    تشکر بابت اطلاعاتی قرار دادید
    بدون میکرو هم میشه این پروژه رو راه انداخت؟ مثلا فقط با آردوینو

    • با سلام
      بله تفاوتی ندارد. میتوانید این برنامه را با برد آردوینو با کمی تفاوت نیز اجرا کنید.

  • سلام و تشکر بابت پروژه کاربری تان و واقعا تعجب میکنم از نسل جدید که با این همه ادعا هنوز سوالاتی در حد نوجوان ۱۲ ساله می پرسند . ما که پیرمردیم و ۳۰ سال پیش رادیو سوپر هترودین آنالوگ می ساختیم آن هم با این همه دشوار ی و نبود اینترنت اینقدر سوالات سطح پاین در ذهن مان نقش نمی بست.

  • با سلام وو قت بخیر
    در اون قسمت که باید شماره مورد نظر را وارد کنیم آیا منظور شماره همان سیم کارتی است که در ماژول قرار دادیم یا همان شماره ای است که قرار است پیامک را دریافت کند ؟

        • مواردی مثل ورود ماژول به شبکه، اتصالات مدار، شماره وارد شده و … بایستی بررسی شود. لطفا این موارد را بررسی کنید. سپس مجددا تست را انجام دهید.

  • سلام خسته نباشد
    من می خوام اول اینکه در حالت text باشه باید چی کار کنم بعد این که من می خوام بجای اینکه یازدن کلید پیام بفرسته با فرستادن یک پیام دمای رو بفرسته .می دونید که دما هم هی تغیر میکنه ثابت نیست برنامه دماشو نوشتم فقط همین تیکشو موندم باید چی کار کنم واقعا ممنون میشم راهنمایی کنید
    متشکرم

  • سلام
    مهندس جگونه میشه یه شماره موبایل را تعریف کرد که بتوان بعدا انرا تغییر داد.

    • با سلام
      برای این کار بایستی شماره موبایل را داخل یک رشته تعریف کنید. و دستوری برای تغیر شماره موبایل با استفاده از پیامک تعیرف کتید. در صورتی که پیامک دریافت شد شماره را از آن جدا کرده و داخل این رشته ذخیره کند.

  • سلام وقت بخیر.من میخوام پیام فارسی ارسال کنم ولی تا ۴۰ کاراکتر بیشتر ارسال نمیشه .ممنون میشم راهنمایی کنید

    • باسلام
      اندازه استاندارد پیامک‌های فارسی شامل ۷۰ کاراکتر است. در صورتی که این تعداد ارسال نمی‌شود بایستی بخش بافر مربوط به ارسال داده های ترجمه شده برای ارسال را چک کنید.

  • اگه بخوایم این ارسال پیام رو با ATMEGA32A انجام بدیم کدوم قسمت کد باید تغییر کند؟
    میشه با شما راه ارتباطی ای داشته باشم ؟ این ماژول رو باید راه بندازم ولی کد اجرا نمیشه برام اگه مقدور بود از طریق ایمیل بهم پل ارتباطی رو بدید

    • با سلام
      برخی رجیستر ها در میکروکنترلر های AVR متفاوت است. برای این کار میتوانید پروژه جدید ایحاد کنید و در صورتی که از کدویژن استفاده می‌کنید از بخش کدویزارد UART را با باودریت را روی ۹۶۰۰ تنظیم کنید و کد را غیر از قسمت کانفیگ UART در پروژه جدید کپی کنید.

  • با سلام و احترام من از atmega328 استفاده کردم در کامپایل این پیام Compilation error: mega328.h: No such file or directory را می دهد چه کار کنم اگر باید کتابخانه اضافه کنم لطقا بفرمایید از کجا و چه جوری اضافه کنم

  • سلام مهندس خیلی تشکر بابت آموزش های عالیتون.
    من میخوام ۲۵۶ تا شماره موبایل رو با کیپد به برنامه بدم که در زمان های مشخص یک شماره رو فراخوانی کنه و بهش پیامک بفرسته و هر وقت هم که به شماره ای نیاز ندارم بتونم اون رو با کیپد پاک کنم . ممنون میشم راهنماییم کنید.