Мазмұны:

Arduino ұялы қалқан оқулығы: 9 қадам (суреттермен)
Arduino ұялы қалқан оқулығы: 9 қадам (суреттермен)

Бейне: Arduino ұялы қалқан оқулығы: 9 қадам (суреттермен)

Бейне: Arduino ұялы қалқан оқулығы: 9 қадам (суреттермен)
Бейне: Жылыжай 2024, Шілде
Anonim
Arduino ұялы қалқан оқулығы
Arduino ұялы қалқан оқулығы

Arduino Cellular Shield ұялы телефон қоңырауларын жасауға және мәтіндік хабарлар жіберуге мүмкіндік береді. Бұл қалқанның миы - SM5100B, бұл ұялы модуль, ол көптеген ұялы телефондардың көптеген тапсырмаларын орындай алады. Бұл қалқан ұялы желіге қосылу үшін SIM картасын пайдалануды талап етеді. Келесі оқулық қалқанды инициализациялауға, мәтіндік хабарларды жіберуге де, қабылдауға да, телефон қоңырауларына да арналған. Модульдің функционалдығы туралы көбірек білу үшін Sparkfun өнім бетіндегі мәліметтер кестесін тексеруді ұмытпаңыз.

1 -қадам: заттарды алуға өтіңіз

Заттарды алуға барыңыз
Заттарды алуға барыңыз

Саған қажет болады:

(x1) ұялы қалқан (x1) жиналмалы Arduino тақырыптары (x1) төрт жолақты антенна (x1) Arduino Uno

(Назар аударыңыз, бұл беттегі кейбір сілтемелер серіктестік сілтемелер болып табылады. Бұл сіз үшін тауардың құнын өзгертпейді. Мен жаңа жобалар жасау үшін алған ақшаны қайта инвестициялаймын. Егер сіз балама жеткізушілерге қандай да бір ұсыныстар алғыңыз келсе, маған рұқсат етіңіз. білемін.)

2 -қадам: дәнекерлеу тақырыптары

Дәнекер тақырыптары
Дәнекер тақырыптары
Дәнекер тақырыптары
Дәнекер тақырыптары
Дәнекер тақырыптары
Дәнекер тақырыптары

Тақырыптарды қалқанға салыңыз және оларды орнына дәнекерлеңіз.

3 -қадам: кірістіру

Кірістіру
Кірістіру
Кірістіру
Кірістіру

Тақырып түйреуіштерін Arduino ұяшығына салыңыз.

4 -қадам: Қайта сату

Қайта сатушы
Қайта сатушы

Антенна кабелінің SM5100B модуліне қосылуы әдетте өте жақсы емес. Байланысты қамтамасыз ету үшін кабельдің модульге қосылған әрбір қосылымын қайта дәнекерлеңіз.

5 -қадам: Антеннаны бекітіңіз

Антеннаны бекітіңіз
Антеннаны бекітіңіз
Антеннаны бекітіңіз
Антеннаны бекітіңіз

Антеннаны антенна кабеліне бекітіңіз.

6 -қадам: SIM картасын салыңыз

SIM картасын салыңыз
SIM картасын салыңыз
SIM картасын салыңыз
SIM картасын салыңыз
SIM картасын салыңыз
SIM картасын салыңыз
SIM картасын салыңыз
SIM картасын салыңыз

SIM картасын SIM картасының ұясына мықтап салыңыз.

7 -қадам: инициализация

Бастау
Бастау

Arduino -де келесі кодты іске қосыңыз:

/*

SparkFun ұялы экраны - SparkFun электронды үлгісінің үлгісі Райан Оуэнс 3 жазған/Сипаттама: Бұл эскиз Arduino Duemillanove интерфейсін SparkFun Electronics ұялы қалқанына қосу үшін жазылған. Ұялы қалқаны мына жерден сатып алуға болады: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Бұл эскизде сериялық командалар терминалды бағдарламадан SM5100B ұялы модуліне беріледі; және ұялы модульден алынған жауаптар терминалда орналастырылған. Қосымша ақпаратты эскиздік түсініктемелерде табуға болады. Құрылғыны пайдалану үшін тақтадағы SIM картасының ұстағышына белсендірілген SIM картасын салу керек! Бұл эскизде Ардуиниана Микал Харт жазған NewSoftSerial кітапханасы пайдаланылады. Кітапхананы мына URL мекенжайы бойынша жүктеуге болады: https://arduiniana.org/libraries/NewSoftSerial/ Бұл код Creative Commons Attribution лицензиясында берілген. Қосымша ақпаратты мына жерден табуға болады: https://creativecommons.org/licenses/by/3.0/ (Біздің кодты еркін қолданыңыз! Бізге несие мерзімі аяқталғанша беріңіз. Рахмет!) */#Include // NewSoftSerial -ды қосыңыз ұялы модульге сериялық командаларды жіберуге арналған кітапхана. #include // string manipulation үшін қолданылады char incoming_char = 0; // Сериялық порттан кіретін таңбаны ұстайды. Бағдарламалық қамтамасыз ету Сериялық ұяшық (2, 3); // «Жалған» сериялық портты жасаңыз. 2 -түйреуіш - Rx, 3 -түйреуіш - Tx. void setup () {// Байланыс үшін сериялық порттарды инициализациялау. Serial.begin (9600); cell.begin (9600); // Бастайық! Serial.println («SM5100B байланысын бастау …»); } void loop () {// Егер таңба ұялы модульден келсе … if (cell.available ()> 0) {incoming_char = cell.read (); // Ұялы сериялық порттан таңбаны алыңыз. Serial.print (кіріс_шарт); // Кіріс таңбасын терминалға басып шығарыңыз. } // Егер таңба терминалдан Arduino -ға келсе… if (Serial.available ()> 0) {incoming_char = Serial.read (); // Егер терминалдан келетін таңбаны ал, егер (incoming_char == '~') // Егер бұл тілде… incoming_char = 0x0D; //… кареткаға қайтару, егер басқасы (incoming_char == '^') // Егер бұл жоғары карет…… incoming_char = 0x1A; //… ctrl-Z ұяшығына түрлендіру.print (incoming_char); // Таңбаны ұялы модульге жіберіңіз. Serial.print (кіріс_шарт); // Оны терминалға жаңғыртыңыз}} / * SM5100B Quck AT командалық жиынына сілтеме * Егер басқаша айтылмаса, AT командалары 'enter' пернесін басу арқылы аяқталады. 1.) Сіздің елге сәйкес GSM диапазоны таңдалғанына көз жеткізіңіз. АҚШ үшін диапазон 7 -ге орнатылуы керек. Жолақты орнату үшін мына пәрменді қолданыңыз: AT+SBAND = 7 2.) Arduino қалқаны орнатылғаннан кейін модуль SIM картасын оқитынына және танитынына көз жеткізіңіз. Тердукальды терезе ашық және Arduino портына орнатылғанда және 9600 буадта Arduino -ны қосыңыз. Іске қосу реттілігі келесідей болуы керек: SM5100B байланысын іске қосу … +SIND: 1 +SIND: 10, «SM», 1, «FD», 1, «LD», 1, «MC», 1, «RC», 1, «ME», 1 Модульмен байланыс бірінші жол көрсетілгеннен кейін басталады. +SIND: 10 екінші байланыс желісі модуль SIM картаны көре алатынын айтады. Егер SIM картасы табылса, барлық басқа өрістер - 1; егер SIM картасы анықталмаса, барлық басқа өрістер - 0. 3.) Пәрмендерді жіберуді бастамас бұрын желіге қосылуды күтіңіз. +SIND: 10 жауаптан кейін модуль автоматты түрде желіге қосылуға кіріседі. Келесі жауаптарды алғанша күтіңіз: +SIND: 11 +SIND: 3 +SIND: 4 Ұялы модульден +SIND жауабы модульдердің күйін көрсетеді. Жауап мағыналарының қысқаша нұсқасы: 0 SIM картасы алынып тасталды 1 SIM картасы салынған 2 Қоңырау әуені 3 AT модулі жартылай дайын 4 AT модулі толығымен дайын 5 Шығарылған қоңыраулардың идентификаторы 6 ID = 7 Желілік қызмет шұғыл қоңырау үшін қол жетімді 8 Желі жоғалған 9 Аудио ҚОСУЛЫ 10 Әр телефон кітапшасының күйін бастапқы сөйлемнен кейін көрсету 11 Желіге тіркелген Желіде тіркелгеннен кейін сіз өзара әрекеттесуді бастауға болады. Жұмысты бастау үшін бірнеше қарапайым және пайдалы пәрмендер бар: Қоңырау шалу үшін: AT командасы-ATDxxxyyyzzzz Телефон нөмірі мына форматта: (xxx) yyy-zzz ---- cell.print («ATDxxxyyyzzzz»); Егер сіз қоңырау шалсаңыз, микрофон мен динамикті қалқанға қосу үшін құрылғылардың деректер кестесіне сілтеме жасаңыз. Txt хабарламасын жіберу үшін: AT командасы - AT+CMGF = 1 Бұл пәрмен мәтіндік хабар режимін 'мәтінге' орнатады. AT пәрмені = AT+CMGS = «xxxyyyzzzz» (арбаны қайтару) 'Жіберуге арналған мәтін' (CTRL+Z) Бұл пәрменді сипаттау біршама шатастырады. Телефон нөмірі (xxx) yyy-zzzz форматында қос тырнақшаның ішінде болады. Баға ұсыныстарын жапқаннан кейін 'enter' басыңыз. Содан кейін жіберілетін мәтінді енгізіңіз. AT командасын CTRL+Z жіберу арқылы аяқтаңыз. Бұл таңбаны Arduino терминалынан жіберу мүмкін емес. Hyperterminal, Tera Term, Bray Terminal немесе X-CTU сияқты баламалы терминалды бағдарламаны қолданыңыз. SM5100B модулі бұдан әлдеқайда көп нәрсені жасай алады! Модуль туралы қосымша ақпарат алу үшін өнім бетіндегі мәліметтер кестесін қараңыз.*/Терминалдағы сериялық портты ашыңыз. Mac жүйесінде мұны теру арқылы жүзеге асады: screen /dev/tty.usbmodemfa131 9600 (tty.usbmodemfa131 -ді Arduino сериялық мекен -жайына ауыстырыңыз) Келесі ретті қайтаруды күтіңіз: SM5100B байланысын бастау… +SIND: 3 +SIND: 4 +SIND: 11 (Егер бұл реттілік қайтарылмаса, жоғарыдағы кодтың төменгі жағында көрсетілген қате кодтарын тексеріп, тиісті түрде жөндеңіз. Солтүстік Американы қолдану үшін модульді орнату қажет болуы мүмкін - төменде қараңыз - желіге тіркелмес бұрын (яғни +SIND 11)) Келесі пәрмендерді сериялық портқа жіберіңіз: Мұны Солтүстік Америкада қолдану үшін жіберіңіз: AT+SBAND = 7 Ағымдағы уақытты орнатыңыз - yy/mm/gg: AT+CCLK = «13/05/15, 11: 02:00 «Сынақ қоңырауын жіберу: ATD4155551212

8 -қадам: мәтіндік хабарлар

Мәтіндік хабарлар
Мәтіндік хабарлар

Arduino кітапханасына SerialGSM жүктеп, орнатыңыз.

Мәтіндік хабар жіберу үшін Tronixstuff ұялы модулінің оқулығына кіріңіз және 26.3 мысал кодын қолданыңыз:

Егер сіз мәтінді алу үшін мысал кодын іске қосқыңыз келсе, светодиодты 8 түйреуішке жалғаңыз және оны жерге қосуға 220 Ом резисторы бар серияға қойыңыз.

Мәтіндік хабар жіберу үшін Tronixstuff ұялы модулінің оқулығына кіріңіз және 26.5 мысал кодын қолданыңыз:

Ұялы модульге келесі пәрмендердің бірін мәтінмен жіберіңіз:

// жарықдиодты #a1 қосады

// светодиодты өшіреді #a0

9 -қадам: Дауыс

Дауыс
Дауыс
Дауыс
Дауыс
Дауыс
Дауыс

Микрофон мен динамикті жерге тұйықталған аудио кабель арқылы қалқанға қосыңыз. Орталық сигнал сымы аудио плюс терминалдарына, ал экрандау қалқандағы тиісті теріс терминалдарға түсуі керек. Бұл кабельдер микрофон мен динамик жағынан ұқсас түрде қосылуы керек.

Дауыстық қоңырауды инициализациялау үшін келесі кодты жүктеңіз:

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

// ҚОҢЫРАУ ШЫҒЫР // // //********************************************************************************** #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: // // // ******************************************** ********************************** #include #define BUFFSIZ 90 // буферлік массив char_ffer -де орнат [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); void setup () {// Отладка үшін Arduino сериялық портын баптаңыз. Serial.begin (9600); // Телефонмен сөйлесу үшін виртуалды сериялық портты баптаңыз. cell.begin (9600); //Сәлем Әлем. Serial.println («SM5100B байланысын бастау …»); кешіктіру (1000); // Бастапқы желінің күйін орнатыңыз network_registered = 0; network_AT_ready = 0; } // AT жолдарын ұялы қалқанның void readATString (void) {char c; buffidx = 0; // (x = 0; x 0) {c = cell.read () үшін басынан бастаңыз; егер (c == -1) {at_buffer [buffidx] = '\ 0'; қайтару; } if (c == '\ n') {жалғастыру; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; қайтару; } at_buffer [buffidx ++] = c; }}} // Бос ATAT жолдарын өңдеңіз 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 («желі дайын»); }} void loop () { / * Егер бірінші рет шақырылса, желі мен АТ дайын болғанша айналдырыңыз * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Кіретін қоңырауды іздеңіз (strstr (at_buffer, «+CPAS: 3»)! = 0) {// cell cell.println («ATA») телефонына жауап беріңіз; firstTimeInOtherLoop = 0; }}}

Кескін
Кескін

Сіз мұны пайдалы, көңілді немесе қызықты деп таптыңыз ба? Менің соңғы жобаларымды көру үшін @madeineuphoria жазылыңыз.

Ұсынылған: