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

کنترل وضعیت اتصال ماژول Sim800L با AVR و میکروکنترلر ATmega16

testing-sim800l-module-with-avr-atmega16-digispark-
نوشته شده توسط معین صابری

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

 


بررسی ماژول سیم کارت GSM


شرکت simcom چندین سال است که در این زمینه ماژول سیم کارت فعال می‌باشد. با تولید انواع چیپ‌های مخابراتی باند GSM، امکان طراحی دستگاه‌های کنترل از راه دور را چه بر بستر GSM و یا GPRS، فراهم نموده است. اما این ماژول‌‌ها با توجه به امکانات بسیاری که فراهم می‌آورند، ممکن است بعد از مدتی دچار آشفتگی شده و به دستورات AT Command ها پاسخی ندهند. حتی مشاهده گردیده است که بعد از چند مدتی، از شبکه خارج شده و دیگر نمی‌توانند دوباره به شبکه بازگردند. این موضوع یک چالش حیاتی در طراحی سیستم‌های کنترل از راه دور خواهد بود. تصور کنید در منطقه‌‌ای دور دست، نیاز است تا به طور مداوم شرایط محیطی نظیر دما، فشار، رطوبت و…. کنترل گردد. با توجه به مطالب ذکر شده، در صورتیکه واحد GSM دچار اینگونه اشکالات گردد، عملا سیستم طراحی شده از کار خواهد افتاد.

اتصالات مدار Sim800L و آی سی Atmega16 -دیجی اسپارک

 

در این شرایط، نیاز به مکانیزمی است تا از صحت عملکرد واحد مخابراتی مطلع شد. در صورت وقع این شرایط، سیستم وارد حالت خود تعمیری گردد و با یک ریست سخت افزاری، این واحد را به حالت عادی خود بازگرداند. بدین منظور، نیاز است تا با در نظر گرفتن یک بازه زمانی، مثلا هر ده دقیقه یکبار، به کنترل وضعیت این واحد پرداخت. به منظور کنترل وضعیت، می‌بایست دستور AT+CCALR? به ماژول مخابراتی ارسال گردد. در صورتیکه شرایط ماژول در حالت عادی باشد، ماژول عبارت +CCALR: 1 را به ما ارسال خواهد نمود. در صورتیکه شرایطی جز این باشد، مثلا اگر به طور کل پاسخی ارسال نگردد و یا عبارت +CCALR: 0 از سوی ماژول ارسال گردد، نیاز است تا ماژول مورد نظر به صورت سخت افزاری ریست گردد. بدین منظور، نیاز است تا مطابق اسناد فنی یک ماژول مخابراتی این شرکت، نظیر ماژول sim800l، پایه ریست این ماژول برای حداقل ۱۰۵ میلی ثانیه صفر منطقی گردد. مطابق اطلاعات دیتاشیت ماژول Sim800L، این کار می‌تواند با اتصال مستقیم پایه میکروکنترلر و یا برد آردوینو به این پایه صورت بگیرد، اما به نظر می‌رسد با توجه به این موضوع که این پایه در حالت عادی، خود دارای ولتاژ است، با اتصال یک ترانزیستور به این پایه، می‌توان از کیفیت مطلوب تری در کار برخوردار گردید.

 


عملکرد مدار اتصال ماژول SIM800L


مطابق شکل فوق، با تعریف کردن پورت B میکروکنترلر به عنوان خروجی و به کمک پین صفر این پورت، می‌توان با کنترل نمودن ترانزیستور، ماژول را ریست نمود. دقت داشته باشید برای این موضوع، پین میکروکنترلر در حالت عادی صفر منطقی است که بدین ترتیب ترانزیستور درحالت عادی خاموش است. زمانی که احتیاج به ریست باشد، این پایه به یک منطقی تغییر وضعیت داده، و با روشن شدن ترانزیستور، پایه ریست ماژول با زمین اتصال برقرار کرده و در نتیجه، ماژول Sim800L ریست می‌گردد. دقت داشته باشید با اعمال یک تقسیم مقاومتی، ولتاژ میکروکنترلر را به منظور ایجاد ولتاژ مناسب برای ترانزیستور کاهش می‌دهیم. نکته دیگر، PULLDOWN کردن پین متصل به BASE ترانزیستور با یک مقاومت ۱۰ کیلو اهمی است. از آنجاییکه ماژول های GSM حین کار نویز شدید در اطراف خود ایجاد می نمایند، ممکن است بر اثر این نویز، پایه خروجی میکروکنترلر به طور ناخواسته‌ای تغییر وضعیت دهد. بنابراین با یک مقاومت ۱۰ کیلو اهم این پایه را به زمین متصل می‌نماییم. این کار باعث می‌شود از ایجاد ولتاژهای ناخواسته احتمالی بر روی این پایه جلوگیری کنیم.

شماتیک کنترل وضعیت اتصال ماژول SIM800L به کمک میکروکنترلر AVR - دیجی اسپارک

 

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

  1. میکروکنترلر ATmega16
  2. ماژول GSM Sim800L
  3. باتری لیتیوم پلیمر
  4. مقاومت ۴٫۷ کیلو اهم
  5. مقاومت ۱۰ کیلو اهم

 

 

اتصالات

  • پایه TX میکروکنترلر از طریق دو مقاومت ۱ کیلو اهم، به صورت تقسیم مقاومتی، به RX ماژول sim800l
  • پایه RX میکروکنترلر به کمک یک مقاومت ۱ کیلو اهم، به پایه TX ماژول sim800l
  • پین شماره ۰ پورت B میکروکنترلر با دو مقاومت ۴٫۷ کیلو اهم، به بیس ترانزیستور ۲n2222a
  • اتصال یک عدد مقاومت ۱۰ کیلو اهم، به صورت pulldown به پین شماره ۰ پورت B
  • کلکتور ترانزیستور به پایه ریست ماژول sim800l
  • اشتراک زمین ماژول sim800l و میکرو
  • امیتر ترانزیستور به زمین GND

 


کد  AVR اتصال ماژول Sim800L


کدهای زیر برای تراشه Atmega16 توسعه داده شده است. آن‌ها را کپی کرده و در کامپایلر قرار دهید.

 

 

#include <mega16.h>
#include <delay.h>//(کتابخانه ایجاد تاخیر )
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)

// USART Receiver buffer
#define RX_BUFFER_SIZE 248
char rx_buffer[RX_BUFFER_SIZE];
unsigned char rx_wr_index,rx_rd_index,rx_counter;
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;

// USART Receiver interrupt service routine
#pragma savereg-
interrupt [USART_RXC] void uart_rx_isr(void)
{
char status,data;
#asm
    push r26
    push r27
    push r30
    push r31
    in   r26,sreg
    push r26
#endasm
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index]=data;
   if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };
   };
#asm
    pop  r26
    out  sreg,r26
    pop  r31
    pop  r30
    pop  r27
    pop  r26
#endasm
}
#pragma savereg+

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif

// Standard Input/Output functions
#include <stdio.h>
void gsm_check_fault(){ //check gsm status
int i;  
int gsm_work_properly;//متغیر کنترل خطا
gsm_work_properly=0;
#asm("cli")
rx_wr_index=0,rx_rd_index=0,rx_counter=0;//پاک کردن بافر سریال میکروکنترلر
rx_buffer_overflow=1;  
for(i=0;i<248;i++){
rx_buffer[i]=NULL;   
}       
#asm("sei")
printf("AT+CCALR?\r\n");//ارسال دستور کنترل وضعیت ماژول
delay_ms(3000);//ایجاد تاخیر به منظور اطمینان از رسیدن داده ها به ماژول
#asm("cli")//غیر فعال سازی وقفه ها به منظور جلوگیری از ایجاد وقفه حین بررسی داده ای ارسالی ماژول
for(i=0;i<248;i++){//بررسی داده های ارسالی از سوی ماژول
if(rx_buffer[i]=='+' && rx_buffer[i+1]=='C' && rx_buffer[i+2]=='C' && rx_buffer[i+3]=='A' && rx_buffer[i+4]=='L' && rx_buffer[i+5]=='R' && rx_buffer[i+6]==':' && rx_buffer[i+7]==' ' && rx_buffer[i+8]=='1'){
gsm_work_properly=777;// در صورتیکه ماژول صحیح عمل نماید، این عدد به متغیر تخصیص داده می شود
break;
}//end of if
}//end of for
if(gsm_work_properly!=777){///اگر مقدار این متغیر غیر از ۷۷۷ بود، ماژول می بایست ریست گردد  
printf("reset time..\r\n");
delay_ms(1000);
PORTB.0=1;//روشن کردن ترانزیستور و ریست کردن ماژول برای ۱٫۵ ثانیه
delay_ms(1500);
PORTB.0=0; 
}             
#asm("sei")
}//end of function
void main(void)
{
int gsm_check_time;//متغیر زمانی چک کنترل ماژول
PORTB=0x00;
DDRB=0xff;

// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T 
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T 
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
GICR|=0x00;
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts   
gsm_check_time=0;
#asm("sei")

while (1)
      {
     gsm_check_time++;
     delay_ms(1000);
     if(gsm_check_time>600){ //رسیدن مقدار متغیر به ۶۰۰ یعنی اینکه ۱۰ دقیقه یا ۶۰۰ ثانیه طی شده است
     gsm_check_fault();
     #asm("cli")
     gsm_check_time=0;//ریست مجدد متغیر برای استفاده مجدد
     #asm("sei")
     }
      };
}

 


تحلیل کد اتصال ماژول Sim800L


  •  در این برنامه متغیری به نام gsm_check_time تعریف شده است. همچنین در بدنه حلقه بی نهایت برنامه، یک تاخیر یک ثانیه ای یا ۱۰۰۰ میلی ثانیه ای وجود دارد. با اضافه کردن یک واحد در هر مرتبه به این متغیر و با توجه به تاخیر زمانی یک ثانیه ای بین هر دو افزایش، با رسیدن این متغیر به ۶۰۰، ۶۰۰ ثانیه یا ده دقیقه طی شده است.
  • دراین حالت به کمک تابع gsm_check_fault()، وضعیت ماژول چک می‌گردد. به عبارت دیگر هر ده دقیقه یکبار وضعیت صحت کارکرد ماژول را به کمک این رویه کنترل می‌نماییم.
  • در نهایت اینکه پروژه به کمک  بخش code wizard نرم افزار کدویژن ایجاد گردیده است و تابع مربوط به وقفه دریافت داده سریال نیز به کمک این بخش، ایجاد شده است.

 

 

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

 


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


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

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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

۴۵ دیدگاه

  • سلام جناب صابری عزیز
    من یه مشکلی با ریست شدن مدارم دارم که به شرح زیر هست
    مدار با nodemcu طراحی کردم که دارای اجزای زیر هست

    چهار تا ماژول رله ۵ ولت

    یکی ماژول gsm a6

    یک ماژول ساعت ds3231

    و آداپتور ۵ ولت ۳ آمپر هم برق لازم را تامین می کنه

    مشکل من این هست که بصورت تصادفی و غیر قابل پیشبینی esp8266 ریست میشه و من از اس ام اس ارسالی که در موقع روشن شدن بورد ارسال می شه متوجه می شم که ماژول ریست شده و این کار مرتب صورت گرفته تا اینگه ظاهرن ماژول gsm من از کار می افته یعنی نمی تونه شبکه رو پیدا کنه و مرتب چراغ سبز چشمک سریع می زنه و تا تنها راه حل راه اندازی ماژول این هست که سیم کارت رو در بیاری و توی یه گوشی بندازی روشن کنی تا شبکه پیدا بشه و بهد دوباره توی ماژول بندازی

    من تا حالا ۲ تا از ماژول های gsm این اتفاق براش افتاده البته مشکل ریست های پی در پی رو همکار شما به خاطر نبودن ماژول اپتوکوپلر رله ها دونستن و من دیروز یه ماژول رله ۴ تایی اپتوکوپلر دار خریدم تا تست کنم ولی همپنان مشکل ریست رو دارم اینکه gsm من از کار می افته چی میتونه باشه

    من ماژول gsm رو به این ترتیب به nodemcu وصل کردم .

    پایه Vcc ماژول gsm رو به ۵ ولت ورودی

    ودر آخر اینکه مدار من چند روز کار می کنه و یکهو شروع به ریست می کنه مثلن از ساعت ۱ شب دیروز هر ۳ دقیقه یکبار ریست انجام میشه و پیامک راه اندازی واسه من ارسال میشه شاید تا حالا ۳۰۰ تا ریست شده و پیامک ارسال شده میشه راهنمایی کنین منو

    پایه گراند gsm به گراند ورودی

    پایه Tx,Rx به node

    • سلام و عرض احترام خدمت جناب دوست حسینی
      در ابتدا از اینکه این رسانه را به عنوان محلی جهت تبادل نظر و رفع اشکال انتخاب نموده اید، سپاسگزارم
      در رابطه با اشکالات مدار فوق، می بایست در نظر داشته باشید که شما در مدار خود، از اجزای مخابراتی با فرکانس های نسبتا بالا استفاده نموده اید که طبیعتا افزایش فرکانس کاری، سبب افزایش توان مصرفی، طبق رابطه زیر خواهد بود:
      P=F*C*V^2
      بنابراین، صرف اینکه شما یک آداپتور ۳ آمپر را جهت تغذیه این مدار سنگین انتخاب نموده اید، نیاز تغذیه سیستم را جبران نمیکند، چرا که غالبا ماژول های مخابراتی دارای پیک های آمپر بسیار بالا هستند و حتی در بعضی موارد مشاهده شده است که ماژول های GSM، برای انجام بعضی از کارها، نیاز به جریان های لحظه ای ۳ آمپری دارند، بنابراین نیاز است که از خازن هایی با ظرفیت مناسب در سیستم تغذیه استفاده گردد و همچنین برای هر کدام از واحدهای مخابراتی، خازن هایی جداگانه در نزدیکترین فاصله نسبت به پایه های تغذیه آنها، استفاده گردد.
      نکته بعدی، جداسازی سیستم های تغذیه هر واحد است. در این مدار، با توجه به وجود ماژول های پر مصرف، توصیه می گردد که تغذیه هر واحد، یعنی واحد GSM، واحد وای فای و واحد میکروکنترلر، از یکدیگر جدا شود.
      به عنوان نکته آخر، در رابطه با NODEMCU، در نظر داشته باشید که چنانچه از فریمور LUA، برای آن استفاده می نمایید، این فریمور کمی سنگین بوده و بخشی نسبتا قابل توجهی از حافظه ماژول ESP را به خود اختصاص می دهد که طبیعتا نمی توان انتظار انجام کارهای سنگین را از آن داشت. به طوریکه طبق تجربه در سال های قبل، در صورتیکه کمی برنامه نوشته شده به زبان LUA سنگین شود، واحد WATCH DOG این ماژول فعال شده و NODEMCU ریست می گردد، شاید دلیل ریست این ماژول و در ادامه ریست واحد GSM، برنامه بیش از حد سنگین قرار گرفته، بر روی این ماژول باشد.
      در پایان، امیدوارم نکات فوق، گره گشای کار شما باشد.

      • ممنونم جناب مهندس عزیز من موارد رو چک می کنم و امیدوارم مشکلم حل بشه
        اگه اجازه بدین یه سوال دیگه از شما دوست گرامی بپرسم
        من از پایه های D5و D8 یا به عبارتی از پایه های gpio14 و Gpio15 خروجی گرفتم و به یه ترانزیستور ۲n3904 زدم و از پایه اون ترانزیستور به پایه دستور رله متصل کردم
        من براحتی رله ها رو خاموش و یا روشن می کنم فقط مشکل من این هست که زمان روشن شدن و یا ریست شدن nodemcu ، یه لحضه رله ها وصل میشن و خاموش میشن یعنی ۱ ثانیه به حالت اکتیو میرن و قطع میشن و این باگ هست چون اگه رله متصل به قفل درب منزل باشه اون درب باز میشه
        چطوری من جلوی این مشکل رو بگیرم استاد عزیز…

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

          • ممنونم جناب مهندس گرامی
            واقعن راهنمایی های بسیار هوشمندانه و کاملا درستی رو ارائه می دین خیلی ممنونم
            و اینکه جناب مهندس من دو تا ماژول gsm GA6-B دارم که وقتی سیم کارت جدید توش می زاری خوب با شبکه ارتباط می گیره و کار میکنه ولی اگه در حین کار مدار خاموش بشه و یا از برق قطع بشه زمان راه اندازی مجدد ماژول دیکه نمیتونه با شبکه ارتباط بگیره و اگه به سیم کارت زنگ بزنی که میگه در دسترس نمی باشد و یا میگه خاموش می باشد
            حالا تنها راه موجود این هست که من سیم کارت را در بیارم از ماژول و توی یه گوشی موبایل بندازم و روشن کنم تا شبکه وصل بشه بعد دوباره توی ماژول بندازم و ایندفه ارتباط وصل میشه تا زمانی که ریست و یا خاموش نشه کار می کنه
            برق و همه ی مسائل هم چک کردم
            حتی زمان عدم برقراری ارتباط ماژول gsm رو از مدار جدا کردم و بصورت جداگانه با برق ۳آمپر ۵ وات چک کردم و باز هم نتوانست با شبکه ارتباط بگیره
            شایان ذکر هست آنتن اکسترنال هم بهش متصل کردم و بازه نه!!!
            مهندس مشکل از چی میتونه باشه و میشه من دستی به شبکه متصلش کنم!!!
            و این مشکل و من با همه ی سیم کارت ها دارم
            مخابرات ایرانسل رایتل همه رو چک کردم

          • جناب مهندس من دو تا ماژول gsm GA6-B دارم که وقتی سیم کارت جدید توش می زاری خوب با شبکه ارتباط می گیره و کار میکنه ولی اگه در حین کار مدار خاموش بشه و یا از برق قطع بشه زمان راه اندازی مجدد ماژول دیکه نمیتونه با شبکه ارتباط بگیره و اگه به سیم کارت زنگ بزنی که میگه در دسترس نمی باشد و یا میگه خاموش می باشد
            حالا تنها راه موجود این هست که من سیم کارت را در بیارم از ماژول و توی یه گوشی موبایل بندازم و روشن کنم تا شبکه وصل بشه بعد دوباره توی ماژول بندازم و ایندفه ارتباط وصل میشه تا زمانی که ریست و یا خاموش نشه کار می کنه
            برق و همه ی مسائل هم چک کردم
            حتی زمان عدم برقراری ارتباط ماژول gsm رو از مدار جدا کردم و بصورت جداگانه با برق ۳آمپر ۵ وات چک کردم و باز هم نتوانست با شبکه ارتباط بگیره
            شایان ذکر هست آنتن اکسترنال هم بهش متصل کردم و بازه نه!!!
            مهندس مشکل از چی میتونه باشه و میشه من دستی به شبکه متصلش کنم!!!
            و این مشکل و من با همه ی سیم کارت ها دارم
            مخابرات ایرانسل رایتل همه رو چک کردم

  • جناب مهندس من دو تا ماژول gsm GA6-B دارم که وقتی سیم کارت جدید توش می زاری خوب با شبکه ارتباط می گیره و کار میکنه ولی اگه در حین کار مدار خاموش بشه و یا از برق قطع بشه زمان راه اندازی مجدد ماژول دیکه نمیتونه با شبکه ارتباط بگیره و اگه به سیم کارت زنگ بزنی که میگه در دسترس نمی باشد و یا میگه خاموش می باشد
    حالا تنها راه موجود این هست که من سیم کارت را در بیارم از ماژول و توی یه گوشی موبایل بندازم و روشن کنم تا شبکه وصل بشه بعد دوباره توی ماژول بندازم و ایندفه ارتباط وصل میشه تا زمانی که ریست و یا خاموش نشه کار می کنه
    برق و همه ی مسائل هم چک کردم
    حتی زمان عدم برقراری ارتباط ماژول gsm رو از مدار جدا کردم و بصورت جداگانه با برق ۳آمپر ۵ وات چک کردم و باز هم نتوانست با شبکه ارتباط بگیره
    شایان ذکر هست آنتن اکسترنال هم بهش متصل کردم و بازه نه!!!
    مهندس مشکل از چی میتونه باشه و میشه من دستی به شبکه متصلش کنم!!!
    و این مشکل و من با همه ی سیم کارت ها دارم
    مخابرات ایرانسل رایتل همه رو چک کردم

    • سلام و باز هم از لطف شما سپاسگزارم
      به نظر می رسد ماژول نمی تواند وضعیت خود را به درستی به شبکه اعلام نماید. بدین صورت که نمی تواند به عنوان خط خاموش شده به شبکه اعلام وضعیت نماید. البته، این، یک حدس است که می بایست مورد آزمایش قرار گیرد. به همین دلیل، شما در ابتدای برنامه، ابتدای یک بار ماژول را خاموش و سپس روشن نمایید. بدین منظور، پس از گذشت یک زمان معقول از شروع برنامه، مثلا در حدود یک دقیقه از شروع برنامه، ابتدا ماژول را با دستور زیر خاموش نمایید:
      AT+CFUN=0,0
      سپس پس از گذشت زمانی در حدود مثلا یک دقیقه، ماژول را با دستور زیر، ریست نمایید:
      AT+CFUN=1,1
      لطفا مورد بالا را تست نموده و نتیجه را نیز اعلام فرمایید.

      • سلام مهندس گرامی
        من موارد بالا رو تست کردم و بازم نتونست به شبکه وصل بشه
        مهندس نمیشه ماژول رو ریست کارخانه کرد و یا بصورت دستی به شبکه وصلش کنیم !!!
        جالب این هست که این ماژول ها اول سالم بودن و کار می کرد حتی اگه دستگاه یهو خاموش میشد باز دوباره به شبکه وصل می شدن
        این مشکل زمانی پیش اومد که esp من به علت باگ نرم افزاری مرتب ریست میشد و این ماژول gsm من مرتب sms ارسال می کرد و نهایتا خراب شد

        • سلام مجدد
          برای بازگشت به تنظیمات کارخانه، از دستور زیر استفاده نمایید:
          AT&F
          همچنین توصیه می گردد در این پروژه خاص، از ماژول SIM800C و یا SIM800L استفاده نمایید.

  • سلام خسته نباشید. من ماژول رو ندارم ولی خود سیم ۸۰۰ رو دارم ایا مداری چیزی هست ک تبدیل ب ماژولش کن؟

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

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

  • سلام استاتد وقت عالی بخیر
    من بعد اینکه دستورات at را برای sim800l اجرا میکنم دیگه توابع lcd که بعد دستورات AT نوشتم درست کارنمیکنه مثلا یک رشته را نیمه کاره نشون میده یا gotoxy کارنمیکنه. برای دریافت و ارسال اطلاعات هم دوتا تابع وقفه که خود کدویژن پیاده سازی میکنه استفاده کردم البته بدون وقفه هم تست کردم درست نشد و ظاهرا بعد اجرای دستوراتی مثل puts , printf , … دستورات lcd درست کارنمیکنن می خواستم اگر امکانش هست راهنمایی بفرمایین

  • سلام و خسته نباشید
    آیا میشه تغذیه ماژول Sim800L را با ۵ ولت سری با دیود ۵۴۰۸(۳ آمپر) یا ۴۰۰۷(۱ آمپر)راه اندازی کرد.
    آیا اینکار در راستای استفاده نکردن از مبدل ولتاژ منطقی است؟
    ممنون

    • سلام و سپاسگزارم
      خیر، این امر، سبب ایجاد نوسانات ولتاژ، به دو دلیل زیر خواهد شد:
      ۱-افزایش افت ولتاژ دیود بر اثر افزایش جریان گذرنده از آن
      ۲-تغییر افت ولتاژ دیود به دلیل دما
      همانطور که اطلاع دارید، تمام دیود ها دارای افت ولتاژ در بایاس مستقیم هستند، دو عامل بالا سبب تغییر این افت ولتاژ و ایجاد ریپل و نوسان در تغذیه ماژول خواهد شد. به عبارت دیگر، با توجه به افزایش جریان مصرفی ماژول در حالت های تماس، پیامک، اینترنت و….، افت ولتاژ دیود زیاد شده و علاوه بر کاهش ولتاژ تغذیه ماژول نسبت به مقدار مورد انتظار، در تغذیه ماژول ریپل ایجاد خواهد شد. این موضوع نیز در رابطه با دمای محیط صادق بوده و سبب ایجاد تغییر در ولتاژ خروجی دیود خواهد شد. بنابراین، بهترین گزینه، همان مبدل ولتاژ است.

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

    • سلام
      تحلیل کده کامل است. همچنین اینکه کدها به طور کامل در آموزش قرار داشته و کامنت گذاری شده اند.

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

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

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

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

        • خواهش می کنم
          مورد عجیبی است!
          آیا از اتصال صحیح بین سیم کارت و سوکت ماژول اطمینان دارید؟
          مورد بعد اینکه، لطفا ماژول را از طریق مبدل سریال به رایانه متصل کنید و پیغام هایی که در ترمینال ظاهر می شود را در اینجا به استراک بگذارید تا مورد دقیق تر بررسی شود. پیش از آن، لطفا دستور زیر را جهت بررسی خطا برای ماژول بفرستید:
          AT+CREG=1
          سپس در هنگام اتصال به شبکه، دستور زیر را برای ماژول، با رعایت فاصل زمانی یک دقیقه پس از روشن نمودن ماژول، ارسال کرده و پاسخ آن را به اشتراک بگذارید:
          AT+CREG?

  • با سلام و خداقوت،
    ببخشید مهندس ایا میشه ماژول sim800 رو با ماژول esp8266 راه اندازی کرد؟ و از طریق برنامه نویسی به زبان اردوینو برای esp بدون نیاز به میکروکنترلر جداگانه، هم برد ما wifi داشته باشه و هم قابلیت ارسال پیامک و تماس؟

  • سلام
    در رابطه با sim 800 L و آردوینو
    آیا تابعی هست در صورتیکه ارتباط با اپراتور سیم کارت قطع یا وصل شد به ما یه برگشتی بده ؟
    چون gsm.available() فقط در مورد ارتباط ماژول سیم کارت با آردوینو هست

    ممنون

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

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

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

      • اصلا وقتی بورد رو به برق وصل میکنم ماژول روشن نمیشه در صورتی که اتصالات برقرار است و ولتاژ و جریان مناسب هستند.
        آیا این ماژول هم دکمه powerkey داره که باید چند ثانیه low بشه تا ماژول روشن بشه ؟

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

          • مهندس من پایه com مولتی متر رو میزنم به پایه Vcc ماژول سیم ۸۰۰ و پایه مثبت مولتی متر رو میزنم به پایه ای که ازش ولتاژ ۴ ولت مختص ماژول رو ازش میگیرم….و در نهایت مولتی متر عدد ۰ رو نشون میده

              • مهندس من ماژول رو عوض کردم و این مشکل حل شد
                یک سوالی داشتم..من از محیط اتمل استودیو برای کد زنی استفاده میکنم و یک مشکلی توی فرستادن دستور به ماژول دارم و اون این هست که نمیدونم چطوری دستور enter رو که در پایان command ها قرار میگیره رو به ماژول بفرستم؟؟
                آیا با قرار دادن عدد ۱۳ روی ماژول ،این دستور به ماژول فرستاده میشه؟

                • سلام
                  بسیار عالی
                  از اتمل استودیو اطلاعی ندارم اما کاراکترهای r\ و n\ را امتحان کنید. به عنوان مثال:
                  printf(“AT\r\n”)