Obsah:

Výukový program pro mobilní štít Arduino: 9 kroků (s obrázky)
Výukový program pro mobilní štít Arduino: 9 kroků (s obrázky)

Video: Výukový program pro mobilní štít Arduino: 9 kroků (s obrázky)

Video: Výukový program pro mobilní štít Arduino: 9 kroků (s obrázky)
Video: Videonávod CZ: Vytvoření vlastní aplikace 2024, Prosinec
Anonim
Výukový program pro mobilní štít Arduino
Výukový program pro mobilní štít Arduino

Arduino Cellular Shield vám umožňuje provádět mobilní telefonní hovory a odesílat textové zprávy. Mozkem tohoto štítu je SM5100B, což je robustní mobilní modul schopný provádět mnoho úkolů většiny standardních mobilních telefonů. Tento štít vyžaduje použití SIM karty pro připojení k mobilní síti. Následující tutoriál je návodem pro holé kosti pro inicializaci štítu a odesílání i přijímání textových zpráv a telefonních hovorů. Chcete -li se dozvědět více o funkcích modulu, nezapomeňte se podívat na datové listy na produktové stránce Sparkfunu.

Krok 1: Jděte pro věci

Jděte pro věci
Jděte pro věci

Budete potřebovat:

(x1) Celulární štít (x1) Stohovatelné hlavičky Arduino (x1) Čtyřpásmová anténa (x1) Arduino Uno

(Všimněte si, že některé odkazy na této stránce jsou odkazy na pobočky. Tím se cena položky pro vás nezmění. Veškeré získané výnosy reinvestuji do vytváření nových projektů. Pokud byste chtěli nějaké návrhy pro alternativní dodavatele, dejte mi prosím vědět vědět.)

Krok 2: Pájecí hlavičky

Pájecí hlavičky
Pájecí hlavičky
Pájecí hlavičky
Pájecí hlavičky
Pájecí hlavičky
Pájecí hlavičky

Vložte záhlaví do štítu a připájejte je na místo.

Krok 3: Vložte

Vložit
Vložit
Vložit
Vložit

Vložte kolíky záhlaví do zásuvek na Arduinu.

Krok 4: Resolder

Resolder
Resolder

Připojení kabelu antény k modulu SM5100B obvykle není příliš dobré. Přepojením všech připojení kabelu k modulu zajistěte konektivitu.

Krok 5: Připojte anténu

Připojte anténu
Připojte anténu
Připojte anténu
Připojte anténu

Protáhněte anténu kabelem antény.

Krok 6: Vložte SIM kartu

Vložte SIM kartu
Vložte SIM kartu
Vložte SIM kartu
Vložte SIM kartu
Vložte SIM kartu
Vložte SIM kartu
Vložte SIM kartu
Vložte SIM kartu

Zasuňte SIM kartu bezpečně do zásuvky pro SIM kartu.

Krok 7: Inicializace

Inicializovat
Inicializovat

Na Arduinu spusťte následující kód:

/*

Celulární štít SparkFun - průchozí ukázková skica SparkFun Electronics napsal Ryan Owens 3/Popis: Tato skica je napsána tak, aby propojila Arduino Duemillanove s mobilním štítem od SparkFun Electronics. Mobilní štít lze zakoupit zde: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 V tomto náčrtu jsou sériové příkazy předávány z terminálového programu do mobilního modulu SM5100B; a odpovědi z mobilního modulu jsou zveřejněny v terminálu. Více informací najdete v komentářích k náčrtu. Aby bylo možné zařízení používat, musí být do držáku SIM karty na desce vložena aktivovaná SIM karta! Tato skica využívá knihovnu NewSoftSerial, kterou napsal Mikal Hart z Arduiniany. Knihovnu lze stáhnout na této adrese URL: https://arduiniana.org/libraries/NewSoftSerial/ Tento kód je poskytován pod licencí Creative Commons Attribution License. Více informací naleznete zde: https://creativecommons.org/licenses/by/3.0/ (Používejte náš kód volně! Nezapomeňte nám prosím připsat kredit tam, kde má být. Díky!) */#Include // Zahrnout NewSoftSerial knihovna pro odesílání sériových příkazů do mobilního modulu. #include // Používá se pro manipulaci s řetězci char incoming_char = 0; // Zadrží příchozí znak ze sériového portu. Software Sériová buňka (2, 3); // Vytvořte 'falešný' sériový port. Kolík 2 je kolík Rx, kolík 3 je kolík Tx. void setup () {// Inicializace sériových portů pro komunikaci. Serial.begin (9600); cell.begin (9600); //Začněme! Serial.println ("Zahájení komunikace SM5100B …"); } void loop () {// Pokud přijde znak z mobilního modulu… if (cell.available ()> 0) {incoming_char = cell.read (); // Získejte postavu z mobilního sériového portu. Serial.print (incoming_char); // Vytiskněte příchozí znak na terminál. } // Pokud znak přichází z terminálu do Arduina… if (Serial.available ()> 0) {incoming_char = Serial.read (); // Získejte znak přicházející z terminálu, pokud (incoming_char == '~') // Pokud se jedná o vlnovku … incoming_char = 0x0D; //… převést na návrat vozíku else if (incoming_char == '^') // Pokud je to up caret … incoming_char = 0x1A; //… převést na ctrl-Z cell.print (incoming_char); // Odeslání znaku do mobilního modulu. Serial.print (incoming_char); // Echo to back to the terminal}} / * SM5100B Quck Reference for AT Command Set * Pokud není uvedeno jinak, AT příkazy jsou ukončeny stisknutím klávesy 'enter'. 1.) Ujistěte se, že pro vaši zemi bylo vybráno správné pásmo GSM. Pro USA musí být pásmo nastaveno na 7. K nastavení pásma použijte tento příkaz: AT+SBAND = 7 2.) Po zapnutí Arduina s nainstalovaným štítem ověřte, že modul čte a rozpoznává SIM kartu. S otevřeným terimálním oknem a nastaveným na port Arduino a 9600 buad, zapněte Arduino. Startovací sekvence by měla vypadat nějak takto: Spuštění komunikace SM5100B… +SIND: 1 +SIND: 10, „SM“, 1, „FD“, 1, „LD“, 1, „MC“, 1, „RC“, 1, „ME“, 1 Komunikace s modulem začíná po zobrazení prvního řádku. Druhý komunikační řádek, +SIND: 10, nám říká, zda modul vidí SIM kartu. Pokud je detekována SIM karta, každé další pole je 1; pokud není SIM karta detekována, každé další pole je 0. 3.) Před odesíláním příkazů počkejte na připojení k síti. Po odpovědi +SIND: 10 se modul automaticky začne pokoušet připojit k síti. Počkejte, dokud neobdržíte následující opakování: +SIND: 11 +SIND: 3 +SIND: 4 Odpověď +SIND od mobilního modulu informuje o stavu modulů. Zde je stručný přehled významů odpovědí: 0 SIM karta odstraněna 1 SIM karta vložena 2 vyzváněcí melodie 3 AT modul je částečně připraven 4 AT modul je zcela připraven 5 ID uvolněných hovorů 6 Uvolněný hovor, jehož ID = 7 Síťová služba je k dispozici pro nouzové volání 8 Síť je ztracena 9 Zvuk ZAPNUTÝ 10 Zobrazit stav každého telefonního seznamu po počáteční frázi 11 Zaregistrován do sítě Po registraci v síti můžete zahájit interakci. Zde je několik jednoduchých a užitečných příkazů, jak začít: Chcete-li zavolat: AT příkaz-ATDxxxyyyzzzz Telefonní číslo ve formátu: (xxx) yyy-zzz zkuste ---- cell.print („ATDxxxyyyzzzz“); Pokud telefonujete, prostudujte si technický list zařízení a připojte ke štítu mikrofon a reproduktor. Odeslání zprávy txt: Příkaz AT - AT+CMGF = 1 Tento příkaz nastaví režim textových zpráv na „text“. AT příkaz = AT+CMGS = "xxxyyyzzzz" (návrat vozíku) 'Text k odeslání' (CTRL+Z) Tento příkaz je trochu matoucí při popisu. Telefonní číslo ve formátu (xxx) rrr-zzzz obsahuje uvozovky. Po zavření nabídek stiskněte tlačítko „Enter“. Dále zadejte text, který chcete odeslat. Ukončete příkaz AT odesláním CTRL+Z. Tuto postavu nelze odeslat z terminálu Arduina. Použijte alternativní terminálový program, jako je Hyperterminal, Tera Term, Bray Terminal nebo X-CTU. Modul SM5100B toho umí mnohem víc! Další informace o modulu najdete v technických listech na produktové stránce.*/Otevřete sériový port v terminálu. Na počítačích Mac to lze provést zadáním: screen /dev/tty.usbmodemfa131 9600 (nahraďte tty.usbmodemfa131 sériovou adresou Arduina) Počkejte, až se vrátí následující sekvence: Spouštění komunikace SM5100B… +SIND: 3 +SIND: 4 +SIND: 11 (Pokud není tato sekvence vrácena, zkontrolujte chybové kódy uvedené v dolní části výše uvedeného kódu a proveďte příslušné ladění. Před registrací do sítě bude možná nutné nastavit modul pro použití v Severní Americe - viz níže - (tj. +SIND 11)) Na sériový port odešlete následující příkazy: Odeslat pro severoamerické použití: AT+SBAND = 7 Nastavit aktuální čas - rr/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Odeslat testovací hovor: ATD4155551212

Krok 8: Textové zprávy

Textové zprávy
Textové zprávy

Stáhněte a nainstalujte SerialGSM do své knihovny Arduino.

Chcete-li odeslat textovou zprávu, navštivte výukový program pro mobilní modul Tronixstuff a použijte ukázkový kód 26.3:

Pokud chcete spustit ukázkový kód pro příjem textu, připojte LED ke kolíku 8 a zapojte jej do série s odporem 220 ohmů k zemi.

Chcete-li odeslat textovou zprávu, navštivte výukový program pro mobilní modul Tronixstuff a použijte ukázkový kód 26.5:

Napište do svého mobilního modulu jeden z následujících příkazů:

// rozsvítí LEDku #a1

// vypne LED #a0

Krok 9: Hlas

Hlas
Hlas
Hlas
Hlas
Hlas
Hlas

Připojte mikrofon a reproduktor ke štítu pomocí uzemněného zvukového kabelu. Středový signální vodič by měl jít na svorky audio plus a stínění by mělo jít na příslušné záporné svorky na stínění. Tyto kabely by měly být připojeny podobně na straně mikrofonu a reproduktoru.

Chcete -li inicializovat hlasový hovor, nahrajte následující kód:

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

// VYVOLAT // // VYROVNÁVACÍ KÓD ZALOŽEN NA: // // //********************************************************************************** #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; // Proměnné stavu sítě int network_registered; int network_AT_ready; // Proměnné stavu kódu int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Zadrží příchozí znak ze sériového portu. char incoming_char = 0; // Vytvořte 'falešný' sériový port. Kolík 2 je kolík Rx, kolík 3 je kolík Tx. Software Sériová buňka (2, 3); void setup () {// Inicializace sériového portu Arduino pro ladění. Serial.begin (9600); // Inicializace virtuálního sériového portu pro komunikaci s telefonem. cell.begin (9600); //Ahoj světe. Serial.println ("Zahájení komunikace SM5100B …"); zpoždění (1000); // Nastavit počáteční stav sítě network_registered = 0; network_AT_ready = 0; } // Přečíst řetězce AT z buněčného štítu neplatné readATString (void) {char c; buffidx = 0; // zacni begninning pro (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; vrátit se; } if (c == '\ n') {pokračovat; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; vrátit se; } at_buffer [buffidx ++] = c; }}} // Zpracování řetězců AT neplatné ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println („Síťová síť není k dispozici“); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("registrovaná v síti"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println („Network AT Ready“); }} void loop () { / * Pokud je voláno poprvé, opakujte, dokud není připravena síť a AT * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Vyhledejte příchozí hovor if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Odpovězte na telefon cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

obraz
obraz

Přišlo vám to užitečné, zábavné nebo zábavné? Sledujte @madeineuphoria a podívejte se na mé nejnovější projekty.

Doporučuje: