ዝርዝር ሁኔታ:

የአርዱዲኖ ሴሉላር ጋሻ አጋዥ ስልጠና 9 ደረጃዎች (ከስዕሎች ጋር)
የአርዱዲኖ ሴሉላር ጋሻ አጋዥ ስልጠና 9 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የአርዱዲኖ ሴሉላር ጋሻ አጋዥ ስልጠና 9 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የአርዱዲኖ ሴሉላር ጋሻ አጋዥ ስልጠና 9 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: በ30 ቀን እራስን መለወጥ Change Yourself in 30 Days 2024, ህዳር
Anonim
የአርዱዲኖ ሴሉላር ጋሻ አጋዥ ስልጠና
የአርዱዲኖ ሴሉላር ጋሻ አጋዥ ስልጠና

የአርዱዲኖ ሴሉላር ጋሻ የሞባይል ስልክ ጥሪዎችን እንዲያደርጉ እና የጽሑፍ መልዕክቶችን እንዲልኩ ያስችልዎታል። የዚህ ጋሻ አንጎል አብዛኞቹን መደበኛ የሞባይል ስልኮች ብዙ ተግባሮችን ማከናወን የሚችል ጠንካራ ሴሉላር ሞዱል ነው። ይህ ጋሻ ከተንቀሳቃሽ ስልክ አውታረ መረብ ጋር ለመገናኘት የሲም ካርድ መጠቀምን ይጠይቃል። የሚከተለው መማሪያ ጋሻውን ለመጀመር ፣ እና የጽሑፍ መልዕክቶችን መላክ እና መቀበል ፣ እና የስልክ ጥሪዎች ሁለቱም ባዶ አጥንት ትምህርት ነው። ስለ ሞጁሉ ተግባራዊነት የበለጠ ለማወቅ ፣ በ Sparkfun ምርት ገጽ ላይ የውሂብ ሉሆችን መመልከትዎን ያረጋግጡ።

ደረጃ 1 ሂድ ነገሮችን ያግኙ

ነገሮችን ያግኙ ይሂዱ
ነገሮችን ያግኙ ይሂዱ

ያስፈልግዎታል:

(x1) ሴሉላር ጋሻ (x1) ሊደረደሩ የሚችሉ የአርዱዲኖ ራስጌዎች (x1) ባለአራት ባንድ አንቴና (x1) አርዱinoኖ ኡኖ

(በዚህ ገጽ ላይ ያሉ አንዳንድ አገናኞች የአጋር አገናኞች መሆናቸውን ልብ ይበሉ። ይህ የእቃውን ዋጋ አይቀይረውም። ያገኘሁትን ማንኛውንም ነገር አዲስ ፕሮጀክቶችን ለመሥራት እንደገና አሰማራለሁ። ለአማራጭ አቅራቢዎች ማንኛውንም አስተያየት ከፈለጉ እባክዎን ይፍቀዱልኝ። እወቅ።)

ደረጃ 2: የመሸጫ ራስጌዎች

የመሸጫ ራስጌዎች
የመሸጫ ራስጌዎች
የመሸጫ ራስጌዎች
የመሸጫ ራስጌዎች
የመሸጫ ራስጌዎች
የመሸጫ ራስጌዎች

ራስጌዎቹን በጋሻው ውስጥ ያስገቡ እና በቦታው ላይ ያሽጧቸው።

ደረጃ 3: ያስገቡ

አስገባ
አስገባ
አስገባ
አስገባ

በአርዲኖ ላይ ባሉ ሶኬቶች ውስጥ የራስጌውን ፒን ያስገቡ።

ደረጃ 4: መፍቻ

መፍትሄ ሰጪ
መፍትሄ ሰጪ

የአንቴና ገመድ ከ SM5100B ሞዱል ጋር ያለው ግንኙነት ብዙውን ጊዜ በጣም ጥሩ አይደለም። ግንኙነቱን ለማረጋገጥ እያንዳንዱን የኬብል ግንኙነቶች ወደ ሞጁሉ ያስተካክሉ።

ደረጃ 5 አንቴናውን ያያይዙ

አንቴናውን ያያይዙ
አንቴናውን ያያይዙ
አንቴናውን ያያይዙ
አንቴናውን ያያይዙ

አንቴናውን ወደ አንቴና ገመድ ይከርክሙት።

ደረጃ 6: ሲም ካርድ ያስገቡ

ሲም ካርድ ያስገቡ
ሲም ካርድ ያስገቡ
ሲም ካርድ ያስገቡ
ሲም ካርድ ያስገቡ
ሲም ካርድ ያስገቡ
ሲም ካርድ ያስገቡ
ሲም ካርድ ያስገቡ
ሲም ካርድ ያስገቡ

ሲም ካርዱን በደህና ወደ ሲም ካርድ ሶኬት ያስገቡ።

ደረጃ 7: አስጀምር

አስጀምር
አስጀምር

በአርዱዲኖ ላይ የሚከተለውን ኮድ ያሂዱ

/*

SparkFun ሴሉላር ጋሻ - ማለፊያ -ናሙና ናሙና ንድፍ SparkFun ኤሌክትሮኒክስ በራየን ኦወንስ የተፃፈ 3/መግለጫ - ይህ ንድፍ አርዱዲኖ ዱሚላኖቭን ከ SparkFun ኤሌክትሮኒክስ ወደ ሴሉላር ጋሻ በይነገጽ ለማስተላለፍ የተፃፈ ነው። ሴሉላር ጋሻው እዚህ ሊገዛ ይችላል https://www.sparkfun.com/commerce/product_info.php?products_id=9607 በዚህ ረቂቅ ተከታታይ ትዕዛዞች ከተርሚናል ፕሮግራም ወደ SM5100B ሴሉላር ሞዱል ተላልፈዋል። እና ከሴሉላር ሞዱል የተሰጡ ምላሾች በተርሚናል ውስጥ ተለጥፈዋል። ተጨማሪ መረጃ በንድፍ አስተያየቶች ውስጥ ይገኛል። ገቢር የሆነ ሲም ካርድ መሣሪያውን ለመጠቀም በቦርዱ ላይ ባለው የሲም ካርድ መያዣ ውስጥ ማስገባት አለበት! ይህ ንድፍ በአርዲኒያና ሚካኤል ሃርት የተፃፈውን የኒውሶፍትስየር ቤተመፃሕፍት ይጠቀማል። ቤተ -መጽሐፍቱ በዚህ ዩአርኤል ማውረድ ይችላል- https://arduiniana.org/libraries/NewSoftSerial/ ይህ ኮድ በ Creative Commons Attribution License ስር ይሰጣል። ተጨማሪ መረጃ እዚህ ይገኛል https://creativecommons.org/licenses/by/3.0/ (የእኛን ኮድ በነፃ ይጠቀሙ! እባክዎን የሚገባውን ቦታ ለመስጠት እኛን ያስታውሱ። አመሰግናለሁ!) ተከታታይ ትዕዛዞችን ወደ ሴሉላር ሞዱል ለመላክ ቤተ -መጽሐፍት። #ያካትቱ // ለገመድ ማጭበርበሮች ቻር ገቢ_ቻር = 0; // መጪውን ገጸ -ባህሪ ከሲሪያል ወደብ ይይዛል። የሶፍትዌር አየር ሕዋስ (2 ፣ 3); // ‹የሐሰት› ተከታታይ ወደብ ይፍጠሩ። ፒን 2 የ Rx ፒን ፣ ፒን 3 የቲክስ ፒን ነው። ባዶነት ማዋቀር () {// ለግንኙነት ተከታታይ ወደቦችን ያስጀምሩ። Serial.begin (9600); cell.begin (9600); //እንጀምር! Serial.println ("ከ SM5100B ግንኙነት ጀምሮ …"); } ባዶነት loop () {// አንድ ቁምፊ ከሴሉላር ሞዱል ከገባ… ከሆነ (cell.available ()> 0) {incoming_char = cell.read (); // ቁምፊውን ከሴሉላር ተከታታይ ወደብ ያግኙ። Serial.print (ገቢ_char); // መጪውን ቁምፊ ወደ ተርሚናል ያትሙ። } // አንድ ቁምፊ ከተርሚናል ወደ አርዱinoኖ የሚመጣ ከሆነ… ከሆነ (Serial.available ()> 0) {incoming_char = Serial.read (); // ቁምፊውን ከተርሚናል የሚመጣውን (ገቢ_char == '~') // tilde ከሆነ… ገቢ_char = 0x0D; //… ሌላ ከሆነ ወደ መጓጓዣ መመለሻ ይለውጡ (መጪው_char == '^') // ወደላይ ተንከባካቢ ከሆነ… //… ወደ ctrl-Z cell.print (ገቢ_char) ይለውጡ ፤ // ቁምፊውን ወደ ሴሉላር ሞዱል ይላኩ። Serial.print (ገቢ_char); // ወደ ተርሚናል መልሰው ያስተጋቡት}} / * SM5100B ለ ‹AT Command Set * ማጣቀሻ ማጣቀሻ * * በሌላ መልኩ ካልተጠቀሱ የ AT ትዕዛዞች‹ አስገባ ›ቁልፍን በመጫን ካልተጠናቀቁ በስተቀር። 1.) ትክክለኛው የ GSM ባንድ ለአገርዎ መመረጡን ያረጋግጡ። ለዩኤስ ባንድ ወደ 7. መዋቀር አለበት ባንድን ለማቀናበር ይህንን ትእዛዝ ይጠቀሙ AT+SBAND = 7 2.) ጋዱ ተጭኖ አርዱinoኖን ከጨበጠ በኋላ ሞጁሉ ሲም ካርዱን ማንበብ እና ማወቁን ያረጋግጡ። በከፍተኛው መስኮት ተከፍቶ ወደ አርዱዲኖ ወደብ እና 9600 ቡአድ ፣ በአርዱዲኖ ላይ ኃይል። የመነሻ ቅደም ተከተል እንደዚህ ያለ ነገር መሆን አለበት - SM5100B ግንኙነትን በመጀመር ላይ… +SIND: 1 +SIND: 10 ፣ “SM” ፣ 1 ፣ “FD” ፣ 1 ፣ “LD” ፣ 1 ፣ “MC” ፣ 1 ፣ “RC” ፣ 1 ፣ “እኔ” ፣ 1 ከሞጁሉ ጋር መግባባት የሚጀምረው የመጀመሪያው መስመር ከታየ በኋላ ነው። ሁለተኛው የግንኙነት መስመር +SIND: 10 ሞጁሉ ሲም ካርድ ማየት ይችል እንደሆነ ይነግረናል። ሲም ካርዱ ከተገኘ እያንዳንዱ ሌላ መስክ 1 ነው ፣ ሲም ካርዱ ካልተገኘ ሌላ መስክ ሁሉ 0. 3.) ትዕዛዞችን መላክ ከመጀመርዎ በፊት የአውታረ መረብ ግንኙነትን ይጠብቁ። ከ +SIND: 10 ምላሽ በኋላ ሞጁሉ ከአውታረ መረብ ጋር ለመገናኘት መሞከር ይጀምራል። የሚከተሉትን መልሶች እስኪቀበሉ ድረስ ይጠብቁ: +SIND: 11 +SIND: 3 +SIND: 4 ከሴሉላር ሞዱል የ +SIND ምላሽ የሞጁሎችን ሁኔታ ይነግረዋል። የምላሽ ትርጉሞች ፈጣን መሮጥ እዚህ አለ-0 ሲም ካርድ ተወግዷል 1 ሲም ካርድ ገብቷል 2 የቀለበት ዜማ 3 ኤቲ ሞጁል በከፊል ዝግጁ ነው ለድንገተኛ አደጋ ጥሪ 8 ኔትወርክ ጠፍቷል 9 ኦዲዮ በርቷል 10 የእያንዳንዱ የስልክ ማውጫ ሁኔታ ከየአንቀጽ ሐረግ 11 በኋላ ወደ አውታረ መረብ ተመዝግቧል በአውታረ መረቡ ላይ ከተመዘገቡ በኋላ መስተጋብር መጀመር ይችላሉ። ለመጀመር ጥቂት ቀላል እና ጠቃሚ ትዕዛዞች እዚህ አሉ-ጥሪ ለማድረግ-AT ትእዛዝ-ATDxxxyyyzzzz የስልክ ቁጥር ከቅርጹ ጋር ((xxx) yyy-zzz ሞክር ---- cell.print ("ATDxxxyyyzzzz"); የስልክ ጥሪ ካደረጉ ማይክሮፎኑን እና ድምጽ ማጉያውን ወደ ጋሻው ለማያያዝ የመሣሪያዎቹን የውሂብ ሉህ ማጣቀሱን ያረጋግጡ። የ txt መልእክት ለመላክ - AT command - AT+CMGF = 1 ይህ ትዕዛዝ የጽሑፍ መልእክት ሁነታን ወደ ‹ጽሑፍ› ያዘጋጃል። AT ትእዛዝ = AT+CMGS = "xxxyyyzzzz" (ሰረገላ መመለሻ) 'ለመላክ ጽሑፍ' (CTRL+Z) ይህ ትእዛዝ ለመግለፅ ትንሽ ግራ የሚያጋባ ነው። የስልክ ቁጥሩ ፣ ቅርጸት (xxx) yyy-zzzz ውስጥ ወደ ሁለት ጥቅሶች ይሄዳል። ጥቅሶቹን ከዘጉ በኋላ ‹አስገባ› ን ይጫኑ። ቀጥሎ ለመላክ ጽሑፉን ያስገቡ። CTRL+Z ን በመላክ የ AT ትዕዛዙን ያጠናቅቁ። ይህ ቁምፊ ከአርዲኖ ተርሚናል ሊላክ አይችልም። እንደ Hyperterminal ፣ Tera Term ፣ Bray Terminal ወይም X-CTU ያሉ ተለዋጭ ተርሚናል ፕሮግራም ይጠቀሙ። የ SM5100B ሞጁል ከዚህ የበለጠ ማድረግ ይችላል! ስለ ሞጁሉ የበለጠ ለማወቅ በምርቱ ገጽ ላይ ያለውን የውሂብ ሉሆች ይመልከቱ።በተርሚናል ውስጥ ተከታታይ ወደቡን ይክፈቱ። በ Mac ላይ ይህ በመተየብ ይከናወናል /ማያ /dev/tty.usbmodemfa131 9600 (tty.usbmodemfa131 ን በአርዲኖዎ ተከታታይ አድራሻ ይተኩ) የሚከተለውን ቅደም ተከተል ተመልሶ ለማየት ይጠብቁ - SM5100B ግንኙነትን ይጀምራል… +SIND: 3 +SIND: 4 +SIND: 11 (ይህ ቅደም ተከተል ካልተመለሰ ከላይ ባለው ኮድ ስር የተዘረዘሩትን የስህተት ኮዶች ይፈትሹ እና ተገቢውን ያርሙ። ወደ አውታረ መረብ ከመመዘገቡ በፊት ሞዱሉን ለሰሜን አሜሪካ አጠቃቀም ማዘጋጀት ያስፈልግዎታል - ከዚህ በታች ይመልከቱ - +SIND 11)) የሚከተሉትን ትዕዛዞች ወደ ተከታታይ ወደብ ይላኩ - ይህንን ለሰሜን አሜሪካ አጠቃቀም ይላኩ AT+SBAND = 7 የአሁኑን ሰዓት ያዘጋጁ - yy/mm/dd: AT+CCLK = "13/05/15, 11: 02:00 “የሙከራ ጥሪ ይላኩ - ATD4155551212

ደረጃ 8 የጽሑፍ መልእክቶች

የጽሑፍ መልእክቶች
የጽሑፍ መልእክቶች

በእርስዎ አርዱinoኖ ቤተ -መጽሐፍት ውስጥ SerialGSM ን ያውርዱ እና ይጫኑ።

የጽሑፍ መልእክት ለመላክ የ Tronixstuff ሴሉላር ሞዱል መማሪያውን ይጎብኙ እና የምሳሌ ኮድ 26.3 ን ይጠቀሙ-https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

ጽሑፍ ለመቀበል የምሳሌ ኮዱን ለማሄድ ከፈለጉ ፣ 8 ን ከፒን ጋር ያገናኙ እና በ 220 ohm resistor ወደ መሬት በተከታታይ ያድርጉት።

የጽሑፍ መልእክት ለመላክ የ Tronixstuff ሴሉላር ሞዱል መማሪያውን ይጎብኙ እና የምሳሌ ኮድ 26.5 ን ይጠቀሙ-https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

ከሚከተሉት ትዕዛዞች አንዱን ወደ የተንቀሳቃሽ ስልክ ሞዱልዎ ይላኩ -

// LED ን በ #a1 ላይ ያበራል

// LED ን #a0 ን ያጠፋል

ደረጃ 9 ድምጽ

ድምጽ
ድምጽ
ድምጽ
ድምጽ
ድምጽ
ድምጽ

መሬት ላይ ያለ የድምፅ ገመድ በመጠቀም ማይክሮፎን እና ድምጽ ማጉያውን ወደ ጋሻው ያገናኙ። የመሃል ምልክት ሽቦው ወደ ኦዲዮ ፕላስ ተርሚናሎች መሄድ እና መከለያው በጋሻው ላይ ወደሚመለከታቸው አሉታዊ ተርሚናሎች መሄድ አለበት። እነዚህ ኬብሎች በማይክሮፎን እና በድምጽ ማጉያ ጎን በተመሳሳይ መገናኘት አለባቸው።

የድምፅ ጥሪን ለመጀመር የሚከተሉትን ኮድ ይስቀሉ

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

// ጥሪ ያድርጉ/// // የመሸጫ ኮድ በላዩ ላይ የተመሠረተ/ // //********************************************************************************** #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]; ቻር ቡፊክስክስ; // የአውታረ መረብ ሁኔታ ተለዋጮች int network_registered; int network_AT_ready; // የኮድ ሁኔታ ተለዋዋጮች int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // መጪውን ገጸ -ባህሪ ከሲሪያል ወደብ ይይዛል። ቻር እየመጣ_char = 0; // ‹የሐሰት› ተከታታይ ወደብ ይፍጠሩ። ፒን 2 የ Rx ፒን ፣ ፒን 3 የቲክስ ፒን ነው። የሶፍትዌር አየር ሕዋስ (2 ፣ 3); ባዶነት ማዋቀር () {// ለማረም የአርዲኖን ተከታታይ ወደብ ያስጀምሩ። Serial.begin (9600); // ከስልክ ጋር ለመነጋገር ምናባዊ ተከታታይ ወደብ ያስጀምሩ። cell.begin (9600); //ሰላም ልዑል. Serial.println ("ከ SM5100B ግንኙነት ጀምሮ …"); መዘግየት (1000); // የመጀመሪያ አውታረ መረብ ሁኔታ አውታረ መረብ_ተመዘገበ = 0 ያዘጋጁ ፤ አውታረ መረብ_AT_ready = 0; } // ከሴሉላር ጋሻ ባዶ ባዶ readATString (ባዶ) {char c; buffidx = 0; // ለ (x = 0; x 0) {c = cell.read (); ከሆነ (c == -1) {at_buffer [buffidx] = '\ 0'; መመለስ; } ከሆነ (c == '\ n') {ቀጥል; } ከሆነ ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; መመለስ; } በ_buffer [buffidx ++] = c; }}} // የ AT ሕብረቁምፊዎችን ባዶነት ያስኬዱ ProcessATString () {if (strstr (at_buffer ፣ "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("የአውታረ መረብ አውታረ መረብ የለም"); } ከሆነ (strstr (at_buffer ፣ "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("አውታረ መረብ የተመዘገበ"); } ከሆነ (strstr (at_buffer ፣ "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("አውታረ መረብ በ ዝግጁ"); }} ባዶነት loop () { / * ለመጀመሪያ ጊዜ ከተጠራ ፣ አውታረ መረብ እና ኤቲ እስኪዘጋጅ ድረስ loop * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; ሳለ (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} ከሆነ (firstTimeInOtherLoop == 1) {// ከሆነ (strstr (at_buffer ፣ "+CPAS: 3")! = 0) {// ስልኩን cell.println ("ATA") ይመልሱ ፤ firstTimeInOtherLoop = 0; }}}

ምስል
ምስል

ይህ ጠቃሚ ፣ አዝናኝ ወይም አዝናኝ ሆኖ አግኝተውታል? የቅርብ ጊዜ ፕሮጀክቶቼን ለማየት @madeineuphoria ን ይከተሉ።

የሚመከር: