SerialGSM cho khiên GSM mà không cần SoftwareSerial


7

SerialGSM là một thư viện để đơn giản hóa các lá chắn GSM.

Đây là mã mẫu để gửi SMS:

#include <SerialGSM.h>
#include <SoftwareSerial.h>
SerialGSM cell(2,3);
void setup(){
 Serial.begin(9600);
 cell.begin(9600);
  cell.Verbose(true);
  cell.Boot();
  cell.FwdSMS2Serial();
  cell.Rcpt("+972123456789");
  cell.Message("hello world");
  cell.SendSMS();
}


void loop(){
  if (cell.ReceiveSMS()){
    Serial.println(cell.Message());
    cell.DeleteAllSMS();
  }

}

Như bạn thấy, anh ấy sử dụng phần mềm nối tiếp.

Tôi dự định sử dụng nó cho luận án trường học của tôi, nhưng tôi đang sử dụng một tấm khiên, vì vậy tôi sẽ không sử dụng Phần mềm nối tiếp.

Điều làm phiền tôi là dòng này

SerialGSM cell(2,3);

Trong trường hợp của tôi, tôi có khai báo như thế này không?:

SerialGSM cell(0,1); 

Hoặc sẽ có xung đột với nối tiếp?

EDIT: Nói cách khác, làm cách nào để khai báo đối tượng SeralGSM bằng cách sử dụng nối tiếp phần cứng và không nối tiếp phần mềm?

Câu trả lời:


5

SerialGSMđược thiết kế để hoạt động với phần mềm nối tiếp, như bạn có thể thấy điều đó từ khai báo lớp trong SerialGSM.htiêu đề:

class SerialGSM : public SoftwareSerial {
...
};

Thật không may, thay đổi nó để sử dụng nối tiếp phần cứng phức tạp hơn vẻ ngoài của nó. Có hai cách tiềm năng bạn có thể thực hiện:

  1. Xuất phát từ HardwareSerialthay vì SoftwareSerial. Điều này sẽ mang lại cho bạn sự linh hoạt, nhưng bạn phải chăm sóc chuyển tất cả dữ liệu phù hợp cho nhà HardwareSerialxây dựng, điều này khá lộn xộn.

  2. Đừng bắt nguồn từ bất cứ điều gì. Sử dụng Serialđối tượng toàn cục và thay thế thủ công tất cả các lệnh gọi hàm nối tiếp bằng các Serial.xxx()tương đương của chúng . Điều này có thể dễ dàng hơn, nhưng nó giới hạn bạn vào một cổng nối tiếp cụ thể.

Cả hai cách tiếp cận đều liên quan đến khá nhiều mã hóa, vì vậy chúng không phải là những nhiệm vụ tầm thường. Cũng cần lưu ý rằng SerialGSMhiện đang sử dụng Serialđối tượng toàn cầu để xuất thông tin gỡ lỗi. Bạn phải xóa hoặc sửa đổi điều đó trước khi chuyển đổi sang phần cứng nối tiếp, nếu không nó có thể gây trở ngại.


Cảm ơn rất nhiều! Ok, nếu đó là trường hợp, tôi có thể sử dụng nó trong chế độ Phần mềm nối tiếp. Bây giờ, tôi có một đơn vị gps mà tôi muốn sử dụng là tốt. Điều đó có nghĩa là, cắm khiên và sử dụng thư viện SerailGSM, đồng thời cắm gps vào các cổng 0 (và 1 nếu tôi muốn gps nhận dữ liệu) và sử dụng Serial.begin (4800); để bắt đầu công cụ nhận nối tiếp?
dùng1584421

Điều đó sẽ hoạt động, mặc dù hãy nhớ rằng SerialGSMđầu ra thông tin gỡ lỗi cho nối tiếp phần cứng. Điều đó có nghĩa là nếu bạn kết nối TX phần cứng với GPS, thì có thể nó sẽ bị lỗi.
Peter Bloomfield

OK, một cách tiếp cận khác sau đó sẽ là sử dụng ví dụ sẵn sàng của arduinos về việc gửi sms. điều này là tôi có lá chắn này sparkfun.com/products/9607 , với chipset SM5100B. Bạn có biết ví dụ arduinos của việc gửi SMS sẽ hoạt động với tấm khiên này không?
dùng1584421

Tôi chưa bao giờ sử dụng cái khiên đó, vì vậy tôi sợ rằng tôi không biết. Dường như SparkFun có mã mẫu riêng cho nó: github.com/sparkfun/SM5100B_Cellular_Shield/blob/master/iêu
Peter Bloomfield

2

Đừng bận tâm, tôi đã sử dụng ví dụ SMS GSM từ arduino 1.0.5 (Không biết phiên bản arduino IDE có bao gồm cái này) và hoạt động tốt.

Nếu bạn đang xem xét sử dụng thư viện serialGSM thì không cần!

THẬN TRỌNG: Trong thư viện của Arduino, khi bạn khai báo số điện thoại, bạn phải sử dụng định dạng quốc tế

(Cảm ơn bloomfield về thông tin bạn đã cung cấp trong câu trả lời trước)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.