ماژول و برد Sim 800L با قابلیت نصب میکروفن و اسپیکر GSM

DKP - 40345
امتیاز خرید
با سفارش این محصول شما 2  امتیاز دریافت میکنید
ارزش امتیاز دریافتی:  2,000تومان
حد اکثر تخفیف قابل استفاده برای این محصول 1 امتیاز که برابر است با 1,000تومان

تبلیغات

25,900تومان
موجودی : 15 عدد

ویژگی‌های فیزیکی

تعداد قطعات : 8 عدد
ابعاد فیبر : 25 * 23 میلی متر
تعداد فیبر : 1 عدد
نوع فیبر : فایبرگلاس دورو متالیزه
چاپ مس : دارای چاپ قرمز
تعداد پایه ها : 12 پایه
تعداد ورودی : یک عدد سیم کارت استاندارد

ارتباطات

مد کاری : GPRS multi-slot class12 connectivity: max. 85.6kbps(down-load/up-load)
تعداد کانال : Quad-band 850/900/1800/1900MHz

پردازنده

تراشه : Sim800L

تغذیه

ولتاژ مورد نياز : 3 تا 5 ولت DC

ویژگی های فنی

ترتیب پایه ها : طبق چاپ راهنما روی فیبر
کد تجاری : Sim800L

سایر مشخصات کالا

سطح تجربه مورد نیاز : حرفه ای
اقلام همراه محصول : پین هدر نری و یک عدد آنتن مخصوص
کشور سازنده : چین
نوع کاربرد محصول : مناسب برای استفاده صنعتی
نوع برد - ماژول : GPS - GSM
جریان مصرفی درحالت خواب : 1 میلی آمپر
سایر توضیحات : GPRS mobile station class B
فن‌آوری : Controlled by AT Command (3GPP TS 27.007, 27.005 and SIMCOM enhanced AT Commands)
سایر قابلیت‌ها : پشتیبانی از Real Time Clock
بنچ مارک تیم فنی دانشجو کیت : 7 از 10

از مهمترین ویژگی‌های ماژول و برد Sim 800L ابعاد بسیار کوچک و مصرف برق بسیار ناچیز آن است. همچنین این ماژول به صورت چهار بانده فعالیت می‌کند. همچنین قابلیت ارسال و دریافت SMS و دیتا GPRS از طریق این ماژول انجام پذیر است.  ارتباط از طریق UART و پشتیبانی از 3GPP TS 27.007, 27.005 و SIMCOM از ویژگی‌های منحصر به فرد ماژول Sim800L است.

تبلیغات

نظرات
35

  • 1394-12-22

    سلام این به رزبری پای 2 هم وصل میشه اگه وصل میشه اموزششو میزارین

    پاسخ مدیر:

    درود بر شما


    بله قابل اتصال است. در زمینه آموزش هم انجام می‌شود ولی زمان بر است.

  • 1394-12-26

    آیا میشود جهت کنترل از راه دور استفاده کرد ؟

    پاسخ مدیر:

    درود بر شما 


    بله میتوان

  • 1395-03-25

    اموزششو نمیزارین؟

    این gprs از نوع 3g یا 2g یا 4g

    پاسخ مدیر:

    درود بر شما


    راه اندازى اين ماژول بسيار ساده است و نيازى به آموزش نميباشد.


    از نوع 2G ميباشد.

  • 1395-03-25

    وصلش کنیم بعد باید روی رزبری چیکار کنیم

  • 1395-03-30

    سلام،
    شما نوشتید تا 5 ولته اما بقیه میگن 3.4 تا 4.2 ولته بالاخره کدوم درسته؟

    پاسخ مدیر:

    درود بر شما


    اون ولتاژ Peak لحظه ای میباشد و ولتاژ جهت کارکرد ماژول همان 3.4 تا 4.2 ولت میباشد.

  • 1395-04-09

    سلام لیست اقلام که با تین محصول داده میشود چیست مثلا آیا آنتن دارد یا باید خزیداری شود

    پاسخ مدیر:

    درود بر شما


    آنتن به صورت يك سيم پيچ مخصوص همراه ماژول ارايه ميشود.

  • 1395-04-09

    با سلام وضعیت روشن شدن ماژول چگونه است چون من پایه PWERKEYدر برد نمیبینم میشه تو ضیح بدین

    پاسخ مدیر:

    درود بر شما


    چاپ راهنما پشت برد خورده است و اين پورت مشخص شده است.

  • 1395-04-12

    درود

    آیا به اردوینو وصل میشه؟

    پاسخ مدیر:

    درود بر شما


    بله به انواع بردهاى امبدد از جمله آردوينو قابل اتصال است.

  • 1395-04-21

    آیا پایه ی میکروفن و اسپیکر برای برقراری تماس در این برد وجود دارد؟

    پاسخ مدیر:

    درود بر شما


    بله، چهار پایه انتهایی سمت چپ شیار سیم کارت به اسم های MIC N - MC P و SPK P - SPK N برای اتصال به میکروفن و اسپیکر هستند.

  • 1395-04-30

    ایا دیتا شیت اینگلیسی هم دارد که بزارید

    پاسخ مدیر:

    درود بر شما


    دیتا شیت کامل در بخش دانلودها اضافه شد.

  • 1395-05-31

    سلام 
    میخواستم ببینم آیا کدنویسی این مدل با مدل sim800 یا sim808 متفاوت است؟

    پاسخ مدیر:

    درود بر شما


    خیر، نمیتوانید از همان کدها استفاده کنید.

  • 1395-11-09

    سلام ولتاژ ورودی 5 هس یا 4.8 ؟
    حداکثر جریان چه مقداره؟
    قابلیت برقراری تماس و اینترنت و جی پی اس وجود دارد؟

    پاسخ مدیر:

    درود برشما


    برای ولتاژ ورودی پیشنهاد میشود از یک دیود استفاده شود. تا ولتاژ 5 ولت ورودی به برد آسیب نزند. جریان مورد نیاز ناچیز است ولی دقیقا محاسبه نشده است. قابلیت تماس و GPS هم دارد.

  • 1395-11-28

    برای تقویت انتن دهی این برد چه کار میشه کرد؟
    ممنون

    پاسخ مدیر:

    درود برشما 


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

  • 1395-11-30

    سلام ایا این ماژول موقعیت مکانی رو هم مشخص کند یا خیر؟
    ممنون

    پاسخ مدیر:

    درود بر شما


    لطفا ديتاشيت ماژول را بررسى كنيد.

  • 1395-12-18

    تو تمام فروشگاه های اینترنتی این بردومیدن 26000
    شما میدین 33000
    احتمالا از شما اورجینال اصل چینیه از بقیه ساخت افغانستانه!!
    برا شهرمون متاسفم.

    پاسخ مدیر:

    درود برشما


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


    شاد و پیروز  باشید.

  • 1396-04-13

    سلام
    من ماژول SIM800L شیلد اترنت ENC28J60 و برد NANO ARDINO CH340Gوجاباتری دوتایی 18650 و ماژول پاور بانک تک کانال و دو باتری لیتوم خریداری کردم
    چطوری اینا رو سر هم کنم ؟که از ماژول سیم کارت خروجی اترنت داشته باشم ؟
    و باتر ها هم شارژ بشه و از باتری بهشون برق بدم ؟

    پاسخ مدیر:

    درود بر شما


    ضمن تشکر از توجه شما، برای این منظور نیاز به آپلود چند کد روی برد میباشد. یکی کدهای راه اندازی GSM و GPRS و دیگری برای ارتباط با برد اترنت 28j60 میباشد.


    اتصالات را به این صورت بر قرار کنید. شیلد اترنت را روی برد آردوینو نانو قرار دهید، سپس اتصال GND ماژول sim800L را به gnd آردوینو، پایه TX را به پین D8 آردوینو و پایه RX را به پین D7 آردوینو متصل کنید. سپس کدهای زیر را پس از کامپایل، روی برد آپلود کنید.


    دقت داشته باشید که برای VCC ماژول sim800L حتما از یک دیود 1n4007 استفاده کنید و سپس به پین 5 ولت آردوینو متصل کنید.



    #include <SoftwareSerial.h>

    //SIM800 TX is connected to Arduino D8
    #define SIM800_TX_PIN 8

    //SIM800 RX is connected to Arduino D7
    #define SIM800_RX_PIN 7

    //Create software serial object to communicate with SIM800
    SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);

    void setup() {
    //Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
    Serial.begin(9600);
    while(!Serial);

    //Being serial communication witj Arduino and SIM800
    serialSIM800.begin(9600);
    delay(1000);

    Serial.println("Setup Complete!");
    }

    void loop() {
    //Read SIM800 output (if available) and print it in Arduino IDE Serial Monitor
    if(serialSIM800.available()){
    Serial.write(serialSIM800.read());
    }
    //Read Arduino IDE Serial Monitor inputs (if available) and send them to SIM800
    if(Serial.available()){
    serialSIM800.write(Serial.read());
    }
    }

    محمدمهدی راستی 1396-04-13

    خوب منبع تغذیه باید کجا گذاشته بشه
    چگونه باید روی برد این را لود کنم

    پاسخ مدیر:

    درود بر شما


    تغذیه از طریق کابل USB برد آردوینو تامین میشود. جهت آپلود کدها هم از IDE Arduino استفاده کنید.

    محمدمهدی راستی 1396-04-14

    هنگام کامپایلر کرد خطای زیر را می دهد
    Arduino: 1.6.12 (Windows 7), Board: "Arduino Nano, ATmega328"

    Sketch uses 3,322 bytes (10%) of program storage space. Maximum is 30,720 bytes.
    Global variables use 317 bytes (15%) of dynamic memory, leaving 1,731 bytes for local variables. Maximum is 2,048 bytes.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xdd
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xdd
    Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

    This report would have more information with
    "Show verbose output during compilation"
    option enabled in File -> Preferences.

    پاسخ مدیر:

    درود بر شما


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

  • 1396-04-14

    برد شناخته شده است و COM1 هم تیک خورده است ولی موقع آپلود دوباره همین خطا را میزند

    پاسخ مدیر:

    درود بر شما


    لطفا درایور ویندوز را از همین صفحه دانلود و نصب کنید. مشکل حل خواهد شد.

    محمدمهدی راستی 1396-04-14

    درایور کدام قسمت صفحه هستش

    پاسخ مدیر:

    درایور آردوینو در قسمت دانلودها در همان صفحه میباشد. لینک آردوینو نانو Nano

    محمدمهدی راستی 1396-04-14

    در قسمت دانلود لینک آدرینو فقط ساخت پسورد موجوده

    پاسخ مدیر:

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

    محمدمهدی راستی 1396-04-14

    درایور رو نصب کردم خطای زیر رو میدهد
    Arduino: 1.6.12 (Windows 7), Board: "Arduino Nano, ATmega328"

    Sketch uses 3,322 bytes (10%) of program storage space. Maximum is 30,720 bytes.
    Global variables use 317 bytes (15%) of dynamic memory, leaving 1,731 bytes for local variables. Maximum is 2,048 bytes.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xd5
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xd5
    Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

    This report would have more information with
    "Show verbose output during compilation"
    option enabled in File -> Preferences.

    پاسخ مدیر:

    درود برشما


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

    محمدمهدی راستی 1396-04-14

    دوباره همون خطا رو میده
    موقع لود کدوم چراغها باید روشن باشه
    باید خود آدرینو تنها لود کتم یا بقیه کیتها بهش متصل باشه

    پاسخ مدیر:

    ممکن است نرم افزار آردوینو با مشکل مواجه شده باشد. با جابجایی پورت USB و جداسازی موارد از برد، مجددا بررسی کنید. همچنین حتما دقت داشته باشید که نوع برد را درست انتخاب کرده باشید.

  • 1396-04-14

    کیت ادرینو کامپایل شد
    ولی سیم کارت روی کیت800Lگذاشتم خروجی از کیت اترنت ندارم
    الن ارتباط ندارم باید چکار کنم

    پاسخ مدیر:

    درود بر شما


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



    شاد و پیروز باشید.

    محمدمهدی راستی 1396-04-15

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

    پاسخ مدیر:

    درود  بر شما


    کاربر گرامی در حال حاضر امکان ارایه چنین سرویسی نمیباشد. چنانچه سوالی فنی دارید میتوانید ارسال بفرمایید.


    شاد و پیروز باشید.

  • 1396-04-21

    با سلام من این ماژول رو خریداری کردم و برای تغذیه از مبدل dc به dc استفاده کردم با ولتاژ خروجی 4v و جریان تا 2 آمپر هم تامین هست. پس از اتصال به اردوینو uno شروع به ارتباط با ماژو ل کردم و ماژول به AtCommand ها پاسخ می دهد اما مشکلی که وجود دارد سیگنال دهی صفر و ماژول در شبکه ثبت نشده(بر اساس پاسخ ماژول ) و موقعی که با شماره سیمکارت مورد نظر تماس گرفته می شود پیغام دستگاه خاموش می باشد را می دهد در ضمن سیم کارت همراه اول معمولی هست و پین کد آن هم قبلاٌ با گوشی حذف شده است لطفا راهنمایی کنید. با تشکر

    پاسخ مدیر:

    درود برشما


    پایه ریست را به پایه VCC اتصال کوتاه کنید.

  • 1396-04-26

    سلام من هم دقیقا همین مشکلو دارم پایه ی ریست هم به VCCوصل کردم ولی هنوز هم انتن نمیدهد و درشبکه ثبت نشده ولی به AT کامند ها پاسخ میدهد . وهنگام تماس با سیم کارت میگوید که خاموش است.لطفا راهنمایی کنید.با تشکر فراوان

    پاسخ مدیر:

    درود برشما


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

  • 1396-05-01

    با سلام
    این کاری که گفتید هم انجام دادم اما همچنان جواب ماژول به شکل زیر می باشد AT+CSQ +CSQ: 0,0 OK و مشکل قبلی پابر جاست
    لطفا کمک کنید...

    پاسخ مدیر:

    درود بر شما



    اتصال این ماژول را با برد آردوینو تست کرده‌ایم و مشکلی ندارد. احتمالا در کدها و یا اتصالات مشکل دارید. منتظر باشید تا آموزش مربوطه در دیجی اسپارک منتشر شود.

  • 1396-05-08

    با سلام
    بنده این ماژول sim800l خریدم و ولتاژ 4 ولت از طریق مبدل dc to dc به آن میدهم و برد روشن میشود چراغ ال ای دی آن چشمک میزند اما من هر کدی از اکثر library ها طبق داکیومنت آنها با آردیونو وصل میکنم اما هیچ واکنشی این برد انجام نمی دهد لطفا راهنمایی فرمایید مشکل از کجاست آیا برد خراب یا سوخته است پس چرا ال ای دی آن چشمک میزند؟ و چکار باید کرد اگر خراب نیست چطور باید ریست شود؟
    آیا پین ریست ماژول را باید بزنیم به vcc ریست می شود؟؟؟

    پاسخ مدیر:

    درود برشما


    ضمن تشکر از توجه شما، مراحل راه اندازی برد sim800L نسبت به دیگر بردهای gsm کمی متفاوت است. منتظر باشید تا آموزش مربوطه منتشر شود.

  • 1396-05-24

    سلام
    منتظر ارسال آموزش این ماژول هستیم
    خیلی ممنون

    پاسخ مدیر:

    درود برشما


    ضمن تشکر از توجه شما، آموزش مربوطه منتشر شده است.

  • 1396-05-28

    خسته نباشید من وقتی کد های زیر رو آپدیت میکنم آپدیت میشه اطلاعات روی صفحه بالا میاد ولی وقتی ماولsim800lرو وصل میکنم باز هم پیام وصل نبودنgsm را میدهد مشکل از ماژول است یا جای دیگه ممنون میشم سریع جواب بدین
    /*********************************************************************
    Authors: Devvrat arya, Deva harsha, Agam tyagi

    Function: It can perform all the phone operation
    => Recieve call 'Press * to pick up or # to terminate'
    => Recieve sms 'Press * to pick up or # to terminate'
    => Make call 'Press A'
    => Send SMS 'Press B'

    Requires: SIM 900A GSM shield, 4x4 Switch matrix , 16x2 LCD

    * Connections:
    *
    * GSM: 10: Tx, 11 Rx
    * LCD: Mentioned below
    * Switch matrix:
    * C1: A5
    * C2: A4
    * C3: D2
    * C4: D3
    * R1: A0
    * R2: A1
    * R3: A2
    * R4: A3
    *********************************************************************/

    #include
    #include
    #include

    SoftwareSerial mySerial(10, 11); // These pins are connected to GSM module( RX, TX )

    LiquidCrystal lcd(12, 13, 5, 4, 6, 7); // These are connected to LCD pins (RS, EN, D4 ,D5, D6, D7 ) respectively, Vdd-5V, Vss & R/W -GND


    String number= "";

    String action= "WT"; //String codes: RC =Receive call, RM= Receive msg, SC= Send calll, SM= Send message, WT= Wait

    // Receive sms Strings
    String Response ="";
    String sms="";
    String Type;
    String Caller_id;
    String Text;
    String SP_name="";

    char character;
    char quote= 0x22;


    // Global Flags
    bool Send_m=false;
    bool sms_Receive_mode_off=true;
    bool Receive_mode=false;
    bool msg_Receive=false;
    bool time_registered=false;
    bool msg_fetched=false;
    bool on_call=false;
    bool start_Receive=false;
    bool flag=true;

    int sec,minutes; // Clock variables
    long c_start;
    long c_time;

    int i=0;

    int indexOfQuotes[10];


    double time_start;
    double time_current;
    double operational_time;



    /********* Keypad Variables**********/
    int r1=14;
    int r2=15;
    int r3=16;
    int r4=17;
    int c1=18;
    int c2=19;
    int c3=2;
    int c4=3;
    int colm1;
    int colm2;
    int colm3;
    int colm4;
    char value;
    //
    char num1;


    void setup()
    {
    Serial.begin(9600);
    Serial.println("GSM startrd");
    mySerial.begin(9600);
    mySerial.setTimeout(2000);
    Serial.setTimeout(2000);
    initilise();
    lcd.begin(16, 2);
    get_SP();
    }


    void loop()
    {
    Serial.println("Action: "+ action); //Reports it current mode of working

    while(action=="WT") // Its wait for SMS and Calls in this loop
    {
    if(sms_Receive_mode_off) //So, This turns on the SMS recieve mode
    { delay(1000);
    On_sms_Receive_mode();
    }

    if(flag)
    {
    Serial.println("Receive_ready");
    flag=false;
    print_head("Connected to:"); // Service provide name is printed on LCd
    print_content(SP_name);
    clear_Serial();
    }


    if(Receiving_on()) // FINALLY, the module is set to receive, Receive_on will beocome true in case msg or call arrives
    {
    Extract_type();
    }

    else
    { // In case of no reciving, update the current signal strength
    update_signal_strength();
    get_request(); // Or, check if user pressed any button for callling or SMS
    }
    }

    while(action=="SM") // Sending Msg action
    {
    Serial.println("Enter number to message");
    print_head("Send SMS to");
    number= Take_input(); // Take input through swith matrix
    //LCD print for Send message
    bool success = send_sms(number);
    if(success) // If sucessful go to wait state otherwise send again
    {
    action="WT";
    }
    flag=true;
    }

    while(action=="SC") //Sending call action, similar process as above
    {
    print_head("Enter Call num");
    Serial.println("Enter number to call");

    number = Take_input();


    if (valid_number()) // Check number is 10 digit long
    {
    print_head("Calling");
    print_content(number);
    delay(1000);

    send_call(number);

    print_head("On line with");
    print_content(number);
    delay(1000);
    clear_Serial();
    if(on_call)
    {terminate_call();} // Waits here till the user is on call
    }

    action="WT";
    flag=true;
    }

    while(action=="RC") // Recive call action
    {
    Serial.println("Press * to pick up or # to terminate");
    print_head("Call from");
    print_content(Caller_id);
    clear_Serial();
    WaitForPickup();
    //incall
    if(on_call) // Waits here till the user is on call
    {terminate_call();}
    Serial.println("Call response Recieved");
    action="WT";
    flag=true;
    }

    while(action=="RM") // Recieve SMS action
    {
    Show_sms();
    action="WT";
    flag=true;
    }
    }

    /*
    * Function to get the service provider(SP) name
    * Sets a Global varible: SP_name
    */

    void get_SP (void)
    { bool got_it=false;
    delay(1000);
    mySerial.println("AT");
    delay(500);
    print_head("Connecting GSM");
    while(!( SP_name.indexOf('"')>0))
    { if(GSM_operational())
    {
    mySerial.println("AT+COPS?"); //AT command for getting serivce provider name
    mySerial.println();
    }

    delay(1000);

    while(mySerial.available())
    {
    char character=mySerial.read();
    SP_name.concat(character);
    }

    }
    // Extracton process
    SP_name= (SP_name.substring(SP_name.indexOf('"')+1,SP_name.lastIndexOf('"')));
    Serial.println("Connected to: "+ SP_name);

    }



    // Fuciton to print current signal strength on lcd

    void update_signal_strength (void)
    { String Network;
    long Strength;
    mySerial.println("AT+CSQ");
    mySerial.println();

    delay(500);
    while(mySerial.available())
    {
    char character=mySerial.read();
    Network.concat(character);
    }

    Network=Network.substring(Network.indexOf(':')+2,Network.indexOf(','));
    Strength= Network.toInt(); // Strength Int value here

    Strength=(Strength*100/31); // MAX strength= 31
    lcd.setCursor(13,2);
    lcd.print(int(Strength));
    lcd.print('%');
    }

    //It recives a the char value of key pressed and stores it into
    void get_request (void)
    {
    value=Return_Keypad_Values();
    event(value);
    }

    // Select the apt mode as per the input
    void event(char func)
    {
    switch (func)
    {

    case 'A':
    action="SC"; //Send call
    break;
    case 'B':
    action="SM"; // Send Message
    break;
    //case 'C': // you can use this case for any purpose
    // receive_call();
    // break;
    default:
    action="WT"; // Wait for response
    break;
    }
    }



    /*
    * Input: (string:num,)
    * Output bool( t=sent f=unsent)
    * Function to send sms to number
    */
    bool send_sms (String number)
    {
    delay(1000);
    mySerial.println("AT");
    delay(500);
    if(GSM_operational())
    {
    mySerial.println("AT+CMGF=1");
    delay(500);
    }

    if(GSM_operational())
    {
    mySerial.print("AT+CMGS=""); // Send the SMS number
    mySerial.print(number);
    mySerial.println(""");

    delay(1000);
    mySerial.print("GSM bot functonal"); // SMS BODY here in case u want change
    // mySerial.print(i);
    delay(500);

    mySerial.write(0x1A);
    mySerial.write(0x0D);
    mySerial.write(0x0A);
    Serial.println("SMS sent");

    print_head("SMS Sent to");
    print_content(number);
    delay(2000);

    return(true); //SMS sent succussfuly
    }
    return(false); // Failed attempt
    }

    /*
    * Input: (string:num,)
    * Output bool( t=sent f=failed)
    * Function to send call to number
    */
    bool send_call (String number)
    {

    mySerial.println("AT");
    delay(500);

    if(GSM_operational())
    {
    //Number dialing
    Serial.println("Calling to :" +number);
    print_head("Calling to");
    print_content(number);
    mySerial.println("ATD"+ number +";"); // AT command for dialing up the number
    mySerial.println();
    on_call=true;
    return(true);
    }
    return(false);
    }


    // This is to switch on the messaging mode of Gsm
    void On_sms_Receive_mode (void)
    {
    mySerial.print("ATE0");
    delay(500);

    if(GSM_operational())
    mySerial.print("AT");
    delay(500);

    if(GSM_operational())
    mySerial.print("AT+CMGF=1"); // Setup in msging mode
    delay(500);

    if (GSM_operational())
    {
    mySerial.print("AT+CNMI=2,2,0,0,0r" ); //Prints the msg on serial as soon as it arrives
    delay(500);

    while(mySerial.available())
    {
    char response = mySerial.read();
    Serial.println(response);
    }

    Serial.println("Receive mode On");
    sms_Receive_mode_off=false; //turn it on off
    }
    }


    /*
    * Input: none
    * Output: True: A response( call or sms) incoming, Or false
    *
    */
    bool Receiving_on (void)
    {
    bool Response_available=false;

    if(mySerial.available())
    {
    while(!halt_fetch()) //In case of incoming recieve until halt_fetch() gives true
    {
    while(mySerial.available())
    {
    if(!time_registered) //Capture the time of start of message receiving
    {
    time_start=millis();
    time_registered=true;
    }
    char character=mySerial.read();
    Response.concat(character);
    Serial.print(character); // Store as a string
    }

    }

    Serial.println("Response Received"); //Looks like we got something
    Response_available=true;
    msg_fetched=false;
    flag=true;

    }
    return (Response_available);
    }

    /*
    *The function is created to halt or to indicate the end of receiving
    *It does that by a timeout of 3sec or Response Text limit of 500 characters
    *Input: none
    *Output: Boolean, T= halt fetching F= Wait for message

    */
    bool halt_fetch (void)
    {
    bool halt=false;

    if(time_registered)
    {
    time_current=millis();
    operational_time=time_current-time_start;
    }

    if(operational_time>3000 || Response.length()==200 ) // Halt condition
    {
    halt=true;
    operational_time=0;
    }
    return halt;
    }


    /*
    * It extracts the Response and caller id
    * It does that by quotes position.
    * Caller id is between first and second quotes
    * While, Text message is after last quotes
    */

    void Extract_type (void)
    {
    if(valid_input())
    {
    Serial.println("Valid respone");
    extract();


    // Serial.println(Response); //In case u want to see everything incoming
    // Serial.println("Type: ");
    // Serial.print(Type);
    // Serial.println("Caller id : ");
    // Serial.println(Caller_id);
    // Serial.println("Text: ");
    // Serial.println(Text);
    callORsms();
    Serial.print(Caller_id);
    }

    time_registered=false;

    Response=""; //Clear string for refresh incoming

    }


    /*
    * Checks the validity condition,
    * True: Its call or msg Resonse
    * False: it is some junk
    */
    bool valid_input (void)
    {
    bool validity;

    validity=(( Response.indexOf('+') > 0) && (Response.indexOf('"')>0 )); //If the reponse has these two thing that means it is a 'real' response

    if(!validity)
    {
    Serial.println("invalid input");

    }

    return (validity);

    }

    // Find the indexes of all the quotes in the stirng and sets them up in gloablevariable: indexOfQuotes[index]
    void extract(void)
    {
    int Length,i,index=0;

    Length=Response.length();
    for(i=0;i<=Length;i++)
    {
    if(Response.charAt(i)==quote)
    {
    indexOfQuotes[index]=i;
    index++;
    }
    }

    Type=Response.substring(1,indexOfQuotes[0]);
    Caller_id=Response.substring(indexOfQuotes[0]+1,indexOfQuotes[1]);
    Text=Response.substring(indexOfQuotes[5]+3);
    Serial.println("Extracted");
    }


    // Determine weather the response is of call or sms
    void callORsms (void)
    {
    if( Type.indexOf("LIP")>0) //Call string consist this( +CLIP)
    { action="RC";
    Serial.println("Call from: ");}
    else if(Type.indexOf("MT")>0 ) // Msg stirng consist (+CMT)
    { action="RM";
    Serial.println("Message from: ");}
    }



    // Waits till customer press * or #
    void WaitForPickup (void)
    {
    char key;
    bool user_wait = true; //default state
    while(user_wait)
    { user_wait=check_termination();

    key=Return_Keypad_Values();
    if(key=='*') //picking up reponse
    {
    mySerial.println("ATA");
    mySerial.println();
    Serial.println("Call picked up");
    print_head("Call picked up");
    print_content(Caller_id);
    delay(1000);
    user_wait=false;
    on_call=true;
    }

    if(key=='#') //Termination action
    {
    mySerial.println("ATH");
    mySerial.println();
    Serial.println("Call Terminated");
    print_head("Call Terminated");
    delay(1000);
    print_content(Caller_id);
    on_call=false;
    user_wait=false;
    }

    }

    }


    /*
    * This function is used after two user get connected on a call
    * It waits '#' to terminate or 'NO CARRIER' on serial monitor
    * It updates clock untill waiting
    * */

    void terminate_call (void)
    {
    char key;
    bool user_wait = true; //default state
    start_clock();
    while(user_wait)
    {

    user_wait=check_termination();

    key=Return_Keypad_Values();

    if(key=='#')
    {
    mySerial.println("ATH"); //Termination action
    mySerial.println();
    Serial.println("Call Terminated");
    print_head("Call Terminated");
    delay(1000);
    print_content(Caller_id);
    user_wait=false;
    }

    else
    {
    update_clock();
    }

    }
    on_call=false;
    }

    // Function to start a clock
    void start_clock (void)
    {
    lcd.clear();
    c_start=millis();
    sec=0;
    minutes=0;
    lcd.print("On call");
    }

    // Function to update the value as arduino internal clock

    void update_clock (void)
    {
    long current= millis();


    if(current-c_start>1000)
    {
    sec++;
    c_start=current;
    }

    if(sec>59)
    {
    minutes++;
    sec=-0;
    }

    lcd.setCursor(0,1);

    if(minutes<10)
    {lcd.print('0');}
    lcd.print(minutes);
    lcd.print(':');
    if(sec<10)
    {lcd.print('0');}
    lcd.print(sec);
    }

    // Fuction to Show sms on a LCD
    void Show_sms (void)
    {
    print_head("SMS from");
    print_content(Caller_id);
    char key;


    // Enhance modularity
    bool user_wait = true;
    while(user_wait)
    {key=Return_Keypad_Values();
    if(key=='*')
    {
    print_head(Text.substring(0,16)); // This can scroll SMS
    print_content(Text.substring(16,32));
    delay(2000);
    print_head(Text.substring(16,32));
    print_content(Text.substring(32,48));
    delay(2000); //A scroll fuction can be made
    Serial.println(Text);
    user_wait=false;
    }

    if(key=='#')
    {
    print_head("OK");
    Serial.println("MSG Terminated");
    delay(500);
    user_wait=false;
    }

    }
    }


    //True if starkey is pressed
    bool Starkey_pressed (void)
    { char key;
    key=Return_Keypad_Values();
    return (key=='*');
    }

    //True if Hashkey is pressed
    bool Hashkey_pressed (void)
    { char key;
    key=Return_Keypad_Values();
    return (key=='#');
    }

    //Check if 'NO CARRIER' is printer on Serial monitor

    bool check_termination (void)
    {
    bool check=true;
    String listen_no="";

    while(mySerial.available())
    {
    char data= mySerial.read();
    Serial.print(data);
    listen_no.concat(data);
    }

    if(listen_no.indexOf("CAR")>0) // I check for only CAR
    { check=false; }

    return check;
    }


    // A Fuciton to check the lenth of number calling should be 10 + ('+91' country code) =13
    bool valid_number (void)
    {
    bool valid=false;
    if(number.length()==13) // condition here
    {valid=true;}
    else
    {print_head("Invalid input");
    delay(1000);
    }
    return valid;
    }

    //Essential command to determine the state of GSM module
    bool GSM_operational(void)
    {
    int count =0;
    bool Status=false;
    mySerial.println();
    while(1)
    {
    if (mySerial.available()>0)
    {
    char data = mySerial.read();
    if( data == 'O' || data == 'K') //Its working properly
    {
    Serial.println("OK");
    Status=true;
    break;
    }
    if( data == 'E' || data == 'R' || data== 'O') // Working yet busy with some thing else
    {
    Serial.println("GSM not functional");
    Status=false;
    break;
    }
    }
    count++;
    delay(10);
    if (count == 100)
    {
    Serial.println("GSM not connected"); // No reponse for AT commands
    Status=false;
    break;
    }
    }
    return Status;
    }

    void clear_Serial (void)
    {
    while(mySerial.available())
    {
    char character=mySerial.read();
    Serial.print(character);
    }

    }

    /*************************************************************
    * Keypad Firmware Ahead *
    *************************************************************/

    /*
    * input: none
    * Output: A 13 digit number
    * Waits till user enter a ten Digit number
    */
    String Take_input (void)
    { String num="+91";
    int len=0;
    int len2;
    while (len <= 13)
    {
    len=num.length();
    num1=Return_Keypad_Values();
    if ((num1!='A')&&(num1!='B')&&(num1!='C')&&(num1!='a'))
    {
    if ((num1!='#') && (num1!='*') && (num1!='D'))
    {num+=String(num1);
    print_content(num);
    Serial.println(num);
    }

    else if (num1=='*')
    {
    num.setCharAt(len-1,'*');
    print_content(num);
    num.remove(len-1);

    }
    else if (num1=='#')
    {
    Serial.println(num);
    break;
    }
    else if(num1=='D')
    {
    break;
    }
    }

    }
    return num;
    }



    void initilise()
    {
    pinMode(r1,OUTPUT);
    pinMode(r2,OUTPUT);
    pinMode(r3,OUTPUT); //use in setup
    pinMode(r4,OUTPUT);
    pinMode(c1,INPUT);
    pinMode(c2,INPUT);
    pinMode(c3,INPUT);
    pinMode(c4,INPUT);
    Serial.begin(9600);
    digitalWrite(c1,HIGH);
    digitalWrite(c2,HIGH);
    digitalWrite(c3,HIGH);
    digitalWrite(c4,HIGH);
    }
    void row1()
    {
    digitalWrite(r1,LOW);
    digitalWrite(r2,HIGH);
    digitalWrite(r3,HIGH);
    digitalWrite(r4,HIGH);
    }
    void row2()
    {
    digitalWrite(r1,HIGH);
    digitalWrite(r2,LOW);
    digitalWrite(r3,HIGH);
    digitalWrite(r4,HIGH);
    }
    void row3()
    {
    digitalWrite(r1,HIGH);
    digitalWrite(r2,HIGH);
    digitalWrite(r3,LOW);
    digitalWrite(r4,HIGH);
    }
    void row4()
    {
    digitalWrite(r1,HIGH);
    digitalWrite(r2,HIGH);
    digitalWrite(r3,HIGH);
    digitalWrite(r4,LOW);
    }
    void ReadRows()
    {
    colm1=digitalRead(c1);
    colm2=digitalRead(c2);
    colm3=digitalRead(c3);
    colm4=digitalRead(c4);
    }
    char Return_Keypad_Values(void)
    {
    row1();
    ReadRows();
    delay(100);
    if(colm1==LOW)
    {
    Serial.println("1");
    delay(200);
    return '1';
    }
    else if(colm2==LOW)
    {
    Serial.println("2");
    delay(200);
    return '2';
    }
    else if(colm3==LOW)
    {
    Serial.println("3");
    delay(200);
    return '3';
    }
    else if(colm4==LOW)
    {
    Serial.println("A");
    delay(200);
    return 'A';
    }

    row2();
    ReadRows();
    delay(100);
    if(colm1==LOW)
    {
    Serial.println("4");
    delay(200);
    return '4';
    }
    else if(colm2==LOW)
    {
    Serial.println("5");
    delay(200);
    return '5';
    }
    else if(colm3==LOW)
    {
    Serial.println("6");
    delay(200);
    return '6';
    }
    else if(colm4==LOW)
    {
    Serial.println("B");
    delay(200);
    return 'B';
    }
    row3();
    ReadRows();
    delay(100);
    if(colm1==LOW)
    {
    Serial.println("7");
    delay(200);
    return '7';
    }
    else if(colm2==LOW)
    {
    Serial.println("8");
    delay(200);
    return '8';
    }
    else if(colm3==LOW)
    {
    Serial.println("9");
    delay(200);
    return '9';
    }
    else if(colm4==LOW)
    {
    Serial.println("C");
    delay(200);
    return 'C';
    }
    row4();
    ReadRows();
    delay(100);
    if(colm1==LOW)
    {
    Serial.println("*");
    delay(200);
    return '*';
    }
    else if(colm2==LOW)
    {
    Serial.println("0");
    delay(200);
    return '0';
    }
    else if(colm3==LOW)
    {
    Serial.println("#");
    delay(200);
    return '#';
    }
    else if(colm4==LOW)
    {
    Serial.println("D");
    delay(200);
    return 'D';
    }
    return 'a';
    }

    /*************************************************************
    * LCD functions Ahead *
    *************************************************************/

    //Print out the Heading On lCD
    void print_head (String str)
    { lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(str);
    }

    //Print secondary content on LCD
    void print_content (String str)
    {
    lcd.setCursor(0,1);
    lcd.print(str);
    }

  • 1396-06-09

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

    پاسخ مدیر:

    درود برشما


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


    نکته دیگر اینکه راه اندازی تمامی این ماژول‌ها که در فروشگاه ارایه میشود بر عهده شما کاربران است ولی دپارتمان آموزشی دانشجو کیت به عنوان خدمات مازاد و رایگان، شیوه کار و عملکرد ماژول‌ها به همراه معرفی پروژه‌های جذاب را در اختیار شما کاربران قرار میدهد و این موضوع نباید باعث کوتاهی شما و عدم فعالیت برای راه اندازی و رفع اشکالتان شود. شما هم میتوانید در این زمینه اطلاعات و تجربه کاریتان را برای ارتقاء جامعه در اختیار کاربران قرار دهید.


    شاد و پیروز باشید.

  • 1396-06-12

    با عرض سلام و خسته نباشید.در سایت های مختلف همانند "بخش نظرات" سایت زیر بیان شده که "خانواده ماژولهای SIM در شبکه ایران رجیستر نمی شوند" آیا این مسئله صحت دارد و علت روشن نشدن ماژول sim800l اینجانب نیز همین است؟
    http://sh********.com/Communications/GSM_Modem/Sim800l_Gprs_GSM_SMS_Microsim_Module__AFTAB.html
    با تشکر

    پاسخ مدیر:

    درود برشما


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

  • 1396-07-11

    لطفا آموزش نصب بر روی رزبری پای 3 رو هم بگید خیلی ممنون

    پاسخ مدیر:

    درود بر شما


    ضمن تشکر از توجه شما، بررسی خواهیم کرد و در صورت امکان نسب به تولید و انتشار محتوا اقدام خواهد شد.

  • 1396-07-22

    سلام
    من این ماژول را خریداری کردم اما به شبکه وصل نمیشه و چراغش تند چشمک میزنه

    پاسخ مدیر:

    درود بر شما


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

نظر خود را بنویسید

*
*

آموزش راه اندازی ماژول Sim800L بخش اول تست شبکه -دانشجوکیت

آموزش راه اندازی ماژول Sim800L بخش اول تست شبکه

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

  

ساختار تراشه GSM

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

ادامه...

دیتاشیت کامل SIM800

راهنمای جامع ماژول Sim800 و AT Command های آن

دانلود (6.94M)

کتابخانه و نمونه کد SIM800L

دانلود نمونه کد و کتابخانه ماژول sim800l

دانلود (35.98k)

کتابخانه تماس صوتی Sim800L

دانلود کتابخانه GSM برای تماس صوتی و ارسال پیامک

دانلود (30.14k)

آموزش تولید Dancing light با ماژول SMD RGB از پکیج 37 سنسور آردوینو