সুচিপত্র:

Arduino সেলুলার শিল্ড টিউটোরিয়াল: 9 ধাপ (ছবি সহ)
Arduino সেলুলার শিল্ড টিউটোরিয়াল: 9 ধাপ (ছবি সহ)

ভিডিও: Arduino সেলুলার শিল্ড টিউটোরিয়াল: 9 ধাপ (ছবি সহ)

ভিডিও: Arduino সেলুলার শিল্ড টিউটোরিয়াল: 9 ধাপ (ছবি সহ)
ভিডিও: GSM SIM800L Module Full Features and Review 2024, জুলাই
Anonim
আরডুইনো সেলুলার শিল্ড টিউটোরিয়াল
আরডুইনো সেলুলার শিল্ড টিউটোরিয়াল

আরডুইনো সেলুলার শিল্ড আপনাকে সেলুলার টেলিফোন কল করতে এবং পাঠ্য বার্তা পাঠাতে দেয়। এই ieldালের মস্তিষ্ক হল SM5100B যা একটি শক্তিশালী সেলুলার মডিউল যা বেশিরভাগ স্ট্যান্ডার্ড সেল ফোনের অনেক কাজ সম্পাদন করতে সক্ষম। এই ieldাল একটি সেলুলার নেটওয়ার্ক সংযোগ করার জন্য একটি সিম কার্ড ব্যবহার প্রয়োজন। যে টিউটোরিয়ালটি অনুসরণ করা হয় তা হল bonesালটি শুরু করার জন্য একটি খালি হাড়ের টিউটোরিয়াল, এবং পাঠ্য বার্তা পাঠানো এবং গ্রহণ করা এবং টেলিফোন কল উভয়ই। মডিউলের কার্যকারিতা সম্পর্কে আরও জানতে, স্পার্কফুনের পণ্য পৃষ্ঠায় ডেটশীটগুলি পরীক্ষা করে দেখুন।

ধাপ 1: স্টাফ পান

যান জিনিসপত্র পান
যান জিনিসপত্র পান

আপনার প্রয়োজন হবে:

(x1) সেলুলার ieldাল (x1) স্ট্যাকযোগ্য Arduino হেডার (x1) কোয়াড ব্যান্ড অ্যান্টেনা (x1) Arduino Uno

(মনে রাখবেন যে এই পৃষ্ঠার কিছু লিঙ্ক অ্যাফিলিয়েট লিংক। এটি আপনার জন্য আইটেমের খরচ পরিবর্তন করে না। নতুন প্রকল্প তৈরিতে আমি যা পাই তা আমি পুনরায় বিনিয়োগ করি। যদি আপনি বিকল্প সরবরাহকারীদের জন্য কোন পরামর্শ চান, দয়া করে আমাকে জানান জানি।)

ধাপ 2: সোল্ডার হেডার

সোল্ডার হেডার
সোল্ডার হেডার
সোল্ডার হেডার
সোল্ডার হেডার
সোল্ডার হেডার
সোল্ডার হেডার

Ersাল মধ্যে হেডার ertোকান এবং তাদের জায়গায় ঝালাই।

ধাপ 3: সন্নিবেশ করান

Insোকান
Insোকান
Insোকান
Insোকান

আরডুইনোতে সকেটে হেডার পিন োকান।

ধাপ 4: রিসোল্ডার

রিসোল্ডার
রিসোল্ডার

SM5100B মডিউলের সাথে অ্যান্টেনা ক্যাবলের সংযোগ সাধারণত খুব ভালো হয় না। সংযোগ নিশ্চিত করার জন্য তারের প্রতিটি সংযোগ মডিউলে পুনরায় বিক্রয় করুন।

ধাপ 5: অ্যান্টেনা সংযুক্ত করুন

অ্যান্টেনা সংযুক্ত করুন
অ্যান্টেনা সংযুক্ত করুন
অ্যান্টেনা সংযুক্ত করুন
অ্যান্টেনা সংযুক্ত করুন

অ্যান্টেনা ক্যাবলে এন্টেনা থ্রেড করুন।

ধাপ 6: সিম কার্ড োকান

সিম কার্ড ঢোকান
সিম কার্ড ঢোকান
সিম কার্ড ঢোকান
সিম কার্ড ঢোকান
সিম কার্ড ঢোকান
সিম কার্ড ঢোকান
সিম কার্ড ঢোকান
সিম কার্ড ঢোকান

সিম কার্ড সকেটে নিরাপদে সিম কার্ড োকান।

ধাপ 7: শুরু করুন

আরম্ভ করুন
আরম্ভ করুন

Arduino এ নিম্নলিখিত কোডটি চালান:

/*

স্পার্কফুন সেলুলার শিল্ড - পাস -থ্রু স্যাম্পল স্কেচ স্পারকফান ইলেকট্রনিক্স লিখেছেন রায়ান ওয়েন্স 3/বর্ণনা: এই স্কেচটি স্পার্কফুন ইলেকট্রনিক্স থেকে একটি সেলুলার শিল্ডে একটি Arduino Duemillanove ইন্টারফেস করার জন্য লেখা হয়েছে। সেলুলার ieldাল এখানে কেনা যাবে: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 এই স্কেচে সিরিয়াল কমান্ডগুলি একটি টার্মিনাল প্রোগ্রাম থেকে SM5100B সেলুলার মডিউলে পাঠানো হয়; এবং সেলুলার মডিউল থেকে প্রতিক্রিয়া টার্মিনালে পোস্ট করা হয়। স্কেচ মন্তব্যগুলিতে আরও তথ্য পাওয়া যায়। ডিভাইসটি ব্যবহার করার জন্য বোর্ডে থাকা সিম কার্ড ধারকের মধ্যে একটি সক্রিয় সিম কার্ড beোকানো আবশ্যক! এই স্কেচটি Arduiniana এর Mikal Hart এর লেখা NewSoftSerial লাইব্রেরি ব্যবহার করে। লাইব্রেরিটি এই URL- এ ডাউনলোড করা যাবে: https://arduiniana.org/libraries/NewSoftSerial/ এই কোডটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন লাইসেন্সের অধীনে প্রদান করা হয়েছে। আরো তথ্য এখানে পাওয়া যাবে: https://creativecommons.org/licenses/by/3.0/ (আমাদের কোডটি অবাধে ব্যবহার করুন! দয়া করে শুধু আমাদের ক্রেডিট দিতে ভুলবেন না। ধন্যবাদ!) */ #অন্তর্ভুক্ত // অন্তর্ভুক্ত করুন নিউসফটসিরিয়াল সেলুলার মডিউলে সিরিয়াল কমান্ড পাঠানোর জন্য লাইব্রেরি। #অন্তর্ভুক্ত // স্ট্রিং ম্যানিপুলেশনের জন্য ব্যবহৃত চার ইনকামিং_চার = 0; // সিরিয়াল পোর্ট থেকে আগত চরিত্রটি ধরে রাখবে। সফটওয়্যার সিরিয়াল সেল (2, 3); // একটি 'জাল' সিরিয়াল পোর্ট তৈরি করুন। পিন 2 হল Rx পিন, 3 পিন হল Tx পিন। অকার্যকর সেটআপ () {// যোগাযোগের জন্য সিরিয়াল পোর্টগুলি শুরু করুন। Serial.begin (9600); cell.begin (9600); //চল শুরু করি! Serial.println ("SM5100B যোগাযোগ শুরু হচ্ছে …"); } অকার্যকর লুপ () {// যদি একটি অক্ষর সেলুলার মডিউল থেকে আসে… যদি (cell.available ()> 0) {incoming_char = cell.read (); // সেলুলার সিরিয়াল পোর্ট থেকে চরিত্রটি পান। সিরিয়াল.প্রিন্ট (ইনকামিং_চার); // টার্মিনালে আগত অক্ষর মুদ্রণ করুন। } // যদি একটি অক্ষর টার্মিনাল থেকে Arduino এ আসছে … যদি (Serial.available ()> 0) {incoming_char = Serial.read (); // টার্মিনাল থেকে আসা চরিত্রটি পান যদি (incoming_char == '~') // যদি এটি একটি টিল্ড… //… একটি ক্যারেজ রিটার্নে রূপান্তর করুন অন্যথায় (ইনকামিং_চার == '^') // যদি এটি একটি আপ ক্যারেট হয় … //… ctrl-Z cell.print (incoming_char) এ রূপান্তর; // অক্ষরটি সেলুলার মডিউলে পাঠান। সিরিয়াল.প্রিন্ট (ইনকামিং_চার); // এটিকে আবার টার্মিনালে প্রতিধ্বনিত করুন}} / * SM5100B Quck রেফারেন্স AT কমান্ড সেটের জন্য * যদি না অন্যথায় উল্লিখিত AT কমান্ডগুলি 'এন্টার' কী টিপে শেষ না হয়। 1.) নিশ্চিত করুন যে আপনার দেশের জন্য সঠিক GSM ব্যান্ড নির্বাচন করা হয়েছে। মার্কিন যুক্তরাষ্ট্রে ব্যান্ডটি অবশ্যই to -এ সেট করতে হবে। একটি টেরিমাল উইন্ডো খোলা এবং Arduino পোর্ট এবং 9600 বুড সেট, Arduino উপর শক্তি। প্রারম্ভিক ক্রমটি এরকম কিছু হওয়া উচিত: SM5100B যোগাযোগ শুরু করা হচ্ছে … +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 প্রথম লাইন প্রদর্শনের পর মডিউলের সাথে যোগাযোগ শুরু হয়। যোগাযোগের দ্বিতীয় লাইন, +SIND: 10, মডিউল একটি সিম কার্ড দেখতে পারে কিনা তা আমাদের বলে। যদি সিম কার্ড সনাক্ত করা হয় অন্য প্রতিটি ক্ষেত্র হল 1; যদি সিম কার্ডটি সনাক্ত করা না যায় তবে প্রতিটি অন্যান্য ক্ষেত্র হল 0. 3.) কমান্ড পাঠানো শুরু করার আগে একটি নেটওয়ার্ক সংযোগের জন্য অপেক্ষা করুন। +SIND: 10 সাড়া দেওয়ার পরে মডিউল স্বয়ংক্রিয়ভাবে একটি নেটওয়ার্কের সাথে সংযোগ স্থাপনের চেষ্টা শুরু করবে। যতক্ষণ না আপনি নিম্নলিখিত রেপসোনগুলি পান ততক্ষণ অপেক্ষা করুন: +SIND: 11 +SIND: 3 +SIND: 4 সেলুলার মডিউল থেকে +SIND প্রতিক্রিয়া মডিউলগুলির অবস্থা বলে। এখানে রেসপন্সের অর্থগুলির একটি দ্রুত রান-ডাউন: 0 সিম কার্ড সরানো হয়েছে 1 সিম কার্ড 2োকানো 2 রিং মেলোডি 3 AT মডিউল আংশিকভাবে প্রস্তুত 4 AT মডিউল সম্পূর্ণ প্রস্তুত 5 রিলিজ করা কলের আইডি 6 রিলিজড কল যার আইডি = 7 নেটওয়ার্ক পরিষেবা একটি জরুরী কল করার জন্য উপলব্ধ 8 নেটওয়ার্ক হারিয়ে গেছে 9 অডিও অন 10 প্রতিটি ফোনবুকের অবস্থা দেখান init ফ্রেজ 11 নেটওয়ার্কে নিবন্ধিত হওয়ার পর নেটওয়ার্কে নিবন্ধন করার পর আপনি মিথস্ক্রিয়া শুরু করতে পারেন। শুরু করার জন্য এখানে কয়েকটি সহজ এবং দরকারী কমান্ড দেওয়া হল: একটি কল করার জন্য: AT কমান্ড-ATDxxxyyyzzzz ফর্ম্যাট সহ ফোন নম্বর: (xxx) yyy-zzz চেষ্টা করুন ---- cell.print ("ATDxxxyyyzzzz"); যদি আপনি একটি ফোন কল করেন তবে নিশ্চিত করুন যে ডিভাইসের ডেটশীটটি একটি মাইক্রোফোন এবং স্পিকারের সাথে ঝাল থেকে সংযুক্ত করুন। একটি txt বার্তা পাঠানোর জন্য: AT কমান্ড - AT+CMGF = 1 এই কমান্ডটি পাঠ্য বার্তা মোডকে 'পাঠ্য' এ সেট করে। AT কমান্ড = AT+CMGS = "xxxyyyzzzz" (ক্যারেজ রিটার্ন) 'পাঠানোর জন্য পাঠ্য' (CTRL+Z) এই কমান্ডটি বর্ণনা করতে কিছুটা বিভ্রান্তিকর। ফোন নম্বর, বিন্যাসে (xxx) yyy-zzzz ডবল কোটেশনের ভিতরে যায়। উদ্ধৃতি বন্ধ করার পরে 'এন্টার' টিপুন। এরপর পাঠানোর জন্য পাঠ্য লিখুন। CTRL+Z পাঠিয়ে AT কমান্ড শেষ করুন। এই চরিত্রটি Arduino এর টার্মিনাল থেকে পাঠানো যাবে না। হাইপারটার্মিনাল, টেরা টার্ম, ব্রে টার্মিনাল বা এক্স-সিটিইউর মতো বিকল্প টার্মিনাল প্রোগ্রাম ব্যবহার করুন। SM5100B মডিউল এর চেয়ে অনেক বেশি করতে পারে! মডিউল সম্পর্কে আরও জানতে পণ্যের পৃষ্ঠায় ডেটশীটগুলি দেখুন।*/টার্মিনালে সিরিয়াল পোর্ট খুলুন। ম্যাক -এ এটি টাইপ করে সম্পন্ন করা হয়: screen /dev/tty.usbmodemfa131 9600 (আপনার Arduino এর সিরিয়াল ঠিকানা দিয়ে tty.usbmodemfa131 প্রতিস্থাপন করুন) নিম্নলিখিত ক্রমটি ফিরে আসার জন্য অপেক্ষা করুন: SM5100B যোগাযোগ শুরু হচ্ছে … +SIND: 3 +SIND: 4 +SIND: 11 (যদি এই ক্রমটি ফেরত না দেওয়া হয় তবে উপরের কোডের নীচে তালিকাভুক্ত ত্রুটি কোডগুলি পরীক্ষা করুন এবং যথাযথভাবে ডিবাগ করুন। আপনাকে উত্তর আমেরিকান ব্যবহারের জন্য মডিউল সেট করতে হতে পারে - নীচে দেখুন - এটি নেটওয়ার্কে নিবন্ধনের আগে +SIND 11)) সিরিয়াল পোর্টে নিম্নলিখিত কমান্ড পাঠান: এটি উত্তর আমেরিকান ব্যবহারের জন্য পাঠান: AT+SBAND = 7 বর্তমান সময় সেট করুন - yy/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "পরীক্ষা কল পাঠান: ATD4155551212

ধাপ 8: পাঠ্য বার্তা

লিখিত বার্তা
লিখিত বার্তা

আপনার Arduino লাইব্রেরিতে SerialGSM ডাউনলোড এবং ইনস্টল করুন।

একটি টেক্সট বার্তা পাঠাতে ট্রনিক্সস্টাফ সেলুলার মডিউল টিউটোরিয়াল পরিদর্শন করুন এবং উদাহরণ কোড 26.3 ব্যবহার করুন:

যদি আপনি একটি টেক্সট পেতে উদাহরণ কোড চালাতে চান, একটি পিন 8 এর সাথে একটি LED সংযোগ করুন এবং এটি 220 ওহম প্রতিরোধকের সাথে সিরিজে রাখুন।

একটি টেক্সট বার্তা পাঠাতে ট্রনিক্সস্টাফ সেলুলার মডিউল টিউটোরিয়াল পরিদর্শন করুন এবং উদাহরণ কোড 26.5 ব্যবহার করুন:

আপনার সেলুলার মডিউলে নিম্নলিখিত কমান্ডগুলির মধ্যে একটি পাঠ করুন:

// #1 এ LED চালু করে

// LED বন্ধ করে দেয় #a0

ধাপ 9: ভয়েস

ভয়েস
ভয়েস
ভয়েস
ভয়েস
ভয়েস
ভয়েস

গ্রাউন্ডেড অডিও কেবল ব্যবহার করে একটি মাইক্রোফোন এবং স্পিকারকে ieldালের সাথে সংযুক্ত করুন। কেন্দ্র সংকেত তারের অডিও প্লাস টার্মিনালে যেতে হবে এবং শিল্ডিং negativeালের সংশ্লিষ্ট নেগেটিভ টার্মিনালে যেতে হবে। এই তারগুলি একইভাবে মাইক্রোফোন এবং স্পিকার পাশে সংযুক্ত করা উচিত।

একটি ভয়েস কল শুরু করতে নিম্নলিখিত কোডটি আপলোড করুন:

//**********************************************************************************

// একটি কল করুন // // BUFFERING CODE BASED UPON: // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }

To receive a voice call upload the following code

//**********************************************************************************

// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // // ************************************************ ************************************ [BUFFSIZ]; char buffidx; // নেটওয়ার্ক স্টেট ভেরিয়েবল int network_registered; int network_AT_ready; // কোড স্টেট ভেরিয়েবল int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // সিরিয়াল পোর্ট থেকে আগত চরিত্রটি ধরে রাখবে। char incoming_char = 0; // একটি 'নকল' সিরিয়াল পোর্ট তৈরি করুন। পিন 2 হল Rx পিন, 3 পিন হল Tx পিন। সফটওয়্যার সিরিয়াল সেল (2, 3); অকার্যকর সেটআপ () {// ডিবাগিংয়ের জন্য আরডুইনো সিরিয়াল পোর্ট শুরু করুন। Serial.begin (9600); // ফোনে কথা বলতে ভার্চুয়াল সিরিয়াল পোর্ট শুরু করুন। cell.begin (9600); //ওহে বিশ্ব. Serial.println ("SM5100B যোগাযোগ শুরু হচ্ছে …"); বিলম্ব (1000); // সেট প্রাথমিক নেটওয়ার্ক অবস্থা network_registered = 0; network_AT_ready = 0; } // সেলুলার ieldাল থেকে স্ট্রিং পড়ুন অকার্যকর readATString (void) {char c; buffidx = 0; // শুরুতে (x = 0; x 0) {c = cell.read (); যদি (c == -1) {at_buffer [buffidx] = '\ 0'; প্রত্যাবর্তন; } যদি (c == '\ n') {চালিয়ে যান; } যদি ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; প্রত্যাবর্তন; } at_buffer [buffidx ++] = c; }}} // AT স্ট্রিং অকার্যকর ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("নেটওয়ার্ক নেটওয়ার্ক উপলব্ধ নয়"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("নেটওয়ার্ক নিবন্ধিত"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("নেটওয়ার্ক AT রেডি"); }} অকার্যকর লুপ () { / * যদি প্রথমবারের জন্য বলা হয়, নেটওয়ার্ক এবং AT প্রস্তুত না হওয়া পর্যন্ত লুপ করুন * / যদি (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// ইনকামিং কল দেখুন যদি firstTimeInOtherLoop = 0; }}}

ছবি
ছবি

আপনি এই দরকারী, মজা, বা বিনোদনমূলক? আমার সর্বশেষ প্রকল্পগুলি দেখতে @madeineuphoria অনুসরণ করুন।

প্রস্তাবিত: