Arduino cellulära sköld handledning (7 / 9 steg)
Steg 7: initiera
/*
SparkFun Cellular Shield - genomkoppling prov skiss
SparkFun elektronik
Skrivet av Ryan Owens
3/8/10
Beskrivning: Denna skiss skrivs till gränssnittet en Arduino Duemillanove till en cellulär sköld från SparkFun elektronik.
Cellulära skölden kan köpas här: http://www.sparkfun.com/commerce/product_info.php?products_id=9607
I denna skiss skickas seriell kommandon från ett terminalprogram till SM5100B cellulära modul; och svaren från mobilnätet
modulen är postat i terminalen. Mer information finns i skiss kommentarer.
En aktiverat SIM-kort måste införas i SIM-korthållaren i styrelsen för att kunna använda enheten!
Denna skiss använder NewSoftSerial biblioteket skriven av Mikal Hart av Arduiniana. Biblioteket kan hämtas på denna URL:
http://arduiniana.org/libraries/NewSoftSerial/
Denna kod tillhandahålls enligt Creative Commons Attribution License. Mer information kan hittas här:
http://creativecommons.org/licenses/by/3.0/
(Använd vår kod fritt! Kom bara ihåg att ge oss kredit där det ska betalas. Tack!)
*/
#include < SoftwareSerial.h > //Include NewSoftSerial biblioteket att skicka seriella kommandon till cellulära modulen.
#include < string.h > //Used för sträng manipulationer
char incoming_char = 0; Kommer att hålla det inkommande tecknet från serieporten.
SoftwareSerial cell(2,3); Skapa en "falsk" seriell port. Stift 2 är Rx pin, pin 3 är Tx PIN-koden.
void setup()
{
Initiera seriella portar för kommunikation.
Serial.BEGIN(9600);
cell.BEGIN(9600);
Låt oss komma igång!
Serial.println ("Start SM5100B meddelande...");
}
void loop() {
Om ett tecken kommer från cellulära modulen...
IF(cell.available() > 0)
{
incoming_char=cell.Read(); Få karaktär av cellulära serieporten.
Serial.Print(incoming_char); Skriva ut den inkommande till terminalen.
}
Om en karaktär kommer från terminalen till Arduino...
om (Serial.available () > 0)
{
incoming_char = Serial.read (); Få karaktär kommer från terminalen
om (incoming_char == "~") / / om det är tilde...
incoming_char = 0x0D; .. .convert till returtecken
annat if (incoming_char == ' ^') / / om det är en upp cirkumflex...
incoming_char = 0x1A; .. .convert ctrl-z
cell.Print (incoming_char); Skicka karaktären av cellulära modulen.
Serial.Print (incoming_char); Upprepa det tillbaka till terminalen
}
}
/ * SM5100B Quck referens för AT-kommandot ange
* Om inget annat anges AT kommandon är avslutades genom att trycka på 'skriva'.
1.) se till att korrekt GSM bandet har valts för ditt land. För amerikanska måste bandet anges till 7.
Använd detta kommando för att ange bandet,: AT + SBAND = 7
2.) efter förmåga på Arduino med sköld installerad, kontrollera att modulen läser och känner igen SIM-kortet.
Med ett terimal fönster öppna och Arduino port och 9600 buad, power på Arduino. Startsekvensen bör se ut ungefär
Gillar det här:
Startar SM5100B kommunikation...
+ SIND: 1
+ SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1
Kommunikation med modulen börjar efter den första raden visas. Den andra raden i kommunikation, + SIND: 10, berättar om modulen
kan se ett SIM-kort. Om SIM-kortet identifieras alla andra fält är en 1; Om SIM-kortet identifieras alla andra fält är 0.
3.) vänta för en nätverksanslutning innan du börjar skicka kommandon. Efter det + SIND: 10 svar modulen startar automatiskt försöker
ansluta till ett nätverk. Vänta tills du får den följande repsones:
+ SIND: 11
+ SIND: 3
+ SIND: 4
Den + SIND svar från modulen cellulära berättar de moduler status. Här är en snabb neddragning av betydelserna som svar:
0 SIM-kortet tas bort
1 SIM-kort
2 ring melodi
3 AT modul är delvis klar
4 AT modulen är helt redo
5-ID för utgivna samtal
6 släppt kallar vars ID = < idx >
7 nättjänsten är tillgänglig för nödsamtal
8 i nätverket förloras
9 ljud på
10 Visa status för varje telefonbok efter init fras
11 rekommenderat till nätverk
Efter registrering i nätverket kan du börja interaktion. Här är några enkla och användbara kommandon för att komma igång:
Att ringa ett samtal:
PÅ kommando - ATDxxxyyyzzzz
Telefonnummer med format: (xxx) yyy-zzz
försök---cell.print("ATDxxxyyyzzzz");
Om du ringer ett telefonsamtal se till att referera enheter databladet till krok upp en mikrofon och talaren att skölden.
Skicka ett txt meddelande:
PÅ kommando - AT + CMGF = 1
Detta kommando anger text meddelandeläge till "text."
PÅ kommando = AT + CMGS = "xxxyyyzzzz"(carriage return)'Text till send'(CTRL+Z)
Detta kommando är något förvirrande att beskriva. Telefonnumret i format (xxx) yyy-zzzz går inuti dubbel offerter. Tryck på "enter" efter stängning offerterna.
Nästa ange texten som ska vara skicka. Slutet av AT-kommandot genom att skicka CTRL + Z. Detta tecken kan inte skickas från Arduino's terminal. Använda en alternativ terminal program som Hyperterminal,
Tera benämna, Bray Terminal eller X-CTU.
Modulen SM5100B kan göra mycket mer än detta! Kolla in datablad på produktsidan vill veta mer om module.* /
Öppna den seriella porten i terminalen. Detta sker på en Mac genom att skriva:
skärm /dev/tty.usbmodemfa131 9600
(Ersätt tty.usbmodemfa131 med din Arduino seriell adress)
Vänta och se följande sekvens återvände:
Startar SM5100B kommunikation...
+ SIND: 3
+ SIND: 4
+ SIND: 11
(Om denna sekvens inte returneras kolla felkoder som anges längst ner i koden ovan, och felsöka på lämpligt sätt. Du kan behöva ange modulen för nordamerikanska användning--se nedan--innan den registrerar till nätverk (dvs + SIND 11))
Skicka följande kommandon till den seriella porten:
Skicka detta för nordamerikanska användning:
AT + SBAND = 7
Ange aktuell tid - åå/mm/dd:
AT + CCLK = "13/05/15, 11: 02:00"
Skicka testsamtal:
ATD4155551212