Mục lục:

Hướng dẫn sử dụng Arduino Cellular Shield: 9 bước (kèm hình ảnh)
Hướng dẫn sử dụng Arduino Cellular Shield: 9 bước (kèm hình ảnh)

Video: Hướng dẫn sử dụng Arduino Cellular Shield: 9 bước (kèm hình ảnh)

Video: Hướng dẫn sử dụng Arduino Cellular Shield: 9 bước (kèm hình ảnh)
Video: Arduino | Hướng dẫn sử dụng chi tiết LCD 2024, Tháng bảy
Anonim
Hướng dẫn sử dụng Arduino Cellular Shield
Hướng dẫn sử dụng Arduino Cellular Shield

Arduino Cellular Shield cho phép bạn thực hiện các cuộc gọi điện thoại di động và gửi tin nhắn văn bản. Bộ não của tấm chắn này là SM5100B, là một mô-đun di động mạnh mẽ có khả năng thực hiện nhiều tác vụ của hầu hết các điện thoại di động tiêu chuẩn. Tấm chắn này yêu cầu sử dụng thẻ SIM để kết nối với mạng di động. Hướng dẫn sau đây là hướng dẫn cơ bản để khởi tạo lá chắn và cả gửi và nhận tin nhắn văn bản cũng như cuộc gọi điện thoại. Để tìm hiểu thêm về chức năng của mô-đun, hãy nhớ xem bảng dữ liệu trên trang sản phẩm của Sparkfun.

Bước 1: Đi lấy nội dung

Đi lấy nội dung
Đi lấy nội dung

Bạn sẽ cần:

(x1) Tấm chắn di động (x1) Đầu cắm Arduino có thể xếp chồng lên nhau (x1) Ăng-ten 4 băng tần (x1) Arduino Uno

(Lưu ý rằng một số liên kết trên trang này là liên kết liên kết. Điều này không thay đổi chi phí của mặt hàng đối với bạn. Tôi tái đầu tư bất kỳ số tiền thu được nào tôi nhận được để thực hiện các dự án mới. Nếu bạn muốn có bất kỳ đề xuất nào cho các nhà cung cấp thay thế, vui lòng cho tôi biết.)

Bước 2: Tiêu đề hàn

Tiêu đề hàn
Tiêu đề hàn
Tiêu đề hàn
Tiêu đề hàn
Tiêu đề hàn
Tiêu đề hàn

Chèn các tiêu đề vào tấm chắn và hàn chúng vào vị trí.

Bước 3: Chèn

Chèn
Chèn
Chèn
Chèn

Chèn các chân tiêu đề vào các ổ cắm trên Arduino.

Bước 4: Resolder

Resolder
Resolder

Kết nối của cáp ăng-ten với mô-đun SM5100B thường không tốt lắm. Đánh bóng lại từng kết nối của cáp với mô-đun để đảm bảo kết nối.

Bước 5: Gắn Antenna

Gắn Antenna
Gắn Antenna
Gắn Antenna
Gắn Antenna

Luồn ăng ten vào cáp ăng ten.

Bước 6: Lắp thẻ SIM

Lắp thẻ SIM
Lắp thẻ SIM
Lắp thẻ SIM
Lắp thẻ SIM
Lắp thẻ SIM
Lắp thẻ SIM
Lắp thẻ SIM
Lắp thẻ SIM

Gắn chắc chắn thẻ SIM vào ổ cắm thẻ SIM.

Bước 7: Khởi tạo

Khởi tạo
Khởi tạo

Chạy mã sau trên Arduino:

/*

SparkFun Cellular Shield - Bản phác thảo mẫu truyền qua SparkFun Electronics do Ryan Owens viết 3 / Mô tả: Bản phác thảo này được viết để giao diện Arduino Duemillanove với Cellular Shield từ SparkFun Electronics. Lá chắn di động có thể được mua tại đây: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Trong bản phác thảo này, các lệnh nối tiếp được chuyển từ một chương trình đầu cuối đến mô-đun di động SM5100B; và phản hồi từ mô-đun di động được đăng trong thiết bị đầu cuối. Thông tin thêm được tìm thấy trong các bình luận phác thảo. Thẻ SIM đã kích hoạt phải được lắp vào ngăn chứa thẻ SIM trên bo mạch để sử dụng thiết bị! Bản phác thảo này sử dụng thư viện NewSoftSerial do Mikal Hart của Arduiniana viết. Thư viện có thể được tải xuống tại URL này: https://arduiniana.org/libraries/NewSoftSerial/ Mã này được cung cấp theo Giấy phép Ghi công Creative Commons. Bạn có thể tìm thấy thêm thông tin tại đây: https://creativecommons.org/licenses/by/3.0/ (Sử dụng mã của chúng tôi một cách tự do! Vui lòng chỉ cần cung cấp cho chúng tôi tín dụng khi đến hạn. Cảm ơn!) * / #Include // Bao gồm NewSoftSerial thư viện để gửi các lệnh nối tiếp đến mô-đun di động. #include // Được sử dụng cho các thao tác chuỗi char incoming_char = 0; // Sẽ giữ ký tự đến từ Cổng nối tiếp. Ô SoftwareSerial (2, 3); // Tạo một cổng nối tiếp 'giả'. Chân 2 là chân Rx, chân 3 là chân Tx. void setup () {// Khởi tạo các cổng nối tiếp để giao tiếp. Serial.begin (9600); cell.begin (9600); //Bắt đầu nào! Serial.println ("Khởi động Giao tiếp SM5100B…"); } void loop () {// Nếu một ký tự đến từ mô-đun di động… if (cell.available ()> 0) {incoming_char = cell.read (); // Lấy ký tự từ cổng nối tiếp di động. Serial.print (incoming_char); // In ký tự đến vào terminal. } // Nếu một ký tự đến từ terminal tới Arduino… if (Serial.available ()> 0) {incoming_char = Serial.read (); // Lấy ký tự đến từ terminal if (incoming_char == '~') // Nếu là dấu ngã… incoming_char = 0x0D; //… chuyển đổi thành dấu xuống dòng else if (incoming_char == '^') // Nếu đó là dấu mũ lên… incoming_char = 0x1A; //… chuyển đổi sang ctrl-Z cell.print (incoming_char); // Gửi ký tự đến mô-đun di động. Serial.print (incoming_char); // Đưa nó trở lại terminal}} / * SM5100B Quck Reference cho AT Command Set * Trừ khi các lệnh AT được ghi chú khác được kết thúc bằng cách nhấn phím 'enter'. 1.) Đảm bảo rằng băng tần GSM thích hợp đã được chọn cho quốc gia của bạn. Đối với Hoa Kỳ, băng tần phải được đặt thành 7. Để đặt băng tần, hãy sử dụng lệnh sau: AT + SBAND = 7 2.) Sau khi bật nguồn Arduino với tấm chắn được lắp đặt, hãy xác minh rằng mô-đun đọc và nhận dạng thẻ SIM. Với một cửa sổ terimal đang mở và được đặt thành cổng Arduino và 9600 buad, hãy bật nguồn Arduino. Trình tự khởi động sẽ giống như sau: Khởi động Giao tiếp SM5100B… + SIND: 1 + SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Giao tiếp với mô-đun bắt đầu sau khi dòng đầu tiên được hiển thị. Dòng giao tiếp thứ hai, + SIND: 10, cho chúng tôi biết liệu mô-đun có thể nhìn thấy thẻ SIM hay không. Nếu thẻ SIM được phát hiện, mọi trường khác là 1; nếu thẻ SIM không được phát hiện, mọi trường khác đều là 0. 3.) Chờ kết nối mạng trước khi bạn bắt đầu gửi lệnh. Sau phản hồi + SIND: 10, mô-đun sẽ tự động bắt đầu cố gắng kết nối với mạng. Chờ cho đến khi bạn nhận được các repsones sau: + SIND: 11 + SIND: 3 + SIND: 4 Phản hồi + SIND từ mô-đun di động cho biết trạng thái của mô-đun. Dưới đây là bản tóm tắt nhanh các ý nghĩa phản hồi: 0 Đã tháo thẻ SIM 1 Đã lắp thẻ SIM 2 Giai điệu chuông 3 Mô-đun AT đã sẵn sàng một phần 4 Mô-đun AT đã hoàn toàn sẵn sàng 5 ID của các cuộc gọi đã giải phóng 6 Cuộc gọi đã phát hành có ID = 7 Dịch vụ mạng là khả dụng cho cuộc gọi khẩn cấp 8 Mất mạng 9 BẬT âm thanh 10 Hiển thị trạng thái của từng danh bạ sau khi nhập cụm từ 11 Đã đăng ký vào mạng Sau khi đăng ký trên mạng, bạn có thể bắt đầu tương tác. Dưới đây là một số lệnh đơn giản và hữu ích để bắt đầu: Để thực hiện cuộc gọi: Lệnh AT - ATDxxxyyyzzzz Số điện thoại có định dạng: (xxx) yyy-zzz thử ---- cell.print ("ATDxxxyyyzzzz"); Nếu bạn gọi điện, hãy đảm bảo tham chiếu biểu dữ liệu thiết bị để gắn micrô và loa vào tấm chắn. Để gửi tin nhắn txt: Lệnh AT - AT + CMGF = 1 Lệnh này đặt chế độ tin nhắn văn bản thành 'văn bản'. Lệnh AT = AT + CMGS = "xxxyyyzzzz" (xuống dòng) 'Văn bản cần gửi' (CTRL + Z) Lệnh này hơi khó hiểu để mô tả. Số điện thoại, ở định dạng (xxx) yyy-zzzz nằm trong dấu ngoặc kép. Nhấn 'enter' sau khi đóng phần trích dẫn. Tiếp theo, nhập văn bản cần gửi. Kết thúc lệnh AT bằng cách gửi CTRL + Z. Không thể gửi ký tự này từ thiết bị đầu cuối của Arduino. Sử dụng một chương trình đầu cuối thay thế như Hyperterminal, Tera Term, Bray Terminal hoặc X-CTU. Mô-đun SM5100B có thể làm được nhiều hơn thế! Xem bảng dữ liệu trên trang sản phẩm để tìm hiểu thêm về mô-đun. * /Mở cổng nối tiếp trong thiết bị đầu cuối. Trên máy Mac, điều này được thực hiện bằng cách nhập: screen /dev/tty.usbmodemfa131 9600 (thay tty.usbmodemfa131 bằng địa chỉ nối tiếp Arduino của bạn) Chờ để xem chuỗi sau được trả về: Bắt đầu giao tiếp SM5100B… + SIND: 3 + SIND: 4 + SIND: 11 (Nếu trình tự này không được trả lại, hãy kiểm tra các mã lỗi được liệt kê ở cuối đoạn mã trên và gỡ lỗi thích hợp. Bạn có thể cần đặt mô-đun để sử dụng ở Bắc Mỹ - xem bên dưới - trước khi nó đăng ký vào mạng (tức là + SIND 11)) Gửi các lệnh sau tới cổng nối tiếp: Gửi lệnh này cho việc sử dụng ở Bắc Mỹ: AT + SBAND = 7 Đặt thời gian hiện tại - yy / mm / dd: AT + CCLK = "13/05/15, 11: 02:00 "Gửi cuộc gọi kiểm tra: ATD4155551212

Bước 8: Tin nhắn văn bản

Tin nhắn
Tin nhắn

Tải xuống và cài đặt SerialGSM vào thư viện Arduino của bạn.

Để gửi tin nhắn văn bản, hãy truy cập hướng dẫn mô-đun di động Tronixstuff và sử dụng mã ví dụ 26.3:

Nếu bạn muốn chạy mã ví dụ để nhận văn bản, hãy kết nối đèn LED với chân 8 và đặt nó mắc nối tiếp với điện trở 220 ohm nối đất.

Để gửi tin nhắn văn bản, hãy truy cập hướng dẫn mô-đun di động Tronixstuff và sử dụng mã ví dụ 26.5:

Nhắn tin một trong các lệnh sau vào mô-đun di động của bạn:

// bật đèn LED # a1

// tắt đèn LED # a0

Bước 9: Giọng nói

Tiếng nói
Tiếng nói
Tiếng nói
Tiếng nói
Tiếng nói
Tiếng nói

Kết nối micrô và loa với tấm chắn bằng cáp âm thanh nối đất. Dây tín hiệu trung tâm phải đi đến các đầu cuối cộng âm thanh và tấm chắn phải đi đến các cực âm tương ứng trên tấm chắn. Các loại cáp này phải được kết nối tương tự ở bên micrô và bên loa.

Để bắt đầu cuộc gọi thoại, hãy tải lên mã sau:

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

// THỰC HIỆN CUỘC GỌI // // CHUYỂN GIAO MÃ DỰA TRÊN: // // //********************************************************************************** #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 // Thiết lập mảng đệm char at_buffer [BUFFSIZ]; char buffidx; // Các biến trạng thái mạng int network_registered; int mạng_AT_ready; // Mã các biến trạng thái int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Sẽ giữ ký tự đến từ Cổng nối tiếp. char incoming_char = 0; // Tạo một cổng nối tiếp 'giả'. Chân 2 là chân Rx, chân 3 là chân Tx. Ô SoftwareSerial (2, 3); void setup () {// Khởi tạo cổng nối tiếp Arduino để gỡ lỗi. Serial.begin (9600); // Khởi tạo cổng nối tiếp ảo để nói chuyện với Điện thoại. cell.begin (9600); //Chào thế giới. Serial.println ("Khởi động Giao tiếp SM5100B…"); chậm trễ (1000); // Đặt trạng thái mạng ban đầu network_registered = 0; mạng_AT_ready = 0; } // Đọc chuỗi AT từ lá chắn di động void readATString (void) {char c; buffidx = 0; // bắt đầu từ begninning for (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; trở lại; } if (c == '\ n') {tiếp tục; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; trở lại; } at_buffer [buffidx ++] = c; }}} // Xử lý chuỗi AT void ProcessATString () {if (strstr (at_buffer, "+ SIND: 8")! = 0) {network_registered = 0; Serial.println ("Mạng mạng Không có sẵn"); } if (strstr (at_buffer, "+ SIND: 11")! = 0) {network_registered = 1; Serial.println ("mạng đã đăng ký"); } if (strstr (at_buffer, "+ SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("mạng AT Sẵn sàng"); }} void loop () {/ * Nếu được gọi lần đầu tiên, hãy lặp cho đến khi mạng và AT sẵn sàng * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Tìm cuộc gọi đến if (strstr (at_buffer, "+ CPAS: 3")! = 0) {// Trả lời phone cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Hình ảnh
Hình ảnh

Bạn có thấy điều này hữu ích, vui vẻ hay giải trí không? Theo dõi @madeineuphoria để xem các dự án mới nhất của tôi.

Đề xuất: