Sisällysluettelo:
- Vaihe 1: Siirry hakemaan tavaraa
- Vaihe 2: Juotosotsikot
- Vaihe 3: Lisää
- Vaihe 4: Resolder
- Vaihe 5: Kiinnitä antenni
- Vaihe 6: Aseta SIM -kortti
- Vaihe 7: Alusta
- Vaihe 8: Tekstiviestit
- Vaihe 9: Ääni
Video: Arduino Cellular Shield -opetusohjelma: 9 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
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
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
Aseta otsikot suojaan ja juota ne paikalleen.
Vaihe 3: Lisää
Aseta otsikkotapit Arduinon liitäntöihin.
Vaihe 4: Resolder
Antennikaapelin yhteys SM5100B -moduuliin ei yleensä ole kovin hyvä. Ratkaise kaikki kaapelin liitännät moduuliin liitettävyyden varmistamiseksi.
Vaihe 5: Kiinnitä antenni
Pujota antenni antennikaapeliin.
Vaihe 6: Aseta SIM -kortti
Aseta SIM -kortti tukevasti SIM -korttipaikkaan.
Vaihe 7: Alusta
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
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
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; }}}
Löysitkö tämän hyödylliseksi, hauskaksi tai viihdyttäväksi? Seuraa @madeineuphoria nähdäksesi uusimmat projektini.
Suositeltava:
Digi XBee3 Cellular SMS ActivityBot: 7 vaihetta
Digi XBee3 Cellular SMS ActivityBot: Digi XBee3 ™ Cellular SMS ActivityBot on opetusrobotti, jota voidaan ohjata tekstiviesteillä mistä tahansa matkapuhelimesta missä tahansa maailmassa. ActivityBot, jonka ovat tehneet Digin ystävät Parallax Inc.:stä, on suunniteltu ensimmäistä kertaa robottien rakentajille
Jokainen litra on tärkeä! Arduino Water Shos "Shield": 7 vaihetta (kuvilla)
Jokainen litra on tärkeä! Arduino -vesiannostelija "Shield": Hei! Tämän ohjeen avulla voit annostella halutun määrän vettä. Järjestelmä voi toimia millilitroina ja L. Käytämme Arduino UNO: ta, virtausmittaria vesimäärän laskemiseen, nestekidenäyttöä tilan näyttämiseen, painikkeita asetusten muuttamiseen ja releen toimimaan
Arduino Air Monitor Shield. Elä turvallisessa ympäristössä: 5 vaihetta (kuvilla)
Arduino Air Monitor Shield. Elä turvallisessa ympäristössä .: Hei, Tässä ohjeessa aion tehdä arduinolle ilmavalvontakilven. Mikä voi tunnistaa nestekaasuvuodon ja hiilidioksidipitoisuuden ilmakehässämme.Sammuttaa myös summerin, joka sytyttää LED -valon ja poistoilmapuhaltimen aina, kun nestekaasua havaitaan tai tiiviste
PoochPak: Cellular Connected Smart Dog -liivi: 4 vaihetta
PoochPak: Cellular Connected Smart Dog -liivi: Automatisoinnissa keskitymme usein ihmisten kehittämiseen, jotta voimme hyödyntää tietokoneiden ja ihmismielen kognitiivisia vahvuuksia. Mutta koirilla on joukko taitoja, joten ne soveltuvat erittäin hyvin tiettyihin tehtäviin, joita ihmiset eivät voi suorittaa
3, 7 V hätälaturi Nokia Cellular 9 V: n akulla: 6 vaihetta
3,7 V hätälaturi Nokia Cellular 9 V: n akulla: Hei kaikille. Halusin ehdottaa sinulle yksinkertaista matkapuhelinlaturia, jonka tekniikka on alhainen, mutta joka kuitenkin toimii ja suorittaa tehtävänsä täydellisesti. Luonnos hätäpuhelumaksuista, joka voi olla välttämätön, jos se löydetään meille