مزایا و فواید ارتباطات بی سیم امروزه بر هیچ کس پوشیده نیست. به کمک فناوری بیسیم، میتوان از فواصل بسیار دور سامانهها را کنترل نمود. از وضعیت محیط با خبر شد و به طور کلی بدون نیاز به حضور در محل، کنترل محل مورد نظر را به دست گرفت. در سالهای اخیر، در این زمینه پیشرفت شگرفی دیده میشود، رشد روز افزون انواع چیپهای مخابراتی در فرکانسهای مختلف، تایید این موضوع است. در ادامه با مرجع تخصصی ماژول سیم کارت GSM، دیجی اسپارک همراه باشید.
بررسی ماژول سیم کارت GSM
شرکت simcom چندین سال است که در این زمینه ماژول سیم کارت فعال میباشد. با تولید انواع چیپهای مخابراتی باند GSM، امکان طراحی دستگاههای کنترل از راه دور را چه بر بستر GSM و یا GPRS، فراهم نموده است. اما این ماژولها با توجه به امکانات بسیاری که فراهم میآورند، ممکن است بعد از مدتی دچار آشفتگی شده و به دستورات AT Command ها پاسخی ندهند. حتی مشاهده گردیده است که بعد از چند مدتی، از شبکه خارج شده و دیگر نمیتوانند دوباره به شبکه بازگردند. این موضوع یک چالش حیاتی در طراحی سیستمهای کنترل از راه دور خواهد بود. تصور کنید در منطقهای دور دست، نیاز است تا به طور مداوم شرایط محیطی نظیر دما، فشار، رطوبت و…. کنترل گردد. با توجه به مطالب ذکر شده، در صورتیکه واحد GSM دچار اینگونه اشکالات گردد، عملا سیستم طراحی شده از کار خواهد افتاد.
در این شرایط، نیاز به مکانیزمی است تا از صحت عملکرد واحد مخابراتی مطلع شد. در صورت وقع این شرایط، سیستم وارد حالت خود تعمیری گردد و با یک ریست سخت افزاری، این واحد را به حالت عادی خود بازگرداند. بدین منظور، نیاز است تا با در نظر گرفتن یک بازه زمانی، مثلا هر ده دقیقه یکبار، به کنترل وضعیت این واحد پرداخت. به منظور کنترل وضعیت، میبایست دستور AT+CCALR? به ماژول مخابراتی ارسال گردد. در صورتیکه شرایط ماژول در حالت عادی باشد، ماژول عبارت +CCALR: 1 را به ما ارسال خواهد نمود. در صورتیکه شرایطی جز این باشد، مثلا اگر به طور کل پاسخی ارسال نگردد و یا عبارت +CCALR: 0 از سوی ماژول ارسال گردد، نیاز است تا ماژول مورد نظر به صورت سخت افزاری ریست گردد. بدین منظور، نیاز است تا مطابق اسناد فنی یک ماژول مخابراتی این شرکت، نظیر ماژول sim800l، پایه ریست این ماژول برای حداقل ۱۰۵ میلی ثانیه صفر منطقی گردد. مطابق اطلاعات دیتاشیت ماژول Sim800L، این کار میتواند با اتصال مستقیم پایه میکروکنترلر و یا برد آردوینو به این پایه صورت بگیرد، اما به نظر میرسد با توجه به این موضوع که این پایه در حالت عادی، خود دارای ولتاژ است، با اتصال یک ترانزیستور به این پایه، میتوان از کیفیت مطلوب تری در کار برخوردار گردید.
عملکرد مدار اتصال ماژول SIM800L
مطابق شکل فوق، با تعریف کردن پورت B میکروکنترلر به عنوان خروجی و به کمک پین صفر این پورت، میتوان با کنترل نمودن ترانزیستور، ماژول را ریست نمود. دقت داشته باشید برای این موضوع، پین میکروکنترلر در حالت عادی صفر منطقی است که بدین ترتیب ترانزیستور درحالت عادی خاموش است. زمانی که احتیاج به ریست باشد، این پایه به یک منطقی تغییر وضعیت داده، و با روشن شدن ترانزیستور، پایه ریست ماژول با زمین اتصال برقرار کرده و در نتیجه، ماژول Sim800L ریست میگردد. دقت داشته باشید با اعمال یک تقسیم مقاومتی، ولتاژ میکروکنترلر را به منظور ایجاد ولتاژ مناسب برای ترانزیستور کاهش میدهیم. نکته دیگر، PULLDOWN کردن پین متصل به BASE ترانزیستور با یک مقاومت ۱۰ کیلو اهمی است. از آنجاییکه ماژول های GSM حین کار نویز شدید در اطراف خود ایجاد می نمایند، ممکن است بر اثر این نویز، پایه خروجی میکروکنترلر به طور ناخواستهای تغییر وضعیت دهد. بنابراین با یک مقاومت ۱۰ کیلو اهم این پایه را به زمین متصل مینماییم. این کار باعث میشود از ایجاد ولتاژهای ناخواسته احتمالی بر روی این پایه جلوگیری کنیم.
لوازم مورد نیاز
اتصالات
- پایه 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 استفاده نمایید.
سلام خسته نباشید. من ماژول رو ندارم ولی خود سیم ۸۰۰ رو دارم ایا مداری چیزی هست ک تبدیل ب ماژولش کن؟
سلام
به دیتاشیت خود ماژول مراجعه نمایید، مدار راه اندازی در آن به طور کامل و البته ساده، معرفی شده است.
سلام پایه های TX و RX میکرو و سیم ۸۰۰ همیشه باید با مقاومت وصل بشن؟
با سلام
درصورتی که سطح ولتاژ میکروکنترلر بالاتر از ماژول Sim800 باشد، بهتر است که با استفاده از تقسیم مقاومتی سطح ولتاژ پایه TX میکروکنترلرکمتر شده و با سطح ولتاژ ماژول Sim800 برابر شود.
سلام استاتد وقت عالی بخیر
من بعد اینکه دستورات at را برای sim800l اجرا میکنم دیگه توابع lcd که بعد دستورات AT نوشتم درست کارنمیکنه مثلا یک رشته را نیمه کاره نشون میده یا gotoxy کارنمیکنه. برای دریافت و ارسال اطلاعات هم دوتا تابع وقفه که خود کدویژن پیاده سازی میکنه استفاده کردم البته بدون وقفه هم تست کردم درست نشد و ظاهرا بعد اجرای دستوراتی مثل puts , printf , … دستورات lcd درست کارنمیکنن می خواستم اگر امکانش هست راهنمایی بفرمایین
سلام
آیا بعد از هر دستور AT، به اندازه کافی delay قرار می دهید؟
سلام و خسته نباشید
آیا میشه تغذیه ماژول Sim800L را با ۵ ولت سری با دیود ۵۴۰۸(۳ آمپر) یا ۴۰۰۷(۱ آمپر)راه اندازی کرد.
آیا اینکار در راستای استفاده نکردن از مبدل ولتاژ منطقی است؟
ممنون
سلام و سپاسگزارم
خیر، این امر، سبب ایجاد نوسانات ولتاژ، به دو دلیل زیر خواهد شد:
۱-افزایش افت ولتاژ دیود بر اثر افزایش جریان گذرنده از آن
۲-تغییر افت ولتاژ دیود به دلیل دما
همانطور که اطلاع دارید، تمام دیود ها دارای افت ولتاژ در بایاس مستقیم هستند، دو عامل بالا سبب تغییر این افت ولتاژ و ایجاد ریپل و نوسان در تغذیه ماژول خواهد شد. به عبارت دیگر، با توجه به افزایش جریان مصرفی ماژول در حالت های تماس، پیامک، اینترنت و….، افت ولتاژ دیود زیاد شده و علاوه بر کاهش ولتاژ تغذیه ماژول نسبت به مقدار مورد انتظار، در تغذیه ماژول ریپل ایجاد خواهد شد. این موضوع نیز در رابطه با دمای محیط صادق بوده و سبب ایجاد تغییر در ولتاژ خروجی دیود خواهد شد. بنابراین، بهترین گزینه، همان مبدل ولتاژ است.
ممنون از توضیحات کاملتون
خواهش میکنم
موفق باشید
تحلیل کدها را کاملتر می تونید برای من بفرستید
با تشکرو ممنونم.هزینش چقدر میشه؟؟
سلام
تحلیل کده کامل است. همچنین اینکه کدها به طور کامل در آموزش قرار داشته و کامنت گذاری شده اند.
چگونه کد ویزارت را برنامه ریزی کنیم
تنظیمات کد ویزارد بسته به پروژه شما صورت می گیرد. در منوی کد ویزارد، ویژگی ها و قابلیت های میکروکنترلر با توجه به پروژه انتخاب می شود.
از کجا یک فیلم از عملکرد کار پیدا کنیم
سعی میکنم این موضوع را در دست اقدام قرار داده و به صورت آموزش منتشر کنم
سلام
باتشکر از آموزش هایی عالیتون
بنده ماژول sim800c را با آردوینو راه اندازی کردم و به درستی کار می کند اما مشکلم این هست که تنها با یک سیم کارت کار می کند و وقتی سیم کارت دیگه ای می اندازم روش دیگه به شبکه متصل نمی شود و مدام تلاش بی فایده می کند آیا با این روشی که اینجا فرمودید مشکل حل می شود یا باید کار دیگه ای انجام بدم؟
باتشکر از راهنماییتون
سلام
روش ارائه شده در این آموزش، زمانیکه ماژول به درستی فعالیت ننماید(به اصطلاح هنگ کند) آن را ریست می نماید. در موردی که شما اشاره نمودید، می بایست بررسی نمایید که سیم کارت مذکور، به هیچ عنوان پین کد نداشته باشد. همچنین، جهت اتصال سیم کارت را نیز دقت نمایید.
ممنونم از پاسخگویتون
با چندین سیم کارت هم امتحان کردم اما از بین تنها با اولین سیم کارت ایرانسلم کار می کند و یک همراه اول به طور اتفاقی کار کرد اما بعد از آن با هر سیم کارت ایرانسل و همراه اول دیگه ای چک کردم وارد شبکه نمی شود، بنظرتون راه حل مشکل بنده از چی هست؟
بازم ممنون
خواهش می کنم
مورد عجیبی است!
آیا از اتصال صحیح بین سیم کارت و سوکت ماژول اطمینان دارید؟
مورد بعد اینکه، لطفا ماژول را از طریق مبدل سریال به رایانه متصل کنید و پیغام هایی که در ترمینال ظاهر می شود را در اینجا به استراک بگذارید تا مورد دقیق تر بررسی شود. پیش از آن، لطفا دستور زیر را جهت بررسی خطا برای ماژول بفرستید:
AT+CREG=1
سپس در هنگام اتصال به شبکه، دستور زیر را برای ماژول، با رعایت فاصل زمانی یک دقیقه پس از روشن نمودن ماژول، ارسال کرده و پاسخ آن را به اشتراک بگذارید:
AT+CREG?
نمونه ماژولم این هست:
https://daneshjookit.com/module/%D9%85%D8%AE%D8%A7%D8%A8%D8%B1%D8%A7%D8%AA%DB%8C/%D8%B3%DB%8C%D9%85-%DA%A9%D8%A7%D8%B1%D8%AA-gsm/1815-%D8%B4%DB%8C%D9%84%D8%AF-%D8%A2%D8%B1%D8%AF%D9%88%DB%8C%D9%86%D9%88-sim-800c-arduino.html
با سلام و خداقوت،
ببخشید مهندس ایا میشه ماژول sim800 رو با ماژول esp8266 راه اندازی کرد؟ و از طریق برنامه نویسی به زبان اردوینو برای esp بدون نیاز به میکروکنترلر جداگانه، هم برد ما wifi داشته باشه و هم قابلیت ارسال پیامک و تماس؟
سلام
بله، این مورد کاملا امکان پذیر هست، دقیقا همان روال آردوینو در ESP اجرا می شود. پرژوهای زیر اجرا شده و روی دیجی اسپارک قرار گرفتند:(برد ESP32CAM هم ساختاری دقیقا یکسان با ESP8266 دارد)
لینک پروژه دوربین آنلاین سیم کارتی، کلیک کنید
لینک پروژه آیفون تصویری هوشمند، کلیک کنید
لینک پروژه مانیتورینگ شدت نور با ESP و SIM800L
لینک پروژه ارسال داده به پلتفرم THINGSSPEAK و SIM800L
ممنونم از راهنماییتون
ببخشید یه سوال دیگه هم داشتم خدمتتون اگه امکانش هست راهنماییم کنید،
خواستم ببینم در ماژول esp8266 سری ۱۲، از پین های ردیف بالا هم میشه در برنامه نویسی استفاده کرد یا فقط مخصوص ارتباط spi هستن؟
خواهش می کنم
بله با رعایت نکاتی می توان این پایه ها را هم استفاده کرد. آموزش زیر را مطالعه نمایید.
راه اندازی و کار با ESP8266، بخش سوم: معرفی پایه ها و بررسی سخت افزاری
مجموعه آموزش های ماژول ESP8266 به صورت قسمت به قسمت در حال انتشار است. تاکنون ۶ قسمت از آن منتشر شده و بقیه آن طی این دو هفته منتشر خواهد شد. این آموزش ها را می توانید مطالعه و دنبال نمایید.
سلام
در رابطه با sim 800 L و آردوینو
آیا تابعی هست در صورتیکه ارتباط با اپراتور سیم کارت قطع یا وصل شد به ما یه برگشتی بده ؟
چون gsm.available() فقط در مورد ارتباط ماژول سیم کارت با آردوینو هست
ممنون
سلام
به کمک مطالب گفته شده در این آموزش و بررسی کدهای آن می توانید این تابع را خود پیاده سازی کنید.
سلام مهندس خدا فوت ..ممنون از پیج خوبتون
من به یک مشکلی برخوردم و اون این هست که هنگام اتصال مدار به برق،ماژول sim800l هیچ واکنشی از خودش نشون نمیده و ال ای دی روش خاموش میمونه..در صورتی که ولتاژ و جریان مناسب رو برای این ماژول در نظر گرفتم
در کل وقتی ماژول تغذیه میشه باید ال ای دی مربوطش اعلان وضعیت بکنه یا باید دستوراتی را هم بهش بدیم تا ماژول روشن بشه؟
سلام و متشکرم از شما
منظور شما این هست که چند بار چشمک می زند، سپس خاموش شده و بار دیگر شروع به چشمک زدن می کند؟
برای روشن شدن ماژول نیازی به دستور خاصی نیست.
اصلا وقتی بورد رو به برق وصل میکنم ماژول روشن نمیشه در صورتی که اتصالات برقرار است و ولتاژ و جریان مناسب هستند.
آیا این ماژول هم دکمه powerkey داره که باید چند ثانیه low بشه تا ماژول روشن بشه ؟
خیر، ماژول SIM800L بلافاصله پس از اتصال به تغذیه راه اندازی می شود. برای تست سوختن، جریان مصرفی ماژول SIM800L را با مولتی متر اندازه گیری کرده و در کامنت بعدی اعلام نمایید.
مهندس من پایه com مولتی متر رو میزنم به پایه Vcc ماژول سیم ۸۰۰ و پایه مثبت مولتی متر رو میزنم به پایه ای که ازش ولتاژ ۴ ولت مختص ماژول رو ازش میگیرم….و در نهایت مولتی متر عدد ۰ رو نشون میده
شما باید پایه com را به GND و پایه مثبت مولتی متر را به VCC متصل کنید.
مهندس من ماژول رو عوض کردم و این مشکل حل شد
یک سوالی داشتم..من از محیط اتمل استودیو برای کد زنی استفاده میکنم و یک مشکلی توی فرستادن دستور به ماژول دارم و اون این هست که نمیدونم چطوری دستور enter رو که در پایان command ها قرار میگیره رو به ماژول بفرستم؟؟
آیا با قرار دادن عدد ۱۳ روی ماژول ،این دستور به ماژول فرستاده میشه؟
سلام
بسیار عالی
از اتمل استودیو اطلاعی ندارم اما کاراکترهای r\ و n\ را امتحان کنید. به عنوان مثال:
printf(“AT\r\n”)