Orodha ya maudhui:

Mafunzo ya Ngao ya Simu ya Arduino: Hatua 9 (na Picha)
Mafunzo ya Ngao ya Simu ya Arduino: Hatua 9 (na Picha)

Video: Mafunzo ya Ngao ya Simu ya Arduino: Hatua 9 (na Picha)

Video: Mafunzo ya Ngao ya Simu ya Arduino: Hatua 9 (na Picha)
Video: Zuchu Amwaga Machozi Baada Ya kupewa Kiss Na Diamond Platinumz 2024, Novemba
Anonim
Mafunzo ya Ngao ya Simu ya Arduino
Mafunzo ya Ngao ya Simu ya Arduino

Ngao ya Simu ya Arduino hukuruhusu kupiga simu za rununu, na kutuma ujumbe mfupi. Ubongo wa ngao hii ni SM5100B ambayo ni moduli thabiti ya rununu inayoweza kutekeleza majukumu mengi ya simu nyingi za kawaida. Ngao hii inahitaji matumizi ya SIM kadi kuungana na mtandao wa rununu. Mafunzo yanayofuata ni mafunzo wazi ya mifupa ya kuanzisha ngao, na wote kutuma na kupokea ujumbe wa maandishi, na simu. Ili kujifunza zaidi juu ya utendaji wa moduli, hakikisha uangalie data za data kwenye ukurasa wa bidhaa wa Sparkfun.

Hatua ya 1: Nenda Pata vitu

Nenda Upate Vitu
Nenda Upate Vitu

Utahitaji:

(x1) Ngao ya rununu (x1) Vichwa vya Arduino vya kubaki (x1) Antena ya bendi ya Quad (x1) Arduino Uno

(Kumbuka kuwa viungo vingine kwenye ukurasa huu ni viungo vya ushirika. Hii haibadilishi gharama ya bidhaa kwako. Ninaweka tena mapato yoyote ninayopokea katika kutengeneza miradi mipya. Ikiwa ungependa maoni yoyote kwa wauzaji mbadala, tafadhali niruhusu kujua.)

Hatua ya 2: Vichwa vya Solder

Vichwa vya Solder
Vichwa vya Solder
Vichwa vya Solder
Vichwa vya Solder
Vichwa vya Solder
Vichwa vya Solder

Ingiza vichwa ndani ya ngao na uziweke mahali pake.

Hatua ya 3: Ingiza

Ingiza
Ingiza
Ingiza
Ingiza

Ingiza pini za kichwa ndani ya soketi kwenye Arduino.

Hatua ya 4: Resolder

Resolder
Resolder

Uunganisho wa kebo ya antena kwa moduli ya SM5100B kawaida sio nzuri sana. Resolder kila uhusiano wa kebo na moduli ili kuhakikisha unganisho.

Hatua ya 5: Ambatisha Antena

Ambatisha Antena
Ambatisha Antena
Ambatisha Antena
Ambatisha Antena

Piga antena kwa kebo ya antena.

Hatua ya 6: Ingiza SIM Card

Ingiza SIM Card
Ingiza SIM Card
Ingiza SIM Card
Ingiza SIM Card
Ingiza SIM Card
Ingiza SIM Card
Ingiza SIM Card
Ingiza SIM Card

Ingiza SIM kadi salama kwenye tundu la SIM kadi.

Hatua ya 7: Anzisha

Anzisha
Anzisha

Endesha nambari ifuatayo kwenye Arduino:

/*

SparkFun Cellular Shield - Pass-through Sampuli Mchoro SparkFun Electronics Imeandikwa na Ryan Owens 3 / Maelezo: Mchoro huu umeandikwa ili kushughulikia Arduino Duemillanove kwa Shield ya rununu kutoka SparkFun Electronics. Ngao ya rununu inaweza kununuliwa hapa: na majibu kutoka kwa moduli ya rununu yamewekwa kwenye terminal. Habari zaidi inapatikana katika maoni ya mchoro. SIM iliyoamilishwa lazima iingizwe kwenye kishikilia SIM kadi kwenye ubao ili utumie kifaa! Mchoro huu hutumia maktaba ya NewSoftSerial iliyoandikwa na Mikal Hart wa Arduiniana. Maktaba inaweza kupakuliwa kwenye URL hii: https://arduiniana.org/libraries/NewSoftSerial/ Nambari hii imetolewa chini ya Leseni ya Ubunifu wa Commons. Habari zaidi inaweza kupatikana hapa: maktaba ya kutuma amri za serial kwa moduli ya rununu. # ingiza // Inatumika kwa udanganyifu wa kamba char incoming_char = 0; // Itashikilia tabia inayoingia kutoka Bandari ya Serial. ProgramuSeli ya seli (2, 3); // Unda bandari ya serial 'bandia'. Pini 2 ni pini ya Rx, pini 3 ni pini ya Tx. kuanzisha batili () {// Anzisha bandari za serial kwa mawasiliano. Kuanzia Serial (9600); seli. kuanza (9600); //Tuanze! Serial.println ("Kuanzisha Mawasiliano ya SM5100B…"); } kitanzi batili () {// Ikiwa tabia inaingia kutoka kwa moduli ya rununu… ikiwa (seli haipatikani ()> 0) {incoming_char = cell.read (); // Pata mhusika kutoka bandari ya serial ya rununu. Serial.print (inayoingia_char); // Chapisha tabia inayoingia kwenye terminal. } // Ikiwa mhusika anakuja kutoka kwa kituo hadi Arduino… ikiwa (Serial.available ()> 0) {incoming_char = Serial.read (); // Pata mhusika anayekuja kutoka kwa terminal ikiwa (incoming_char == '~') // Ikiwa ni tilde… incoming_char = 0x0D; //… badilisha kurudi kwa gari tena ikiwa (incoming_char == '^') // Ikiwa ni kituo cha juu… incoming_char = 0x1A; //… badili kuwa ctrl-Z cell.print (incoming_char); // Tuma tabia kwa moduli ya rununu. Serial.print (inayoingia_char); // Rudisha nyuma kwenye kituo}} / * SM5100B Quck Rejea ya Uwekaji wa Amri ya AT * Isipokuwa amri zingine za AT zilizoamriwa zinamalizika kwa kubonyeza kitufe cha 'ingiza'. 1.) Hakikisha bendi sahihi ya GSM imechaguliwa kwa nchi yako. Kwa Amerika bendi lazima iwekwe hadi 7. Kuweka bendi, tumia amri hii: AT + SBAND = 7 2.) Baada ya kuwezesha Arduino na ngao iliyosanikishwa, thibitisha kuwa moduli inasoma na inatambua SIM kadi. Na dirisha la juu limefunguliwa na kuweka bandari ya Arduino na buad 9600, nguvu kwenye Arduino. Mlolongo wa kuanza unapaswa kuangalia kitu kama hiki: Kuanzisha Mawasiliano ya SM5100B… + SIND: 1 + SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Mawasiliano na moduli huanza baada ya laini ya kwanza kuonyeshwa. Mstari wa pili wa mawasiliano, + SIND: 10, inatuambia ikiwa moduli inaweza kuona SIM kadi. Ikiwa SIM kadi hugunduliwa kila uwanja mwingine ni 1; ikiwa SIM kadi haipatikani kila uwanja mwingine ni 0. 3.) Subiri unganisho la mtandao kabla ya kuanza kutuma amri. Baada ya + SIND: jibu 10 moduli moja kwa moja itaanza kujaribu kuungana na mtandao. Subiri hadi upokee repsones zifuatazo: + SIND: 11 + SIND: 3 + SIND: 4 Jibu + la SIND kutoka kwa moduli ya rununu huambia hali ya moduli. Hapa kuna utaftaji wa haraka wa maana za majibu: 0 SIM kadi imeondolewa 1 SIM kadi imeingizwa 2 Melodi ya pete 3 Moduli ya AT iko tayari 4 Moduli ya AT iko tayari kabisa 5 ID ya simu zilizotolewa 6 Iliyotolewa simu ambayo ID = 7 Huduma ya mtandao ni inapatikana kwa simu ya dharura 8 Mtandao unapotea 9 Sauti YA 10 Onyesha hali ya kila kitabu cha simu baada ya kifungu cha init 11 Kusajiliwa kwenye mtandao Baada ya kusajili kwenye mtandao unaweza kuanza mwingiliano. Hapa kuna amri chache rahisi na muhimu kuanza: Kupiga simu: AT amri - ATDxxxyyyzzzz Nambari ya simu na fomati: (xxx) yyy-zzz jaribu ---- cell.print ("ATDxxxyyyzzzz"); Ukipiga simu hakikisha unarejelea data ya vifaa ili kuunganisha kipaza sauti na spika kwenye ngao. Kutuma ujumbe wa txt: AT amri - AT + CMGF = 1 Amri hii inaweka modi ya ujumbe wa maandishi kuwa 'maandishi.' AT command = AT + CMGS = "xxxyyyzzzz" (gari inarudi) 'Nakala ya kutuma' (CTRL + Z) Amri hii inachanganya kidogo kuelezea. Nambari ya simu, katika muundo (xxx) yyy-zzzz huenda ndani ya nukuu mara mbili. Bonyeza 'ingiza' baada ya kufunga nukuu. Halafu ingiza maandishi ya kutuma. Maliza amri ya AT kwa kutuma CTRL + Z. Tabia hii haiwezi kutumwa kutoka kituo cha Arduino. Tumia programu mbadala ya terminal kama Hyperterminal, Tera Term, Bray Terminal au X-CTU. Moduli ya SM5100B inaweza kufanya mengi zaidi kuliko hii! Angalia hati za data kwenye ukurasa wa bidhaa ili ujifunze zaidi juu ya moduli. Fungua bandari ya serial kwenye terminal. Kwenye Mac hii inafanikiwa kwa kuandika: skrini / dev / tty.usbmodemfa131 9600 (badilisha tty.usbmodemfa131 na anwani yako ya serial ya Arduino) Subiri kuona mlolongo ufuatao ukirudishwa: Kuanzisha Mawasiliano ya SM5100B… + SIND: 3 + SIND: 4 + SIND: 11 (Ikiwa mlolongo huu haurudishwi angalia nambari za makosa zilizoorodheshwa chini ya nambari hapo juu, na utatue ipasavyo. Unaweza kuhitaji kuweka moduli kwa matumizi ya Amerika Kaskazini - angalia hapa chini - kabla haijasajili kwenye mtandao (i.e. + SIND 11)) Tuma amri zifuatazo kwa bandari ya serial: Tuma hii kwa matumizi ya Amerika Kaskazini: AT + SBAND = 7 Weka wakati wa sasa - yy / mm / dd: AT + CCLK = "13/05/15, 11: 02:00 "Tuma simu ya mtihani: ATD4155551212

Hatua ya 8: Ujumbe wa maandishi

Ujumbe wa maandishi
Ujumbe wa maandishi

Pakua na usakinishe SerialGSM kwenye maktaba yako ya Arduino.

Kutuma ujumbe wa maandishi tembelea mafunzo ya moduli ya rununu ya Tronixstuff na utumie nambari ya mfano 26.3:

Ikiwa ungependa kutumia nambari ya mfano kupokea maandishi, unganisha LED ili kubandika 8 na kuiweka kwa safu na kontena la 220 ohm chini.

Kutuma ujumbe wa maandishi tembelea mafunzo ya moduli ya rununu ya Tronixstuff na utumie nambari ya mfano 26.5:

Tuma moja ya amri zifuatazo kwa moduli yako ya rununu:

// inawasha mwangaza kwenye # a1

// inazima LED # a0

Hatua ya 9: Sauti

Sauti
Sauti
Sauti
Sauti
Sauti
Sauti

Unganisha maikrofoni na spika kwenye ngao ukitumia kebo ya sauti iliyowekwa chini. Waya ya ishara ya katikati inapaswa kwenda kwenye vituo vya sauti pamoja na sauti na kinga inapaswa kwenda kwenye vituo hasi kwenye ngao. Cables hizi zinapaswa kuunganishwa vile vile kwenye kipaza sauti na upande wa spika.

Ili kuanzisha simu ya sauti pakia nambari ifuatayo:

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

// PIGA WITO // // SHERIA YA MATAFAHISI ILIYOPANGWA: // // //********************************************************************************** #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: // // // ********************************************** ************************ [BUFFSIZ]; char buffidx; // Vigeuzi vya hali ya mtandao ndani ya mtandao_sajili; mtandao_AT_ayari; // Vigeuzi vya hali ya Msimbo int firstTimeInLoop = 1; int kwanzaTimeInOtherLoop = 1; int x; // Itashikilia tabia inayoingia kutoka Bandari ya Serial. char incoming_char = 0; // Unda bandari ya serial 'bandia'. Pini 2 ni pini ya Rx, pini 3 ni pini ya Tx. SoftwareSeli ya kiini (2, 3); kuanzisha batili () {// Anzisha bandari ya serial ya Arduino kwa utatuzi. Kuanzia Serial (9600); // Anzisha bandari ya serial ya kuzungumza na Simu. seli. kuanza (9600); //Salamu, Dunia. Serial.println ("Kuanzisha Mawasiliano ya SM5100B…"); kuchelewesha (1000); // Weka mtandao wa kwanza wa mtandao_sajiliwa = 0; mtandao_AT_ayari = 0; } // Soma nyuzi za AT kutoka kwa ngao ya utupu batili kusomaString (batili) {char c; buffidx = 0; // anza kuanza kwa (x = 0; x 0) {c = seli.soma (); ikiwa (c == -1) {at_buffer [buffidx] = '\ 0'; kurudi; } ikiwa (c == '\ n') {endelea; } ikiwa ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; kurudi; } at_buffer [buffidx ++] = c; }}} // // Tengeneza masharti ya AT batili ProcessATString () {if (strstr (at_buffer, "+ SIND: 8")! = 0) {network_registered = 0; Serial.println ("Mtandao wa mtandao haupatikani"); } ikiwa (strstr (at_buffer, "+ SIND: 11")! = 0) {network_registered = 1; Serial.println ("Usajili wa mtandao"); } ikiwa (strstr (at_buffer, "+ SIND: 4")! = 0) {network_AT_ayari = 1; Serial.println ("mtandao AT Tayari"); }} kitanzi batili () {/ * Ikiwa imeitwa kwa mara ya kwanza, kitanzi hadi mtandao na AT iko tayari * / ikiwa (firstTimeInLoop == 1) {firstTimeInLoop = 0; wakati (network_registered == 0 || network_AT_ready == 0) {readATString (); MchakatoATString (); }} ikiwa (firstTimeInOtherLoop == 1) {// Tafuta simu inayoingia ikiwa (strstr (at_buffer, "+ CPAS: 3")! = 0) {// Jibu kiini cha simu.println ("ATA"); kwanzaTimeInOtherLoop = 0; }}}

Picha
Picha

Je! Umepata hii muhimu, ya kufurahisha, au ya kuburudisha? Fuata @madeineuphoria kuona miradi yangu ya hivi karibuni.

Ilipendekeza: