اینترنت اشیا IOT خانه هوشمند دسته‌بندی سیم کارت GSM - GPRS میکروکنترلر AVR

پروژه SMS کنترل با Sim800L و میکروکنترلر Atmega8 کنترل با پیامک

sms-control-project-avr-atmega8l-digispark-
نوشته شده توسط علی زاهدی

ماژول‌های GSM در فرایندهای مختلی کاربرد بسیاری دارند. از جمله استفاده در دزدگیرها، مودم‌های سیمکارتی و اینترنت اشیاء به عنوان ارسال کننده اطلاعات می‌توان اشاره کرد. ماژول‌های GSM یا همان  ماژول سیم کارت، عملکردی همانند موبایل دارند. قابلیت ارسال و دریافت پیامک، تماس و حتی موقعیت یابی را دارند. شرکت SIMCOM ماژول بسیار فشرده و قابل اطمینانی به اسم sim800l طراحی کرده است. این ماژول سیم کارت دارای توان مصرفی پایین و ابعاد بسیار کوچک همچنین با قیمت مناسبی در بازار ارائه می‌شود. پیش از این پست‌هایی در خصوص راه اندازی ماژول Sim800L توسط دیگر اسپارکرها منتشر شده است. در ادامه این آموزش با پروژه SMS کنترل با Sim800L و آی سی میکروکنترلر اتمگا با مرجع تخصصی میکروکنترلر AVR به زبان فارسی، دیجی اسپارک همراه باشید.

 


ویژگی‌های ماژول sim800L


  • پشتیبانی از ۴ باند ۱۹۰۰/۱۸۰۰/۹۰۰/۸۵۰ مگاهرتز
  • کنترل از طریق AT command
  • قابلیت اتصال میکروفون و اسپیکر
  • جریان مصرفی حداکثر ۲ آمپر
  • تغذیه ۳٫۸ تا ۴٫۲ ولت
  • اسلات سیمکارت میکرو

sim-800L-Pinout--digispark  

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

  1. میکروکنترلر ATmega8
  2. ماژول GSM Sim800L
  3. باتری لیتیوم پلیمر
  4. ماژول رله تک کانال ۵ ولت

 


راه اندازی ماژول Sim800L


جهت اجرای پروژه SMS کنترل با Sim800L و کنترل ۴ رله در خروجی، ابتدا سیم کارت را داخل ماژول Sim800L قرار داده و تغذیه ماژول را وصل کنید. نظر به اینکه ولتاژ کاری ماژول بین ۳٫۸ تا ۴٫۲ ولت است؛ پیشنهاد میشود ازباتری لیتیومی استفاده کنید. چنانچه در موقع ارتباط ماژول با شبکه جریان کافی توسط مدار تامین نشود، ارور خواهد داد. برای ارتباط با ماژول باید از درگاه سریال میکروکنترلر (USART) استفاده کرد. پس پایه RX ماژول را به پایه شماره ۳ میکروکنترلر (TXD) و پایه TX ماژول را به پایه شماره ۲ میکروکنترلر (RXD) متصل کنید.

 

کنترل پیامک با ماژول سیم کارت Sim800L GSM Module - دیجی اسپارک

 

 


کد AVR در CodeVision


حال نوبت به بخش نرم افزاری پروژه SMS کنترل با Sim800L می‌رسد. جهت ایجاد پروژه جدید در نرم افزار کدویژن ابتدا نرم افزار را باز کنید. از منو فایل گزینه New را انتخاب کنید. پس از ساخت پروژه جدید کدهای زیر را به آن انتقال دهید. سپس از منوی Project گزینه‌ی compile را انتخاب کنید. اگر error مشاهده نکردید، گزینه OK را انتخاب کنید. از همان منو Project گزینه Build All را انتخاب کنید. حال برنامه به زبان ماشین ترجمه شده و  در پوشه‌‌ای به نام exe در جایی که انتخاب کردید با پسوند hex ذخیره شده است.

 

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

const char enter=13,double_quote=34;
char send[128],receive[128];
int counter,i;
interrupt [USART_RXC] void usart_rx_isr(void)
  {
  receive[counter]=UDR;
  if(UDR==0x0A)counter=0;
  else counter++;
  }

void main(void)
  {
  DDRB=0x0f;   
  PORTB=0x00;
  UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
  UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<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;
  #asm("sei")  
  delay_ms(7000);
sprintf(send,"AT%c",enter);
puts(send);
delay_ms(1000);
sprintf(send,"AT+CMGF=1%c",enter);
puts(send);
delay_ms(1000);
sprintf(send,"AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,enter);
puts(send);
delay_ms(1000);
sprintf(send,"ATE0%c",enter);
puts(send);
delay_ms(1000);
sprintf(send,"AT+CSQ%c",enter);
puts(send);
delay_ms(1000); while (1) { if(!strcmp(receive,"\"SM\",1")) { sprintf(send,"AT+CMGF=1%c",enter); puts(send); delay_ms(1000); sprintf(send,"AT+CMGR=1%c",enter); puts(send); delay_ms(1000); if(!strcmp(receive,"port1"))PORTB.0=~PORTB.0; if(!strcmp(receive,"port2"))PORTB.1=~PORTB.1; if(!strcmp(receive,"port3"))PORTB.2=~PORTB.2; if(!strcmp(receive,"port4"))PORTB.3=~PORTB.3; for(i=0;i<128;i++)receive[i]='\0'; counter=0; delay_ms(1000); sprintf(send,"AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,enter); puts(send); delay_ms(1000); } } }

 


بروزرسانی در تاریخ ۱۸ اسفند ۱۳۹۹


در قسمت شرط دریافت پیامک تغییراتی ایجاد شد تا پروژه به درستی عمل کند.

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

const char enter=13,double_quote=34;
char send[128],receive[128];
int counter,i;
interrupt [USART_RXC] void usart_rx_isr(void)
  {
  receive[counter]=UDR;
  if(counter>=128)counter=0;
  else counter++;
  }

void main(void)
  {
  DDRB=0x0f;   
  PORTB=0x00;
  UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
  UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<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;
  #asm("sei")  
  delay_ms(15000);
  sprintf(send,"AT%c",enter);
  puts(send);
  delay_ms(500);
  sprintf(send,"AT+CSMP=17,167,0,0%c",enter);
  puts(send);
  delay_ms(500);
  sprintf(send,"AT+CMGF=1%c",enter);
  puts(send);
  delay_ms(500);
  sprintf(send,"AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,enter);
  puts(send);
  delay_ms(500);
  sprintf(send,"ATE0%c",enter);
  puts(send);
  delay_ms(500);
  sprintf(send,"AT+CSQ%c",enter);
  puts(send);
  delay_ms(500);
  while (1)
    {
    if(!strcmp(receive,"ME"))
      {   
      sprintf(send,"AT+CMGF=1%c",enter);
      puts(send);
      delay_ms(1000);
      sprintf(send,"AT+CMGR=51%c",enter);
      puts(send);
      delay_ms(1000);
      if(!strcmp(receive,"port1"))PORTB.0=~PORTB.0;
      if(!strcmp(receive,"port2"))PORTB.1=~PORTB.1;
      if(!strcmp(receive,"port3"))PORTB.2=~PORTB.2;
      if(!strcmp(receive,"port4"))PORTB.3=~PORTB.3;
      for(i=0;i<128;i++)receive[i]='\0';
      counter=0;
      delay_ms(1000);
      sprintf(send,"AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,enter);
      puts(send);
      delay_ms(1000);
      }
    }
  }

 


کتابخانه در نرم افزار کدویژن


کتابخانه‌های استفاده شده در پروژه SMS کنترل با Sim800L عبارتند از :

mega8.h : ثابت‌های استفاده شده در برنامه مانند DDRB و PORTB در این کتابخانه موجود می‌باشد.

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

string.h : این کتابخانه دارای توابع مختلفی برای رشته‌ها می‌باشد. تابع strstr یکی از توابع این کتابخانه بوده و با استفاده از آن می‌توان یک رشته را داخل رشته دیگر جستجو کرد.

 

هنگام پروگرام کردن برنامه توجه داشته باشید که فیوز بیت‌ها روی ۸ مگاهرتز تنظیم شود. در مرحله‌ی آخر با موبایل کلمه “port” را نوشته و شماره خروجی مورد نظر را جلوی آن بنویسید. سپس ارسال کنید. برای مثال، تغیر وضعیت خروجی اول باید کلمه “port1” را ارسال نمایید. سپس مشاهده می‌کنید که خروجی تغییر وضعیت می‌دهد.

 

 

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

 

 


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


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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

 

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

علی زاهدی

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

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

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

۲۸۵ دیدگاه

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

      • سلام، با تشکر از توجه شما
        برای تبدیل متغیر char به نوع int نیاز به کار خاصی نمی‌باشد ایتدا یک متغیر دیگر از نوع int تعریف کنید و متغیر نوع char را با آن برابر قرار دهید.
        char a;
        int b;
        b=a;

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

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

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

      • سلام. وقت بخیر . مهندس من این پروژه گیرنده پیامک رو و اون پروژه ای که واسه بخش فرستنده تو سایت قرار دادین رو باهم دیگه ادغام کردم و خواستم زمانی که مثلا کلمه ی p1 رو ب ماژول ارسال کردم، ماژول در جواب کلمه ” سلام” رو به تلفنم ارسال کنه.
        الان دقیقا همین کار انجام میشه ولی فقط و فقط یک بار ! دفعات بعدی که بهش p1 رو ارسال میکنم هیچ واکنشی نشون نمیده. بخش تغذیه رو هم مطمئنم که درست هست و مشکل سخت افزاری نیست. میشه راهنمایی بفرمایید لطفا

  • سلام مهندس . ببخشید من اینو عملی بستم
    ولی عمل نمیکنه . مدارم درست بستم . میشه راهنماییم کنید .

    • سلام ،
      شما اول باید چک کنید که ماژول وارد شبکه میشه یا نه؟
      ماژول های GSM نیاز به تغذیه مناسب دارند و اگر جریان ماژول تامین نشه پروژه به درستی عمل نمیکنه.

      • سلام
        ماژول وارد شبکه میشع ولی با ارسال port1 خروجی b0 فعال نمیشه میشع راهنمایی کنین .اگه میشه شمارتون بهم بدین باهاتون صحبت کنم خیلی این پروژه برام مهمه لطفا

    • سلام
      وقتتون بخیر
      چه کد هایی باید به سیم کارت ارسال بشه تا هر رله بصورت جداگانه وصل شود.
      مثلا چه‌عددی برای رله۱
      یا چه عددی برای رله۲
      یا……
      ممنون

      • با سلام
        برای فعال کردن رله شماره ۱ بایتسی عبارت port1 ارسال شود. برای بقیه رله ها نیز به همین تریتب بایستی عبارت های port3 ، port2 و port4 ارسال شود.

  • سلام ببخشید من این مدارو بستم ولی کار نمیکنه تغذیم هم پاور کامپیوتره کلا هیچ عکس العملی نمیکنه چراغش هم به گفته دوستمون پنج بار چشمک میزنه بعد یک یا دو ثانیه نمیزنه بعد دوباره پنج بار چشمک میزنه و لطفا اگه میشه طریقه تنظیم فیوز بیت ها روی ۸ مگا هرتز رو بگین چجوریه

    • سلام،
      استفاده از پاور کامپیوتر برای تغذیه این مدار کار اشتباهی است ، لطفا از سالم بودن قطعات خود اطمینان حاصل فرمایید و سپس از یک تغذیه ۵ ولت مناسب برای این مدار استفاده فرمایید.

  • عرض سلام و تشکر بابت مطالب خوبتون
    مهندس میشه خط های پروژه sim800l رو یه توضیح بدید
    ممنون میشم

    • داخل main ابتدا پیام های قبلی که در ماژول ذخیره شده رو پاک میکنم، موقعی که پیام میاد ماژول کلمه ی خاصی رو ارسال میکنه ما داخل شرط این کلمه رو داخل تابع receive جستوجو می کنیم.
      اگر شرط برقرار بود اجرا میشه و کلمه port رو سرچ میکنه و خروجی رو فعال میکنه و سپس پیام رو پاک میکنه.

  • سلام
    من مدار رو ساختم الان ارسال “port1″مدار جواب نمیده به ماژول زنگ میزنم بوق میخوره فقط خروجی b آیسی هیچ تغیری نمیکنه خواهشا راهنماییم کنین

    • سلام این مشکل رو بنده رو هم با میکرو ها داشتم شما بجای باتری از یک تغذیه ۵ ولت مناسب استفاده کنید مشکلتون حل میشه.

        • با سلام
          در صورتی که تغذیه مناسب میکروکنترلر و ماژول Sim800l تامین شود و همچنین آنتن دهی ماژول مناسب باشد. مدار به راحتی کار میکند.

          • سلام
            مهندس منم از ولتاژ تغذیه ۵ ولت استفاده می کنم و البته ماژول هم به شبکه متصله، ولی در صورتیکه از یک led در خروجی استفاده و پورت مورد نظر رو فعال میکنم هیچ یک از خروجی ها فعال نمیشه

      • سلام، ماژول من به شبکه وصل میشه ولی وقتی پیامک میدم خروجی ها تغییری نمیکنن. از lm2576 ولتاژ ۴ ولت بهش میدم که اونم به یه آداپتر ۳ آمپری متصل هست. به نظرتون به ماژول ولتاژ ۵ ولت بدم؟

  • سلام
    یک ماژول سیم ۸۰۸ و باتری و چراغ ال ای دی.
    ماژول سیم ۸۰۸ با برد میگرو بهم وصله فکر کنم فقط اتصال ماژول به باتری (بدون آردینو )برای من نامعلومه که اگر به درستی متصل بشه که اس ام اس و یا دیتا بده چون استاد به من گفت فقط با باتری یعنی بدون آردینو ارتباط برقرار بشه

    • سلام، با تشکر از توجه شما.
      اگر امکان دارد توضیحات بیشتری از مدارتون بفرمایید. برای دریافت و ارسال پیامک با این ماژول نیاز به یک میکروکنترلر می باشد،اردوینو یا AVR فرقی نمی کند.

      • ببخشید منظورتون برد میکرو همون که سیم کارت خور است ؟
        اخه استاد من یک پروژه به من داد که در مورد ماژول سیم ۸۰۰ فقط با باتری(بدون آردینو) اس ام اس و هم دیتا بده حالا من توی اتصال ماژول سیم ۸۰۰ با برد میکرو و اتصال برد میکرو به باتری من موندم که باتری روی کدام قسمت از برد میکرو متصل کنم که درست باشد و همچنین ماژول سیم ۸۰۰ به یرد میکرو که جواب بده با تشکر

        • از کدام میکروکنترلر استفاده می کنید؟اگر از خانواده AVR مدل Atmega8 استفاده می کنید که طبق نقشه ای که در همین پست است می توانید ماژول، میکروکنترلر و باتری را متصل کنید. اما اگر از Atmega32 یا Atmega16 استفاده می کنید، قطب های مثبت و منفی باتری به ترتیب پایه های ۱۰ و ۱۱ میکروکنترلر متصل کنید، همچنین TX و RX ماژول به ترتیب به پایه های ۱۴ و ۱۵ میکروکنترلر متصل کنید.

      • سلام وقت بخیر
        ببخشید میخواستم بدونم شما برنامه دریافت پیامک با استفاده از ماژول Sim800L و میکروکنترلر AVR را دارید .ارسال را دارم ولی دریافت را نه

  • سلام. خسته نباشید. من پارسال ۳ تا از این ماژول های SIM800L خریدم اما نتونستم هیچ کدوم رو راه اندازی کنم. روش های مختلفی هم تست کردم.با باتری پلیمری، با ماژول LM2596 و به روش های مختلف از سایت های مختلف. باتری رو عوض کردم ، حتی فکر کردم شاید جریان کافی نمیرسونه ۲ تا باتری پلیمری موازی کردم. با ولتاژهای ۳٫۸ تا ۴٫۴ هم تست کردم. کلا نمیدونم چرا این ماژول انقدر مقاومت میکنه در مقابل راه اندازی. یه احتمال دادم که شاید قضیه رجیستری گوشی ها باعث شده باشه که این ماژول ها به عنوان دستگاه رجیستر نشده نتونن تو مخابرات ایران فعال بشن اما به سایت های خارجی که سر زدم و کامنت های دیگران رو خوندم دیدم خیلی از اونا هم با راه اندازی این ماژول مشکل دارن و مشکل از طرح رجیستری نیست. فکر کنم از هر ۱۰ نفر ۲ نفر موفق میشن این ماژول رو راه بندازن.امیدوارم یکی پیدا شه و ایراد کار رو پیدا کنه.

    • سلام، با تشکر از توجه شما
      بله متاسفانه این ماژول یکم سخت راه اندازی میشه ولی بنده شاید بیش از ۲۰ عدد از این ماژول رو با ماژول تغذیه lm2596 راه اندازی کردم و با به مشکلی بر نخوردم، این که طرح رجیستری بر روی این ماژول ها اعمال نشده است.

      • مشکل رو پیدا کردم D:
        سیم کارت رو برعکس جا میزدم D: آخه چرا کسی به این موضوع اشاره ای نکرده بود؟؟ بیشتر گوشی ها و دستگاه هایی که سیم کارت میخورن معمولا سیم کارت از اون قسمتش که یه گوشه پَخ داره جا میره اما تو این ماژول قضیه برعکسه و نکته گمراه کنندش اینجاس که سیم کارت رو حتی وقتی اشتباه هم جا میزنی سر جای خودش قفل میشه در حالی که اگه تو دستگاه های دیگه اشتباه جا بزنی قفل نمیشه. مطمئنم خیلی های دیگه این اشتباه رو دارن. اگه چراغ ماژولتون دائم در حال چشمک زدنه یعنی یا سیم کارت خرابه یا برعکس جا زده شده (خلاصه به یه دلیلی سیم کارت رو نمیشناسه) اما گه بعد از چند بار چشمک زدن یک ثانیه خاموش میشه و دوباره چند بار چشمک میزنه یعنی ایراد از منبع تغذیه هست یا سیم ها جریان مناسب رو عبور نمیدن. مثلا من یه باتری پلیمری ۴۰۰ میلی آمپر رو با یه جفت کابل فلت به ماژول وصل میکردم چراغش ۵ بار چشمک میزد. اما کابل ها رو که حذف میکنم و باتری رو مستقیم به ماژول وصل میکنم درست کار میکنه.

    • سلام اگر در ولتاژ مشکل دارین یه خازن بزرگ مثلا۴۷۰۰میکروفاراد در نزدیکی پایه های تغدیه ماژول وصل کنید مشکل حل میشه

  • سلام ببخشید من اون قسمت از کد را نمی فهمم یعنی چه اگه udr=0x0a شد کانتر باید صفر بشه؟

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

  • سلام خیلی ممنون از آموزش های خوب ات دوست عزیز؛
    ۱- توی قسمت کد ویزارد و قسمت یوزارت باید اینتراپت رسیور یوزارت فعال بشه و باود ریت ۹۶۰۰ ست بشه؟
    ۲- توی کد ویزارد فرکانس میکرو رو ۸ مگ تنظیم میکنید؟
    ۳- من تست کردم مدار و سورس رو منتها نتیجه نمیگیرم( به شبکه متصله ماژول، سیم کشی ها درست اند، تغذیه هم اوکیه کاملا) چکار کنم؟
    ۴- تغذیه میکرو و ماژول به خروجی مبدل کاهنده متصل بشه ؟ یا جدا باشند ؟ (قطعا باید GND ها یکی باشند)
    ممنون میشم به ترتیب و با ذکر شماره سوال، جواب هر کدوم رو زحمت بکشید بفرمایید.

    • سلام، از توجه شما سپاس گزارم.
      ۱٫بله توجه داشته باشین که هم فرستنده و هم گیرنده تنظیم شود،و فقط تیک اینتراپت گیرنده را فعال کنید.
      ۲٫بله کلا پیشفرض روی ۸ مگا هرتز هست.
      ۳٫سورس مشکلی نداره بنده تست کردم احتمالا یا مشکل از اتصالاته یا ولتاژ میکروکنترلر تامین نمیشه.
      ۴٫بهتره که یک ولتاژ ۵ ولت برای میکروکنترلر و یکی ولتاژ ۴٫۲ که خروجی کاهنده هست برای ماژول استفاده نمایید.

      • تشکر، GND های هر دو تغذیه رو یکی میکنید دیگه؟
        تمام اتصالات درسته و میکرو روشن میشه و مشکلی نداره، فقط نمیدونم مشکل کجاس که جواب نمیگیریم ازش و کار نمیده‍♂️

            • با سلام
              کاربر گرامی بنده این مدار را با ۵ ولت تست کرده‌ام و هیچ مشکلی ندارد. جهت دریافت راهنمایی میبایست اطلاعات کاملتری در خصوص اتصالات و نحوه اجرا بفرمایید.

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

                • با سلام
                  امکان برقراری وجود دارد. اما تشخیص کلمه کار بسیار دشواری است. بجای گفتن کد میتوان از قابلیت DTMF بر روی ماژول SIM800 استفاده نمود تا عملیات مورد نظر شما انجام شود.

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

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

  • سلام وقت بخیر
    من یه ترموستات صنعتی برای کوره دارم که زمانی دما پایین.میاد بهم امکان دادن الارم داره
    از این.ماژول برای ارسال SMS میتونم استفاده کنم که الارم خروجی ترموستات رو بهم مسج بده

    • با سلام
      بله میتوانید استفاده کنید. در اکثر محصول هایی که پیامک ارسال می کنند از این ماژول استفاده می شود.

  • سلام و تشکر-جناب زاهدی لطفا یه مدار کاربردی برا قسمت ارسال و دریافت صوت این ماژول رو برام ارسال فرمایید.البته تو دیتا شیتش یه مدار قرار داده ولی من چیزی ازش سر در نیاوردم.ممنون میشم.

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

  • سلام . مهندس اگه بخوام خودم بردشو بزنم باید از کجا شماتیک و مدارشو پیدا کنم؟ توی نت فقط شماتیک سیم ۸۰۰ هست. شما لینکی چیزی ندارین بفرستین ؟

  • این کدی که به عنوان عکس گذاشتین، کامل نیس درسته آیا؟؟
    یعنی شماره سیم کارت، تنظیمات هماهنگی میکرو و sim800 و دستور ارسال پیام رو نداره؟
    اگه جواب بله است، باید ازکجا گیر بیارم کاملش رو؟
    ممنونم از لطفتتون

    • با سلام
      کد قرار گرفته داخل متن یک کنترل کننده ساده با Sms میباشد. مواردی که شما میفرمایید بایستی بصورت پروژه تعریف شود. میتوانید از طریق پرتال پشتیبانی پروژه مورد نظر خود را سفارش دهید.

      • خب نمیشه راهنمایی کنید، میخوام یاد بگیرم نه فقط کارم راه بیفته
        خیلی پیش رفتم

        • با سلام
          میتوانید با استفاده همین تابع strstr شماره مورد نظر خود را شرط قرار دهید تا فقط با پیام دادن از یک شماره خاص رله ها فعال شود. با مطالعه کد آموزش زیر میتوانید نحوه دریافت شماره آشنا شوید.
          https://digispark.ir/sim800l-farsi-sms-with-atmega8/

  • سلام
    این پروژه رو پروگرام کردم ولی با ارسال port1 هیچ عملی انجام نمیشه . همه چی درسته از اتصال شبکه و موارد دیگه . مشکل چیه ؟

    • با سلام
      لطفا مشخص فرمایید ولتاژ دو سر پایه های تغذیه میکرو چند ولت می باشد؟

  • سلام پروژه درست کار میکنه همه چی اوکیهه ولی ی مشکلی هست که نمی تونه متن رو درست از پیام بخونه من هم وقتی پیام میدادم هیچ عکس العملی نداشت ولی وقتی بجای port1 عدد گذاشتم و ارسال کردم خروجی فعال شد ولی همزمان دو خروجی و به صورت نا منظم
    if(strstr(receive,”p1″))PORTC.0=~PORTC.0;
    if(strstr(receive,”p2″))PORTC.1=~PORTC.1;
    if(strstr(receive,”p3″))PORTC.2=~PORTC.2;
    if(strstr(receive,”4″))PORTC.3=~PORTC.3;
    وقتی کاراکتر داخل متن هست جواب نمیده علت چیه ؟؟؟؟

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

  • به بزرگ و کوچیک بودن هم دقت کردم ولی جواب نداد
    چطور میتونم متن پیام دریافتی رو داخل متغییر ذخیره کنم

  • سلام متغییر receive در کد زیر در کدام قسمت برنامه مقدار میگیره یا مقادیر از کجا براش تعریف میشن که میخواد مقاییسه کنه ؟؟ قطعه کد آن در برنامه کجاس؟؟
    if(strstr(receive,”p3″))PORTC.2=~PORTC.2;

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

  • سلام جناب زاهدی. سپاس از همه مطلبهای آموزشی شما.
    من مدار بالا رو کامل بستم و ماژول sim800l هم راه اندازی شد. میکرو هم راه اندازی شد. برای اطمینان از راه اندازی این دو از led استفاده کردم. توی کد بعد از هر قسمت یه فرمان به led دادم تا معلوم بشه کد تا کجا پیش میره. کد تا اول while(1) پیش رفت و منتظر پیامک شد. ولی با ارسال پیامک وارد شرط if که بلافاصله بعد از while(1) هست نشد. همچنین توی روتین وقفه دریافت usart یکی دو خط اضافه کردم که بعد از هر ۵ بار وقفه یه led تغییر وضعیت بدهد. اون هم تغییر وضعیت نداد. خلاصه معلوم شد مشکل از ارتباط سریال است. سیمهای rx و tx را عوض کردم ولی جواب نداد. لطفا راهنمایی کنید

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

      • سلام و سپاس از پاسخ شما. تغذیه sim800l درسته چون چشمک زنش هر سه ثانیه یکباره . مشکل از ارتباط سریاله. میشه بیشتر راهنمایی کنید؟

        • سلام مجدد
          ماژول را با استفاده از مبدل usb to ttl به کامپیوتر متصل نمایید و با استفاده از نرم‌افزار Terminal بررسی نمایید آیا از ماژول کاراکتری دریافت می‌کنید یا خیر؟ توجه داشته باشید که باودریت باید بر روی ۹۶۰۰ تنظیم شود.

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

    • سلام دوست عزیز شما باودریت رو روی ۱۱۵۲۰۰ تنظیم کنید.
      و اینکه اگه از atmega استفاده می کنید حتما از کریستال خارجی ۱۱٫۰۵۹۲MHz استفاده کنید.

      • با سلام از توجه شما سپاس گزارم
        اما باودریت ماژول های sim800l بصورت پیش‌فرض بر روی ۹۶۰۰ تنظیم شده است و تنها با اعمال دستور مربوطه باودریت تغییر می‌کند.

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

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

  • سلام مهندس این برنامه رو چجورب atmega32انجام بدم
    تو بالا فقط باید mega8 و ۳۲کنم یا چیزهایی دیگه هم نیازه

    • با سلام
      برای استفاده از میکروکنترلر Atmega32 بایستی ابتدار در قسمت Configuration بخش C Compiler گزینه Chip را بر روی Atmega32 تنظیم نمایید و همچنین کتابخانه استفاده شده در ابتدی برنامه را نیز را هم به mega32.h تغیر دهید.

    • با سلام
      ابتدا بایستی از منوی project گزینه Configure را انتخاب نمایید سپس در صفحه باز شده بخش C compiler گزینه Chip را بر روی Atmega32 تنیظم نمایید و سپس در ابتدای برنامه کتابخانه ی mega32.h را جایگزین mega8.h کنید.

  • با سلام خدمت استاد بزرگوار
    بنده این برنامه را نوشتم تمام نکانی که گفتین رعایت کردم sim800l مشکلی ندارد و دستورات ATرا اجرا میکنه
    ولی برنامه اجرا نمیشه
    —————————————————————–
    #include
    #include
    #include
    #include
    const char enter=13,double_quote=34;
    char send[128],receive[128];
    int counter,i;

    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    receive[counter]=UDR;
    if(UDR==0x0A)counter=0;
    else counter++;
    }

    void main(void)
    {
    DDRB=0x0f;
    UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
    UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<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;
    #asm("sei")
    delay_ms(7000);
    sprintf(send,"AT%c",enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"AT+CMGF=1%c",enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"ATE0%c",enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"AT+CSQ%c",enter);
    puts(send);
    delay_ms(1000);

    while (1)
    {
    {
    if(strstr(receive,"\"SM\",1"))
    {
    sprintf(send,"AT+CMGF=1%c",enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"AT+CMGR=1%c",enter);
    puts(send);
    delay_ms(1000);
    if(strstr(receive,"port1"))PORTB.0=~PORTB.0;
    if(strstr(receive,"port2"))PORTB.1=~PORTB.1;
    if(strstr(receive,"port3"))PORTB.2=~PORTB.2;
    if(strstr(receive,"port4"))PORTB.3=~PORTB.3;
    for(i=0;i<128;i++)receive[i]='\0';
    counter=0;
    delay_ms(1000);
    sprintf(send,"AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,enter);
    puts(send);
    delay_ms(1000);
    }
    }
    }
    }
    لطفا راهنمایی فرمایید تشکرفراوان

    • با سلام از توجه شما سپاسگزارم
      در صورتی که ماژول Sim800l وارد شبکه می شود. پیشنهاد بنده این است که یک تغذیه ۵ ولت برای میکروکنترلر و باقی اجزای مدار درنظر بگیرید(برای مثال ۷۸۰۵) و برای ماژول sim800l یک تغذیه ۴٫۲ ولت جداگانه در نظر بگیرید (Lm2596). توجه داشته باشید که منفی هر دو تغذیه باید به یکدیگر متصل شود.

      • باسلام فراوان
        من از تغذیه جداگانه lm2596 استفاده کردم و منفی sim800l و میکرو وlm2596 را بهم وصل کردم برای میکرو از تغذیه ۵ ولت استفاده کردم ولی جواب نگرفتم

        • سلام مجدد
          ایا ماژول sim800l وارد شبکه می‌شود؟ همچنین بررسی نمایید که سیم های Rx و TX درست متصل شده باشد.
          برنامه موجود در پست با همین روش تست شده و کاملا بدرستی جواب داده است.

            • با استفاده از مبدل Usb to ttl اطلاعاتی که از پایه tx ماژول sim800l دریافت میشود را بررسی نمایید. بایستی پاسخ Ok دریافت شود. درصورتی که پاسخی دریافت نشود مشکل از ارتباط میکرو و ماژول است.

  • سلام منظور از SM\”,1 چیه اول WHAIL . ینی هر موقع SM\”,1 دریافت شد ادامه ماجرا اجراشه؟ و این for(i=0;i<128;i++)receive[i]='\0'; برای چیه؟ ممنون میشم جواب بدید

    • باسلام
      زمانی که به سیمکارت داخل ماژول پیامکی ارسال شود، ماژول رشته “SM”,1 را به پورت سریال ارسال میکند. ما با شرط قرار دادن این دستور، متوجه دریافت پیامک میشویم. با استفاده از دستور for اطلاعات ذخیره شده بر روی رشته receive را پاک میکنیم.

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

  • سلام مهندس میشه کد ها را داخل نرم افزار اردوینو نوشت و بعد ازطریق tols نوع برد را Arduino NG انتخاب کرد و دوباره از طریق tols نوع میکروکنترلر را اتمگا ۸ انتخاب کرد و بعد پروگرامر را به کامپیوتر وصل کرد و پورت را در نرم افزار اردینو انتخاب کرد و کد ها را روی اتمگا ۸پروگرام کرد

  • سلام
    من مدار رو درست کردم
    ماژول به شبکه وصل میشه
    منم کلمه
    Port1
    را ارسال میکنم ولی هیچ اتفاقی نمی افته
    دلیلش چیه؟

    • با سلام
      چه تغذیه ای برای مدار استفاده کرده اید؟ بعضی از میکروکنترلر های موجود در بازار با ولتآژ کمتر از ۵ ولت کار نمیکند.

    • با سلام
      از چه تغذیه ای برای مدار استفاده نموده اید؟ ممکن است مشکل به دلیل روشن نشدن کامل میکروکنترلر باشد.

  • با سلام
    تغذیه میکرو ۵ ولت هست و تغذیه ماژول را هم به صورت جدا گانه ۴.۱ ولت دادم
    لطفا راهنماییم کنید

    • سلام مجدد
      ایا خط منفی تغذیه مشترک شده است؟ همچنین اتصالات مربوط به پایه های RX و TX ماژول به میکروکنترلر را نیز بررسی نمایید.

    • با سلام
      با استفاده از مبدل usb to ttl چک کنید ایا دستورات به درستی به ماژول میرسند یا خیر؟

    • با سلام از توجه شما سپاسگزارم
      چنانچه مشکلی در نقشه و توضیحات مشاهده می کنید به بنده اعلام کنید تا بنده تغیرات لازم را در آموزش ایجاد کنم.

  • سلام مهندس. من از دو منبع ولتاژ متفاوت طبق گفته های شما استفاده کردم.
    در حالت عادی مدار کار نمیکنه ولی وقتی به جای متغیر “Port1” از عدد استفاده میکنم مثلا “۱”
    اون وقت هر عدد یا حرفی برای ماژول بفرستم led قرار داده شده در خروجی روشن میشه و بازم اگه هر عدد یا حرفی به ماژول بفرستم led خاموش میشه
    در ضمن اگه هر چند تا led روی پورت های خروجی میکرو قرار بدم اگه هر عددی بفرستم همشون با هم روشن یا خاموش میشن و تفکیکی برای دستور ارسالی قائل نمیشه.
    لطفا راهنمایی کنید که مشکل رو رفع کنم.

    • با سلام از توجه شما سپاسگزارم
      توجه داشته باشین که زمانی که اپراتور پیامکی به Sim800 راسال میکند. همراه با متن پیام شما ساعت، شماره فرستنده پیام و یک سری کاراکتر های دیگر را نیز ارسال میکند. شما وقتی عدد ۱ را بجای “port1” استفاده میکنید. باعث میشود. تمامی شرط ها فعال شوند.

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

    • با سلام
      با تشکر از توجه شما بنده تصویر مربوط به اتصالات را تغیر خواهم داد.
      پایه RX ماژول را به پایه شماره ۳ میکروکنترلر (TXD) و پایه TX ماژول را به پایه شماره ۲ میکروکنترلر (RXD) متصل کنید. و رله ها به ترتیب به پایه های ۱۴ تا ۱۷ میکروکنترلر متصل میشوند.

  • با سلام
    مهندس من برای ذخیره برنامه، ابتدا داخل کد ویژن یه پروژه جدید باز کردم(بدونه کد ویزارد)
    چون بجز فرکانس ۸ مگاهرتز، تنظیمات اولیه رو نمیدونستم چطوریه.
    سپس تمامی کد های شما را در صفحه کد ویژن کپی کردم.
    بعد از اینکه کد ویژن هیچ خطایی نداد ، برنامه رو پروگرام کردم روی آیسی.
    سپس همانطور که شما نقشه رو گذاشتین، منم با اتصالات(سیم برد بورد) مدار را بستم.
    از ماژول LM2596 و یک آداپتور سی ولت سه آمپری برای تغذیه استفاده کردم.
    و بجای رله های تک تک از یک رله چهار تایی یک جا روی یک برد استفاده کردم.
    پس از اعمال ولتاژ تمامی چهار رله فعال شدند و چراغ هاشون روشن شد، ماژول سیم کارت هم بعد از یکم اذیت کردن به شبکه وصل شد، پیامک هام ارسال میشن، حتی وقتی تماس هم گرفته میشه بوق آزاد میزنه، ولی هیچ تغییری در رله ها دیده نمیشه.
    ممنون میشم اگر راهنماییم کنید، تا بدونم ایراد کارم کجاس ، سعی کردم تمام مراحلو بهتون بگم تا شاید به یک نتیجه ای برسم.
    با تشکر از شما.

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

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

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

  • سلام مهندس اینو عملی بستم اما کار نمیکنه میشه راهنمای کنید پیام هم برای سیمکارت میره درضمن ارسال پیامک فارسی تونو بستم کامل اجرا میکنه ممنون

  • ماژولsim هم عوض کردم گفتم شاید تو دریافت smsمشکل داره اما بازم مثل قبل . فک میکنم تو کد ها یه اشتباهی باش چون ارسالsmsرو درست جواب میده لطفا پیگیری کنید

  • با سلام اول یک تشکر ویژدارم برای اموزشهای خوبتون
    مهندس من با همین منبع تغذیه که این برنامه رو اجرا میکنم برنامه ارسال پیامک شما رو اجرا کردم و پروژه بدون مشکل اجرا شد و پیامک فرستاده شد ولی این پروژ ماژول من وارد شبکه میشه و حتی تماس هم با ماژول میگیرم زنگ میخوره و اسمس هم که ارسال میکنم دلیوری دریافتش رو میگیرم که دریافت کرده ولی دستور پورت اجرا نمیشه ( البته من در خروجی پورت یک ال ای دی قرار دادم که دستور که اجرا بشه ال ای دی روشن شه ) بعد از انجام این کار من یک تعغییر کوچیک دادم در قسمت شرط که گفته اگر اس ام اس دریافت شد من یک پورت رو گزاشتم که اگر دریافت بشه ال ای دی پورت روشن شه ولی حتی او ال ایدی هم روشن نمیشه
    ضمنا من از مگا ۳۲ استفاده کردم و پورت ها رو از پین B به پین A تغییر دادم ولی باز هم اجرا نشد
    در زیر کل دستور رو براتون میفرستم لطفا راهنمایی کنید
    #include
    #include
    #include
    #include

    const char enter=13,double_quote=34;
    char send[128],receive[128];
    int counter,i;
    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    receive[counter]=UDR;
    if(UDR==0x0A)counter=0;
    else counter++;
    }

    void main(void)
    {
    DDRB.1=1;
    PORTB.1=1;
    DDRA=0x0f;
    UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
    UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<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;
    #asm("sei")
    delay_ms(7000);
    sprintf(send,"AT%c",enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"AT+CMGF=1%c",enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"ATE0%c",enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"AT+CSQ%c",enter);
    puts(send);
    delay_ms(1000);
    while (1)
    {
    if(strstr(receive,"\"SM\",1"))
    {
    PORTB.1=0;
    sprintf(send,"AT+CMGF=1%c",enter);
    puts(send);
    delay_ms(1000);
    sprintf(send,"AT+CMGR=1%c",enter);
    puts(send);
    delay_ms(1000);
    if(strstr(receive,"port1"))PORTA.0=~PORTA.0;
    if(strstr(receive,"port2"))PORTA.1=~PORTA.1;
    if(strstr(receive,"port3"))PORTA.2=~PORTA.2;
    if(strstr(receive,"port4"))PORTA.3=~PORTA.3;
    for(i=0;i<128;i++)receive[i]='\0';
    counter=0;
    delay_ms(1000);
    sprintf(send,"AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,enter);
    puts(send);
    delay_ms(1000);
    PORTB.1=1;
    }
    }
    }

  • سلام مندس زاهدی عزیز من چک کردم
    دستورات من از if(strstr(receive,”\”SM\”,1″)) بع بعد جلو نمیره علدش رو نمیدونم ولی من خط به خط دستورات رو با یک ال اید مشخص روشن میکردم به این خط دستوری که میرسه جلو نمیره اس ام اس هم که میدم بازم نمیره

  • سلام ماژول توشبکه میره زنگ هم میخوره اسم اس هم براش میره اما خروجیها کار نمیکنه به میکروکنترلر ۶ولت دادم منفی ماژول ومیکروکنترلر روهم بهم متصل کردم لطفا راهنمایی کنیدخیلی بهش نیازدارم

    • با سلام
      کد پروژه بروزرسانی شد. ولی اگر به میکروکنترلر ۶ ولت وصل شده ممکن است آسیب دیده باشد.

  • سلام مهندس ممنون از پیگیرتون
    ringاین پایه ماژول رونمیخوادبه میکروکنترولر نصب کنم چون smsمیفرسته زنگهم میزنه اما بهش زنگ میزنی گوشی برنمیداره بهش sms میدی خروجی رو فعال نمیکنه توی کدهای جدید که لطف کردید گذاشتید خروجی ها ۱هستند.
    بازم ممنون از پیگیریتون

    • با سلام
      بله اون مشکل ۱ بودن پایه ها درست شد. یک مبدل USB to ttl به پایه Tx ماژول sim800l متصل کنید. و اطمینان حاصل کنید که پیامک توسط این ماژول دریافت می‌شود.

      • سلام خدمت مهندس زاهدی عزیز
        مهندس جان در قسمت دستور خواندن اس ام اس شما گفتید اس ام اس ۵۱ خوانده شود من اینو تعغییر دادم به ۱۶ درست شد
        sprintf(send,”AT+CMGR=51%c”,enter);
        این دستور باید تبدیل به شه به
        sprintf(send,”AT+CMGR=16%c”,enter);
        این برنامه کاملا درست و صحیح کار خواهد کرد
        ممنون از اموزش خوبتون

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

    • با سلام
      در صورتی که در موقعیت مکانی ماژول موبایل به خوبی آنتن دهد. خیر نیاز به آنتن جداگانه نخواهد بود.

  • سلام
    جناب مهندس خیلی عالی بود و ممنونم از اینهمه وقتی که برای پاسخگویی میزارید.جناب مهندس میشه یه پروژه کار کنین که ۴ تا ورودی داشته باشه(۴زون) که در صورت تحریک هر کدام از این زونها، برای شماره های تعریف شده پیامک ارسال شود و بعد از ان تماس تلفنی گرفته شود یک آژیر نیز فعال کند؟ به عبارتی یک دزدگیر سیم کارت خور با ۴ زون.ممنون میشم

    • با سلام از توجه شما سپاسگزارم
      سعی میکنم در آموزش های جدید، این موارد را در نظر بگیرم.

  • سلام و عرض ادب
    اگر ما از ATMEGA32 استفاده کنیم نیازی هست که جاهایی از کد رو تغییر بدیم؟

    • با سلام موقع ساخت پروژه جدید میکروکنترلر Atmega32 را انتخاب کنید. و د ابتدای کد کتابخانه mega32 را فراخوانی کنید.

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

    • با سلام
      بافر با مقدار محدودی تعریف شده است. شما میتوانید این مقدار را به دلخواه تغییر دهید. در این کد تعداد کاراکتر های دریافتی از ۱۲۸ کاراکتر بیشتر نمی‌شود. و قبل از پر شدن بافر در طول برنامه مقدار آن صفر می‌شود.

  • سلام
    وقت تون بخیر و ممنون بابت آموزش تون
    برنامه دریافت پیامک اینتراپت داره؟ (هر وقت پیام بیاد برنامه اصلی متوقف میشه، ابتدا پیام خونده میشه بعد دوباره میره سراغ بیقیه برنامه اصلی؟)

    • باسلام
      بله وقتی پیام دریافت می شود، ماژول Sim800 کاراکتر های دریافتی را از طریق USART به سمت میکروکنترلر ارسال می کند. در این هنگام میکروکنترلر میکروکنترلر برنامه را متوقف کرده و به دریافت و ذخیره کاراکتر های دریافتی از USART می‌پردازد. پس از اتمام دریافت و ذحیره کاراکتر ها میکروکنترلر کار قبلی خود را ادامه خواهد داد. این عملیات در مدت زمان خیلی کوتاهی انجام می‌شود.

  • سلام
    – برنامه باید از طریق فایل و new ایجاد بشه و کد منتقل بشه به یه پروژه سفید؟
    – نیاز به انجام تنظیمات codewizard نیست؟

    • با سلام
      بله پس از ساخت پروژه جدید فقط کافیست که کد را کپی کنید. و نیازی به انجام تنظیمات در کدویزارد نیست.

  • سلام خسته نباشید
    پروژه SMSکنترل باSIM800L و ATMEG8A,کنترل چهار رله در خروجی
    پروژه ارسال پیامک از SIM800L به موبایل انجام دادم مشکلی نداشتم .
    تغذیه متغیر روی ۵ولت و ماژول ۲۵۹۶ روی ۴٫۲ ولت تنظیم شده است .
    هر برنامه اولی و برنامه اصلاح شده هردو میکرو پروگرام کردم هیچکدام جواب نگرفتم
    یعنی با ارسال port1 , ال ای دی روشن نشد .(بجای رله LEDاستفاده کردم ) تغذیه یک لحظه به ۹۰ میلی میرود بعد به ۳۰ میلی برمیگردد .
    با وصل منبع به مدار LEDچشمک سریع بعد هر سه ثانیه روشن میشود . پس SIM800L به شبکه وصل شده است
    سیم کارت همراه اول میباشد .

    • با سلام
      با استفاده از مبدل USB To TTL مستقیما به مازول SIM800 ارتباط برقرار کنید. و یک پیامک برای ماژول ارسال کنید. سپس در ترمینال بررسی کنید که پس از دریافت پیامک چه دستوری از طریق USART ارسال می‌شود. دستور ارسالی را در کد این آموزش به صورت شرط قرار دهید.

  • سلام خسته نباشید
    پروژه SMSکنترل باSIM800L و ATMEG8A,کنترل چهار رله در خروجی
    پروژه ارسال پیامک از SIM800L به موبایل انجام دادم مشکلی نداشتم .
    تغذیه متغیر روی ۵ولت و ماژول ۲۵۹۶ روی ۴٫۲ ولت تنظیم شده است .
    برنامه اولی و برنامه اصلاح شده هردو روی میکرو پروگرام کردم هیچکدام جواب نگرفتم
    یعنی با ارسال port1 , ال ای دی روشن نشد .(بجای رله LEDاستفاده کردم ) با ارسال پیامک تغذیه یک لحظه به ۹۰ میلی میرود بعد به ۳۰ میلی برمیگردد .
    با وصل منبع به مدار LED چشمک سریع بعد هر سه ثانیه روشن میشود . پس SIM800L به شبکه وصل شده است
    سیم کارت همراه اول میباشد .
    CMGR را یکبار مساوی ۵۱و یکبار مساوی ۱۶ قرار دادم فرقی نکرد
    مشکل کجاست ؟کجا مطالعه کنم تا اطلاعات بیشتری نسبت SIM800 پیدا کنم .

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

    • با سلام
      همانطور که در کامنت قبلی به شما پاسخ دادم. برای این که متوجه شوید هنگام دریافت پیامک ماژول چه دستوری را برای شما ارسال میکند. بایستی ماژول را با استفاده از مبدل USB to TTL مستقیما به کامپیوتر متصل کنید. و در سریال مانیتور هنگام دریافت پیامک مشاهده کنید که ماژول چه دستوری را برای شما ارسال می‌کند. ممکن است عدد ۱۶ و یا ۵۱ نباشد و هنگام دریافت پیامک عدد دیگری در این قسمت قرار گیرد.

      • این عدد رو چجوری میتونیم تو پورت سریال اردینو پیدا کنیم ؟؟ من با اردینو میتونم راه اندازی کنم ولی avr اصلا

        • با سلام
          ابتدا بایستی از کلاک میکروکنترلر مطمئن شده و ارتباط بین ماژول و میکروکنترلر را تست کنید در ادامه زمانی که پیامی دریافت شود در صورتی که به پایه TX ماژول یک مبدل USB To TTL وصل کنید. میتوانید خروجی های ماژول Sim800 را بررسی کنید.

      • خسته نباشید ، ماژول رو میتونم با اردینو راه اندازی کنم و پیامک میفرسته و دریافت میکنه رو پورت سریال ولی با atmega اصلا عکس العملی نداره ، با چه دستوری میشه این عدد ۱۶&۵۱ یا هر عدد دیگه ای رو مشاهده کرد ؟ پورت ttl ندارم

  • سلام
    مدار فوق بستم ماژول به شبکه وصل میشود منبع تغذیه متغیر ۵ولت و وماژول ۲۵۹۶ تنظیم روی ۴/۲ ولت
    هر دو برنامه فوق روی میکرو پروگرام کردم و وقتی پیامک sort1 از موبایل میفرستیم یک لحظه جریان منبع از ۳۰ به ۹۰ میلی امپر میرسد اشکال کجاست

  • sسلام با عرض معذرت اشکال چند بار ارسال کردم چون فکر میکردم جواب روی EMAIL میدهید EMAIL را چک میکردم ناگهانی جوابتان دیدم بازم عذر مرا بپذیرید.

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

  • شرطی که داخل وقفه گذاشتین چرا اینه ؟ چرا باید UDR بزرگتر از ۱۲۸ بشه که تموم بشه قسمت در یافت داد

  • سلام مهندس خسته نباشید من این رو عملی بستم به ماژول به شبکه متصل شده و وقتی که کد رو میفرستم گزارش تحویلش میاد
    میکرو کنترولر هم ۴ تا پورت اول B رو۰ میکنه ولی وقتی کد رو میفرستم هیچ کدوم از پایه های پورت B یک نمیشه
    برای میکرو کنترولر یک منبع تغذیه ۵ ولت و برای ماژول یک منبع تغذیه ۴٫۲ گزاشتم
    مشکلش چی میتونه باشه؟

    • با سلام
      قبل از اتصال ماژول Sim800 به میکروکنترلر ابتدا با استفاده از یک برد آردوینو و یا یک مبدل USB to TTL ماژول را به کامپیوتر وصل کنید. و داخل نرم افزار ترمینال دستورات ارسال از سمت ماژول را هنگام دریافت پیام بررسی کنید. ممکن است هنگام دریافت پیام دستوری که ماژول شما ارسال میکند. با کد آموزش متفاوت باشد.

  • سلام خسته نلاشید
    من مدار بالا رو بستم sim 800 راه افتاد و وقتی بهش زنگم میزنم زنگ میخوره ولی با ارسال پیامک هیچ تغیری در خروجی میکرو اتفاق نمیفته….البته میکرو کمی داغ میکنه که نمیدونم طبیعی هست یا نه

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

    • باسلام
      اینکه که کد جدید پیامک شود خیر! ولی در شرایطی که دستوری از طریق پیامک ارسال شود و برنامه از اینترنت دریافت شود و یا از کامپیوتر دریافت شود. بله امکان پذیر است.

    • با سلام
      بایستی دیتاشیت ماژول Sim900 را بررسی کنید. در صورتی که At Command های هر دو یکسان باشد. بله این پروژه روی ماژول Sim900 نیز قابل اجرا خواهد بود.

  • سلام
    مهندس در قسمت ویزارد (داخل برنامه کدویژن) پارامتری باید تنظیم کرد یا مستقیما پروژه را ایجاد کنم و فرکانس و میکرو را انتخاب کنم و برنامه را بنویسم؟؟؟؟؟

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

  • سلام وقت بخیر
    ماژول به درستی وارد شبکه شده و همه مواردی که توی کامنت ها گفتید رو بررسی کردم
    اما موقعی که رله رو وصل میکنم بدون اینکه پیامی ارسال کنم رله روشن میشه
    یعنی در هرحالتی خروجی PB0 PB1 PB2 PB3 یک هست
    ممکنه راهنمایی کنید مشکل چیه؟

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

  • سلام
    با دستورات at چطوری میشه شماره تلفن پیامک کننده رو استخراج کرد و برای او شماره دوباره پیامک فرستاد
    at+cmgr پیام و مشخصات رو میاره روی ال سی دی ولی شماره تلفن رو نمیتونم جدا کنم
    ممنون

    • با سلام
      زمانی که پیامکی توسط ماژول Sim800 دریافت می شود. رشته ای طولانی به سمت میکروکنترلر ارسال می‌شود. این رشته شامل تاریخ، ساعت، نام اپراتور، شماره سیم کارت ارسال کننده پیام و … است. زمانی که این پیام داخل رشته ای در میکروکنترلر ذخیره شود. برای مثال ممکن است از خانه ۲۶ تا ۳۷ رشته شماره ارسال کننده پیام قرار داشته باشد. برای تشخیص این مورد بایستی ابتدا با یک نرم افزار ترمینال و یک مبدل USB به TTL با ماژول ارتباط برقرار کنید و سپس شماره خانه آرایه را تشخیص داده و در آخر داخل برنامه با توجه به شماره خانه تشخیص داده شده شماره ارسال کننده پیام را از آرایه استخراج و داخل آرایه دیگر با استفاده از دستور for ذخیره کنید.

  • سلام
    من وقتی sms بخ ماژول ارسال میکنم هر بار فقط ۱۳ کارکتر دریافت میکنه
    مثلا بنویسم salam chetori chekhabar
    فقط salam chetori دریافت میکنه

      • سلام ممنون از زحمات شما
        مدار رو به usb to ttl مانیتور کردم ماژول sm رو میفرسته پشت حلقه while میمونه و هر چه port1 میفرستم ماژول sm1 ارسال میکنه ولی میکرو هم دستور برنامه یک به یک اجرا کرده پشت while مکث میکنه .

        • با سلام
          لطفا دقیق تر مشکل را بیان کنید. یعنی کد داخل تابع main قبل از حلقه while متوقف می‌شود.

  • من این مدار رو بستم،ولی با ارسال sms رله فعال نمیشه،ماژول به شبکه وصل میشه،میکرو کار میکنه(با چشمک زدن ال ای دی تست کردم) با usb to ttl چک کردم ماژول هم اس ام اس رو دریافت میکنه و به میکرو ارسال میکنه ولی رله عمل نمیکنه.کد هارو تغییر دادم و ماژول رو هم تنظیم کردم که به محض دریافت اس ام اس اونو نمایش بده ولی کار نکرد.

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

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

    • باسلام
      در این کد تنها دریافت پیامک در نظر گرفته شده است. برای محدود کردن شماره ها بایستی یک شرط به برنامه اضافه کنید تا شماره سیم کارت ارسال کننده پیام نیز در نظر گرفته شود.

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

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

  • من این مدارو بستم
    ماژول به شبکه وصل میشه
    ولی دستورات رو میکرو انجام نمیده

  • سلام وخسته نباشید بااستفاده از چه سیم رابطی کدهایی که تو کدویژن نوشتیم به مداری ک بستیم اعمال بشه و پیامک کوتاه کجا نمایش داده میشه؟

    • با سلام
      با استفاده از پروگرامر بایستی خروجی کد نوشته شده که یک فایل HEX یا Bin است را به میکروکنترلر منتقل می‌کنیم. برای میکروکنترلر های AVR پروگرامر هاتل پیشنهاد می‌شود.

  • سلام و عرض ادب
    ببخشید ۲ تا سوال داشتم
    سوال اول اینکه اول باید ای سی با پروگرمر با این کد ها …پروگرام شود و بعد اتصال ماژول جی آس ام و گرفتن جواب ؟! … درسته این مراحله؟!

    و سوال مهم تر اینکه اگه بخواین با دستور فرستادن برای اتصال یک لحظه پورت اول نه دایمی چه کدی رو باید بزنیم …. یعنی مثلا اگه هربار پیامک میدیم که پورت اول وصل بشه …. فقط برای ۳ ثانیه وصل بشه و بعد قطع بشه دوباره (برای درب برقی میخوام)

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

  • با سلام
    ببخشید شما جلوی CMGR عدد ۵۱ نوشتید (“AT+CMGR=51%c”) در صورتی که برنامه بعد از هر پیامک دریافتی همه پیامها را پاک میکند و پیامک جدید باید ۱ باشد درست نیست؟
    مورد دیگه هم عبارت “ME” که تو قسمت جستجوی کلمه (خط ۴۷) نوشتید لطف کنید توضیح بدید
    با تشکر

    • با سلام
      ماژولی که بنده مورد استفاده قرارداده‌ام پس از هر بار دریافت پیامک عبارتی که با حروف ME شروع می شود را ارسال میکند سپس برای خواندن پیام مربوطه بنده عدد ۵۱ بایستی ارسال شود. تا پیام مربوطه خوانده شود. شما بایستی با یک مبدل USB to ttl ابتدا دستوراتی که ماژول ارسال می‌کند را بررسی کنید و سپس مطابق آن درستورات کد خود را تکمیل کنید.

  • سلام مهندس .خسته نباشید .مهندس برای ارسال پیامک با sim800 یه بخشی هست که بعد از علامت < باید متن پیامک و به همراه ctrl zبرای ماژول بفرستیم.من سوالم این که داخل کدویژن ctrl z و چه جوری باید نوشت .مدی که sim 800 روی اون تنظیم شده مد پیامک متنی هست
    یعنی کامند at+cmgf=1

  • سلام مهندس خسته نباشید من میخواستم یک پروژه با ماژول gsm درست کنم که وقتی بهش پیام میدم بتونم خروجیشو خاموش و روشن کنم مثلا یک ال ای دی خروجیش بزارم و با پیامک اونو مثلا ۱ دقیقه روشن کنم و از یک ماژول رله تک کانال میخوام استفاده کنم بعد چه تغییری تو برنامه نویسی به وجود میاد؟ اگه میشه راهنمایی کنید.

    • با سلام
      کاربر گرامی هر تغییراتی که بخواهید در این پروژه ایجاد کنید، بایستی نسبت به برنامه نویسی میکرو AVR آگاهی داشته باشید. چنین موردی از طریق بخش نظرات امکان پذیر نیست.

  • سلام
    ببخشید من مدار رو کامل بستم ولی وقتی port1رو می‌فرستم هیچ تغییر نمیکنه
    ماژول هم به شبکه وصل میشه
    میشه راهنمایی کنید

    • با سلام
      ممکن است ماژولی که مورد استفاده قرار می‌دهید هنگام دریافت پیام داده های متفاوتی را بر روی خطوط سریال ارسال کند. شما با استفاده از یک مبدل USB to TTL میتوانید این دستورات را داخل کامپیوتر مشاهده نموده و سپس داخل برنامه شرط قرار دهید.

  • سلام
    مهندس من این مدارو بستم با ماژول ۲۵۹۶که جریان ۳آمپری هم میده حتی برای اطمینان ۲تا هم خازن موازی کردم که از جریان کمبودی نباشه ولی متاسفانه کد رو که ارسال میکنم میکرو عمل نمیکنه

    • با سلام
      ممکن است اتصالات بین میکروکنترلر و ماژول به درستی متصل نشده باشد. پیشنهاد میکنم از مبدل USB to TTL استفاده کنید و خروجی پایه TX ماژول Sim800 را بر روی سیستم مشاهده کنید. تا متوجه شوید مشکل از کدام بخش است.

  • درود دوست عزیز
    ممنون از ارسال مطالب خوبتون
    من چندتا ماژول دارم که با ترمینال از طریق کامپیتور وصل میشم به ماژل ۸۰۰ ال ، دریافت دارم و ارسال نمیشه ، یعنی پیام AT وقتی زده میشه به سرعت در رسیور همون AT دیده میشه و هر دستور دیگه ایی که داده میشه باز همون در رسیور دیده میشه.
    ولی وقتی پیامک به شماره سیم کارت سیم ۸۰۰ ارسال میکنم پیام دریافت میشه ME و یه عدد که شماره پیامک هست.
    چندتا ماژول هم گرفتم ولی متاسفانه ارسال سریال ندارم.
    دلیلش چی میتونه باشه؟
    ماژول های USB سریال هم چندتا دارم وتست کردم درست هستند.
    ماژول ۸۰۰ امکان داره مشکل داشته باشند؟

    • با سلام
      در انتهای دستوراتی که به ماژول Sim800 ارسال میکنید. بایستی عبارت \r\n قرار داشته باشد. یا به عبارت دیگر در اخر هر دستور بایستی کاراکتر Enter نیز ارسال شود. پیشنهاد میکنم زمانی که مبدل USB to TLL را به سیستم وصل میکند. از نرم افزار Hterm برای ارسال دستورات به ماژول استفاده کنید.

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

      • مهندس بعد از کامپاایل ارور های زیر را دریافت میکنم علت چیست
        Error: C:\New folder\1.c(4): can’t open #include file: mega8.h
        Error: C:\New folder\1.c(12): undefined symbol ‘USART_RXC’
        Error: C:\New folder\1.c(21): undefined symbol ‘DDRB’
        Error: C:\New folder\1.c(22): undefined symbol ‘PORTB’
        Error: C:\New folder\1.c(23): undefined symbol ‘UCSRA’
        Error: C:\New folder\1.c(24): undefined symbol ‘UCSRB’
        Error: C:\New folder\1.c(25): undefined symbol ‘UCSRC’
        Error: C:\New folder\1.c(26): undefined symbol ‘UBRRH’
        Error: C:\New folder\1.c(27): undefined symbol ‘UBRRL’
        Error: C:\New folder\1.c(29): undefined symbol ‘delay_ms’
        Error: C:\New folder\1.c(59): undefined symbol ‘strcmp’
        Error: C:\New folder\1.c(60): undefined symbol ‘strcmp’
        Error: C:\New folder\1.c(61): undefined symbol ‘strcmp’
        Error: C:\New folder\1.c(64): undefined symbol ‘delay_ms’

        • با سلام
          این ارور برای درست خوانده نشدن کتابخانه است. بررسی فرمایید که حتما دستور زیر در ابتدای برنامه شما قرار داشته باشد.
          #include

  • با سلام میخاستم بدونم در این پروژه با همین مدار ساده روی برد ار لحاظ سخت افزاری به چیز دیگری نیاز نیست؟ فقط ی ماژول رله و جی اس ام و ات مگا هشت؟ با همین ادوات مدار عملی میشود

    • با سلام
      بایستی تغذیه مناسبی هم برای راه اندازی میکروکنترلر و ماژول GSM و رله بر روی برد قرار دهید.

  • سلام استاد گرامی من هنگام دریافت پیامک همچنین عبارتی رو داخل ترمنیال میبینم باید چه چیزی رو جایگزین برنامه نوسی بالا بکنم

    +CMT: “+9893…..7255″,””,”23/04/30,14:21:47+14″

    • با سلام
      در این دستور متن پیام خالی است. بایستی از موبایل عبارت port1 را ارسال کنید. تا برنامه به درستی کار کند.

  • با سلام و خسته نباشید مهندس ماژول بتده دستورات زیر را ارسال میکند هنگام دریافت پیامک
    +CMTI: SM,1 کد شرط بخ چه صورت خواهد بود ؟ زمانی که AT+CMGR=1 را میزنم پیام رو میخواند به این صورت
    +CMT: “+98912…….33″,”Mohamdreza”,”23/05/01,08:17:02+14″
    Port1
    در ضمن بنده برای تست خود میکرو به usb to ttl وصل کردم مو دستورات رو دادم قسمتی که قرار است پورت B0 معکوس شود عمل نمیکند و پورت تغییر حالت نمیدهد مشکل کجاست این قسمت
    if(!strcmp(receive,”port1″))PORTB.0=~PORTB.0;

    • تمامی حروف ارسالی از موبایل بایستی کوچک باشد اما حرف اول عبارت port1 در پیام شما با حرف بزرگ نوشته شده است بنابراین کد به درستی عمل نمیکند. متن پیام خورد را کاملا با حروف کوچک بنویسید.

      • مهندس جان زمانی که میکرو به usb to ttl وصل میکنم پیغام های میکرو میبینم و وقتی sm وارد میکنم دستمور متنی کردن پیام و ،cmgr اجرا میشه و رمانی که پورت port1 چه بزرگ و کوچک میدهم پورت بی صفر تغییری نمیکند چیکار کنم

        • برای تست میتوانید یک کاراکتر را زمانی که این رشته دریافت شد. ارسال کنید تا از کارکرد برنامه مطمئن شوید.

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

    • با سلام
      در صورتی که پیام را دریافت میکنید. نیاز به تغییر ورژن ماژول نیست.

  • برنامه میکرو با usb چگ کردم زمانی که میکرو کارکتر دریافت میکنه دیگه دیگه دستوری رو اجرا نمی کنه ولی اگر

    • این مورد فقط زمانی که رشته port1 را دریافت میکنید اتفاق میوفته یا هر کاراکتری؟

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

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

    • با سلام،
      موراد مختلفی هست که ممکن است این باعث این مشکل باشد. اما اصلی ترین مورد میتواند از کلاک میکروکنترلر باشد که در موقع پروگرام درست انتخاب نشده باشد. در این صورت بخش UART به درستی عمل نخواهد کرد.

  • سلام وقت بخیر ، میکرو اصلا اومدن پیامک رو تشخیص نمیده ، اصلا داخل حلقه while هیچ کاری رو انجام نمیده میشه بفرمایید مشکل از چیه ؟

  • سلام وقت بخیر ، میکرو اصلا اومدن پیامک رو تشخیص نمیده ، اصلا داخل حلقه while هیچ کاری رو انجام نمیده میشه بفرمایید مشکل از چیه ؟ زمین ها مشترک هستن

  • سلام. ممنون. مهندس چطور میتونم یه شماره موبایل تعریف کرد که بتوان بعدا آنرا تنظیم کرد.

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

  • سلام ، من اصلا با atmega32 نتیجه نمیگیرم از اتصالات منبع و سیم ها و سیم کارت هم مطمنم ، تمام برنامه ها رو اردینو با همون سیم کارت پیامک دریافت و ارسال میکنه ولی روی میکرو نه ، احتمال داره از فرکانس باشه ؟؟ لطفا راهنمایی کنید

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

  • سلام جناب مهندس زاهدی روز به خیر خدا قوت
    من وقتی میخوام کد را روی چیپ بریزم ارور signature mismatch میده چطور میتونم حلش کنم؟

  • باسلام خدمت مهندس گرامی بنده با بیلد کردن برنامه ی فوق این خطا را دارم ممنونم میشوم در دیباگ کردنش راهنمایی فرمایید باتشکر از حسن توجهتان
    fjjError: c:\cvavreval\inc\byteswap.h(34), included from: endian.h: missing ‘(‘

  • سلام
    مهندس من متوجه نمیشم هدفتون از این پروژه چیه؟ چرا داخل کدها شماره تلفن وجود ندارد –
    بالاخره باید از یه شماره ای پیامک رو ارسال بشه تا سیمکارت ماژول دستورات رو دریافت کنه!!!
    اگر فقط قراره از ماژول پیام دریافت بشه باز هم به چه شماره ای؟؟
    یعنی از هر شماره ای که ارسال بشه، ماژول به همون شماره پاسخ میده؟؟ منظورتون اینه

  • sprintf(send,”AT+CMGDA=%cDEL ALL%c%c”,double_quote,double_quote,enter);
    سلام،وقت بخیر
    من این خط رو متوجه نمی شم، double_quote,enter چی هستن؟ آیا نماینده اسکی کد خاصی هستن؟
    و این AT command و دوتای بعدی دقیقا چه کاری انجام میدن؟ و اینکه چرا از %c استفاده شده؟
    ممنون میشم جواب بدین

    • با سلام
      این خط کد از تابع sprintf در زبان C برای ساخت یک رشته فرمت‌دهی شده (formatted string) با استفاده از مقادیر متغیرها استفاده می‌کند. امیدوارم توضیحات زیر به شما کمک کند.
      sprintf: این تابع در زبان C برای فرمت‌دهی به یک رشته (string) استفاده می‌شود. در اینجا، این تابع برای ترکیب یک رشته با مقادیر متغیرها استفاده می‌شود.
      send: این نام یک آرایه از نوع char است که احتمالاً برای ذخیره پیام یا دستوری که باید به ماژول ارسال شود، استفاده می‌شود.
      “AT+CMGDA=%cDEL ALL%c%c”: این یک رشته فرمت‌دهی است که شامل یک دستور AT برای حذف تمام پیام‌های موجود در حافظه پیام ماژول است. این رشته دارای جاهایی برای جایگذاری مقادیر متغیرها است.
      %c: این نشان‌دهنده جایگذاری یک کاراکتر است.
      %cDEL ALL%c: جایگذاری دو کاراکتر DEL ALL در رشته است.
      double_quote: احتمالاً یک متغیر است که مقدار آن یک کاراکتر دوگانه (“) است. این متغیر به عنوان جایگذار برای %c در رشته فرمت‌دهی عمل می‌کند.
      enter: احتمالاً یک متغیر دیگر است که مقدار آن یک کاراکتر جدید (‘\n’) است. این کاراکتر معمولاً برای ایجاد یک خط جدید (Enter) استفاده می‌شود.

  • با سلام ایا قبل از اتصال ماژول sim800l به کنترلر باید پروگرام شود یا atmega را پروگرام کرده و ماژول را مستقیماً به ان متصل می کنیم؟

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

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

  • سلام
    من این مدار رو کامل بستم روی برد برد و از میکروATmega32استفاده کردم.
    مشکلم اینه که ماژول سیم کارت سریع چشمک میزنه و یه لحظه خاموش میشه و دوباره ادامه میده و همین نشون میده که به شبکه وصل نمیشه مشکلش چیه؟

  • سلام مهندس مشکل من تو این پروژه اینه که ماژول SIM800Lبه شبکه وصل میشه چراغ با تأخیر چشمک میزنه ولی هنگام ارسال مثلاً “port1″خروجی ها عمل نمی‌کنه مشکل کجاست?

  • سلام آقای زاهدی دستور for(i=0;i<128;i++)receive[i]='\0 به چه دلیل استفاده شده است ؟
    ممنون

  • سلام
    ضمن تشکر بابت مطلب مفیدی که قرار دادید.
    سوالی داشتم:
    من تجربه کدنویسی برای AVR با نرم افزار بسکام را دارم ( زبان اسمبلی). میشه لطف کنید کد راه اندازی ماژول SIM800 برای atmeg16 با بسکام را هم بفرمایید.
    به این شکل که مثلا روی یکی از پایه های میکرو یک اتفاقی میفته، وقتی اون اتفاقه افتاد، ماژول SIM800 یک پیامک ارسال کنه به یک شماره موبایل.
    باتشکر

  • سلام من این کد رو برای ATmega32 نوشتم داخل کدویژن ولی وقتی کامپایل کردم این Warning ها رو دریافت کردم:

    Warning: D:\codvisin\inc\mega32a.h(85), #included from: io.h: macro ‘EXT_INT0’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(86), #included from: io.h: macro ‘EXT_INT1’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(87), #included from: io.h: macro ‘EXT_INT2’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(88), #included from: io.h: macro ‘TIM2_COMP’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(89), #included from: io.h: macro ‘TIM2_OVF’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(90), #included from: io.h: macro ‘TIM1_CAPT’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(91), #included from: io.h: macro ‘TIM1_COMPA’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(92), #included from: io.h: macro ‘TIM1_COMPB’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(93), #included from: io.h: macro ‘TIM1_OVF’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(94), #included from: io.h: macro ‘TIM0_COMP’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(95), #included from: io.h: macro ‘TIM0_OVF’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(96), #included from: io.h: macro ‘SPI_STC’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(97), #included from: io.h: macro ‘USART_RXC’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(98), #included from: io.h: macro ‘USART_DRE’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(99), #included from: io.h: macro ‘USART_TXC’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(100), #included from: io.h: macro ‘ADC_INT’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(101), #included from: io.h: macro ‘EE_RDY’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(102), #included from: io.h: macro ‘ANA_COMP’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(103), #included from: io.h: macro ‘TWI’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(104), #included from: io.h: macro ‘SPM_RDY’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(107), #included from: io.h: macro ‘__SLEEP_SUPPORTED__’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(108), #included from: io.h: macro ‘__POWERDOWN_SUPPORTED__’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(109), #included from: io.h: macro ‘__POWERSAVE_SUPPORTED__’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(110), #included from: io.h: macro ‘__STANDBY_SUPPORTED__’ was redefined
    Warning: D:\codvisin\inc\mega32a.h(111), #included from: io.h: macro ‘__EXTENDED_STANDBY_SUPPORTED__’ was redefined

  • سلام وقت بخیر، من ماژول رو با مبدل USB به TTL به کامپیوتر متصل کردم و همچنین پایه های میکروکنترلر ATmega32 رو هم متصل کردم. الان هر پیامکی که ارسال میکنم این علامت های عجیب و غریب رو برام تو ترمینال مجازی نشون میده و رله ها هم تغییری نمی کنن. این علامت ها رو وقتی برام نمایش میده که پایه های rx و tx میکروکنترلر به ماژول متصل باشه، در غیر این صورت پیامک هایی که ماژول دریافت میکنه رو با اطلاعات درست و کامل در ترمینال مجازی نمایش میدهد.

    علامت ها:
    €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€

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