Sisällysluettelo:

Arduino Cellular Shield -opetusohjelma: 9 vaihetta (kuvilla)
Arduino Cellular Shield -opetusohjelma: 9 vaihetta (kuvilla)

Video: Arduino Cellular Shield -opetusohjelma: 9 vaihetta (kuvilla)

Video: Arduino Cellular Shield -opetusohjelma: 9 vaihetta (kuvilla)
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Marraskuu
Anonim
Arduino Cellular Shield -opetusohjelma
Arduino Cellular Shield -opetusohjelma

Arduino Cellular Shieldin avulla voit soittaa matkapuhelimia ja lähettää tekstiviestejä. Tämän kilven aivot ovat SM5100B, joka on vankka matkapuhelinmoduuli, joka pystyy suorittamaan monia useimpien tavallisten matkapuhelimien tehtäviä. Tämä suoja edellyttää SIM -kortin käyttöä matkapuhelinverkkoon yhdistämiseen. Seuraava opetusohjelma on paljain luu -opetus kilven alustamiseen sekä tekstiviestien lähettämiseen ja vastaanottamiseen että puheluihin. Jos haluat lisätietoja moduulin toiminnasta, tutustu Sparkfunin tuotesivun tietolomakkeisiin.

Vaihe 1: Siirry hakemaan tavaraa

Mene hakemaan tavaraa
Mene hakemaan tavaraa

Tarvitset:

(x1) Cellular shield (x1) Pinottavat Arduino -otsikot (x1) Nelikaista -antenni (x1) Arduino Uno

(Huomaa, että jotkut tämän sivun linkit ovat kumppanilinkkejä. Tämä ei muuta kohteen kustannuksia puolestasi. Sijoitan saadut tulot uudelleen uusien projektien tekemiseen. Jos haluat ehdotuksia vaihtoehtoisille toimittajille, anna minulle tietää.)

Vaihe 2: Juotosotsikot

Juotosotsikot
Juotosotsikot
Juotosotsikot
Juotosotsikot
Juotosotsikot
Juotosotsikot

Aseta otsikot suojaan ja juota ne paikalleen.

Vaihe 3: Lisää

Lisää
Lisää
Lisää
Lisää

Aseta otsikkotapit Arduinon liitäntöihin.

Vaihe 4: Resolder

Päättäväisempi
Päättäväisempi

Antennikaapelin yhteys SM5100B -moduuliin ei yleensä ole kovin hyvä. Ratkaise kaikki kaapelin liitännät moduuliin liitettävyyden varmistamiseksi.

Vaihe 5: Kiinnitä antenni

Kiinnitä antenni
Kiinnitä antenni
Kiinnitä antenni
Kiinnitä antenni

Pujota antenni antennikaapeliin.

Vaihe 6: Aseta SIM -kortti

Aseta SIM -kortti
Aseta SIM -kortti
Aseta SIM -kortti
Aseta SIM -kortti
Aseta SIM -kortti
Aseta SIM -kortti
Aseta SIM -kortti
Aseta SIM -kortti

Aseta SIM -kortti tukevasti SIM -korttipaikkaan.

Vaihe 7: Alusta

Alustaa
Alustaa

Suorita seuraava koodi Arduinolla:

/*

SparkFun Cellular Shield - läpinäkymäluonnos SparkFun Electronics Kirjoittanut Ryan Owens 3/Kuvaus: Tämä luonnos on kirjoitettu liittämään Arduino Duemillanove SparkFun Electronicsin solukilpeen. Matkapuhelinsuojaa voi ostaa täältä: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Tässä luonnoksessa sarjakomennot välitetään pääteohjelmasta SM5100B -solumoduuliin; ja solukkomoduulin vastaukset lähetetään päätelaitteeseen. Lisätietoja löytyy luonnoksen kommenteista. Aktivoitu SIM -kortti on asetettava levyn SIM -kortin pidikkeeseen laitteen käyttämiseksi! Tämä luonnos hyödyntää NewSoftSerial -kirjastoa, jonka on kirjoittanut Mikal Hart Arduinianasta. Kirjasto voidaan ladata tästä URL -osoitteesta: https://arduiniana.org/libraries/NewSoftSerial/ Tämä koodi on Creative Commons Attribution -lisenssin alainen. Lisätietoja on täällä: https://creativecommons.org/licenses/by/3.0/ (Käytä koodiamme vapaasti! Muista vain antaa meille luotto, kun se on maksettava. Kiitos!) */#Include // Sisällytä NewSoftSerial kirjasto lähettää sarjakomentoja matkapuhelinmoduulille. #include // Käytetään merkkijonon manipuloinnissa char saapuva_merkki = 0; // Pitää sarjaportista tulevan merkin. OhjelmistoSeriaalikenno (2, 3); // Luo väärennetty sarjaportti. Nasta 2 on Rx -nasta, nasta 3 on Tx -nasta. void setup () {// Alusta sarjaportit tiedonsiirtoa varten. Sarja.alku (9600); solu.alku (9600); //Aloitetaan! Serial.println ("SM5100B -tiedonsiirron käynnistäminen …"); } void loop () {// Jos solumoduulista tulee merkki… if (cell.available ()> 0) {input_char = cell.read (); // Hae merkki matkapuhelimen sarjaportista. Serial.print (saapuva_merkki); // Tulosta saapuva merkki päätteeseen. } // Jos merkki tulee päätelaitteesta Arduinolle… if (Serial.available ()> 0) {input_char = Serial.read (); // Hae merkki päätelaitteesta, jos (saapuva_merkki == '~') // Jos se on tilde… saapuva_merkki = 0x0D; //… muuntaa vaunun palautusmuutokseksi, jos (saapuva_merkki == '^') // Jos se on ylöspäin… saapuva_merkki = 0x1A; //… muunna soluksi ctrl-Z.print (saapuva_merkki); // Lähetä merkki solumoduuliin. Serial.print (saapuva_merkki); // Kaiku se takaisin päätelaitteeseen}} / * SM5100B Quck -viite AT -komentosarjalle * Ellei toisin mainita, AT -komennot lopetetaan painamalla Enter -näppäintä. 1.) Varmista, että maassasi on valittu oikea GSM -taajuusalue. Yhdysvalloissa taajuusalueen on oltava 7. Jos haluat asettaa kaistan, käytä tätä komentoa: AT+SBAND = 7 2.) Kun olet kytkenyt virran Arduinoon, kun suoja on asennettu, tarkista, että moduuli lukee ja tunnistaa SIM -kortin. Kun termaalinen ikkuna on auki ja asetettu Arduinon porttiin ja 9600 buad, kytke Arduino päälle. Käynnistysjärjestyksen pitäisi näyttää tältä: SM5100B -tiedonsiirron käynnistäminen… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Yhteys moduulin kanssa alkaa ensimmäisen rivin näyttämisen jälkeen. Toinen viestintälinja, +SIND: 10, kertoo, näkeekö moduuli SIM -kortin. Jos SIM -kortti havaitaan, jokainen muu kenttä on 1; jos SIM -korttia ei tunnisteta, kaikki muut kentät ovat 0. 3.) Odota verkkoyhteyttä ennen kuin aloitat komentojen lähettämisen. +SIND: 10 -vastauksen jälkeen moduuli alkaa automaattisesti yrittää muodostaa yhteyttä verkkoon. Odota, kunnes saat seuraavat vastaukset: +SIND: 11 +SIND: 3 +SIND: 4 Matkapuhelinmoduulin +SIND -vastaus kertoo moduulien tilan. Tässä on lyhyt vastausten merkitys: 0 SIM-kortti poistettu 1 SIM-kortti asetettu 2 Soittoääni 3 AT-moduuli on osittain valmis 4 AT-moduuli on täysin valmis 5 Vapautettujen puheluiden tunnus 6 Vapautettu puhelu, jonka tunnus = 7 Verkkopalvelu on käytettävissä hätäpuhelua varten 8 Verkko on kadonnut 9 Ääni PÄÄLLÄ 10 Näytä jokaisen puhelinluettelon tila aloituslauseen jälkeen 11 Rekisteröity verkkoon Kun olet rekisteröitynyt verkkoon, voit aloittaa vuorovaikutuksen. Tässä on muutamia yksinkertaisia ja hyödyllisiä komentoja, joilla pääset alkuun: Puhelun soittaminen: AT-komento-ATDxxxyyyzzzz Puhelinnumero muodossa: (xxx) yyy-zzz try ---- cell.print ("ATDxxxyyyzzzz"); Jos soitat puhelun, liitä mikrofonin ja kaiuttimen suojaan laitteen tietolomake. Txt -viestin lähettäminen: AT -komento - AT+CMGF = 1 Tämä komento asettaa tekstiviestitilaksi teksti. AT -komento = AT+CMGS = "xxxyyyzzzz" (vaunun palautus) 'Lähetettävä teksti' (CTRL+Z) Tämä komento on hieman hämmentävä kuvaamaan. Puhelinnumero muodossa (xxx) yyy-zzzz on lainausmerkkien sisällä. Sulje lainaukset painamalla Enter -näppäintä. Kirjoita seuraavaksi lähetettävä teksti. Lopeta AT -komento lähettämällä CTRL+Z. Tätä hahmoa ei voi lähettää Arduinon päätelaitteesta. Käytä vaihtoehtoista pääteohjelmaa, kuten Hyperterminal, Tera Term, Bray Terminal tai X-CTU. SM5100B -moduuli voi tehdä paljon enemmän kuin tämä! Katso lisätietoja moduulista tuotesivun teknisistä tiedoista.*/Avaa päätelaitteen sarjaportti. Mac -tietokoneessa tämä saavutetaan kirjoittamalla: screen /dev/tty.usbmodemfa131 9600 (korvaa tty.usbmodemfa131 Arduinon sarjaosoitteella) Odota, että näet seuraavan järjestyksen: SM5100B -tiedonsiirron käynnistäminen… +SIND: 3 +SIND: 4 +SIND: 11 (Jos tätä järjestystä ei palauteta, tarkista yllä olevan koodin alaosassa luetellut virhekoodit ja korjaa virheet asianmukaisesti. Sinun on ehkä asetettava moduuli Pohjois -Amerikan käyttöön - katso alla - ennen kuin se rekisteröidään verkkoon (esim. +SIND 11)) Lähetä seuraavat komennot sarjaporttiin: Lähetä tämä Pohjois -Amerikan käyttöön: AT+SBAND = 7 Aseta kellonaika - yy/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Lähetä testipuhelu: ATD4155551212

Vaihe 8: Tekstiviestit

Tekstiviestit
Tekstiviestit

Lataa ja asenna SerialGSM Arduino -kirjastoosi.

Jos haluat lähettää tekstiviestin, käy Tronixstuff-matkapuhelinmoduulin opetusohjelmassa ja käytä esimerkkikoodia 26.3:

Jos haluat suorittaa esimerkkikoodin tekstin vastaanottamiseksi, kytke LED nastaan 8 ja aseta se sarjaan 220 ohmin vastuksen kanssa maahan.

Jos haluat lähettää tekstiviestin, käy Tronixstuff-matkapuhelinmoduulin opetusohjelmassa ja käytä esimerkkikoodia 26.5:

Kirjoita yksi seuraavista komennoista matkapuhelinmoduulillesi:

// kytkee LED -valon päälle #a1

// sammuttaa LED -valon #a0

Vaihe 9: Ääni

Ääni
Ääni
Ääni
Ääni
Ääni
Ääni

Liitä mikrofoni ja kaiutin suojaan maadoitetulla audiokaapelilla. Keskisignaalijohdon tulee mennä audio plus -liittimiin ja suojauksen tulee mennä vastaaviin negatiivisiin liittimiin. Nämä kaapelit on liitettävä samalla tavalla mikrofonin ja kaiuttimen puolelle.

Aloita äänipuhelu lataamalla seuraava koodi:

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

// PUHELU // // PUSKURIKOODI PERUSTA: // // //********************************************************************************** #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: // // // ********************************************* ************************************** Sisällytä #define BUFFSIZ 90 // Puskurimatriisin määrittäminen [BUFFSIZ]; char buffidx; // Verkon tilamuuttujat int network_registered; int network_AT_ready; // Kooditilamuuttujat int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Pitää sarjaportista tulevan merkin. char saapuva_merkki = 0; // Luo väärennetty sarjaportti. Nasta 2 on Rx -nasta, nasta 3 on Tx -nasta. OhjelmistoSeriaalikenno (2, 3); void setup () {// Alusta Arduinon sarjaportti virheenkorjausta varten. Sarja.alku (9600); // Alusta virtuaalinen sarjaportti puhuaksesi puhelimelle. solu.alku (9600); //Hei maailma. Serial.println ("SM5100B -tiedonsiirron käynnistäminen …"); viive (1000); // Aseta verkon alkuperäinen tila network_registered = 0; network_AT_ready = 0; } // Lue AT -merkkijonot solukilven tyhjästä readATString (void) {char c; buffidx = 0; // aloita alusta (x = 0; x 0) {c = cell.read (); jos (c == -1) {at_buffer [buffidx] = '\ 0'; palata; } jos (c == '\ n') {jatka; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; palata; } at_buffer [buffidx ++] = c; }}} // Käsittele AT -merkkijonot tyhjä ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("verkkoverkko ei käytettävissä"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("verkko rekisteröity"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("verkko AT Ready"); }} void loop () { / * Jos kutsut ensimmäistä kertaa, tee silmukka, kunnes verkko ja AT ovat valmiita * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Etsi saapuva puhelu if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Vastaa puhelimeen cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Kuva
Kuva

Löysitkö tämän hyödylliseksi, hauskaksi tai viihdyttäväksi? Seuraa @madeineuphoria nähdäksesi uusimmat projektini.

Suositeltava: