
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57

Arduino Cellular Shield ви позволява да осъществявате мобилни телефонни разговори и да изпращате текстови съобщения. Мозъкът на този щит е SM5100B, който е здрав клетъчен модул, способен да изпълнява много от задачите на повечето стандартни мобилни телефони. Този щит изисква използване на SIM карта за свързване към клетъчна мрежа. Урокът, който следва, е урок за голи кости за инициализиране на щита, както за изпращане и получаване на текстови съобщения, така и за телефонни обаждания. За да научите повече за функционалността на модула, не забравяйте да разгледате техническите листове на продуктовата страница на Sparkfun.
Стъпка 1: Вземете неща

Ще имаш нужда:
(x1) Клетъчен щит (x1) Подреждащи се заглавки на Arduino (x1) Четирилентова антена (x1) Arduino Uno
(Обърнете внимание, че някои от връзките на тази страница са партньорски връзки. Това не променя цената на артикула за вас. Реинвестирам всички приходи, които получавам, в създаването на нови проекти. Ако искате някакви предложения за алтернативни доставчици, моля, позволете ми зная.)
Стъпка 2: Поялни заглавки



Поставете заглавките в щита и ги запоявайте на място.
Стъпка 3: Вмъкнете


Поставете щифтовете на заглавката в гнездата на Arduino.
Стъпка 4: Резолдер

Свързването на антенния кабел към модула SM5100B обикновено не е много добро. Поставете отново всяка от кабелните връзки към модула, за да осигурите свързаност.
Стъпка 5: Прикрепете антената


Завийте антената към антенния кабел.
Стъпка 6: Поставете 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, за да видите последните ми проекти.
Препоръчано:
Бутон клетъчен октопод: 8 стъпки

Button Cell Octopus: Button Cell Octopus заменя батериите с бутони. Това е полезно, когато резервна батерия няма под ръка. Използва се за пускане на термометър и манометър от батерия от 4 цента. Показано е и направата на тази батерия
Вокален GOBO - Щит за заглушаване на звука - Вокална кабина - Вокална кутия - Рефлексионен филтър - Вокален щит: 11 стъпки

Vocal GOBO - Sound Dampener Shield - Vocal Booth - Vocal Box - Reflexion Filter - Vocalshield: Започнах да записвам повече вокали в домашното си студио и исках да получа по -добър звук и след известно проучване разбрах какво е "GOBO" беше. Бях виждал тези звукоизолиращи неща, но всъщност не осъзнавах какво са направили. Сега го правя. Намерих y
Часовник ESP32, използващ WiFi, ESP-СЕГА и клетъчен: 4 стъпки

Часовник ESP32, използващ WiFi, ESP-СЕГА и клетъчен: Това е часовник за Wi-Fi базиран на ESP32, който направих за безжичното състезание. Реших да направя този часовник прекалено безжичен, така че да използва три различни форми на безжична комуникация (WiFi, ESP-NOW и & Cellular). Телефонът е свързан към клетъчна кула и
Урок за L298 2Amp щит за двигател за Arduino: 6 стъпки

Урок за L298 2Amp щит за моторни драйвери за Arduino: Описание L298 2Amp щит за моторни драйвери за Arduino се основава на интегрална схема на L298 драйвер на двигател, пълномостов драйвер на мотор. Той може да задвижва два отделни 2A DC двигателя или 1 2A стъпков двигател. Скоростта и посоките на двигателя могат да се контролират отделно
Как да поправя / променя 9-LED 3xAAA клетъчен хъски фенер: 5 стъпки

Как да поправя / променя 9-LED 3xAAA клетъчно хъски фенерче: Това са стъпките, които използвах, за да променя / поправя моята светкавична клетка Husky (R) 9-LED 3xAAA. Първоначалният проблем започна с изгасването на светлината, докато беше включен. Ако докосна светкавицата, щеше да работи отново. Но това беше LED светкавица, така че