Мазмуну:

Arduino Cellular Shield үйрөткүчү: 9 кадам (сүрөттөр менен)
Arduino Cellular Shield үйрөткүчү: 9 кадам (сүрөттөр менен)

Video: Arduino Cellular Shield үйрөткүчү: 9 кадам (сүрөттөр менен)

Video: Arduino Cellular Shield үйрөткүчү: 9 кадам (сүрөттөр менен)
Video: Arduino GSM Shield - Trailer 2024, Ноябрь
Anonim
Arduino Cellular Shield үйрөткүчү
Arduino Cellular Shield үйрөткүчү

Arduino Cellular Shield сизге уюлдук телефон чалууларга жана текст билдирүүлөрдү жөнөтүүгө мүмкүнчүлүк берет. Бул калканын мээлери SM5100B, бул стандарттуу уюлдук телефондордун көптөгөн милдеттерин аткарууга жөндөмдүү күчтүү уюлдук модуль. Бул калкан уюлдук тармакка туташуу үчүн SIM картаны колдонууну талап кылат. Кийинки үйрөткүч калканды инициализациялоо үчүн, текст кабарларын жөнөтүү жана алуу, телефон чалуулар үчүн жылаңач сөөк үйрөткүчү. Модулдун иштеши жөнүндө көбүрөөк билүү үчүн Sparkfunдун продукт бетиндеги маалымат барагын текшерүүнү унутпаңыз.

1 -кадам: Бир нерселерди алыңыз

Бир нерселерди ал
Бир нерселерди ал

Сага керек болот:

(x1) Уюлдук калкан (x1) Stackable Arduino headers (x1) Quad band antenna (x1) Arduino Uno

(Бул беттеги кээ бир шилтемелер өнөктөш шилтемелер экенин эске алыңыз. Бул сиз үчүн буюмдун баасын өзгөртпөйт. Мен жаңы долбоорлорду ишке ашыруу үчүн алган акчаны кайра инвестициялайм. Эгерде сиз альтернативдүү жеткирүүчүлөр үчүн кандайдыр бир сунуштарды кааласаңыз, мага уруксат бериңиз билем.)

2 -кадам: Solder Headers

Solder Headers
Solder Headers
Solder Headers
Solder Headers
Solder Headers
Solder Headers

Баштарды калканга салып, аларды ордуна коюңуз.

3 -кадам: Кыстаруу

Кыстаруу
Кыстаруу
Кыстаруу
Кыстаруу

Башкы казыктарды Arduino розеткаларына салыңыз.

4 -кадам: Кайра сатуучу

Resolder
Resolder

Антенна кабелинин SM5100B модулуна байланышы адатта анча жакшы эмес. Байланышты камсыз кылуу үчүн кабелдин модулга болгон ар бир байланышын кайра сатыңыз.

5 -кадам: Антеннаны тиркеңиз

Антеннаны тиркөө
Антеннаны тиркөө
Антеннаны тиркөө
Антеннаны тиркөө

Антеннаны антенна кабелине сайыңыз.

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

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

SIM картаны SIM картанын розеткасына бекем салыңыз.

7 -кадам: Баштоо

Баштоо
Баштоо

Ардуинодо төмөнкү кодду иштетиңиз:

/*

SparkFun Cellular Shield - Pass -Through Sketle Sketch SparkFun Electronics Райан Оуэнс 3/Автору тарабынан жазылган Уюлдук калканы бул жерден сатып алса болот: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Бул эскизде сериялык буйруктар терминалдык программадан SM5100B уюлдук модулуна өткөрүлүп берилет; жана уюлдук модулдан алынган жооптор терминалга жайгаштырылган. Көбүрөөк маалымат эскиз комментарийлеринде бар. Түзмөктү колдонуу үчүн активдештирилген SIM картаны борттогу SIM картанын кармагычына салыш керек! Бул эскиз Ардуинианадагы Микал Харт тарабынан жазылган NewSoftSerial китепканасын колдонот. Китепкананы бул URLден жүктөп алсаңыз болот: https://arduiniana.org/libraries/NewSoftSerial/ Бул код Creative Commons Attribution License астында берилген. Көбүрөөк маалыматты бул жерден тапса болот: https://creativecommons.org/licenses/by/3.0/ (Биздин кодду эркин колдонуңуз! Сураныч, бизге керек болгон жерде кредит берүүнү унутпаңыз. Рахмат!) */#Include // NewSoftSerialди кошуу китепкана уюлдук модулга сериялык буйруктарды жөнөтүү үчүн. #include // string manipulation үчүн колдонулат char incoming_char = 0; // Сериялык порттон келген белгини кармайт. SoftwareSerial клетка (2, 3); // "Жасалма" сериялык портту түзүңүз. Pin 2 - Rx пини, pin 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 (incoming_char); // Кирүүчү белгини терминалга басып чыгаруу. } // Эгерде символ терминалдан Arduinoго келе жатса… if (Serial.available ()> 0) {incoming_char = Serial.read (); // Терминалдан келген белгини ал //… вагонго кайтуу, эгерде башка (incoming_char == '^') // Эгерде бул карет… incoming_char = 0x1A; //… ctrl-Z клеткасына айландыруу.print (incoming_char); // Белгиңизди уюлдук модулга жөнөтүңүз. Serial.print (incoming_char); // Аны терминалга кайра жаңыртыңыз}} / * SM5100B Quck AT үчүн буйруктар топтому * Башкача белгиленбесе, AT буйруктары 'enter' баскычын басуу менен аяктайт. 1.) Сиздин өлкөңүзгө ылайыктуу GSM тобу тандалганын текшериңиз. АКШ үчүн тилкени 7 деп коюу керек. Топту коюу үчүн бул буйрукту колдонуңуз: AT+SBAND = 7 2.) Ардуинону калкан орнотулганда күйгүзгөндөн кийин, модул SIM картаны окуп, тааныганын текшериңиз. Терималдык терезе ачылып, Arduino портуна жана 9600 buadга орнотулганда, 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 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/dd: AT+CCLK = "13/05/15, 11: 02:00 "Сыноо чалуусун жөнөтүү: ATD4155551212

8 -кадам: Текст кабарлары

Текст билдирүүлөрү
Текст билдирүүлөрү

Arduino китепканаңызга SerialGSMди жүктөп алып орнотуңуз.

Текст кабарын жөнөтүү үчүн Tronixstuff уюлдук модулунун үйрөткүчүнө баш багыңыз жана 26.3 мисал кодун колдонуңуз:

Эгерде сиз текстти алуу үчүн мисал кодун иштеткиңиз келсе, анда LEDди 8 -пинге туташтырыңыз жана аны жерге 220 Ом каршылыгы менен катар коюп коюңуз.

Текст кабарын жөнөтүү үчүн Tronixstuff уюлдук модулунун үйрөткүчүнө баш багыңыз жана 26.5 мисал кодун колдонуңуз:

Уюлдук модулуңузга төмөнкү буйруктардын бирин жазыңыз:

// LEDди #a1 күйгүзөт

// LEDди өчүрөт #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: // // // ******************************************** ******** [BUFFSIZ]; char buffidx; // Тармак абалынын өзгөрмөлөрү int network_registered; int network_AT_ready; // код абалынын өзгөрмөлөрү int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Сериялык порттон келген белгини кармайт. char incoming_char = 0; // "Жасалма" сериялык портту түзүңүз. Pin 2 - Rx пини, pin 3 - Tx пини. SoftwareSerial клетка (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 (); if (c == -1) {at_buffer [buffidx] = '\ 0'; кайтуу; } if (c == '\ n') {улантуу; } if ((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 даяр"); }} void loop () { / * Биринчи жолу чакырылганда, тармак жана AT даяр болгонго чейин цикл * / 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.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Сүрөт
Сүрөт

Сиз муну пайдалуу, кызыктуу же көңүл ачуучу деп таптыңызбы? Менин акыркы долбоорлорумду көрүү үчүн @madeineuphoria ээрчиңиз.

Сунушталууда: