Sadržaj:

Vodič za Arduino Cellular Shield: 9 koraka (sa slikama)
Vodič za Arduino Cellular Shield: 9 koraka (sa slikama)

Video: Vodič za Arduino Cellular Shield: 9 koraka (sa slikama)

Video: Vodič za Arduino Cellular Shield: 9 koraka (sa slikama)
Video: How to Build Sim Racing Cockpit Works with Any Game/Console 2024, Juli
Anonim
Arduino vodič za stanični štit
Arduino vodič za stanični štit

Arduino Cellular Shield omogućuje vam upućivanje mobilnih telefonskih poziva i slanje tekstualnih poruka. Mozak ovog štita je SM5100B koji je robusni ćelijski modul sposoban za obavljanje mnogih zadataka većine standardnih mobilnih telefona. Ovaj štit zahtijeva upotrebu SIM kartice za povezivanje s mobilnom mrežom. Vodič koji slijedi je vodič za gole kosti za inicijalizaciju štita, slanje i primanje tekstualnih poruka i telefonske pozive. Da biste saznali više o funkcionalnosti modula, svakako pogledajte tehničke listove na stranici proizvoda kompanije Sparkfun.

Korak 1: Idite nabavite stvari

Idi nabavi stvari
Idi nabavi stvari

Trebat će vam:

(x1) Ćelijski štit (x1) Arduino zaglavlja koja se mogu slagati (x1) Četvoropojasna antena (x1) Arduino Uno

(Imajte na umu da su neki od linkova na ovoj stranici partnerski linkovi. To ne mijenja cijenu stavke za vas. Sav prihod koji reinvestiram reinvestiram u stvaranje novih projekata. Ako želite bilo kakve prijedloge za alternativne dobavljače, dopustite mi znati.)

Korak 2: Zaglavlja za lemljenje

Solder Headers
Solder Headers
Solder Headers
Solder Headers
Lemna zaglavlja
Lemna zaglavlja

Umetnite zaglavlja u štitnik i lemite ih na mjesto.

Korak 3: Umetnite

Insert
Insert
Insert
Insert

Umetnite iglice zaglavlja u utičnice na Arduinu.

Korak 4: Resolder

Resolder
Resolder

Povezivanje antenskog kabela sa SM5100B modulom obično nije dobro. Ponovo spajkajte svaku vezu kabla sa modulom kako biste osigurali povezanost.

Korak 5: Pričvrstite antenu

Priključite antenu
Priključite antenu
Priključite antenu
Priključite antenu

Navucite antenu na antenski kabel.

Korak 6: Umetnite SIM karticu

Umetnite SIM karticu
Umetnite SIM karticu
Umetnite SIM karticu
Umetnite SIM karticu
Umetnite SIM karticu
Umetnite SIM karticu
Umetnite SIM karticu
Umetnite SIM karticu

Čvrsto umetnite SIM karticu u utičnicu za SIM karticu.

Korak 7: Inicijalizacija

Inicijalizujte
Inicijalizujte

Pokrenite sljedeći kod na Arduinu:

/*

SparkFun Cellular Shield - Prolazna skica uzorka SparkFun Electronics Napisao Ryan Owens 3/Opis: Ova skica je napisana za povezivanje Arduino Duemillanove -a sa Cellular Shieldom iz SparkFun Electronics -a. Mobilni štit se može kupiti ovdje: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Na ovoj skici serijske naredbe se prenose iz terminalnog programa u ćelijski modul SM5100B; a odgovori iz ćelijskog modula se objavljuju u terminalu. Više informacija možete pronaći u komentarima skice. Aktivirana SIM kartica mora biti umetnuta u držač SIM kartice na ploči da biste mogli koristiti uređaj! Ova skica koristi biblioteku NewSoftSerial koju je napisao Mikal Hart iz Arduiniane. Biblioteka se može preuzeti na ovom URL -u: https://arduiniana.org/libraries/NewSoftSerial/ Ovaj kôd je dat pod Licencom za dodjeljivanje autorskih prava Creative Commons. Više informacija možete pronaći ovdje: https://creativecommons.org/licenses/by/3.0/ (Koristite naš kôd slobodno! Ne zaboravite da nam date zasluge tamo gdje je to potrebno. Hvala!) */#Include // Uključite NewSoftSerial biblioteka za slanje serijskih naredbi mobilnom modulu. #include // Koristi se za manipulaciju nizovima char incoming_char = 0; // Zadržat će dolazni znak sa serijskog porta. SoftwareSerijska ćelija (2, 3); // Kreiranje 'lažnog' serijskog porta. Pin 2 je Rx pin, pin 3 je Tx pin. void setup () {// Pokretanje serijskih portova za komunikaciju. Serial.begin (9600); cell.begin (9600); //Hajde da počnemo! Serial.println ("Pokretanje komunikacije SM5100B …"); } void loop () {// Ako znak dolazi iz ćelijskog modula … if (cell.available ()> 0) {incoming_char = cell.read (); // Dohvaćanje lika s mobilnog serijskog porta. Serial.print (incoming_char); // Odštampajte dolazni znak na terminalu. } // Ako znak dolazi sa terminala na Arduino … if (Serial.available ()> 0) {incoming_char = Serial.read (); // Dobivanje znaka koji dolazi iz terminala if (incoming_char == '~') // Ako je tilda… incoming_char = 0x0D; //… pretvori se u nosač nosača else if (incoming_char == '^') // Ako je u pitanju gornja linija … incoming_char = 0x1A; // … pretvori u ctrl-Z cell.print (incoming_char); // Pošaljite znak u ćelijski modul. Serial.print (incoming_char); // Ponovite ga na terminal}} / * SM5100B Quck referenca za skup AT naredbi * Osim ako nije drugačije naznačeno AT naredbe se završavaju pritiskom na tipku 'enter'. 1.) Uvjerite se da je za vašu zemlju izabran odgovarajući GSM opseg. Za SAD opseg mora biti postavljen na 7. Za postavljanje opsega, koristite ovu naredbu: AT+SBAND = 7 2.) Nakon uključivanja Arduina sa instaliranim štitom, provjerite da li modul čita i prepoznaje SIM karticu. S otvorenim termalnim prozorom i postavljenim na Arduino port i 9600 buad, uključite Arduino. Slijed pokretanja trebao bi izgledati otprilike ovako: Pokretanje komunikacije SM5100B … +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Komunikacija s modulom počinje nakon što se prikaže prva linija. Druga linija komunikacije, +SIND: 10, govori nam može li modul vidjeti SIM karticu. Ako se otkrije SIM kartica, svako drugo polje je 1; ako SIM kartica nije otkrivena, svako drugo polje je 0. 3.) Pričekajte mrežnu vezu prije nego što počnete slati naredbe. Nakon odgovora +SIND: 10 modul će automatski početi pokušavati povezivanje na mrežu. Sačekajte dok ne primite sljedeće odgovore: +SIND: 11 +SIND: 3 +SIND: 4 Odgovor +SIND iz ćelijskog modula govori o statusu modula. Evo kratkog pregleda značenja odgovora: 0 SIM kartica uklonjena 1 SIM kartica umetnuta 2 Melodija zvona 3 AT modul je djelomično spreman 4 AT modul je potpuno spreman 5 ID otpuštenih poziva 6 Identifikovani poziv čiji je ID = 7 Mrežni servis je dostupno za hitne pozive 8 Mreža je izgubljena 9 Audio UKLJUČEN 10 Prikaz statusa svakog imenika nakon početne fraze 11 Registrirano na mrežu Nakon registracije na mreži možete započeti interakciju. Evo nekoliko jednostavnih i korisnih naredbi za početak: Za upućivanje poziva: AT naredba-ATDxxxyyyzzzz Broj telefona u formatu: (xxx) yyy-zzz pokušaj ---- cell.print ("ATDxxxyyyzzzz"); Ako upućujete telefonski poziv, svakako se pozovite na tehnički list uređaja da biste spojili mikrofon i zvučnik na štit. Za slanje txt poruke: AT naredba - AT+CMGF = 1 Ova naredba postavlja način tekstualne poruke na 'tekst'. AT naredba = AT+CMGS = "xxxyyyzzzz" (vraćanje nosača) 'Tekst za slanje' (CTRL+Z) Ova naredba je pomalo zbunjujuća za opis. Telefonski broj u formatu (xxx) yyy-zzzz nalazi se unutar dvostrukih navoda. Pritisnite 'enter' nakon zatvaranja citata. Zatim unesite tekst koji želite poslati. Završite naredbu AT slanjem CTRL+Z. Ovaj se znak ne može poslati s Arduinovog terminala. Koristite zamjenski terminalni program poput Hyperterminala, Tera termina, Bray terminala ili X-CTU. Modul SM5100B može učiniti mnogo više od ovoga! Pogledajte tehničke listove na stranici proizvoda da biste saznali više o modulu.*/Otvorite serijski port na terminalu. Na Macu se to postiže upisivanjem: screen /dev/tty.usbmodemfa131 9600 (zamijenite tty.usbmodemfa131 serijskom adresom vašeg Arduina) Pričekajte da vidite sljedeći redoslijed: Pokretanje SM5100B komunikacije … +SIND: 3 +SIND: 4 +SIND: 11 (Ako se ova sekvenca ne vrati, provjerite kodove grešaka navedene na dnu gornjeg koda i na odgovarajući način otklonite greške. Možda ćete morati postaviti modul za upotrebu u Sjevernoj Americi - pogledajte dolje - prije nego što se registrira na mrežu (tj. +SIND 11)) Pošaljite sljedeće naredbe na serijski port: Pošaljite ovo za upotrebu u Sjevernoj Americi: AT+SBAND = 7 Postavite trenutno vrijeme - yy/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 "Pošalji testni poziv: ATD4155551212

Korak 8: Tekstualne poruke

SMS poruke
SMS poruke

Preuzmite i instalirajte SerialGSM u svoju Arduino biblioteku.

Za slanje tekstualne poruke posjetite vodič za ćelijski modul Tronixstuff i upotrijebite kod primjer 26.3:

Ako želite pokrenuti primjer koda za primanje teksta, spojite LED na pin 8 i postavite ga u nizu s otpornikom od 220 ohma na masu.

Da biste poslali tekstualnu poruku, posjetite vodič za celularni modul Tronixstuff i koristite primjer 26.5:

Pošaljite jednu od sljedećih naredbi svom mobilnom modulu:

// uključuje LED diodu #a1

// isključuje LED #a0

Korak 9: Glas

Glas
Glas
Glas
Glas
Glas
Glas

Spojite mikrofon i zvučnik na štit pomoću uzemljenog audio kabela. Središnja signalna žica trebala bi ići do audio plus terminala, a zaštita bi trebala ići do odgovarajućih negativnih priključaka na štitu. Ovi kablovi trebaju biti povezani na sličan način sa strane mikrofona i zvučnika.

Da biste pokrenuli glasovni poziv, prenesite sljedeći kod:

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

// POZOVITE // // BUFERING CODE NA OSNOVI: // // //********************************************************************************** #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 // Postavljanje niza me uspremnika char at_buffer [BUFFSIZ]; char buffidx; // Varijable stanja mreže int network_registered; int network_AT_ready; // Varijable stanja koda int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Zadržat će dolazni znak sa serijskog porta. char incoming_char = 0; // Kreiranje 'lažnog' serijskog porta. Pin 2 je Rx pin, pin 3 je Tx pin. SoftwareSerijska ćelija (2, 3); void setup () {// Pokreni Arduino serijski port za otklanjanje grešaka. Serial.begin (9600); // Pokretanje virtualnog serijskog porta za razgovor s telefonom. cell.begin (9600); //Zdravo svijete. Serial.println ("Pokretanje komunikacije SM5100B …"); kašnjenje (1000); // Postavljanje početnog stanja mreže network_registered = 0; network_AT_ready = 0; } // Čitanje AT nizova iz ćelijskog štita void readATString (void) {char c; buffidx = 0; // počinje na početku za (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; return; } if (c == '\ n') {nastavi; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; return; } at_buffer [buffidx ++] = c; }}} // Obradi nizove AT void ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("mrežna mreža nije dostupna"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("mreža registrirana"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("mreža spremna za AT"); }} void loop () { / * Ako se pozove prvi put, petljajte dok mreža i AT ne budu spremni * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Potražite dolazni poziv if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Javite se na cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Image
Image

Je li vam ovo bilo korisno, zabavno ili zabavno? Pratite @madeineuphoria da vidite moje najnovije projekte.

Preporučuje se: