Sadržaj:

Vodič za Arduino stanični štit: 9 koraka (sa slikama)
Vodič za Arduino stanični štit: 9 koraka (sa slikama)

Video: Vodič za Arduino stanični štit: 9 koraka (sa slikama)

Video: Vodič za Arduino stanični štit: 9 koraka (sa slikama)
Video: Объяснение прошивки Marlin 2.0.x 2024, Srpanj
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 stanični modul sposoban izvršavati mnoge zadatke većine standardnih mobitela. 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 provjerite podatkovne tablice na stranici proizvoda tvrtke Sparkfun.

Korak 1: Idite nabaviti stvari

Idi nabavi stvari
Idi nabavi stvari

Trebat će vam:

(x1) Stanični štit (x1) Arduino zaglavlja koja se mogu slagati (x1) Četveropojasna antena (x1) Arduino Uno

(Imajte na umu da su neke od veza na ovoj stranici partnerske veze. 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

Zaglavlja za lemljenje
Zaglavlja za lemljenje
Zaglavlja za lemljenje
Zaglavlja za lemljenje
Zaglavlja za lemljenje
Zaglavlja za lemljenje

Umetnite zaglavlja u štitnik i lemite ih na mjesto.

Korak 3: Umetnite

Umetnuti
Umetnuti
Umetnuti
Umetnuti

Umetnite igle zaglavlja u utičnice na Arduinu.

Korak 4: Resolder

Resolder
Resolder

Povezivanje antenskog kabela s modulom SM5100B obično nije dobro. Ponovo spajkajte sve spojeve kabela s modulom kako biste osigurali povezanost.

Korak 5: Pričvrstite antenu

Pričvrstite antenu
Pričvrstite antenu
Pričvrstite antenu
Pričvrstite 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: Inicijalizirajte

Inicijalizirati
Inicijalizirati

Pokrenite sljedeći kod na Arduinu:

/*

SparkFun Cellular Shield - skica uzorka kroz prolaz SparkFun Electronics Napisao Ryan Owens 3/Opis: Ova skica je napisana za povezivanje Arduino Duemillanove -a sa Cellular Shieldom iz SparkFun Electronics -a. Stanični š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 stanični modul SM5100B; a odgovori s mobilnog modula objavljuju se u terminalu. Više informacija nalazi se u komentarima skice. Aktivirana SIM kartica mora se umetnuti 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. Knjižnica se može preuzeti na ovom URL -u: https://arduiniana.org/libraries/NewSoftSerial/ Ovaj kôd dostupan je 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 nam dati zasluge tamo gdje je to potrebno. Hvala!) */#Include // Uključite NewSoftSerial knjižnica za slanje serijskih naredbi na stanični modul. #include // Koristi se za nizove manipulacija char incoming_char = 0; // Zadržat će dolazni znak sa serijskog porta. SoftwareSerijska ćelija (2, 3); // Stvaranje '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); //Započnimo! 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. Serijski.ispis (dolazni_znak); // Ispis dolaznog znaka na terminal. } // Ako znak dolazi s terminala na Arduino … if (Serial.available ()> 0) {incoming_char = Serial.read (); // Dobivanje znaka koji dolazi s terminala if (incoming_char == '~') // Ako je tilda … incoming_char = 0x0D; // … pretvoriti u prijevoz return else if (incoming_char == '^') // Ako je to gornja kvačica … incoming_char = 0x1A; // … pretvori u ctrl-Z cell.print (incoming_char); // Pošaljite znak u stanični modul. Serijski.ispis (dolazni_znak); // Ponovno ga vratite 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.) Provjerite je li za vašu zemlju odabran 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 prvi redak. 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 se automatski početi pokušavati povezati s mrežom. Pričekajte dok ne primite sljedeće odgovore: +SIND: 11 +SIND: 3 +SIND: 4 Odgovor +SIND iz mobilnog 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 Otpušteni poziv čiji je ID = 7 Mrežna usluga je dostupno za hitne pozive 8 Mreža je izgubljena 9 Zvuk 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 Telefonski broj u formatu: (xxx) yyy-zzz pokušaj ---- cell.print ("ATDxxxyyyzzzz"); Ako upućujete telefonski poziv, svakako se obratite podatkovnom listu uređaja kako 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 je naredba pomalo zbunjujuća za opis. Telefonski broj u formatu (xxx) yyy-zzzz nalazi se unutar dvostrukih navodnika. 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-a. 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 se vrati sljedeći slijed: Pokretanje komunikacije SM5100B … +SIND: 3 +SIND: 4 +SIND: 11 (Ako se ovaj niz ne vrati, provjerite kodove pogrešaka navedene pri dnu gornjeg koda i ispravno ih uklonite. 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 serijskom portu: Pošaljite ovo za sjevernoameričku upotrebu: AT+SBAND = 7 Postavite trenutno vrijeme - ggg/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 stanični modul Tronixstuff i upotrijebite 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.

Za slanje tekstualne poruke posjetite udžbenik za mobilne module Tronixstuff i upotrijebite 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 priključaka audio plus, a zaštita bi trebala ići do odgovarajućih negativnih priključaka na štitu. Ovi kabeli trebaju biti povezani na sličan način sa strane mikrofona i zvučnika.

Za pokretanje glasovnog poziva prenesite sljedeći kôd:

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

// POZOVITE // // BUFERING CODE ZASNOVAN 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: // // // ******************************************** ************************************ #include #define BUFFSIZ 90 // Postavi niz 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; // Stvaranje '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 pogrešaka. Serial.begin (9600); // Pokretanje virtualnog serijskog porta za razgovor s telefonom. cell.begin (9600); //Pozdrav 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 staničnog štita void readATString (void) {char c; buffidx = 0; // započinjemo na početku za (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; povratak; } if (c == '\ n') {nastavi; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; povratak; } 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 (mrežni_registrirani == 0 || mrežni_AT_vezi == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Potražite dolazni poziv if (strstr (at_buffer, "+CPAS: 3")! = 0) {// Odgovorite na broj cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Slika
Slika

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

Preporučeni: