Lập trình GSM Arduino. Gửi SMS qua mô-đun Arduino và GSM NEOWAY M590

Thư viện này cho phép bạn thực hiện hầu hết các thao tác cơ bản được thực hiện bởi điện thoại GSM: thực hiện các cuộc gọi thoại, gửi và nhận SMS cũng như kết nối Internet qua GPRS.

Bảng mở rộng GSM chứa một modem truyền dữ liệu nhận được tới nó qua mạng GSM. cổng nối tiếp. Mọi hoạt động được modem thực hiện dưới dạng một chuỗi các lệnh AT. Để cải thiện khả năng đọc mã, thư viện tóm tắt các chức năng cấp thấp hoạt động với modem và thẻ SIM. Modem GSM tương tác với Arduino thông qua giao diện nối tiếp sử dụng thư viện SoftwareSerial.

Mỗi lệnh được thực thi bởi modem, theo quy luật, là một đoạn của chuỗi lệnh nhằm thực hiện một chức năng. Thư viện GSM được thiết kế với mục đích này và có khả năng nhận/trả lại thông tin ở bất kỳ giai đoạn nào của chuỗi lệnh.

Cấu trúc thư viện

Chức năng của thư viện GSM khá rộng nên nó kết hợp nhiều nhiều lớp học khác nhau:

  • Lớp học GSM chịu trách nhiệm điều khiển modem vô tuyến. Lớp này chứa các chức năng cấp thấp để kết nối và đăng ký thẻ mở rộng trong mạng GSM. Một thể hiện của lớp này phải được khai báo trong tất cả các chương trình sử dụng GSM/GPRS.
  • Lớp học GSMThoạiCuộc Gọi chịu trách nhiệm về các cuộc gọi thoại.
  • Lớp học GSM_SMS chịu trách nhiệm gửi và nhận tin nhắn SMS.
  • Lớp học GPRS chịu trách nhiệm kết nối với Internet.
  • Trong lớp GSMKhách hàng một ứng dụng khách tương tự như ứng dụng khách trong thư viện Ethernet và WiFi đã được triển khai.
  • Trong lớp Máy chủ GSM một máy chủ tương tự như máy chủ trong thư viện Ethernet và WiFi đã được triển khai. Lưu ý: Một số ISP/nhà khai thác chặn các kết nối đến từ mạng Internet toàn cầu, chỉ cho phép kết nối mạng nội bộ. Kiểm tra với nhà cung cấp dịch vụ của bạn để biết các hạn chế dữ liệu hiện hành.
  • Rất nhiều lớp trợ giúp như Máy quét GSM, GSMModem và vân vân.

Thư viện Ethernet tương thích

Các nhà phát triển đã nỗ lực hết sức để đảm bảo rằng thư viện GSM tương thích nhất có thể với thư viện Ethernet. Nhờ đó, việc chuyển mã sử dụng thư viện Ethernet hoặc WiFi sang Arduino bằng bảng mở rộng GSM sẽ khá đơn giản. Tuy nhiên, để chạy các chương trình được viết cho Ethernet trên thẻ mở rộng GSM, chỉ sao chép mã là chưa đủ. Điều này có thể yêu cầu những thay đổi nhỏ trong chương trình, chẳng hạn như kết nối thư viện GSM và GPRS, lấy cài đặt mạng từ nhà cung cấp, v.v.

Ví dụ

Tất cả các ví dụ về làm việc với thẻ mở rộng GSM có thể được chia thành hai nhóm. Nhóm đầu tiên là các ví dụ thể hiện khả năng của bo mạch (ví dụ: gửi tin nhắn SMS, kết nối Internet, v.v.). Nhóm thứ hai là các công cụ giúp bạn gỡ lỗi chức năng của thư viện và phần cứng Arduino ở mức độ thấp.

Chào buổi chiều Một lần nữa, một bài đánh giá đa dạng về linh kiện điện tử Trung Quốc, như thường lệ về mọi thứ một chút, tôi sẽ cố gắng nói ngắn gọn, nhưng liệu nó có hiệu quả không? Thế là gặp nhau báo động GSM có giá lên tới 700 ₽. Hấp dẫn? Vui lòng sử dụng "cắt"!

Bắt đầu nào! Trước khi bắt đầu, tôi khuyên bạn nên xem cái này, ít thành phần hơn và khả năng tự chủ cao hơn. Vì vậy, “thông số kỹ thuật”, các yêu cầu cơ bản về tín hiệu:

1) Thông báo khi cảm biến được kích hoạt.
2) Trong trường hợp mất điện, phải cung cấp một số quyền tự chủ.
3) Kiểm soát báo động qua SMS và cuộc gọi.

Do quá trình tạo cảnh báo mất vài tháng và một số người bán không còn bán các thành phần đã mua từ họ nữa nên các liên kết sẽ được cập nhật tới các sản phẩm từ những người bán khác có số lượng sản phẩm bán ra tối đa hoặc gần với mức tối đa và giá tốt nhất. Giá trong bài đánh giá là hiện tại kể từ ngày viết.

Danh sách những gì bạn sẽ cần:

Danh sách thay đổi

GSM_03_12_2016-14-38.hex- Đã sửa lỗi hoạt động của thiết bị với modem M590.
GSM_05_12_2016-13-45.hex- thêm lệnh memtest console, tối ưu hóa việc sử dụng RAM.
GSM_2016_12_06-15-43.hex- thêm đầu ra của kết quả lệnh vào bảng điều khiển, tối ưu hóa bộ nhớ. Chiếm dụng: 49% SRAM.
GSM_2016_12_07-10-59.hex- bây giờ số điện thoại đã được thêm và xóa một cách chính xác. Bận: 49% SRAM, 74% Bộ nhớ Flash.
GSM_2016_12_07-15-38.hex- thêm khả năng kết nối cảm biến chuyển động, kết nối với chân A0 (trong trong trường hợp này chân A0 được sử dụng làm kỹ thuật số). Đã thêm lệnh SMS PIROn, PIRTắt. Bận: 48% SRAM, 76% Bộ nhớ Flash.
GSM_2016_12_08-13-53.hex- Bây giờ, sau khi thực hiện thành công lệnh không gửi tin nhắn SMS phản hồi, thiết bị sẽ nhấp nháy đèn LED màu xanh lam một lần. Bây giờ, sau khi thực hiện sai lệnh mà không gửi tin nhắn SMS phản hồi, thiết bị sẽ nhấp nháy đèn LED màu xanh lam hai lần. Bây giờ, sau khi khởi tạo các thông số của thiết bị, nếu bật chế độ “im lặng” (SendSms = 0), thiết bị sẽ nhấp nháy đèn LED màu xanh lam thường xuyên trong 2 giây. Đã sửa lỗi khiến số này không phải lúc nào cũng bị xóa khỏi bộ nhớ bằng lệnh DeletePhone. Bận: 48% SRAM, 78% Bộ nhớ Flash.
GSM_2016_12_11-09-12.hex- Thêm lệnh điều khiển AddPhone và DeletePhone, cú pháp tương tự như lệnh SMS. Tối ưu hóa bộ nhớ. Bận: 43% SRAM, 79% Bộ nhớ Flash.
GSM_2017_01_03-22-51.hex- Hỗ trợ đã được triển khai cho các bộ mở rộng cổng I/O tương tự trên chip PCF8574, để kết nối thêm 8 cảm biến, bao gồm cả công tắc sậy. tìm kiếm tự độngđịa chỉ và cài đặt tự động mô-đun. Tên tiêu chuẩn của cảm biến và mức logic phản hồi của chúng được thay đổi bằng lệnh EditSensor. Nội dung của SMS cảnh báo cho cảm biến chính (chân D0) đã được thay đổi: “Báo động! Cảm biến chính! và cảm biến chuyển động (chân A0) “Báo động! Cảm biến PIR! Đã thêm lệnh EditSensor và I2CScan. Bận: 66% SRAM, 92% Bộ nhớ Flash.
GSM_2017_01_15-23-26.hex- Hỗ trợ modem A6_Mini. Kiểm soát tính sẵn có cung cấp điện bên ngoài(chân D7). Đã thêm lệnh SMS WatchPowerOn, WatchPowerOff. Đã thêm các lệnh console ListConfig, ListSensor. Bây giờ lệnh SMS EditSensor hoạt động chính xác. Đầu ra hơi cắt bớt thông tin gỡ lỗiđến màn hình cổng. Chiếm: 66% SRAM, 95% bộ nhớ Flash.
GSM_2017_01_16-23-54.hex- Bây giờ, trong tin nhắn phản hồi lệnh SMS “Thông tin”, trạng thái của cảm biến chuyển động cũng được báo cáo. Đã sửa lỗi đôi khi gửi tin nhắn SMS trả lời trống. Giờ đây, thiết bị không chỉ thông báo về việc tắt máy mà còn thông báo về việc nối lại nguồn điện bên ngoài. Tất cả các modem bắt đầu ít ồn ào hơn và giờ đây màn hình cổng đã sạch sẽ hơn một chút. Chiếm: 66% SRAM, 95% bộ nhớ Flash.
GSM_2017_02_04-20-23.hex- Đã sửa lỗi “Xem nguồn bật”. Bây giờ, sau khi vô hiệu hóa, “chân báo động” sẽ bị tắt. Bây giờ, sau khi xóa một số, bảng điều khiển sẽ hiển thị: Thông tin chính xác. Có thể đã sửa lỗi do đôi khi các tin nhắn SMS trả lời trống được gửi đi. Bận: 66% SRAM, 90% Bộ nhớ Flash.
GSM_2017_02_14-00-03.hex- Lúc này tin nhắn SMS được gửi mặc định, thông số SendSms lại bằng 1. Lúc này, khi các tiếp điểm của cảm biến sậy chính đóng (đóng cửa), thiết bị sẽ nhấp nháy đèn LED màu xanh trong 2 giây, báo hiệu hoạt động binh thương cảm biến Bận: 66% SRAM, 90% Bộ nhớ Flash.
GSM_2017_03_01-23-37.hex- Lệnh WatchPowerOn đã bị loại bỏ. Đã thêm lệnh bảng điều khiển WatchPowerOff, giống với lệnh SMS. Đã thêm lệnh WatchPowerOn1, WatchPowerOn2. WatchPowerOn1 - giám sát nguồn điện bên ngoài được bật nếu hệ thống báo động được trang bị, WatchPowerOn2 - giám sát nguồn điện bên ngoài luôn được bật. Đã thực hiện chức năng vũ trang và giải giáp thiết bị bên ngoài, các chân A1(D15) và A2(D16) được sử dụng cho việc này. Cảnh báo sẽ tắt/bật khi nó xuất hiện trên chân A1(D15) cấp độ cao+5V hoặc tại chân A2(D16) cấp thấp GND. Chân A1(D15) được kéo lên GND, chân A2(D16) được kéo lên +5V thông qua điện trở 20 (10) kOhm. Đã thêm các lệnh GuardButtonOn và GuardButtonOff. Bây giờ, sau khi kích hoạt, đèn LED màu đỏ sẽ nhấp nháy cho đến khi kiểm tra tính toàn vẹn của mạch công tắc sậy chính. Nếu mạch còn nguyên vẹn, đèn LED màu đỏ sẽ sáng lên. Chiếm: 66% SRAM, 95% bộ nhớ Flash.
GSM_2017_03_12-20-04.hex- Bây giờ giao diện điều khiển thậm chí còn sạch hơn, nhưng nếu được bật chê độ kiểm tra“TestOn”, sau đó thông tin bổ sung sẽ được hiển thị trong bảng điều khiển. Lỗi “Đã gửi!” đã được sửa; thông tin về việc gửi tin nhắn hiện được hiển thị chính xác trong bảng điều khiển. Đã sửa lỗi "lặp lại" cuộc gọi sai" Bây giờ yêu cầu số dư sẽ hoạt động chính xác trên tất cả các modem. Chiếm: 67% SRAM, 95% bộ nhớ Flash.
GSM_2017_04_16-12-00.hex- Đã sửa. Bây giờ các lệnh Thông tin và Tiền sẽ luôn gửi SMS phản hồi. Lệnh GuardButtonOn đã được thay thế bằng lệnh GuardButtonOn1 và GuardButtonOn2. Chiếm: 67% SRAM, 99% bộ nhớ Flash.
GSM_2017_04_21-09-43.hex - không được khuyến khích sử dụng, chỉ dành cho mục đích thử nghiệm, cảm ơn vì đã xác định lỗi :) - Bây giờ tham số sendms không ảnh hưởng đến việc gửi tin nhắn SMS để giám sát lưới điện. Đã thêm lệnh SMS DelayBeforeGuard chịu trách nhiệm về độ trễ khi kích hoạt, giá trị không thể vượt quá 255 giây. Đã thêm lệnh SMS DelayBeforeAlarm, chịu trách nhiệm trì hoãn việc gửi thông báo và bật “chân báo động” khi giá trị được kích hoạt không được vượt quá 255 giây; Các lệnh ClearSMS đã bị xóa, tin nhắn hiện sẽ tự động bị xóa khi nhận được. Chiếm: 68% SRAM, 100% bộ nhớ Flash.
GSM_2017_04_22-20-42.hex- Đã sửa nhiều lỗi. Các lệnh ClearSMS lại xuất hiện trong phần sụn. Tối ưu hóa bộ nhớ. Bận: 68% SRAM, 98% bộ nhớ Flash.
GSM_2017_04_23-17-50.hex- Bây giờ yêu cầu số dư sẽ hoạt động chính xác trên tất cả các modem. Việc kích hoạt và giải giáp với các thiết bị bên ngoài hiện hoạt động chính xác. Tin nhắn phản hồi SMS từ lệnh Thông tin không được để trống. Tối ưu hóa bộ nhớ. Bận: 68% SRAM, 98% bộ nhớ Flash.
GSM_2017_04_24-13-22.hex- Bây giờ các lệnh của bảng điều khiển chỉ được gửi đến mô-đun GSM nếu chế độ kiểm tra được bật. Giờ đây không còn sự phân chia giữa lệnh SMS và lệnh bảng điều khiển; tất cả các lệnh hiện có có thể được truyền cả qua SMS và qua bảng điều khiển. Lỗi với lệnh Thông tin có thể đã được sửa. Tối ưu hóa bộ nhớ. Bận: 68% SRAM, 94% Bộ nhớ Flash.
GSM_2017_04_25-20-54.hex- Đã sửa lỗi lệnh ListConfig thay đổi giá trị của sự kiện cuối cùng. Giờ đây, khi nhập lệnh qua bảng điều khiển, các tin nhắn SMS không cần thiết sẽ không được gửi. Lỗi với lệnh Thông tin có thể đã được sửa. Tối ưu hóa bộ nhớ. Chiếm: 66% SRAM, 94% Bộ nhớ Flash.
GSM_2017_04_30-12-57.hex- Đầu ra tạm thời được kích hoạt thông tin thêm vào bảng điều khiển khi gửi tin nhắn SMS và tạo phản hồi cho lệnh Thông tin. Lỗi với lệnh Thông tin có thể đã được sửa. Tối ưu hóa bộ nhớ. Bận: 66% SRAM, 92% Bộ nhớ Flash.
GSM_2017_05_06-11-52.hex- Đã sửa lỗi với chức năng DelayBeforeAlarm. Bận: 66% SRAM, 93% Bộ nhớ Flash.
GSM_2017_05_23-21-27.hex- Đầu ra thông tin trên bảng điều khiển đã được thay đổi một chút. Đã thêm hỗ trợ cho các mô-đun mở rộng cổng trên PCF8574A với các địa chỉ từ 0x38 đến 0x3f. Đã sửa lỗi c. Bây giờ thiết bị sẽ tự động khởi động lại sau các lệnh FullReset, ResetConfig, ResetPhone và nếu lệnh MemTest được thực thi thành công. Đã thêm lệnh WatchPowerTime. Bây giờ có thể đặt thời gian sau đó tin nhắn SMS về việc ngắt kết nối sẽ được gửi nguồn bên ngoài dinh dưỡng. Bận: 67% SRAM, 94% Bộ nhớ Flash.
GSM_2017_05_26-20-22.hex- Đã sửa lỗi khởi tạo bộ nhớ cảm biến bảng mở rộng. Cú pháp lệnh AddPhone đã được thay đổi. Đã thêm lệnh EditMainPhone. Nguyên lý hoạt động của hệ thống thông báo đã được thay đổi, khi kích hoạt cảm biến, tin nhắn SMS sẽ được gửi trước, sau đó mới thực hiện cuộc gọi thoại. Tin nhắn SMS báo động sẽ được gửi đến các số điện thoại có ký hiệu “S” (SMS). Cuộc gọi thoại sẽ được thực hiện tới các số có dấu “R” (Đổ chuông). Thông báo tắt/bật nguồn điện ngoài sẽ được gửi đến các số điện thoại có ký hiệu “P” (Nguồn). Đã thêm lệnh RingTime. Hiện tại có thể đặt thời lượng của cuộc gọi thoại báo động; tham số có thể có giá trị từ 10 đến 255 giây. Lệnh RingOn/RingOff giờ đây sẽ bật/tắt cảnh báo cuộc gọi thoại trên toàn cầu. Đã thêm lệnh ResetSensor. Chiếm: 68% SRAM, 99% bộ nhớ Flash.
GSM_2017_06_02-17-43.hex- Đã thêm tham số “I” (Thông tin) vào lệnh AddPhone và EditMainPhone, chịu trách nhiệm về thông báo tin nhắn về việc kích hoạt hoặc vô hiệu hóa thiết bị. Bây giờ sau khi thêm số chính, thiết bị sẽ tự động khởi động lại. Bây giờ bạn có thể nhập các số giống nhau vào bộ nhớ của thiết bị. Khi thêm các số trùng lặp thứ hai và các số tiếp theo, các thuộc tính “M”, “S”, “P” và “I” sẽ tự động bị xóa khỏi chúng. Những số này sẽ được sử dụng cho các cuộc gọi thoại lặp đi lặp lại khi cảm biến được kích hoạt. Đã sửa lỗi đầu ra bảng điều khiển không chính xác sau khi thực hiện lệnh AddPhone; hiện tại thông tin không được hiển thị tự động sau khi thêm số. Đã thêm lệnh Khởi động lại. Chiếm: 69% SRAM, 99% bộ nhớ Flash.
GSM_2017_06_11-00-07.hex- Bây giờ, một lần nữa, khi các điểm tiếp xúc của cảm biến sậy chính đóng (đóng cửa), thiết bị sẽ nhấp nháy đèn LED màu xanh lam trong 2 giây, cho biết cảm biến hoạt động bình thường, nhưng không tính đến việc thiết bị có được trang bị vũ khí hay không hoặc bị tước vũ khí. Lệnh RingOn/RingOff đã bị loại bỏ. Bây giờ thiết bị có thể được vô hiệu hóa trong khi có cuộc gọi báo động, bây giờ chúng được thực hiện trong lý lịch. Chiếm: 69% SRAM, 99% bộ nhớ Flash.
GSM_2017_07_04-21-52.hex- Bây giờ lệnh Tạm dừng không gửi SMS phản hồi. Các lệnh TestOn và TestOff đã bị xóa. Thuộc tính Quản lý đã bị xóa khỏi tất cả các số. Bận: 68% SRAM, 96% bộ nhớ Flash.
GSM_2017_07_24-12-02.hex- Đã thêm lệnh ReedSwitchOn/ReedSwitchOff để theo dõi cảm biến sậy chính, giờ đây nó có thể được bật/tắt giống như cảm biến chuyển động. Đã sửa lỗi trong lệnh Thông tin. Các lệnh TestOn và TestOff lại xuất hiện trong phần sụn. Bận: 68% SRAM, 96% bộ nhớ Flash.
GSM_2017_07_26-10-03.hex- Đã thêm lệnh ModemID. Tự động phát hiện modem chỉ được thực hiện nếu giá trị của tham số này là 0. Sau khi cài đặt giá trị tham số bằng 0, tự động khởi động lại thiết bị. Bận: 68% SRAM, 98% bộ nhớ Flash.
GSM_2017_08_03-22-03.hex- Bây giờ báo thức có thể điều khiển các thiết bị bên ngoài. Để điều khiển, đầu ra analog A3 được sử dụng (D17 - được sử dụng làm kỹ thuật số). Mức đầu ra logic (+5V hoặc GND) có thể được thay đổi; sau khi thay đổi mức thông qua lệnh cấu hình, thiết bị sẽ tự động khởi động lại. Thời lượng của tín hiệu điều khiển thiết bị bên ngoài có thể được thay đổi. Đã thêm các lệnh ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open. Một số thay đổi về logic của các lệnh điều khiển. Tối ưu hóa bộ nhớ. Chiếm: 68% SRAM, 99% bộ nhớ Flash.
GSM_2017_08_10-12-17.hex- Các lệnh SmsOn/SmsOff, ReedSwitchOn/ReedSwitchOff, PIROn/PIROff và mọi thứ liên quan đến chúng đã bị xóa. Lệnh DelayBeforeAlarm đã được thay thế bằng các lệnh mở rộng. Đã thay đổi đầu ra của lệnh Thông tin. Đầu ra của lệnh ListConfig tới bảng điều khiển đã được tối ưu hóa. Giờ đây, bất kỳ cảm biến kỹ thuật số nào có mức phản hồi cao hoặc thấp, bao gồm cả công tắc sậy, đều có thể được kết nối với chân D6 và A0. Chân D6 và A0 phải được nối đất (GND) thông qua điện trở 10 (20) kOhm. Nếu cảm biến được đặt ở mức phản hồi thấp (được bật ở chế độ chuyển mạch sậy), thì tính toàn vẹn của mạch sẽ được kiểm tra. Mức kích hoạt logic ở đầu vào D6 và A0 (+5V hoặc GND) có thể được thay đổi; sau khi thay đổi mức logic, thiết bị sẽ tự động khởi động lại. Đối với mỗi cảm biến (chính, phụ, bảng mở rộng PCF), khi được kích hoạt, thời gian riêng của cảm biến có thể được đặt, sau đó thông báo sẽ được gửi (SMS và/hoặc cuộc gọi thoại). "Cảm biến PIR" đã được đổi tên thành "Cảm biến thứ hai". Đã sửa lỗi hoạt động của thẻ mở rộng, lỗi khiến thiết bị luôn thông báo khi cảm biến được kích hoạt, bất kể thiết bị có được trang bị vũ khí hay không. Bây giờ bạn có thể chọn chế độ hoạt động trong đó thiết bị có thể giám sát các cảm biến của thẻ mở rộng cả ở chế độ trang bị (GuardOn) và ở chế độ tắt (GuardOff). Đã thêm các lệnh PCFForceOn/PCFForceOff, MainSensorLevelHigh/MainSensorLevelLow/MainSensorLevelOff, SecondSensorLevelHigh/SecondSensorLevelLow/SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeforeAlarm, PCFDelayBeforeAlarm. Chiếm: 68% SRAM, 99% bộ nhớ Flash.

*Các phiên bản phần sụn tiếp theo bao gồm những thay đổi so với các phiên bản trước.


Đã sử dụng Cổng Arduino Nano v3

D4- đầu ra của chân “báo động”; khi cảm biến được kích hoạt, tín hiệu mức cao sẽ được đặt trên chân này
D5- đầu ra nghịch đảo của chân “báo động”; khi cảm biến được kích hoạt, tín hiệu mức thấp sẽ được đặt trên chân này

D6- cảm biến sậy. Bắt đầu từ phiên bản GSM_2017_08_10-12-17.hex, mọi cảm biến kỹ thuật số có mức phản hồi cao hoặc thấp, bao gồm cả công tắc sậy, đều có thể được kết nối với chân D6. Chân D6 phải được kéo xuống đất (GND) thông qua điện trở 10 (20) kOhm.
D7- được kết nối với bộ chia điện áp từ nguồn điện + 5V bên ngoài. Cánh tay trên 2,2 kOhm, cánh tay dưới 3,3 kOhm.

Chia điện áp


D8- Modem TX
D9- Modem RX

D10- dẫn màu đỏ
D11- đèn LED màu xanh
D12- đèn LED màu xanh lá cây

Kết nối ngoại vi:
A0- Cảm biến chuyển động. Bắt đầu từ phiên bản GSM_2017_08_10-12-17.hex, mọi cảm biến kỹ thuật số có mức phản hồi cao hoặc thấp, bao gồm cả công tắc sậy, đều có thể được kết nối với chân A0. Chân A0 phải được kéo xuống đất (GND) thông qua điện trở 10 (20) kOhm.

A1- Đăng nhập cho Kiểm soát bên ngoài. Cảnh báo sẽ bật/tắt khi có mức +5V cao xuất hiện ở đầu vào.
A2- Đầu vào nghịch đảo cho điều khiển bên ngoài. Cảnh báo sẽ bật/tắt khi mức GND thấp xuất hiện ở đầu vào.

A3- Đầu ra (+5V hoặc GND) có thể định cấu hình để điều khiển các thiết bị bên ngoài. Khi nhận được lệnh điều khiển, giá trị ở đầu ra này sẽ thay đổi tùy thuộc vào giá trị được đặt trong một khoảng thời gian nhất định.

A4- SDA I2C
A5- SLC I2C
, để kết nối thêm 8 cảm biến.


Các lệnh điều khiển cho phần mềm hex

Chú ý!Đội ngũ cống hiến in đậm chỉ có thể được thực thi từ số chính vì chúng chịu trách nhiệm về cấu hình thiết bị. Các lệnh khác có thể được thực thi từ các số có thuộc tính “Quản lý”.

SMS - lệnh điều khiển không phân biệt chữ hoa chữ thường:
Thêm số điện thoại- Thêm số điện thoại. Tổng cộng, không thể thêm quá 9 số + 1 số chính, số này sẽ tự động được lưu vào bộ nhớ trong lần đầu tiên bạn gọi đến thiết bị sau khi khôi phục cài đặt gốc bằng lệnh Đặt lại điện thoại hoặc Đặt lại hoàn toàn. Những thứ kia. ai gọi đến máy trước sau khi khôi phục cài đặt gốc là “chính”, số này được nhập vào ô nhớ đầu tiên và không thể thay đổi hoặc xóa qua SMS. Không thể cộng hai số giống nhau.
Lệnh ví dụ:



Cú pháp lệnh:

Thêm số điện thoại- đội
: - dấu phân cách
5 - ghi vào ô nhớ thứ năm
+71234567890 - số điện thoại
Lên đến phiên bản GSM_2017_05_26-20-22.hex:
a - Thông số “Báo động” - Tin nhắn SMS sẽ được gửi đến các số có thông số này - tin nhắn về việc kích hoạt báo động và tin nhắn về việc kích hoạt hoặc giải giáp.
Bắt đầu từ phiên bản GSM_2017_05_26-20-22.hex:
m - Tham số “Quản lý” - quản lý cảnh báo được bật
s - tham số “SMS” - sẽ được gửi tin nhắn sms khi cảm biến được kích hoạt
r - Thông số “Ring” - cuộc gọi thoại sẽ được thực hiện khi cảm biến được kích hoạt
p - Thông số “Nguồn” - tin nhắn SMS sẽ được gửi khi bật/tắt nguồn điện bên ngoài
i - Tham số “Thông tin” - một tin nhắn SMS sẽ được gửi khi kích hoạt hoặc giải giáp
Nếu thiếu các thông số “m”, “s”, “r”, “p”, “i”, điện thoại sẽ được lưu vào bộ nhớ nhưng không được sử dụng dưới bất kỳ hình thức nào.


XóaĐiện thoại- Xóa số điện thoại.
Lệnh ví dụ:

Cú pháp lệnh:

XóaĐiện thoại - lệnh
: - dấu phân cách
+71234567891 - số điện thoại


Chỉnh sửaĐiện thoại chính- Thay đổi các thông số “s”, “r”, “p”, “i” của điện thoại chính, số này được lưu ở ô nhớ đầu tiên.
Lệnh ví dụ:

Cú pháp lệnh:

EditMainPhone - lệnh
: - dấu phân cách
srpi - tham số


Số dưSố- Thay đổi số yêu cầu số dư và xử lý độ dài của phản hồi yêu cầu. Giá trị mặc định cho Beeline: #100#L22.
Lệnh ví dụ:

Cú pháp lệnh:

Số dư - lệnh
: - dấu phân cách
#103# - số yêu cầu số dư
L24 - Độ dài (len) của phản hồi được chuyển tiếp là 24 ký tự, chúng tôi đã loại bỏ thư rác khỏi yêu cầu số dư.


Chỉnh sửaCảm biến- Thay đổi tên cảm biến và mức phản hồi logic. Tổng cộng không thể có nhiều hơn 8 cảm biến bổ sung. Sau khi thay đổi các thông số, thiết bị phải được khởi động lại.
Lệnh ví dụ:
Chỉnh sửaCảm biến:1+Datchik dvizheniya v koridore#h

Cú pháp lệnh:

EditSensor - lệnh
: - dấu phân cách
1 - ghi vào ô nhớ đầu tiên
+ - dải phân cách
Datchik dvizheniya v koridore - tên của cảm biến, không được vượt quá 36 ký tự, kể cả dấu cách.
#h - Dấu hiệu mức logic cao từ cảm biến, khi nhận được tín hiệu này, cảnh báo sẽ được kích hoạt. Nếu thiếu "#h", cảnh báo sẽ được kích hoạt khi nhận được mức logic thấp từ cảm biến.


Giờ ngủ- Thời gian báo thức chuyển sang chế độ ngủ khi nhận được lệnh SMS “Tạm dừng” được tính bằng phút. Giá trị mặc định: 15, không thể nhỏ hơn 1 hoặc lớn hơn 60.
Lệnh ví dụ:

Cú pháp lệnh:

Giờ ngủ - lệnh
: - dấu phân cách
20 - 20 phút “ngủ”.


Báo ĐộngPinThời Gian- Thời gian bật/tắt cảnh báo/chân nghịch đảo được biểu thị bằng giây. Giá trị mặc định: 60, không được nhỏ hơn 1 giây và lớn hơn 43200 giây (12 giờ).
Lệnh ví dụ:

Cú pháp lệnh:

AlarmPinTime - lệnh
: - dấu phân cách
30 - 30 giây để bật/tắt chốt báo động.


Trì hoãn trước khi bảo vệ- Thời gian trước khi kích hoạt thiết bị, sau khi nhận được lệnh tương ứng.
Lệnh ví dụ:

Cú pháp lệnh:

DelayBeforeGuard - lệnh
: - dấu phân cách
25 - 25 giây trước khi kích hoạt


Trì hoãn trước khi báo động- Khoảng thời gian sau đó thông báo SMS “báo động” sẽ được gửi nếu báo động không được tắt trong khoảng thời gian này. Được thay thế bằng các lệnh mở rộng bắt đầu từ phiên bản GSM_2017_08_10-12-17.hex
Lệnh ví dụ:

Cú pháp lệnh:

DelayBeforeAlarm - lệnh
: - dấu phân cách
40 - 40 giây trước khi gửi thông báo “báo động”


XemQuyền LựcThời Gian- Thời gian tính bằng phút sau đó sẽ có tin nhắn SMS thông báo tắt nguồn điện bên ngoài. Nếu nguồn điện bên ngoài được khôi phục trước khi hết thời gian đã đặt, tin nhắn sẽ không được gửi.
Lệnh ví dụ:

Cú pháp lệnh:

WatchPowerTime - lệnh
: - dấu phân cách
5 - 5 phút trước khi gửi tin nhắn SMS


chuông thời gian- Thời lượng của cuộc gọi thoại báo động, tham số có thể có giá trị từ 10 đến 255 giây.
Lệnh ví dụ:

Cú pháp lệnh:

RingTime - lệnh
: - dấu phân cách
40 - 40 thời lượng cuộc gọi sẽ là 40 giây, sau đó thuê bao tiếp theo sẽ được gọi.


ID modem - Buộc cài đặt Model của modem được sử dụng. Các giá trị có thể có: 0 - tự động phát hiện modem, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Lệnh ví dụ:

Cú pháp lệnh:

ModemID - lệnh
: - dấu phân cách
2 - ID modem.


ExtThiết bịThời gian- Số giây mà mức tín hiệu ở đầu ra điều khiển của thiết bị bên ngoài sẽ thay đổi.
Lệnh ví dụ:

Cú pháp lệnh:

ExtDeviceTime- lệnh
: - dấu phân cách
5 - 5 giây


ExtThiết bịCấp độThấp- Thiết bị ngoại vi kết nối với đầu ra A3 được điều khiển bằng mức tín hiệu thấp (GND). Đầu ra sẽ mặc định ở mức cao +5V cho đến khi nhận được lệnh điều khiển từ thiết bị bên ngoài
ExtThiết bịCấpCao- Một thiết bị bên ngoài kết nối với đầu ra A3 được điều khiển bằng mức tín hiệu cao (+5V). Đầu ra sẽ mặc định ở mức GND thấp cho đến khi nhận được lệnh điều khiển thiết bị bên ngoài.

Đặt lạiCảm biến- thiết lập lại cảm biến mở rộng cổng

Đặt lại cấu hình- đặt lại cài đặt về cài đặt gốc

Đặt lại điện thoại- xóa tất cả khỏi bộ nhớ số điện thoại

Đặt lại hoàn toàn- đặt lại cài đặt, xóa tất cả số điện thoại khỏi bộ nhớ, khôi phục giá trị mặc định của lệnh BalanceNum.

Đổ chuông- bật thông báo bằng cách gọi đến số “chính” được ghi trong ô nhớ đầu tiên khi cảm biến được kích hoạt. Đã xóa bắt đầu từ phiên bản GSM_2017_06_11-00-07.hex
Tắt chuông- tắt thông báo bằng cách đổ chuông khi cảm biến được kích hoạt. Đã xóa bắt đầu từ phiên bản GSM_2017_06_11-00-07.hex

tin nhắn sms trên- bật thông báo SMS khi cảm biến được kích hoạt. Đã xóa bắt đầu từ phiên bản GSM_2017_08_10-12-17.hex
tắt tin nhắn- tắt thông báo SMS khi cảm biến được kích hoạt. Đã xóa bắt đầu từ phiên bản GSM_2017_08_10-12-17.hex

PIROn- kích hoạt xử lý cảm biến chuyển động
PIRTắt- vô hiệu hóa xử lý cảm biến chuyển động

ReedSwitchBật- cho phép xử lý cảm biến sậy chính
ReedTắt- tắt xử lý cảm biến sậy chính

XemPowerOn- kích hoạt điều khiển nguồn điện bên ngoài, một tin nhắn SMS về việc tắt nguồn điện bên ngoài sẽ được gửi với điều kiện hệ thống báo động được trang bị. Đã xóa bắt đầu từ phiên bản GSM_2017_03_01-23-37.

XemPowerOn1- kích hoạt điều khiển nguồn điện bên ngoài, một tin nhắn SMS về việc tắt nguồn điện bên ngoài sẽ được gửi với điều kiện hệ thống báo động được trang bị.
XemPowerOn2- bật điều khiển nguồn điện bên ngoài, một tin nhắn SMS về việc tắt nguồn điện bên ngoài sẽ được gửi trong mọi trường hợp

XemTắt Nguồn- tắt điều khiển nguồn điện bên ngoài

Nút Bảo VệBật- điều khiển cảnh báo bằng thiết bị bên ngoài hoặc nút được bật. Đã xóa bắt đầu từ phiên bản GSM_2017_04_16-12-00.
Nút Bảo VệTrên1- chức năng thiết lập hoặc loại bỏ bảo vệ bằng thiết bị bên ngoài hoặc nút được kích hoạt
Nút Bảo VệOn2- chức năng chỉ sản xuấtđược trang bị bởi các thiết bị bên ngoài hoặc nút được bật; việc giải giáp được thực hiện bằng cách gọi đến thiết bị hoặc sử dụng lệnh SMS.
Nút Bảo VệTắt- điều khiển báo động bằng thiết bị bên ngoài hoặc nút bị vô hiệu hóa

PCForceBật- giám sát liên tục một nhóm tất cả các cảm biến mô-đun mở rộng
PCFBuộc Tắt- chỉ giám sát một nhóm gồm tất cả các cảm biến mô-đun mở rộng khi thiết bị được trang bị

ChínhCảm biếnMứcCao- thông báo cảnh báo sẽ được gửi khi tín hiệu mức cao (+5 V) xuất hiện ở đầu vào (D6) từ cảm biến
Cảm biến chínhMức độThấp- thông báo cảnh báo sẽ được gửi khi tín hiệu mức thấp (GND) xuất hiện ở đầu vào (D6) từ cảm biến
Cảm biến chínhCấp độTắt- xử lý đầu vào cảm biến (D6) bị tắt

Cảm biến thứ haiMức cao- thông báo cảnh báo sẽ được gửi khi tín hiệu mức cao (+5 V) xuất hiện ở đầu vào (A0) từ cảm biến
Cảm biến thứ haiMức độThấp- thông báo cảnh báo sẽ được gửi khi tín hiệu mức thấp (GND) xuất hiện ở đầu vào (A0) từ cảm biến
Mức độ cảm biến thứ haiTắt- việc xử lý đầu vào cảm biến (A0) bị vô hiệu hóa

ChínhTrì hoãnTrướcBáo động- thời gian sau đó, thông báo SMS “báo động” sẽ được gửi khi cảm biến chính (D6) được kích hoạt, nếu cảnh báo chưa được tắt trong khoảng thời gian này. Cú pháp giống như lệnh DelayBeforeAlarm.
Thứ haiĐộ trễTrướcBáo động- thời gian sau đó thông báo SMS “cảnh báo” sẽ được gửi khi cảm biến bổ sung (A0) được kích hoạt, nếu cảnh báo chưa được tắt trong khoảng thời gian này. Cú pháp giống như lệnh DelayBeforeAlarm.
PCFDelayTrướcBáo động- thời gian sau đó thông báo SMS “báo động” sẽ được gửi khi cảm biến bảng mở rộng (PCF8574) được kích hoạt, nếu cảnh báo không được tắt trong khoảng thời gian này. Cú pháp giống như lệnh DelayBeforeAlarm.

GuardOn - cánh tay
GuardOff - loại bỏ bảo vệ

Lệnh mở - điều khiển thiết bị bên ngoài

Thông tin - kiểm tra trạng thái, để trả lời tin nhắn này, một SMS sẽ được gửi cùng với thông tin về số nào đã bật/tắt bảo mật

Tạm dừng - tạm dừng hệ thống một lúc thiết lập bằng lệnh thời gian ngủ tính bằng phút, hệ thống không phản hồi với các kích hoạt cảm biến.

TestOn - chế độ kiểm tra được bật, đèn LED màu xanh lam nhấp nháy.
TestOff - chế độ kiểm tra bị tắt.

LedOff - tắt đèn LED chờ.
LedOn - bật đèn LED chờ.

Tiền - yêu cầu số dư.

ClearSms - Xóa tất cả tin nhắn khỏi bộ nhớ

Các lệnh trên bảng điều khiển (tối đa phiên bản GSM_2017_04_24-13-22.hex) - được nhập vào màn hình cổng Arduino IDE:

AddPhone - tương tự như lệnh sms AddPhone

DeletePhone - tương tự như lệnh sms DeletePhone

EditSensor - tương tự như lệnh sms EditSensor

ListPhone - xuất ra cổng giám sát danh sách các điện thoại được lưu trong bộ nhớ

ResetConfig - tương tự như lệnh sms ResetConfig

ResetPhone - tương tự như lệnh sms ResetPhone

FullReset - tương tự như lệnh sms FullReset

ClearSms - tương tự như lệnh sms ClearSms

WatchPowerOn1 - tương tự như lệnh sms WatchPowerOn1
WatchPowerOn2 - tương tự như lệnh sms WatchPowerOn2
WatchPowerOff - tương tự như lệnh sms WatchPowerOff

GuardButtonOn - tương tự như lệnh sms GuardButtonOn. Đã xóa bắt đầu từ phiên bản GSM_2017_04_16-12-00
GuardButtonOn1 - tương tự như lệnh sms GuardButtonOn1
GuardButtonOn2 - tương tự như lệnh sms GuardButtonOn2
GuardButtonOff - tương tự như lệnh sms GuardButtonOff

Memtest - kiểm tra bộ nhớ không bay hơi thiết bị, tất cả cài đặt thiết bị sẽ được đặt lại, tương tự như lệnh FullReset.

I2CScan - tìm kiếm và khởi tạo các thiết bị được hỗ trợ trên bus I2C.

ListConfig - hiển thị cấu hình thiết bị hiện tại cho màn hình cổng.

ListSensor - xuất ra màn hình cổng của cấu hình cảm biến hiện tại.

CẬP NHẬT. Khi sử dụng cảm biến chuyển động, để tránh hiện tượng dương tính giả trong quá trình vận hành modem, cần thiết giữa ghim GNDA0 Arduino bày tỏ sự phản kháng, cảm ơn đồng chí
AllowPhone = (“70001234501”, “70001234502”, “70001234503”, “70001234504”, “70001234505”) - Các số được phép quản lý bảo mật.
AlarmPhone = (“70001234501”, “70001234502”) - Các số để gửi thông báo SMS khi cảm biến được kích hoạt và thông báo về việc giải giáp hoặc kích hoạt. Số đầu tiên trong danh sách sẽ được gọi khi cảm biến được kích hoạt nếu lệnh RingOn được thực thi; theo mặc định, tùy chọn này được bật. Điều này được thực hiện vì tin nhắn SMS có thể đến trễ đôi chút nhưng cuộc gọi sẽ được thực hiện ngay lập tức.

Nếu một cuộc gọi được nhận từ một số được ủy quyền hoặc một tin nhắn SMS có lệnh GuardOn/GuardOff thì tùy thuộc vào trạng thái bảo mật hiện tại, một tin nhắn SMS về việc kích hoạt hoặc vô hiệu hóa sẽ được gửi đến các số được liệt kê trong mảng AlarmPhone và một Tin nhắn SMS cũng sẽ được gửi đến số mà cuộc gọi đến.

Khi cảm biến được kích hoạt Tin nhắn SMS được gửi đến tất cả các số từ mảng (danh sách) AlarmPhone và một cuộc gọi thoại được thực hiện tới số đầu tiên trong mảng này.

Chỉ báo ánh sáng:
Đèn LED sáng màu đỏ - nó được trang bị vũ khí.
đèn LED sáng lên màu xanh lá- vô hiệu hóa, bật/tắt bằng lệnh SMS LedOn/LedOff.
Đèn LED liên tục nhấp nháy màu xanh lam - nó báo hiệu rằng mọi thứ đều ổn với Arduino, bo mạch không bị đóng băng, nó được sử dụng riêng để gỡ lỗi, nó được bật/tắt bằng lệnh TestOn/TestOff SMS.
* Mã chứa hàm LedTest(), nó nhấp nháy với đèn LED màu xanh lam, nó được tạo ra chỉ để giám sát Arduino, nhấp nháy - nghĩa là nó đang hoạt động, không nhấp nháy - nó bị treo. Vẫn chưa cúp máy :)

Không liên quan!

Kết nối 2 hoặc nhiều cảm biến cho mở phần mềm(chỉ áp dụng cho firmware này sketch_02_12_2016.ino)
Để kết nối các cảm biến sậy bổ sung, chúng tôi sử dụng các chân kỹ thuật số miễn phí D2, D3, D5 hoặc D7. Sơ đồ kết nối với cảm biến bổ sung trên D7.

Những thay đổi cần thiết trong phần sụn
... #define DoorPin 6 // Số đầu vào được kết nối với cảm biến chính int8_t DoorState = 0; // Biến lưu trữ trạng thái của cảm biến chính int8_t DoorFlag = 1; // Biến lưu trữ trạng thái của cảm biến chính #define BackDoorPin 7 // Số đầu vào được kết nối với cảm biến bổ sung int8_t BackDoorState = 0; // Biến lưu trữ trạng thái của cảm biến bổ sung int8_t BackDoorFlag = 1; // Biến để lưu trữ trạng thái của cảm biến bổ sung...
void setup() ( ... pinMode(DoorPin, INPUT); pinMode(BackDoorPin, INPUT); ...
... void Detect() ( // Đọc giá trị từ cảm biến DoorState = digitalRead(DoorPin); BackDoorState = digitalRead(BackDoorPin); // Xử lý cảm biến chính if (DoorState == LOW && DoorFlag == 0) ( DoorFlag = 1; độ trễ (100); if (LedOn == 1) digitalWrite(GLed, LOW); if (DoorState == HIGH && DoorFlag == 1)( DoorFlag = 0; delay(100); ) // Đang xử lý cảm biến bổ sung if (BackDoorState == LOW && BackDoorFlag == 0) ( BackDoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); ) if (BackDoorState == HIGH && BackDoorFlag = = 1)( BackDoorFlag = 0; độ trễ(100); ) ) ...

Và một điều nữa:
1. Tốt hơn là sử dụng điốt định mức cho dòng điện 2 A, vì mô-đun mang dòng điện 1 A và chúng ta vẫn cần cấp nguồn cho Arduino và modem bằng thứ gì đó. Ví dụ này sử dụng điốt 1N4007; nếu chúng bị hỏng, hãy thay thế chúng bằng điốt 2 A.
2. Tôi đã sử dụng tất cả các điện trở cho đèn LED ở mức 20 kOhm để không chiếu sáng toàn bộ hành lang vào ban đêm.
3. Tôi cũng đặt một điện trở 20 kOhm trên cảm biến sậy giữa chân GND và chân D6.

Đó là tất cả cho bây giờ. Cám ơn vì sự quan tâm của bạn! :)

Tôi đang định mua +204 Thêm vào mục yêu thích Tôi thích bài đánh giá +112 +243

Shield GPRS/GSM SIM900 có ăng-ten
Bộ phát triển bốn băng tần SIM900 GPRS/GSM Shield cho Arduino tương thích

Mô-đun hoạt động của vi điều khiển Thiết bị Arduino và các mạng tương tự trong mạng di động theo chuẩn GSM, GPRS. Tập trung vào việc sử dụng trong các hệ thống tự động hóa và điều khiển. Trao đổi dữ liệu với các mô-đun khác xảy ra thông qua Giao diện UART. Shield GPRS/GSM SIM900 có ăng-ten có thể giao tiếp trực tiếp với vi điều khiển thông qua giao diện UART hoặc hoạt động cùng với máy tính cá nhân khi sử dụng bộ chuyển đổi giao diện portPC-UART. Điều này có được là nhờ khả năng tương thích phần mềmở cấp độ lớp lệnh được sử dụng để điều khiển modem - lệnh AT.
Các đối tượng được giám sát và kiểm soát thông qua việc trao đổi dữ liệu trong tầm tay Truyền thông di động. Cung cấp Kết nối bằng giọng nói, gửi SMS, MMS và nhiều chức năng, dịch vụ khác. Hoạt động của mô-đun dựa trên thành phần SIM900.

Bài báo bằng tiếng Nga từ một tạp chí về linh kiện SIM900. Thành phần này được phát triển bởi SIMCom Wireless Solutions. Trang web SIMCom có ​​phiên bản tiếng Nga. Bảng mô-đun GSM ở phía thành phần chứa các đầu nối để kết nối ăng-ten, tai nghe và micrô. Trên mặt hàn của bo mạch có một giá đỡ pin CR1220 3 volt hỗ trợ hoạt động của đồng hồ mô-đun và hộp đựng để lắp thẻ SIM.
Một trong những ứng dụng của thiết bị là hệ thống theo dõi chuyển động của xe kết hợp với GLONASS hoặc thiết bị GPS. Gửi tin nhắn SMS cho phép bạn sử dụng mô-đun trong việc gửi đi, báo động không dây và trong hệ thống an ninh. Do các sự kiện đang diễn ra, tin nhắn có thể được gửi tin nhắn SMS khác nhau: “Dừng khẩn cấp thang máy số 2 nhà số 34”, “Cửa ô tô mở”, “Tầng hầm mở”, “Điện áp 220 V bị tắt”, “ Cửa vào Ngôi nhà nông thôn đang mở”, “Đèn đang bật”, “Nhiệt độ trong nhà kính dưới mức tới hạn.” Module không thể thiếu trong việc giám sát, điều khiển các vật thể chuyển động đang chuyển động khoảng cách xa. Hoặc trong trường hợp xóa toán tử trên khoảng cách xa từ một vật đứng yên.

Shield GPRS/GSM SIM900 có ăng-ten mang lại nhiều cơ hội nghiên cứu hoạt động của linh kiện SIM900. Việc lắp đặt thành phần SIM900 được thực hiện theo hầu hết các công nghệ hiện đại tại sao phải hàn bảng mạch in SIM900 trong điều kiện phòng thí nghiệm là rất khó khăn. Sau khi cài đặt mô-đun SIM900, bạn có thể tiến hành thử nghiệm cách sử dụng thành phần SIM900. Khi được sử dụng trong sự phát triển riêng Thành phần SIM900 có thể được gỡ lỗi phần mềm và xác minh các giải pháp mạch.

Đặc trưng

Dinh dưỡng
điện áp, V
danh nghĩa 5
phạm vi 4,8-5,2
hiện hành
chế độ bình thường 50-450 mA
ở chế độ ngủ 1,5 mA
xung tối đa 2 A
Hỗ trợ thẻ SIM 1.8 và 3 V
Băng tần truyền thông 850, 900, 1800, 1900 MHz
Hỗ trợ mạng 2G
Công suất truyền ở các dải khác nhau
1 W 1800 và 1900 MHz
2 W 850 và 900 MHz
tuân thủ tiêu chuẩn GSM giai đoạn 2/2+
Được xây dựng trong giao thức TCP và UDP
Lớp truyền tải Dữ liệu GPRS lớp nhiều khe 10/8
Bộ giải mã âm thanh HR, FR, EFR, AMR, khử tiếng vang
CSD lên tới 14,4 kbit/s
ngăn xếp PPP
MUX (07.10)
giao thức HTTP và FTP
Có thể gửi tín hiệu DTMF và phát bản ghi âm như trên máy trả lời tự động
Hỗ trợ đồng hồ thời gian thực RTC
Nhiệt độ, oC
không khí trong quá trình vận hành -30...75
lưu trữ -45...90
kích thước 86 x 58 x 19 mm

Linh kiện điều khiển

Công tắc chọn nguồn đặt nguồn điện: bên ngoài, được kết nối với đầu nối đồng trục hoặc nguồn điện của mô-đun vi điều khiển Arduino.

Phím Nguồn bật hoặc tắt nguồn khi được nhấn và giữ trong 2 giây.

chỉ định

Trạng thái của mô-đun được biểu thị bằng 3 đèn LED:
PWR (màu xanh lá cây) - đèn báo nguồn mô-đun,
Trạng thái (màu đỏ) - Đèn báo nguồn thành phần SIM900,
Net Light (màu xanh lá cây) - kết nối với mạng.
Thông báo đèn LED Net Light.
Tắt - SIM900 không hoạt động.
Nhấp nháy theo từng khoảng thời gian, được biểu thị bằng giây:
0,064 bật và 0,8 tắt - không phát hiện thấy mạng,
0,064 bật và 0,3 tắt - đã phát hiện mạng,
Bật 0,064, tắt 0,03 - Đã kết nối GPRS.

Liên lạc

Thành phần SIM900 chứa một cổng UART, tín hiệu của nó được xuất ra các chân thành phần và được kết nối với các jumper để xác định chân nào của mô-đun Shield GPRS/GSM SIM900 sẽ được kết nối với cổng UART của thành phần SIM900 với D0, D1 hoặc D7, D8.
Có thể kết nối UART Shield GPRS/GSM: với giao diện phần cứng của MK thông qua các tiếp điểm TXD và RXD của mô-đun Shield GPRS/GSM, D0, D1 được sử dụng cho việc này. Hoặc đối với Arduino mô phỏng phần mềm, để làm điều này, các tiếp điểm D7 và D8 của mô-đun Shield GPRS/GSM được sử dụng. Giao diện UART đầy đủ có 10 tín hiệu xuất ra các chân ở góc bo mạch: R1, DCD, DSR, CTS, RTS, GND, 2V8, TX, RX, DTR.
12 liên hệ đã ký dòng kỹ thuật số Các I/O GPIO được đặt ở góc của bảng. Có 2 chân tín hiệu đầu ra có điều chế độ rộng xung PWM1,PWM2. Chân ADC đầu vào ADC. Giao diện bộ đếm thời gian tích hợp có 4 số liên lạc. Ký hiệu chân: DISP_CLK, DISP_DATA, DISP_D/C, DISP_CS.
Chân D9 được sử dụng cho điều khiển chương trình bật hoặc tắt SIM900.
Bảng mạch có một đầu nối để kết nối ăng-ten.

Việc gán chân của thành phần SIM900.

Bật và tắt nguồn bên ngoài

Bạn có thể bật hoặc tắt nguồn của mô-đun bằng tín hiệu ở đầu vào điều khiển D9. Để thay đổi trạng thái, một xung kéo dài 1 giây được gửi tới D9. Sự thay đổi trạng thái xảy ra 3,2 giây sau khi bắt đầu xung.

Kích hoạt mô-đun. Đồ thị của điện áp nguồn mô-đun, xung điều khiển bên ngoài và đèn báo nguồn TÌNH TRẠNG.

Khi điều khiển mô-đun bằng thiết bị điều khiển, việc bật phải được thực hiện mà không cần sử dụng Nút nguồn phím, tức là ngay sau khi cấp nguồn. Để thực hiện việc này, một số lệnh cần được thêm vào chương trình MK.

Vô hiệu hóa powerUpOrDown()
{
pinMode(9, OUTPUT);
digitalWrite(9,THẤP);
độ trễ (1000);
digitalWrite(9,CAO);
độ trễ (2000);
digitalWrite(9,THẤP);
độ trễ (3000);
}

Nhóm lệnh này trong chương trình cũng có thể được sử dụng để tắt mô-đun. Bạn cũng có thể tắt mô-đun GSM bằng cách gửi lệnh AT.

GSM-lib được viết cho Arduino Phiên bản IDE 1.0. Tải xuống phiên bản mới nhất của thư viện từ ví dụ làm sẵn có thể được sử dụng từ kho dự án. Để cài đặt, hãy giải nén kho lưu trữ GSM vào thư mục thư viện (/arduino-1.0/libraries/GSM). Sau khi khởi động môi trường phát triển Arduino, trong menu chương trình “Tệp -> Ví dụ”, mục GSM sẽ xuất hiện cùng với các ví dụ về bản phác thảo.

Thư viện GSM được thiết kế để hoạt động với tấm chắn “ ”. Nó tương thích với phần cứng Bo mạch Arduino(Uno, Duemilanove và các chất tương tự khác). Khi sử dụng các bo mạch khác, bạn có thể cần thực hiện các thay đổi đối với GSM.cpp để chỉ ra đúng cổng mà đường dây kích hoạt modem được kết nối từ tấm chắn.

TRONG Hiện nay Thư viện thực hiện các chức năng sau.

  • Đăng ký mạng GSM
  • Gửi tin nhắn SMS
  • Nhận và phân tích SMS
  • Nhận cuộc gọi đến
  • Kiểm tra trạng thái kết nối với mạng GSM, khôi phục mạng nếu mất tín hiệu

Đăng ký mạng GSM

Để đăng ký modem trên mạng, bạn phải chỉ định mã PIN của thẻ SIM. Điều quan trọng cần nhớ là nếu bạn chỉ định sai số, thẻ SIM có thể bị chặn vì chức năng khởi tạo sẽ được lặp lại định kỳ cho đến khi chúc may mắn. Quá trình khởi tạo thường mất khoảng 1 phút.

Việc khởi tạo chính được thực hiện trong hàm setup().

#bao gồm #bao gồm const char CHƯƠNG TRÌNH PIN = "0000"; // PIN void setup() ( while (GSM.Init(PIN)<0); // Регистрация в сети GSM.NewSMSindic(); // Настройка индикатора новых SMS GSM.WaitCall(); // Ждем входящие вызовы GSM.WaitSMS(); // Ждем входящих SMS }

Gửi tin nhắn SMS

Để gửi tin nhắn văn bản, hãy sử dụng hàm SendSMS(), hàm này chuyển 2 tham số - số người nhận SMS và chính tin nhắn đó.

While(GSM.SendSMS(RemoteID, "Xin chào từ Arduino!")< 0);

Trong đó RemoteID là số người nhận. Tốt nhất nên đặt hằng số này trong tiêu đề chương trình.

Const char CHƯƠNG TRÌNH ID từ xa = "+79280000000";

Văn bản tin nhắn cũng có thể được tạo động.

Chuỗi văn bảnMessage; textMessage += "Cảm biến1"; textMessage += "Cảm biến2"; char Out; textMessage.toCharArray(Out,(textMessage.length())+1); while(GSM.SendSMS(RemoteID, Out)< 0);

Nhận và phân tích SMS

Để đọc tin nhắn SMS đến, hãy sử dụng chức năng ReadSMS(), trong đó 2 tham số được chuyển đến - chỉ mục SMS và con trỏ nơi văn bản sẽ được sao chép. Dưới đây là một đoạn phác thảo phân tích văn bản của tin nhắn đến. Khi SMS bằng 1, chúng tôi thực hiện một số hành động và khi nó bằng 2, chúng tôi thực hiện một hành động khác. Để biết ví dụ hoàn chỉnh về bản phác thảo SmsCheck.ino, hãy xem các ví dụ.

If (GSM.CheckSMS()== 1) ( //Có SMS mới GSM.ReadSMS(NewSMS_index, (char*) SMStxt); GSM.DeleteAllSMS(); // Xóa SMS (chúng tôi sẽ không tích lũy!) strSMS = String( SMStxt); if(strSMS == "1") ( // thực hiện hành động 1 tại đây) if(strSMS == "2") ( // thực hiện hành động 2 tại đây) GSM.WaitCall();

Ghi chú. Thư viện GSM chỉ có thể hoạt động với các ký tự Latinh; chữ Cyrillic hiện không được hỗ trợ.

Nhận cuộc gọi đến

Chức năng này rất hữu ích khi bạn cần nhận được phản hồi khá nhanh từ tấm chắn. Mặc dù tin nhắn SMS có thể được gửi hơi chậm nhưng các cuộc gọi đến sẽ diễn ra gần như ngay lập tức. Ngoài ra, việc sử dụng chức năng đó sẽ miễn phí nếu bạn không nhấc máy.

Ví dụ: bạn có thể thực hiện cuộc gọi đến tấm chắn, kiểm tra số người gọi trên Arduino và nếu nó khớp với số mẫu, hãy gửi SMS có kết quả đọc cảm biến tới nó. Đoạn sau thực hiện chức năng tương tự. Để biết phiên bản đầy đủ của bản phác thảo CallCheck.ino, hãy xem ví dụ.

If (IncomingCall == 1) ( //một cuộc gọi đã đến! while (GSM.TerminateCall()<0); // Ложим трубку IncomingCall = 0; // Проверяем, если номер звонящего CallerID совпал с шаблоном RemoteID if (strstr_P(CallerID, RemoteID)) { while(GSM.SendSMS(RemoteID, "Hello from Arduino!") < 0);// SMS из SRAM памяти } GSM.WaitCall(); }

Kiểm tra trạng thái kết nối với mạng GSM

Có những tình huống khi kết nối với mạng bị mất. Để phát hiện mất mạng, hãy sử dụng hàm CheckStatus(), hàm này trả về 0 khi mất kết nối với mạng. Một ví dụ về cách sử dụng được đưa ra trong khối mã sau.

// Tại những khoảng thời gian nhất định, chúng tôi kiểm tra trạng thái kết nối GPRS! if(currentMillis - previousMillis > interval) ( if ((GSM.CheckStatus() != 1)) ( // Kết nối GPRS không được thiết lập! while (GSM.Init(PIN)<0); // Делаем инициализацию } GSM.WaitCall(); currentMillis = previousMillis = millis(); }

Thực hiện các lệnh AT tùy ý từ bản phác thảo

Để thực thi các lệnh AT từ bản phác thảo, hàm WriteStr_P() được sử dụng.

GSM.WriteStr_P(PSTR("AT\r\n"));

Mình xin giới thiệu với các bạn một cách rất đơn giản để điều khiển nguồn điện từ xa.
Chúng tôi sẽ sử dụng các ổ cắm điều khiển bằng sóng vô tuyến làm sẵn nên chúng tôi sẽ không cần hàn bất cứ thứ gì. Điều này rất tuyệt, vì tốt hơn hết là không nên chạm vào điện áp 220 V (dành cho người mới bắt đầu).

Mã số

Nếu bạn không sử dụng GSMSHIELD mà sử dụng một số thư viện khác thì mã tất nhiên sẽ khác, nhưng nguyên tắc sẽ giống nhau. Vào những khoảng thời gian nhất định, chúng tôi kiểm tra xem có bất kỳ SMS nào chưa đọc hay không, phân tích chúng và nếu một lệnh hợp lệ đến từ một số được ủy quyền, chúng tôi sẽ gửi tín hiệu vô tuyến bằng các hàm mySwitch.switchOff hoặc mySwitch.switchOn, chuyển cho chúng địa chỉ của ổ cắm.
Ghi chú trong trường hợp của tôi, đối với tấm chắn từ Seeedstudio, tôi phải vào GSM.cpp và thay đổi các chân được chỉ định thành 7 và 8./* Mã ví dụ về Arduino GSM-switch Bật/tắt các ổ cắm được điều khiển bằng sóng vô tuyến Tác giả: Vladislav Ross, 2014 Liên hệ: [email được bảo vệ] Bạn cần tải xuống: 1. rc-switch https://code.google.com/p/rc-switch/ 2. GSMSHIELD http://www.gsmlib.org/ Dành cho GSMSHIELD: * Để thay đổi chân cho Serial Phần mềm, sử dụng hai dòng trong GSM.cpp. * Nếu bạn đang sử dụng Mega, hãy bỏ ghi chú dòng "#define MEGA" trong HWSerial.h * Bạn có thể bật thông báo gỡ lỗi trên cổng nối tiếp bằng cách xác định DEBUG_ON */ #include "SIM900.h" #include #include "sms.h" #include "call.h" #include // Chân phát 433 MHz const byte RCpin = 12; char groupAddress = "11111"; char smsLetters = "ABC"; char* deviceAddresses = ( "10000", //A "01000", //B "00100" //C ); char adminNumber = "+74991356235"; //số điện thoại của bạn GọiGSM gọi; tin nhắn SMSGSM; RCSwitch mySwitch = RCSwitch(); số ký tự; chỉ số byte=0; char smsText; vị trí byte; int deviceLetterIdx = -1; byte i,j; void setup() ( gsm.begin(2400); delay(10000); for(i = 1; i<= 21; i++) { sms.DeleteSMS(i); } mySwitch.enableTransmit(RCpin); }; void loop() { //hang up all incoming calls /*stat=call.CallStatus(); if(stat==CALL_INCOM_VOICE) { call.HangUp(); }*/ position = sms.IsSMSPresent(SMS_UNREAD); //get new SMS if (position) { sms.GetSMS(position, number, smsText, 10); sms.DeleteSMS(position); if(strcmp(number, adminNumber) == 0) //accept SMS only from defined number { for (i = 0; i < sizeof(smsText) - 1; i++) { if(deviceLetterIdx != -1) { //got letter, now expecting 0 or 1 if(smsText[i] == "0") { mySwitch.switchOff(groupAddress, deviceAddresses); delay(500); } if(smsText[i] == "1") { mySwitch.switchOn(groupAddress, deviceAddresses); delay(500); } deviceLetterIdx = -1; } else { //waiting for letter A,B,C... for(j = 0; j < sizeof(smsLetters) - 1; j++) { if(smsLetters[j] == smsText[i]) { deviceLetterIdx = j; break; } } } } } } delay(10000); }; GitHub .

Các vấn đề?

Nếu ổ cắm không muốn chuyển sang bất kỳ ổ cắm nào, bạn có thể thử nhận tín hiệu từ điều khiển từ xa ban đầu đến bộ thu. rc-switch có mã mẫu.

Cái gì tiếp theo?

Làm thế nào dự án này có thể được phát triển hơn nữa?
Đầu tiên, chúng ta vẫn còn một loạt chân cắm trên Arduino và trên tấm chắn GSM. Bạn có thể kết nối một số cảm biến hoặc thiết bị với chúng. Ví dụ, theo dõi nhiệt độ từ xa hoặc tưới hoa.
Thứ hai, chúng tôi chỉ sử dụng SMS và mô-đun này cũng có thể truyền giọng nói và GPRS. GPRS có thể truyền nhiều dữ liệu hơn. Ngoài ra, bạn không cần phải cúp máy khi gọi mà chẳng hạn như chấp nhận cuộc gọi và để họ lắng nghe những gì đang diễn ra ngay tại chỗ.
Cũng có thể bạn muốn nhận SMS kiểm soát không phải từ một số mà từ nhiều số. Trong trường hợp này, tôi khuyên bạn nên lưu trữ các số trong sổ địa chỉ; thư viện có các chức năng thích hợp.