Съдържание:

Урок за клетъчен щит на 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 Cellular Shield - Примерна скица за преминаване SparkFun Electronics Написано от Райън Оуенс 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. Повече информация може да бъде намерена тук: https://creativecommons.org/licenses/by/3.0/ (Използвайте нашия код свободно! Моля, не забравяйте да ни дадете кредит там, където се дължи. Благодаря!) */#Include // Включете NewSoftSerial библиотека за изпращане на серийни команди към клетъчния модул. #include // Използва се за манипулации на низ char incoming_char = 0; // Ще задържа входящия символ от серийния порт. Софтуер Серийна клетка (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 (); // Вземете знака, идващ от терминала if (incoming_char == '~') // Ако е тилда … incoming_char = 0x0D; // … преобразуване в каретка return else if (incoming_char == '^') // Ако е нагоре каретка … incoming_char = 0x1A; // … преобразуване в ctrl-Z cell.print (incoming_char); // Изпращане на знака към клетъчния модул. Serial.print (incoming_char); // Ехо го връщаме обратно към терминала}} / * SM5100B Quck Reference for AT Command Set * Освен ако не е отбелязано друго AT командите се прекратяват с натискане на клавиша „enter“. 1.) Уверете се, че подходящата GSM лента е избрана за вашата страна. За САЩ обхватът трябва да бъде настроен на 7. За да зададете обхвата, използвайте тази команда: AT+SBAND = 7 2.) След включване на Arduino с инсталиран щит, проверете дали модулът чете и разпознава 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 модулът автоматично ще започне да се опитва да се свърже с мрежа. Изчакайте, докато получите следните repsones: +SIND: 11 +SIND: 3 +SIND: 4 Отговорът +SIND от клетъчния модул казва състоянието на модулите. Ето кратко изчерпване на значението на отговора: 0 SIM карта е премахната 1 SIM карта е поставена 2 Мелодия на звънене 3 AT модул е частично готов 4 AT модул е напълно готов 5 ID на освободени повиквания 6 Разрешено повикване чийто ID = 7 Мрежовата услуга е наличен за спешно повикване 8 Мрежата е загубена 9 Аудио ВКЛ 10 Показване на състоянието на всеки телефонен указател след init фраза 11 Регистриран в мрежата След регистрация в мрежата можете да започнете взаимодействие. Ето няколко прости и полезни команди, за да започнете: За да осъществите повикване: AT команда-ATDxxxyyyzzzz Телефонен номер във формат: (xxx) yyy-zzz try ---- 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: Текстови съобщения

Текстови съобщения
Текстови съобщения

Изтеглете и инсталирайте SerialGSM във вашата библиотека Arduino.

За да изпратите текстово съобщение, посетете урока за клетъчен модул 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 at_buffer [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 (); 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 низовете void 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 Ready"); }} void loop () { / * Ако се извика за първи път, цикъл, докато мрежата и AT са готови * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Потърсете входящо повикване if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Отговорете на phone cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Образ
Образ

Намерихте ли това полезно, забавно или забавно? Следвайте @madeineuphoria, за да видите последните ми проекти.

Препоръчано: