Mục lục:
- Bước 1: Đi lấy nội dung
- Bước 2: Tiêu đề hàn
- Bước 3: Chèn
- Bước 4: Resolder
- Bước 5: Gắn Antenna
- Bước 6: Lắp thẻ SIM
- Bước 7: Khởi tạo
- Bước 8: Tin nhắn văn bản
- Bước 9: Giọng nói
Video: Hướng dẫn sử dụng Arduino Cellular Shield: 9 bước (kèm hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
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
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
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 các chân tiêu đề vào các ổ cắm trên Arduino.
Bước 4: 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
Luồn ăng ten vào cáp ăng ten.
Bước 6: 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
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
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
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; }}}
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:
Tạo Trạm vũ trụ trong TinkerCad Codeblock -- Hướng dẫn dễ dàng: 7 bước (kèm hình ảnh)
Tạo Trạm Vũ trụ trong TinkerCad Codeblock || Hướng dẫn dễ dàng: Mặc dù ý nghĩ sống trong không gian có vẻ giống như khoa học viễn tưởng, nhưng khi bạn đọc điều này, Trạm vũ trụ quốc tế đang quay quanh trái đất với tốc độ năm dặm / giây, quay quanh trái đất một lần cứ sau 90 phút. Trong dự án này, bạn sẽ học
Hướng dẫn Arduino Uno # 2 - Bài hát Buzzer: 4 bước (kèm hình ảnh)
Hướng dẫn Arduino Uno # 2 - Bài hát Buzzer: Xin chào mọi người, vì tôi thấy rằng hướng dẫn đầu tiên của tôi là một canh bạc tốt, tôi quyết định rằng tôi sẽ thực hiện một loạt các hướng dẫn về Arduino Uno cho các bạn
Cách sử dụng Bo mạch đài FM Si4703 với RDS - Hướng dẫn Arduino: 5 bước (kèm hình ảnh)
Cách sử dụng Bo mạch đài FM Si4703 Với RDS - Hướng dẫn Arduino: Đây là bo mạch đánh giá cho chip bắt sóng FM Si4703 của Phòng thí nghiệm Silicon. Không chỉ là một đài FM đơn giản, Si4703 còn có khả năng phát hiện và xử lý cả thông tin của Dịch vụ Dữ liệu Vô tuyến (RDS) và Dịch vụ Dữ liệu Phát sóng Vô tuyến (RBDS).
Bộ đếm xem hướng dẫn + Hướng dẫn ESP8266: 6 bước (có hình ảnh)
Bộ đếm lượt xem hướng dẫn + Hướng dẫn ESP8266: Bộ đếm số người đăng ký cho Youtube và Facebook khá phổ biến, nhưng tại sao không tạo một cái gì đó tương tự cho Bộ đếm hướng dẫn? Đó chính xác là những gì chúng ta sẽ làm: trong hướng dẫn này, chúng tôi sẽ tạo bộ đếm lượt xem Người hướng dẫn! lượt xem sẽ phải được captu
Xây dựng Robot quản gia của riêng bạn !!! - Hướng dẫn, Hình ảnh và Video: 58 Bước (có Hình ảnh)
Xây dựng Robot quản gia của riêng bạn !!! - Hướng dẫn, Hình ảnh và Video: CHỈNH SỬA: Xem thêm thông tin về các dự án của tôi, hãy xem trang web mới của tôi: narobo.comTôi cũng làm tư vấn cho các dự án / sản phẩm robot, cơ điện tử và hiệu ứng đặc biệt. Hãy xem trang web của tôi - narobo.com để biết thêm chi tiết. Ai cũng muốn có một robot quản gia nói chuyện với y