Talaan ng mga Nilalaman:

Arduino Cellular Shield Tutorial: 9 Mga Hakbang (na may Mga Larawan)
Arduino Cellular Shield Tutorial: 9 Mga Hakbang (na may Mga Larawan)

Video: Arduino Cellular Shield Tutorial: 9 Mga Hakbang (na may Mga Larawan)

Video: Arduino Cellular Shield Tutorial: 9 Mga Hakbang (na may Mga Larawan)
Video: Arduino MASTERCLASS | Full Programming Workshop in 90 Minutes! 2024, Nobyembre
Anonim
Arduino Cellular Shield Tutorial
Arduino Cellular Shield Tutorial

Pinapayagan ka ng Arduino Cellular Shield na tumawag sa mga cellular phone, at magpadala ng mga text message. Ang talino ng kalasag na ito ay ang SM5100B na isang matatag na module ng cellular na may kakayahang gumanap ng maraming mga gawain ng karamihan sa mga karaniwang cell phone. Nangangailangan ang kalasag na ito ng paggamit ng isang SIM card upang kumonekta sa isang cellular network. Ang sumusunod na tutorial ay isang hubad na tutorial sa buto para sa pagsisimula ng kalasag, at parehong pagpapadala at pagtanggap ng mga text message, at mga tawag sa telepono. Upang matuto nang higit pa tungkol sa pagpapaandar ng module, tiyaking suriin ang mga datasheet sa pahina ng produkto ng Sparkfun.

Hakbang 1: Pumunta Kumuha ng Bagay

Pumunta Kumuha ng Bagay
Pumunta Kumuha ng Bagay

Kakailanganin mong:

(x1) Cellular Shield (x1) Naka-stack na Arduino header (x1) Quad band antena (x1) Arduino Uno

(Tandaan na ang ilan sa mga link sa pahinang ito ay mga link ng kaakibat. Hindi nito binabago ang halaga ng item para sa iyo. Ininvest ko muli ang anumang nalalapasan na natanggap ko sa paggawa ng mga bagong proyekto. Kung nais mo ang anumang mga mungkahi para sa mga kahalili na tagatustos, mangyaring hayaan mo akong alam.)

Hakbang 2: Mga Solder Header

Mga Solder Header
Mga Solder Header
Mga Solder Header
Mga Solder Header
Mga Solder Header
Mga Solder Header

Ipasok ang mga header sa kalasag at ihihinang ang mga ito sa lugar.

Hakbang 3: Ipasok

Isingit
Isingit
Isingit
Isingit

Ipasok ang mga pin ng header sa mga socket sa Arduino.

Hakbang 4: Resolder

Resolder
Resolder

Ang koneksyon ng antenna cable sa module na SM5100B ay karaniwang hindi gaanong maganda. Masolusyunan ang bawat koneksyon ng cable sa module upang matiyak ang pagkakakonekta.

Hakbang 5: Ikabit ang Antenna

Ikabit ang Antenna
Ikabit ang Antenna
Ikabit ang Antenna
Ikabit ang Antenna

I-thread ang antena sa antenna cable.

Hakbang 6: Ipasok ang SIM Card

Ipasok ang SIM Card
Ipasok ang SIM Card
Ipasok ang SIM Card
Ipasok ang SIM Card
Ipasok ang SIM Card
Ipasok ang SIM Card
Ipasok ang SIM Card
Ipasok ang SIM Card

Ipasok nang ligtas ang SIM card sa socket ng SIM card.

Hakbang 7: Magsimula

Pasimulan
Pasimulan

Patakbuhin ang sumusunod na code sa Arduino:

/*

SparkFun Cellular Shield - Pass-Through Sample Sketch SparkFun Electronics Isinulat ni Ryan Owens 3 / Paglalarawan: Ang sketch na ito ay isinulat upang i-interface ang isang Arduino Duemillanove sa isang Cellular Shield mula sa SparkFun Electronics. Maaaring mabili ang kalasag ng cellular dito: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Sa sketch na ito ang mga serial command ay naipasa mula sa isang terminal program sa SM5100B cellular module; at mga tugon mula sa module ng cellular ay nai-post sa terminal. Ang karagdagang impormasyon ay matatagpuan sa mga komento sa sketch. Ang isang aktibong SIM card ay dapat na ipasok sa may hawak ng SIM card sa pisara upang magamit ang aparato! Gumagamit ang sketch na ito ng library ng NewSoftSerial na isinulat ni Mikal Hart ng Arduiniana. Maaaring ma-download ang silid-aklatan sa URL na ito: https://arduiniana.org/libraries/NewSoftSerial/ Ang code na ito ay ibinigay sa ilalim ng Lisensya ng Creative Commons Attribution. Mahahanap ang karagdagang impormasyon dito: https://creativecommons.org/licenses/by/3.0/ (Gamitin nang malaya ang aming code! Mangyaring tandaan lamang na bigyan kami ng kredito kung saan ito nararapat. Salamat!) * / # Isama // // Isama ang NewSoftSerial silid-aklatan upang magpadala ng mga serial command sa cellular module. #include // Ginamit para sa mga manipulasyong string char papasok_char = 0; // Hahawakan ang papasok na character mula sa Serial Port. SoftwareSerial cell (2, 3); // Lumikha ng isang 'pekeng' serial port. Ang Pin 2 ay ang Rx pin, ang pin 3 ay ang Tx pin. void setup () {// Pinasimulan ang mga serial port para sa komunikasyon. Serial.begin (9600); cell.begin (9600); //Magsimula na tayo! Serial.println ("Simula sa Komunidad ng SM5100B …"); } void loop () {// Kung ang isang character ay nagmula sa cellular module … kung (cell.available ()> 0) {umaabot_char = cell.read (); // Kunin ang character mula sa cellular serial port. Serial.print (papasok na_char); // I-print ang papasok na character sa terminal. } // Kung ang isang character ay nagmumula sa terminal patungo sa Arduino… kung (Serial.available ()> 0) {papasok_char = Serial.read (); // Kunin ang character na nagmumula sa terminal kung (papasok_char == '~') // Kung ito ay isang tilde… papasok_char = 0x0D; //… i-convert sa isang pagbalik sa karwahe kung (papasok_char == '^') // Kung ito ay isang up caret … papasok_char = 0x1A; //… i-convert sa ctrl-Z cell.print (papasok na_char); // Ipadala ang character sa module ng cellular. Serial.print (papasok na_char); // Echo ito pabalik sa terminal}} / * SM5100B Quck Reference para sa AT Command Set * Maliban kung nabanggit na AT utos ay natapos sa pamamagitan ng pagpindot sa 'enter' key. 1.) Tiyaking napili ang tamang GSM band para sa iyong bansa. Para sa US ang banda ay dapat itakda sa 7. Upang itakda ang banda, gamitin ang utos na ito: SA + SBAND = 7 2.) Matapos ang pag-power sa Arduino na naka-install ang kalasag, patunayan na binabasa ng module at kinikilala ang SIM card. Na may isang bukas na bituin ng window at nakatakda sa Arduino port at 9600 buad, kapangyarihan sa Arduino. Ang pagkakasunud-sunod ng startup ay dapat magmukhang ganito: Simula sa Komunikasyon sa SM5100B… + SIND: 1 + SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "AKO", 1 Ang komunikasyon sa modyul ay nagsisimula pagkatapos ipakita ang unang linya. Ang pangalawang linya ng komunikasyon, + SIND: 10, ay nagsasabi sa amin kung ang module ay makakakita ng isang SIM card. Kung ang SIM card ay napansin ang bawat iba pang mga patlang ay isang 1; kung ang SIM card ay hindi napansin ang bawat iba pang mga patlang ay isang 0. 3.) Maghintay para sa isang koneksyon sa network bago ka magsimulang magpadala ng mga utos. Matapos ang + SIND: 10 na tugon ang module ay awtomatikong magsisimulang subukang kumonekta sa isang network. Maghintay hanggang sa matanggap mo ang mga sumusunod na repsones: + SIND: 11 + SIND: 3 + SIND: 4 Ang + SIND na tugon mula sa cellular module ay nagsasabi sa katayuan ng mga module. Narito ang isang mabilis na pag-down-down ng mga kahulugan ng tugon: 0 SIM card tinanggal 1 SIM card na ipinasok 2 Ring melody 3 AT module ay bahagyang handa 4 AT module ay ganap na handa 5 ID ng pinakawalan na tawag 6 Inilabas na tawag na kaninong ID = 7 Ang serbisyo sa network ay magagamit para sa isang pang-emergency na tawag 8 Nawala ang network 9 Audio ON 10 Ipakita ang katayuan ng bawat phonebook pagkatapos init parirala 11 Nirehistro sa network Matapos magparehistro sa network maaari mong simulan ang pakikipag-ugnay. Narito ang ilang simple at kapaki-pakinabang na mga utos upang makapagsimula: Upang tumawag: SA utos - ATDxxxyyyzzzz Numero ng telepono na may format: (xxx) yyy-zzz subukan ---- cell.print ("ATDxxxyyyzzzz"); Kung tumawag ka sa telepono siguraduhing isangguni ang datasheet ng mga aparato upang mai-hook up ang isang mikropono at speaker sa kalasag. Upang magpadala ng isang mensahe sa txt: SA utos - AT + CMGF = 1 Itinatakda ng utos na ito ang mode ng text message sa 'text.' SA utos = AT + CMGS = "xxxyyyzzzz" (pagbalik ng karwahe) 'Text to send' (CTRL + Z) Ang utos na ito ay bahagyang nakalilito upang ilarawan. Ang numero ng telepono, sa format (xxx) yyy-zzzz ay napupunta sa loob ng dobleng mga sipi. Pindutin ang 'enter' pagkatapos isara ang mga sipi. Susunod na ipasok ang teksto na ipapadala. Tapusin ang utos ng AT sa pamamagitan ng pagpapadala ng CTRL + Z. Hindi maipadala ang character na ito mula sa terminal ng Arduino. Gumamit ng isang kahaliling programa ng terminal tulad ng Hyperterminal, Tera Term, Bray Terminal o X-CTU. Ang module ng SM5100B ay maaaring gumawa ng higit pa sa ito! Suriin ang mga datasheet sa pahina ng produkto upang malaman ang tungkol sa module. * /Buksan ang serial port sa terminal. Sa isang Mac natapos ito sa pamamagitan ng pagta-type: screen /dev/tty.usbmodemfa131 9600 (palitan ang tty.usbmodemfa131 sa serial address ng iyong Arduino) Maghintay upang makita ang sumusunod na pagkakasunud-sunod na ibinalik: Simula sa SM5100B Komunikasyon … + SIND: 3 + SIND: 4 + SIND: 11 (Kung ang pagkakasunud-sunod na ito ay hindi naibalik suriin ang mga error code na nakalista sa ilalim ng code sa itaas, at i-debug nang naaangkop. Maaaring kailanganin mong itakda ang module para sa paggamit ng North American - tingnan sa ibaba - bago ito magparehistro sa network (ie + SIND 11)) Ipadala ang mga sumusunod na utos sa serial port: Ipadala ito para sa paggamit ng North American: AT + SBAND = 7 Itakda ang kasalukuyang oras - yy / mm / dd: AT + CCLK = "13/05/15, 11: 02:00 "Magpadala ng tawag sa pagsubok: ATD4155551212

Hakbang 8: Mga Mensahe sa Teksto

Mga Mensahe sa Teksto
Mga Mensahe sa Teksto

Mag-download at mag-install ng SerialGSM sa iyong Arduino library.

Upang magpadala ng isang text message bisitahin ang tutorial ng module ng cell ng Tronixstuff at gamitin ang halimbawa ng code 26.3:

Kung nais mong patakbuhin ang halimbawa ng code upang makatanggap ng isang teksto, ikonekta ang isang LED upang i-pin ang 8 at ilagay ito sa serye na may 220 ohm risistor sa lupa.

Upang magpadala ng isang text message bisitahin ang tutorial ng module ng cellular Tronixstuff at gamitin ang halimbawa ng code 26.5:

I-text ang isa sa mga sumusunod na utos sa iyong cellular module:

// pinapalitan ang LED sa # a1

// pinapatay ang LED # a0

Hakbang 9: Boses

Boses
Boses
Boses
Boses
Boses
Boses

Ikonekta ang isang mikropono at speaker sa kalasag gamit ang grounded audio cable. Ang gitnang signal wire ay dapat pumunta sa mga audio plus terminal at ang panangga ay dapat pumunta sa kani-kanilang mga negatibong terminal sa kalasag. Ang mga kable na ito ay dapat na konektado nang katulad sa mikropono at bahagi ng speaker.

Upang mapasimulan ang isang tawag sa boses i-upload ang sumusunod na code:

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

// MAKE A CALL // // BUFFERING CODE BASED UPON: // // //********************************************************************************** #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; // variable ng estado ng network int network_registrado; int network_AT_ready; // variable ng estado ng Code int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Hahawakan ang papasok na character mula sa Serial Port. char papasok_char = 0; // Lumikha ng isang 'pekeng' serial port. Ang Pin 2 ay ang Rx pin, ang pin 3 ay ang Tx pin. SoftwareSerial cell (2, 3); void setup () {// Initialize Arduino serial port for debugging. Serial.begin (9600); // Initialize virtual serial port upang makausap ang Telepono. cell.begin (9600); // Hello World. Serial.println ("Simula sa SM5100B Komunikasyon …"); pagkaantala (1000); // Itakda ang paunang network state network_registrado = 0; network_AT_ready = 0; } // Basahin ang mga string ng AT mula sa cellular Shield na walang bisa readATString (walang bisa) {char c; buffidx = 0; // start at begninning for (x = 0; x 0) {c = cell.read (); kung (c == -1) {at_buffer [buffidx] = '\ 0'; bumalik; } kung (c == '\ n') {magpatuloy; } kung ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; bumalik; } at_buffer [buffidx ++] = c; }}} // Iproseso ang mga string ng AT na walang bisa ProcessATString () {if (strstr (at_buffer, "+ SIND: 8")! = 0) {network_registro = 0; Serial.println ("Hindi Magagamit ang Network Network"); } kung (strstr (at_buffer, "+ SIND: 11")! = 0) {network_registro = 1; Serial.println ("Rehistradong network"); } kung (strstr (at_buffer, "+ SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("network AT Handa"); }} void loop () {/ * Kung tinawag sa kauna-unahang pagkakataon, loop hanggang handa ang network at AT * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; habang (network_registro == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} kung (firstTimeInOtherLoop == 1) {// Hanapin ang papasok na tawag kung (strstr (at_buffer, "+ CPAS: 3")! = 0) {// Sagutin ang cell.println ng telepono ("ATA"); firstTimeInOtherLoop = 0; }}}

Larawan
Larawan

Nahanap mo ba itong kapaki-pakinabang, masaya, o nakakaaliw? Sundin ang @madeineuphoria upang makita ang aking pinakabagong mga proyekto.

Inirerekumendang: