สารบัญ:

บทช่วยสอน Arduino Cellular Shield: 9 ขั้นตอน (พร้อมรูปภาพ)
บทช่วยสอน Arduino Cellular Shield: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: บทช่วยสอน Arduino Cellular Shield: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: บทช่วยสอน Arduino Cellular Shield: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: How to Run Servo Motors with Arduino NANO Expansion Adapter Board- I/O Shield | Part - 2 2024, พฤศจิกายน
Anonim
กวดวิชา Arduino Cellular Shield
กวดวิชา Arduino Cellular Shield

Arduino Cellular Shield ช่วยให้คุณสามารถโทรผ่านโทรศัพท์มือถือและส่งข้อความได้ สมองของเกราะนี้คือ SM5100B ซึ่งเป็นโมดูลเซลลูลาร์ที่แข็งแกร่งซึ่งสามารถทำงานได้หลายอย่างของโทรศัพท์มือถือมาตรฐานส่วนใหญ่ เกราะนี้ต้องใช้ซิมการ์ดเพื่อเชื่อมต่อกับเครือข่ายเซลลูลาร์ บทช่วยสอนที่ตามมาคือบทช่วยสอนเปล่าสำหรับการเริ่มต้นโล่และทั้งการส่งและรับข้อความและการโทร หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันการทำงานของโมดูล โปรดตรวจดูเอกสารข้อมูลในหน้าผลิตภัณฑ์ของ Sparkfun

ขั้นตอนที่ 1: ไปรับของ

ไปรับของ
ไปรับของ

คุณจะต้องการ:

(x1) เซลลูลาร์ชิลด์ (x1) ส่วนหัว Arduino แบบวางซ้อนกันได้ (x1) เสาอากาศแบบควอดแบนด์ (x1) Arduino Uno

(โปรดทราบว่าลิงก์บางลิงก์ในหน้านี้เป็นลิงก์ในเครือ ซึ่งจะไม่เปลี่ยนต้นทุนของรายการให้คุณ ฉันนำเงินที่ได้รับไปลงทุนใหม่เพื่อสร้างโครงการใหม่ หากคุณต้องการคำแนะนำสำหรับซัพพลายเออร์รายอื่น โปรดแจ้งให้ฉันทราบ ทราบ.)

ขั้นตอนที่ 2: หัวบัดกรี

หัวบัดกรี
หัวบัดกรี
หัวบัดกรี
หัวบัดกรี
หัวบัดกรี
หัวบัดกรี

ใส่ส่วนหัวเข้าไปในโล่แล้วประสานเข้าที่

ขั้นตอนที่ 3: แทรก

แทรก
แทรก
แทรก
แทรก

ใส่หมุดส่วนหัวลงในซ็อกเก็ตบน Arduino

ขั้นตอนที่ 4: ตัวแทนจำหน่าย

ตัวแทนจำหน่าย
ตัวแทนจำหน่าย

การเชื่อมต่อสายอากาศกับโมดูล SM5100B มักจะไม่ค่อยดีนัก ตัวแทนจำหน่ายสายเชื่อมต่อแต่ละสายเข้ากับโมดูลเพื่อให้แน่ใจว่ามีการเชื่อมต่อ

ขั้นตอนที่ 5: แนบเสาอากาศ

ติดเสาอากาศ
ติดเสาอากาศ
ติดเสาอากาศ
ติดเสาอากาศ

ร้อยเสาอากาศเข้ากับสายเสาอากาศ

ขั้นตอนที่ 6: ใส่ซิมการ์ด

ใส่ซิมการ์ด
ใส่ซิมการ์ด
ใส่ซิมการ์ด
ใส่ซิมการ์ด
ใส่ซิมการ์ด
ใส่ซิมการ์ด
ใส่ซิมการ์ด
ใส่ซิมการ์ด

ใส่ซิมการ์ดลงในช่องเสียบซิมการ์ดอย่างแน่นหนา

ขั้นตอนที่ 7: เริ่มต้น

เริ่มต้น
เริ่มต้น

เรียกใช้รหัสต่อไปนี้บน Arduino:

/*

SparkFun Cellular Shield - ภาพร่างตัวอย่างแบบ Pass-Through SparkFun Electronics เขียนโดย Ryan Owens 3/คำอธิบาย: แบบร่างนี้เขียนขึ้นเพื่อเชื่อมต่อ Arduino Duemillanove กับ Cellular Shield จาก SparkFun Electronics โล่เซลลูลาร์สามารถซื้อได้ที่นี่: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 คำสั่งซีเรียลแบบร่างนี้จะถูกส่งผ่านจากโปรแกรมเทอร์มินัลไปยังโมดูลเซลลูลาร์ SM5100B; และการตอบกลับจากโมดูลเซลลูลาร์จะโพสต์ในเทอร์มินัล ดูข้อมูลเพิ่มเติมได้ในความคิดเห็นแบบร่าง ต้องใส่ซิมการ์ดที่เปิดใช้งานลงในที่วางซิมการ์ดบนบอร์ดเพื่อใช้งานอุปกรณ์! ภาพร่างนี้ใช้ไลบรารี NewSoftSerial ที่เขียนโดย Mikal Hart แห่ง Arduiniana ห้องสมุดสามารถดาวน์โหลดได้ที่ URL นี้: https://arduiniana.org/libraries/NewSoftSerial/ รหัสนี้มีให้ภายใต้ใบอนุญาต Creative Commons Attribution ข้อมูลเพิ่มเติมสามารถพบได้ที่นี่: https://creativecommons.org/licenses/by/3.0/ (ใช้รหัสของเราได้อย่างอิสระ! โปรดอย่าลืมให้เครดิตแก่เราเมื่อถึงกำหนด ขอบคุณ!) */ #include // รวม NewSoftSerial ห้องสมุดเพื่อส่งคำสั่งอนุกรมไปยังโมดูลมือถือ #include //ใช้สำหรับการจัดการสตริง char incoming_char=0; // จะเก็บอักขระที่เข้ามาจาก Serial Port ซอฟต์แวร์เซลล์อนุกรม(2, 3); //สร้างพอร์ตอนุกรม 'ปลอม' พิน 2 คือพิน Rx พิน 3 คือพิน Tx การตั้งค่าเป็นโมฆะ () {// เริ่มต้นพอร์ตอนุกรมสำหรับการสื่อสาร Serial.begin(9600); เซลล์.begin(9600); //มาเริ่มกันเลย! Serial.println("กำลังเริ่มการสื่อสาร SM5100B…"); } void loop() {// หากอักขระเข้ามาจากโมดูลเซลลูลาร์… if(cell.available() >0) { incoming_char=cell.read(); // รับอักขระจากพอร์ตซีเรียลเซลลูลาร์ Serial.print(incoming_char); //พิมพ์อักขระที่เข้ามายังเทอร์มินัล } //หากอักขระมาจากเทอร์มินัลไปยัง Arduino… if(Serial.available() > 0) { incoming_char = Serial.read(); // รับอักขระที่มาจากเทอร์มินัล if(incoming_char == '~') // ถ้าเป็นตัวหนอน… incoming_char = 0x0D; // …แปลงเป็น carriage return else if(incoming_char == '^') // ถ้าเป็นการขึ้นคาเร็ต… incoming_char = 0x1A; // …แปลงเป็น ctrl-Z cell.print(incoming_char); // ส่งตัวละครไปที่โมดูลเซลลูลาร์ Serial.print(incoming_char); // Echo it back to the terminal } } /* SM5100B Quck Reference for AT Command Set *เว้นแต่จะระบุไว้เป็นอย่างอื่น คำสั่ง AT จะสิ้นสุดโดยการกดปุ่ม 'enter' 1.) ตรวจสอบให้แน่ใจว่าได้เลือกย่านความถี่ GSM ที่เหมาะสมสำหรับประเทศของคุณแล้ว สำหรับสหรัฐอเมริกา แบนด์ต้องตั้งค่าเป็น 7 ในการตั้งค่าแบนด์ ให้ใช้คำสั่งนี้: AT+SBAND=7 2.) หลังจากเปิด Arduino โดยติดตั้งชิลด์แล้ว ให้ตรวจสอบว่าโมดูลอ่านและจดจำซิมการ์ดได้ เมื่อเปิดหน้าต่างเทอร์มินอลและตั้งค่าเป็นพอร์ต Arduino และ 9600 buad ให้เปิด Arduino ลำดับการเริ่มต้นควรมีลักษณะดังนี้: กำลังเริ่มต้นการสื่อสาร SM5100B… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 การสื่อสารกับโมดูลเริ่มต้นหลังจากบรรทัดแรกปรากฏขึ้น บรรทัดที่สองของการสื่อสารคือ +SIND: 10 บอกเราว่าโมดูลสามารถเห็นซิมการ์ดหรือไม่ หากตรวจพบซิมการ์ดทุก ๆ ฟิลด์จะเป็น 1; หากตรวจไม่พบซิมการ์ดทุกช่องเป็น 0 3.) รอการเชื่อมต่อเครือข่ายก่อนที่คุณจะเริ่มส่งคำสั่ง หลังจากการตอบสนอง +SIND: 10 โมดูลจะเริ่มพยายามเชื่อมต่อกับเครือข่ายโดยอัตโนมัติ รอจนกว่าคุณจะได้รับ repsones ต่อไปนี้: +SIND: 11 +SIND: 3 +SIND: 4 การตอบสนอง +SIND จากโมดูลเซลลูลาร์จะบอกสถานะของโมดูล ความหมายของการตอบสนองอย่างรวดเร็วมีดังนี้ 0 ถอดซิมการ์ดออก 1 ซิมการ์ด ใส่ 2 เสียงเรียกเข้า 3 โมดูล AT พร้อมใช้งานบางส่วน 4 โมดูล AT พร้อมโดยสิ้นเชิง 5 ID ของการโทรออก 6 การโทรออกซึ่งมี ID = 7 บริการเครือข่ายคือ ใช้ได้สำหรับการโทรฉุกเฉิน 8 เครือข่ายหายไป 9 เปิดเสียง 10 แสดงสถานะของสมุดโทรศัพท์แต่ละเล่มหลังจากวลีเริ่มต้น 11 ลงทะเบียนกับเครือข่ายแล้ว หลังจากลงทะเบียนในเครือข่ายแล้ว คุณสามารถเริ่มโต้ตอบได้ ต่อไปนี้คือคำสั่งง่ายๆ และมีประโยชน์บางประการในการเริ่มต้น: เมื่อต้องการโทร: คำสั่ง AT - ATDxxxyyyzzzz หมายเลขโทรศัพท์ที่มีรูปแบบ: (xxx)yyy-zzz ลอง ---- cell.print("ATDxxxyyyyzzzz"); หากคุณโทรออก ตรวจสอบให้แน่ใจว่าได้อ้างอิงแผ่นข้อมูลอุปกรณ์เพื่อต่อไมโครโฟนและลำโพงเข้ากับแผงป้องกัน ในการส่งข้อความ txt: คำสั่ง AT - AT+CMGF=1 คำสั่งนี้ตั้งค่าโหมดข้อความตัวอักษรเป็น 'ข้อความ' คำสั่ง AT = AT+CMGS="xxxyyyzzzz"(carriage return)'Text to send'(CTRL+Z) คำสั่งนี้อธิบายสับสนเล็กน้อย หมายเลขโทรศัพท์ในรูปแบบ (xxx)ปปปป-zzzz อยู่ในอัญประกาศคู่ กด 'Enter' หลังจากปิดใบเสนอราคา ถัดไปป้อนข้อความที่จะส่ง สิ้นสุดคำสั่ง AT โดยส่ง CTRL+Z ไม่สามารถส่งอักขระนี้จากเทอร์มินัลของ Arduino ใช้โปรแกรมเทอร์มินัลสำรอง เช่น Hyperterminal, Tera Term, Bray Terminal หรือ X-CTU โมดูล SM5100B สามารถทำได้มากกว่านี้! ตรวจสอบเอกสารข้อมูลในหน้าผลิตภัณฑ์เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโมดูล*/เปิดพอร์ตอนุกรมในเทอร์มินัล บน Mac สามารถทำได้โดยการพิมพ์: screen /dev/tty.usbmodemfa131 9600 (แทนที่ tty.usbmodemfa131 ด้วยที่อยู่อนุกรมของ Arduino) รอดูลำดับต่อไปนี้ส่งคืน: กำลังเริ่มการสื่อสาร 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: ข้อความ

ข้อความ
ข้อความ

ดาวน์โหลดและติดตั้ง SerialGSM ลงในไลบรารี Arduino ของคุณ

หากต้องการส่งข้อความ โปรดไปที่บทแนะนำโมดูลเซลลูลาร์ของ Tronixstuff และใช้โค้ดตัวอย่าง 26.3:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

หากคุณต้องการรันโค้ดตัวอย่างเพื่อรับข้อความ ให้ต่อ LED เข้ากับพิน 8 และใส่เป็นอนุกรมด้วยตัวต้านทาน 220 โอห์มกับกราวด์

หากต้องการส่งข้อความ โปรดไปที่บทแนะนำโมดูลเซลลูลาร์ของ 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: // // //**************************************************** ************************************ #include #define BUFFSIZ 90 // ตั้งค่าบัฟเฟอร์อาร์เรย์ถ่าน at_buffer [บัฟซิซ]; ถ่าน buffidx; //ตัวแปรสถานะเครือข่าย int network_registered; int network_AT_ready; //รหัสตัวแปรสถานะ int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // จะเก็บอักขระที่เข้ามาจาก Serial Port ถ่าน incoming_char=0; //สร้างพอร์ตอนุกรม 'ปลอม' พิน 2 คือพิน Rx พิน 3 คือพิน Tx ซอฟต์แวร์เซลล์อนุกรม(2, 3); การตั้งค่าเป็นโมฆะ () {// เริ่มต้นพอร์ตอนุกรม Arduino สำหรับการดีบัก Serial.begin(9600); //เริ่มต้นพอร์ตอนุกรมเสมือนเพื่อพูดคุยกับโทรศัพท์ เซลล์.begin(9600); //สวัสดีชาวโลก. Serial.println("กำลังเริ่มการสื่อสาร SM5100B…"); ล่าช้า (1000); //ตั้งค่าสถานะเครือข่ายเริ่มต้น network_registered = 0; network_AT_ready = 0; } // อ่านสตริง AT จากเกราะป้องกันมือถือเป็นโมฆะ readATString (เป็นโมฆะ) { ถ่าน c; buffidx= 0; // เริ่มต้นที่จุดเริ่มต้นสำหรับ (x = 0; x 0) { c=cell.read(); ถ้า (c == -1) { at_buffer[buffidx] = '\0'; กลับ; } if (c == '\n') { ดำเนินการต่อ; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; กลับ; } at_buffer[buffidx++]= c; } } } // ประมวลผลสตริง AT เป็นโมฆะ ProcessATString () { if(strstr (at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println ("เครือข่ายเครือข่ายไม่พร้อมใช้งาน"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("ลงทะเบียนเครือข่ายแล้ว"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("เครือข่าย AT Ready"); } } void loop() { /* หากถูกเรียกเป็นครั้งแรก ให้วนซ้ำจนกว่าเครือข่ายและ AT จะพร้อม */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; ในขณะที่ (network_registered == 0 || network_AT_ready == 0) { readATString (); กระบวนการ ATString(); } } if(firstTimeInOtherLoop == 1){ //มองหาสายเรียกเข้า if(strstr(at_buffer, "+CPAS: 3") != 0) { //รับสายโทรศัพท์ cell.println ("ATA"); firstTimeInOtherLoop = 0; } } }

ภาพ
ภาพ

คุณพบว่าสิ่งนี้มีประโยชน์ สนุก หรือสนุกสนานหรือไม่ ติดตาม @madeineuphoria เพื่อดูโครงการล่าสุดของฉัน

แนะนำ: