Dự án. Giao tiếp với mô-đun GSM diễn ra như thế nào? Kết nối với cầu USB-UART

Cách đây không lâu, một người bạn đã mời tôi một công việc liên quan đến tạo phần sụn cho một bộ vi điều khiển được cho là giao tiếp với máy chủ bằng mô-đun SIM900D GSM. Trước đây tôi chưa từng làm bất cứ điều gì liên quan đến lập trình vi điều khiển và lần cuối cùng tôi lập trình bằng C là khi còn là sinh viên, nhưng trí tò mò đã chiếm ưu thế và tôi phải bắt tay vào làm. Tuy nhiên, tài liệu về phần cứng này có sẵn trên Internet những ví dụ hay Tôi không thể tìm thấy bất kỳ công việc nào có TCP/IP trong mã. Không còn gì để làm ngoài việc chất đầy tài liệu, dự trữ thuốc lá và trà, rồi bắt đầu di chuyển giữa những chiếc cào. Và có rất nhiều cái cào. Thực ra đó là lý do tại sao tôi viết bài này - để giúp người khác dễ dàng hơn.

Những gì cần thiết

Cần phải viết mã có thể khởi tạo mô-đun GSM, thiết lập kết nối với máy chủ, nhận và gửi dữ liệu tùy ý, kiểm tra trạng thái kết nối và hoạt động mà không gặp lỗi. Và cũng đủ nhỏ gọn để vừa với bộ nhớ hạn chế của bộ vi điều khiển và chừa chỗ cho chức năng chính và một chút dự trữ.

Chuyện gì đã xảy ra cuối cùng

Kết quả là một mã C có thể làm được mọi thứ cần thiết. Do yêu cầu về tính gọn nhẹ, chúng tôi đã phải phân tích cú pháp các câu trả lời và tạo chuỗi bằng cách sử dụng mã của riêng mình, điều này thậm chí còn gây lúng túng khi hiển thị cho những người trung thực. Vì vậy, tôi khuyên mọi người nên sử dụng biểu thức chính quy cho những mục đích này. Tôi cũng sẽ chuyển mã của mình sang một công cụ nhẹ biểu thức chính quy, nhưng sau khi tạo một chương trình cơ sở đầy đủ chức năng.

Mã này yêu cầu các hàm/macro hoạt động với cổng nối tiếp, cũng như sự hiện diện của các hàm memset và memcpy. Vì vậy, nó có thể được chuyển sang nền tảng khác một cách tương đối dễ dàng mà không cần chạm vào nhiều thư viện trong quá trình thực hiện.

Và nó trông như thế nào?

Việc lập trình và thử nghiệm được thực hiện trong Windows 7. Mã thu được đã trở thành tài liệu chính cho bài viết này. Tôi sẽ không cung cấp mã đầy đủ và nhận xét về nó mà thay vào đó tôi sẽ hiển thị thuật toán thiết lập và làm việc với mô-đun GSM.

Các tính năng mà mã yêu cầu:

  • uint16_t init_serial_port(char *port_name) Hàm này định cấu hình cổng nối tiếp. Dưới Windows.
  • uint16_t put_serial(uint8_t *buffer, uint16_t size) Và cái này ghi một chuỗi byte vào cổng này.
  • gets_serial(uint8_t *buffer, uint16_t size) Điều này, theo đó, đọc một chuỗi byte từ cổng nối tiếp.
Các chức năng mà mã cung cấp:
  • init_gprs() & stop_gprs() Mô-đun GSM được khởi tạo và tắt tương ứng.
  • uint16_t connect_gprs(uint8_t index, uint8_t mode, char *address, char *port) Thiết lập kết nối với máy chủ. Điều đáng chú ý là mô-đun này có thể hoạt động với các giao thức TCP và UDP với tư cách là máy khách và máy khách. Hỗ trợ tối đa 8 kết nối đồng thời.
  • uint16_t close_gprs(uint8_t index) Đóng kết nối đã chỉ định.
  • uint16_t send_gprs(uint8_t index, uint8_t *buffer, uint16_t size) Gửi tin nhắn thông qua kết nối được chỉ định.
  • uint16_t recv_gprs(uint8_t index, uint8_t *buffer, uint16_t size) Nhận tin nhắn. Chức năng không chặn, có nghĩa là nó sẽ không đợi dữ liệu xuất hiện trong luồng mà sẽ trả về quyền kiểm soát nếu không có gì để nhận. Điều đáng chú ý là hành vi này dễ thực hiện hơn là chặn.

Cách làm việc với cổng nối tiếp

Nó khá đơn giản. Có các macro dành cho bộ vi điều khiển đích để gửi/nhận dữ liệu qua USART, nhưng vì việc gỡ lỗi mã đó dễ dàng hơn bằng máy tính desktop, Tôi được tặng kèm một bộ chuyển đổi USB<->Mô-đun USART và GSM. Tất cả những gì còn lại là học cách làm việc với cổng nối tiếp trong Windows. Hóa ra lại đơn giản. Tóm lại, cổng nối tiếp xuất hiện trong HĐH tập tin thông thường, thông tin được truyền bằng các hàm ReadFile và WriteFile. Bạn chỉ cần đặt một số tham số bằng hàm SetCommTimeouts và SetCommState.

Chức năng khởi tạo cổng trông như thế này:
uint16_t init_serial_port(char *port_name) ( COMMTIMEOUTS hết thời gian chờ; tham số DCB; int result; serial_port_handle = CreateFile(port_name, // "\\\\.\\COMx" GENERIC_READ | GENERIC_WRITE, 0, // Giá trị của các tham số tiếp theo đã được sửa khi làm việc với cổng NULL, OPEN_EXISTING, 0, NULL); if (serial_port_handle == INVALID_HANDLE_VALUE) ( printf("Lỗi mở cổng nối tiếp!\n"); return 1; ) // Thời gian tối đa giữa việc đọc hai byte trong một hàng timeouts.ReadIntervalTimeout = 100 ; // Giá trị tiếp theo được nhân với số ký tự được đọc từ cổng timeouts.ReadTotalTimeoutMultiplier = 0; // và thêm vào giá trị này, hóa ra thời gian tối đađể hoàn thành // toàn bộ thời gian chờ hoạt động.ReadTotalTimeoutConstant = 1000; // Ý nghĩa giống như hai tham số trước, nhưng thời gian chờ được tính cho mỗi lần ghi. hết thời gian chờ.WriteTotalTimeoutMultiplier = 0; hết thời gian chờ.WriteTotalTimeoutConstant = 1000; result = SetCommTimeouts(serial_port_handle, &timeouts); if (result == 0) ( printf("Lỗi cài đặt thời gian chờ cho cổng nối tiếp!\n"); close_serial_port(); return 1; ) // Các tham số cổng bao gồm nhiều nhất cài đặt đơn giản- không // chẵn lẻ, không kiểm soát luồng, 1 bit dừng. memset(¶meters,0,sizeof(parameters)); tham số.DCBlength = sizeof(DCB); GetCommState(serial_port_handle, ¶meters); tham số.BaudRate = (DWORD)BAUD_RATE; tham số.ByteSize = 8; tham số.Parity = NOPARITY; tham số.StopBits = ONETOPBIT; tham số.fAbortOnError = TRUE; tham số.fDtrControl = DTR_Control_DISABLE; tham số.fRtsControl = RTS_Control_DISABLE; tham số.fBinary = TRUE; tham số.fParity = FALSE; tham số.fOutX = FALSE; tham số.fInX = FALSE; tham số.XonChar = (uint8_t)0x00; tham số.XoffChar = (uint8_t)0xff; tham số.fErrorChar = FALSE; tham số.fNull = FALSE; tham số.fOutxCtsFlow = FALSE; tham số.fOutxDsrFlow = FALSE; tham số.XonLim = 128; tham số.XoffLim = 128; result = SetCommState(serial_port_handle, ¶meters); if (result == 0) ( printf("Lỗi cài đặt tham số cổng nối tiếp!\n"); close_serial_port(); return 1; ) return 0; )

Giao tiếp với mô-đun GSM diễn ra như thế nào?

Khi cổng nối tiếp được cấu hình, các lệnh AT có thể được gửi tới nó. Lệnh đầu tiên phải là chuỗi "AT\r", cho phép mô-đun tự động điều chỉnh tốc độ truyền cổng nối tiếp. Phản hồi sau đó có thể nhận được từ cổng sẽ có dạng "AT\r\r\nOK\r\n" .

Lệnh này là một chuỗi ký tự ASCII đơn giản. Để lệnh được mô-đun chấp nhận, bạn cần đặt ký tự xuống dòng "\r" ở cuối lệnh. Để đáp lại, mô-đun sẽ truyền một chuỗi ký tự bao gồm hai phần - lệnh mà mô-đun phản hồi và phản hồi được phân tách khỏi nó bằng các ký tự "\r\r\n", kết thúc bằng các ký tự "\r\n " . Để phân tích cú pháp phản hồi thuận tiện hơn, tôi đã tạo một macro đặt con trỏ ở đầu phản hồi trong bộ đệm nhận. Nếu bạn muốn xuất phản hồi ra bảng điều khiển, bạn cần thêm ký tự null vào cuối tin nhắn đã nhận.

Void at_send(char *cmd, uint16_t size) ( uint16_t result; cmd = "\r"; result = put_serial(cmd, size); return; ) uint16_t at_recv(uint8_t *buffer, uint16_t size) ( uint16_t result; result = gets_serial (bộ đệm, kích thước); kết quả trả về; )
Họ trông như thế này chức năng phụđể gửi lệnh và nhận phản hồi.

Khởi tạo mô-đun

nhất chức năng tuyệt vời trong mã có trách nhiệm cấu hình mô-đun. Trong quá trình khởi tạo, nhiều lệnh AT được gửi đi. Tôi sẽ mô tả chúng theo thứ tự chúng được gửi đến mô-đun. Tôi không mô tả chi tiết các đối số và tùy chọn trả lời vì chúng có thể được tìm thấy trong tài liệu.
  • "AT+CPIN=pin-code" Như bạn có thể đoán, lệnh này sẽ mở khóa thẻ SIM bằng cách nhập mã pin. Để kiểm tra xem có cần mã PIN hay không, bạn có thể sử dụng lệnh "AT+CPIN?" .
  • "AT+CREG?" Lệnh này trả về trạng thái đăng ký của mô-đun trên mạng. Bạn cần thực hiện việc này cho đến khi mô-đun phản hồi rằng nó đã được đăng ký trên mạng.
  • "AT+CGATT=1" Buộc mô-đun kết nối với GPRS. Bạn có thể kiểm tra xem nó có được kết nối hay không bằng lệnh "AT+CGATT?" .
  • "AT+CIPRXGET=1" Cho phép truy xuất thủ công dữ liệu được truyền qua kết nối. Theo mặc định, tùy chọn này bị tắt và dữ liệu sẽ được gửi đến cổng nối tiếp ngay khi nhận được. Điều này không thuận tiện lắm, mặc dù nó không quan trọng - bạn có thể định cấu hình mô-đun để cùng với dữ liệu, nó cũng truyền các tiêu đề IP, nhờ đó bạn có thể xác định gói được nhận từ ai. Tôi quyết định rằng việc lấy dữ liệu theo cách thủ công sẽ dễ dàng hơn và tôi đã không nhầm. Như tôi hiểu, lệnh này chỉ được cảm nhận bởi các mô-đun SIM.COM GSM.
  • "AT+CIPMUX=1" Theo mặc định, mô-đun chỉ có thể thiết lập một kết nối. Cài đặt này cho phép khả năng tạo nhiều kết nối. Việc gửi và nhận dữ liệu sẽ chỉ khác nhau ở một tham số - chỉ mục kết nối.
  • "AT+CSTT="internet"" APN - Tên điểm truy cập, tên điểm truy cập cho GPRS. Đối với nhà cung cấp của tôi, nó trông giống hệt như thế này.
  • "AT+CIICR" Đặt mạng không dây kết nối GPRS. Có thể mất một chút thời gian, vì vậy bạn cần chạy nó theo vòng lặp và kiểm tra câu trả lời.
  • "AT+CIFSR" Trả về địa chỉ IP của mô-đun. Tôi sử dụng nó để kiểm tra xem mô-đun có được kết nối với Internet hay không.
  • "AT+CDNSCFG="8.8.8.8","8.8.4.4"" Lệnh này cài đặt máy chủ DNS, mà mô-đun sẽ sử dụng.
  • "AT+CIPSTATUS" Ngoài thông tin về trạng thái kết nối, lệnh này còn cung cấp thông tin về việc mô-đun có sẵn sàng thiết lập kết nối hay không. Vì vậy bạn cần phải kiểm tra câu trả lời của cô ấy.
Sau khi thực hiện các lệnh này, mô-đun sẽ sẵn sàng để sử dụng. Vâng, hoặc nó sẽ không. Nó phụ thuộc vào may mắn của bạn.

Tạo và ngắt kết nối

Kết nối được tạo bằng lệnh "AT+CIPSTART=index,"mode","address","port"" .
  • chỉ mục cho biết số serial của kết nối, có thể lấy giá trị từ 0 đến 7.
  • chế độ chỉ định giao thức sẽ được sử dụng bởi kết nối. Có thể là "TCP" hoặc "UDP".
  • address chỉ định địa chỉ máy chủ. Nếu máy chủ DNS được chỉ định trong quá trình thiết lập thì bạn có thể sử dụng cả địa chỉ IP và tên miền.
  • cổng chỉ định cổng máy chủ mà kết nối sẽ được thiết lập.
Lưu ý rằng khi sử dụng Giao thức UDP theo mặc định, các datagram sẽ chỉ được gửi và nhận từ một địa chỉ. Để sử dụng tối đa UDP và gửi/nhận dữ liệu từ bất kỳ địa chỉ nào, bạn có thể sử dụng cái gọi là chế độ UDP mở rộng, được định cấu hình bằng lệnh "AT+CIPUDPMODE". Tôi giới thiệu bạn với tài liệu để biết chi tiết.

Để đáp lại một lệnh, bạn có thể nhận được một số câu trả lời có thể có. Nếu mọi thứ đều ổn, thì sau tiêu chuẩn “OK”, sau một khoảng thời gian ngắn, bạn có thể nhận được một trong ba câu trả lời:

  • "index,ALREADY CONNECT" điều này có nghĩa là kết nối với chỉ mục đã cho đã được thiết lập và rất đáng để tìm kiếm nó.
  • "index,CONNECT OK" mọi thứ đều rõ ràng ở đây.
  • "index,CONNECT FAIL" có nghĩa là đã xảy ra sự cố khi thiết lập kết nối.
Bạn có thể đóng kết nối bằng lệnh "AT+CIPCLOSE=index" . Bạn có thể ngắt tất cả các kết nối và tắt giao diện GPRS bằng lệnh "AT+CIPSHUT".

Truyền dữ liệu

Dữ liệu được truyền bằng lệnh "AT+CIPSEND=index,length" , trong đó chỉ mục chỉ định kết nối mà dữ liệu sẽ được gửi và độ dài chỉ định độ dài của gói dữ liệu. Nhân tiện, bạn có thể tìm ra MTU cho mỗi kết nối bằng lệnh "AT+CIPSEND=?" .

Nếu tất cả đều ổn, mô-đun sẽ phản hồi lệnh bằng dấu nhắc “>”, sau đó bạn cần gửi dữ liệu đến cổng nối tiếp. Khi mô-đun nhận được một số byte bằng độ dài, nó sẽ có nội dung như "index,SEND OK". Nói chung, bạn không phải sử dụng tham số độ dài, nhưng trong trường hợp này phần cuối của gói dữ liệu phải được biểu thị rõ ràng bằng ký hiệu 0x1A, trong tổ hợp đầu cuối Ctrl+Z. Tùy chọn này rõ ràng là không phù hợp để truyền dữ liệu tùy ý.

Như bạn có thể thấy, truyền dữ liệu không phải là một quá trình quá phức tạp. Do đó, hãy chuyển sang phần thú vị nhất - nhận dữ liệu.

Đang nhận dữ liệu

Ngay khi mô-đun GSM nhận được dữ liệu, nó sẽ báo hiệu điều này bằng cách gửi một chuỗi như "+CIPRXGET:1,index\r\n" tới cổng nối tiếp. Thực lòng tôi không biết ý nghĩa của nó là gì, bởi vì Chức năng này mô-đun được ghi chép khá kém, nhưng đối với tôi nó xuất hiện trong tất cả các thông báo về việc nhận gói.

Tôi không thích ý nghĩ phải theo dõi các thông điệp của mô-đun bằng cách này hay cách khác. Tuy nhiên, sau khi chơi một chút với trình gỡ lỗi, tôi phát hiện ra rằng mô-đun này không gửi bất kỳ thông báo không đồng bộ nào khác và sau khi thực hiện bất kỳ lệnh AT nào, thông báo này sẽ xuất hiện ở đầu bộ đệm. Vì tôi đã tạo macro để tách phản hồi khỏi lệnh bằng cách tìm kiếm chuỗi con "\r\r\n" , nên tôi không bị ảnh hưởng gì. Như vậy chức năng tiếp nhận dữ liệu đã được thực hiện khá đơn giản.

Vì vậy, bạn có thể nhận dữ liệu bằng lệnh "AT+CIPRXGET=2,index,length" . Chế độ tiếp nhận hai phương tiện, trong trong trường hợp này các byte chỉ cần đổ vào cổng nối tiếp. Bạn cũng có thể chỉ định nhận dữ liệu dưới dạng văn bản HEX, có lẽ là để tránh xung đột với điều khiển luồng phần mềm. Tôi không cần điều này vì tôi không hề sử dụng tính năng kiểm soát luồng. Tham số độ dài chỉ định kích thước của gói dữ liệu mà chúng ta muốn nhận tại một thời điểm.

Đáp lại, chúng tôi sẽ nhận được một cái gì đó như "+CIPRXGET:2,index,received,excess\r\n__DATA__\r\nOK\r\n" . Trường nhận được sẽ chứa số byte trong gói dữ liệu __DATA__ và trường vượt quá sẽ chứa số byte đang chờ trong bộ đệm mô-đun. Vì vậy, nếu trường nhận được bằng 0, bạn có thể nói với lương tâm trong sáng rằng không có gì để nhận. Trên thực tế, bằng cách sử dụng tính năng này, tôi đã triển khai chức năng không chặn để nhận dữ liệu.

Cuối cùng

Trước khi viết mã, tôi thực sự khuyên bạn nên làm quen với các lệnh AT bằng PuTTY, lệnh này hoạt động tốt với cổng nối tiếp.

Tôi hy vọng thông tin trong bài viết này sẽ giúp được ai đó viết mã cho SIM900 của họ. Rất có thể các nguyên tắc làm việc với mô-đun GSM nêu trên có thể được áp dụng cho các mô-đun của các kiểu máy khác và có thể cả của nhà sản xuất.

Thẻ:

  • vi điều khiển
  • lập trình
  • gsm
  • gprs
Thêm thẻ

Trải nghiệm sử dụng SIM900 được mô tả dưới đây sẽ hữu ích hơn cho những người đã làm việc một chút với mô-đun này. Đối với những độc giả mới bắt đầu nghiên cứu vi mạch này và dự định sử dụng nó để trao đổi dữ liệu qua Internet, chúng tôi đã chuẩn bị một loạt bài học về chủ đề này. Đây .

Vì vậy, SIM900 là mô-đun GSM từ SIM COM, được điều khiển bằng lệnh AT, có thể gửi SMS, thực hiện cuộc gọi, tổ chức kết nối CSD trực tiếp và trao đổi thông tin qua GPRS.

Trên tay tôi là một đơn hàng từ Trung Quốc Ban phát triển Tấm chắn SIM900 GPRS – tương thích với nền tảng Arduino.

Bo mạch chứa chính chip SIM900, đầu nối micrô và tai nghe, công tắc cấp nguồn (từ đầu nối bên ngoài hoặc từ Arduino), một ăng-ten, một số đèn LED để biểu thị các chế độ hoạt động, đầu nối cho pin (nếu bạn cần đồng hồ thời gian thực), nút bật/tắt. Mô tả tốt Tôi tìm thấy nhà sản xuất trên wiki . Ngoài ra còn có mã để điều khiển modem ở nhiều chế độ khác nhau.

Như nhà sản xuất cho chúng tôi biết, bo mạch này hoàn toàn tương thích với Arduino Uno. Thật vậy, bo mạch SIM900 chỉ cần cắm vào Uno và ngay lập tức bắt đầu hoạt động. Tuy nhiên, hóa ra, Arduino Uno có thể “yếu” trong việc thực hiện một số chức năng, nhưng tôi sẽ nói về điều này bên dưới.

VỚI Arduino Mega Hội đồng quản trị hoạt động với một số hạn chế. Điều này là do Mega, không giống như Uno, có các chân 7 và 8, không có sẵn để sử dụng làm phần mềm nối tiếp (phần mềm USART). Điều này có thể được giải quyết bằng cách chuyển giao diện USART sang chân 0 và 1; với mục đích này, các jumper được cung cấp trên bo mạch SIM900.

Nói chung, bo mạch có thể được kết nối với bất kỳ bộ điều khiển nào có giao diện USART. Ví dụ: tôi đã thử điều khiển modem bằng bộ điều khiển STM32F4.

SIM900: Tin nhắn SMS và cuộc gọi

Việc thử nghiệm mô-đun trao đổi tin nhắn SMS và cuộc gọi đã thành công tốt đẹp! Mô-đun xử lý các nhiệm vụ này mà không cần vấn đề đặc biệt, đối với điều này tôi vừa sao chép c cùng một trang web, được biên dịch và flash mã này trong Arduino Uno:

// Rơle nối tiếp - Arduino sẽ vá một // liên kết nối tiếp giữa máy tính và GPRS Shield // ở tốc độ 19200 bps 8-N-1 // Máy tính được kết nối với UART phần cứng // GPRS Shield được kết nối với UART phần mềm #include Phần mềm GPRS nối tiếp(7, 8); bộ đệm char không dấu; // mảng đệm để nhận dữ liệu qua cổng nối tiếp int count=0; // bộ đếm cho mảng đệm void setup() ( GPRS.begin(19200); // tốc độ truyền của GPRS Serial.begin(19200); // cổng nối tiếp của tốc độ truyền của Arduino. ) void loop() ( if (GPRS .available()) // nếu ngày đến từ cổng nối tiếp phần mềm ==> dữ liệu đến từ tấm chắn gprs ( while(GPRS.available()) // đọc dữ liệu vào mảng char ( buffer=GPRS.read(); // ghi dữ liệu vào mảng if(count == 64)break; ) Serial.write(buffer,count); // nếu không có dữ liệu nào kết thúc, ghi bộ đệm vào cổng nối tiếp phần cứng clearBufferArray(); // gọi hàm clearBufferArray để xóa bộ nhớ dữ liệu từ số mảng = 0; // đặt bộ đếm của vòng lặp while về 0) if (Serial.available()) // nếu dữ liệu có sẵn trên cổng nối tiếp phần cứng ==> dữ liệu đến từ PC hoặc notebook GPRS.write(Serial .read()); // ghi nó vào tấm chắn GPRS ) void clearBufferArray() // hàm xóa mảng đệm ( for (int i=0; i

Để gửi lệnh đến mô-đun, nó phải được kết nối với máy tính. Điều này có thể được thực hiện bằng cổng USB Arduino. Trên máy tính, bạn cần bất kỳ trình giám sát cổng COM nào để thực hiện việc này. Bạn có thể tải nó xuống từ đây hoặc bạn có thể sử dụng màn hình được tích hợp trong Arduino IDE.

Tất cả những gì chương trình Arduino thực hiện là “bắt” lệnh của người dùng và gửi chúng đến mô-đun, sau đó trả về phản hồi cho SIM900 cho người dùng. Do đó, bằng cách truyền lệnh AT theo cách thủ công đến mô-đun, tôi đã kiểm tra khả năng nhận và truyền tin nhắn SMS, đồng thời bằng cách kết nối micrô và tai nghe với các đầu nối thích hợp, tôi đã sử dụng mô-đun SIM900 làm điện thoại di động.

Truyền dữ liệu qua GPRS sử dụng SIM900

Tôi bắt đầu những thử nghiệm đầu tiên về truyền dữ liệu qua GPRS bằng nền tảng Arduino UNO để điều khiển SIM900 (đơn giản vì nó ở trong tầm tay). Để bắt đầu, tôi đã mua dịch vụ lưu trữ có máy chủ chạy Apatche và triển khai một ứng dụng đơn giản trên đó có thể đáp ứng khéo léo các yêu cầu GET. Đã xảy ra! Tôi vẫn gửi lệnh từ PC đến bộ điều khiển Arduino, từ đó gửi chúng đến SIM900.

Mọi thứ đều hoạt động chính xác miễn là yêu cầu GET đủ ngắn (tối đa 100 ký tự). Nhưng ngay khi các yêu cầu trở nên dài hơn thì lỗi bắt đầu xảy ra: các yêu cầu không được truyền đi hoàn toàn. Cần lưu ý rằng các trục trặc có thể xuất hiện hoặc biến mất ngay cả khi tăng/giảm chương trình điều khiển Arduino vài dòng. Sau đó, hóa ra các lỗi này liên quan đến phần mềm USART mà Arduino UNO sử dụng để giao tiếp với SIM900, bởi vì USART như vậy hoàn toàn phụ thuộc vào chu trình chương trình của lõi bộ điều khiển. Nếu lượng dữ liệu nhỏ thì nó luôn có thời gian để truyền đi, còn nếu lượng dữ liệu đó tăng lên thì kết quả của việc truyền tải phụ thuộc vào độ dài của chu kỳ chương trình.

Kết luận từ tất cả những điều trên: KHÔNG THỂ sử dụng phần mềm USART khi giao tiếp với SIM900, đặc biệt khi có lượng lớn dữ liệu được truyền đi.

Arduino Uno chỉ có một giao diện USART “phần cứng”, được sử dụng để trao đổi với PC, vì vậy chúng tôi phải từ bỏ UNO, thay thế bằng Arduino Mega, không bị thiếu USART “phần cứng”. Sau khi “đóng thành” như vậy, hoạt động của thiết bị trở nên ổn định và chính xác.

SIM900: ngăn xếp TCP-IP hay HTTP? Cái gì tốt hơn?

Khi nghiên cứu sổ tay quản lý modem, tôi phát hiện ra có hai nhóm lệnh AT. Nhóm đầu tiên được sử dụng để truyền dữ liệu qua ngăn xếp TCP-IP tích hợp và nhóm thứ hai sử dụng giao thức HTTP đã được logic bên trong của SIM900 triển khai. Cho dù tôi có dày vò Google và Yandex đến mức nào để cố gắng tìm hiểu xem các phương pháp này khác nhau như thế nào, ưu và nhược điểm của từng phương pháp là gì, tôi cũng không tìm thấy gì, vì vậy tôi đã thử cả hai và chia sẻ kinh nghiệm thực tế của mình tại đây.

Cả hai phương pháp đều hoạt động và có quyền tồn tại.

Ngăn xếp TCP-IP khó khởi tạo hơn một chút (cần chuyển nhiều lệnh hơn đến mô-đun) và khó quản lý hơn một chút. Để gửi yêu cầu, bạn cần mở kết nối, đợi phản hồi và đóng lại đúng cách.

Nói một cách đơn giản, HTTP là một trình duyệt được tích hợp trong SIM900. Thật dễ dàng để khởi tạo; để bắt đầu liên lạc với máy chủ, bạn cần mở một phiên. Đồng thời, việc mở và đóng kết nối với từng yêu cầu cũng như giải quyết các “nhiệm vụ tổ chức” khác được đặt lên vai SIM900. Điều này rất thuận tiện và việc truyền dữ liệu theo cách này nhanh hơn một chút, chính xác là vì SIM900 có thể thực hiện tất cả “các hoạt động phụ trợ” nhanh hơn bộ điều khiển điều khiển có thể làm.

Vì vậy, khi chọn phương thức trao đổi, tôi vẫn sử dụng giao thức HTTP.

Yêu cầu GET không chính xác tới máy chủ

Khi mới bắt đầu công việc truyền dữ liệu qua GPRS, tôi đã mắc một sai lầm khiến tôi phải dằn vặt hơn một ngày. Không có đủ kinh nghiệm trong việc tương tác với máy chủ thông qua các yêu cầu GET, tôi, với kiến ​​thức sơ sài trên Internet, đã biên soạn một yêu cầu như:

NHẬN http://xxx.ru/d_command.php?UC=1111 HTTP/1.1
CHỦ NHÀ: xxx.ru

Yêu cầu này không chính xác, nhưng nó đã được trình duyệt và máy chủ proxy mà tôi đã gửi yêu cầu gỡ lỗi "ăn" một cách hoàn hảo - đó là lý do tại sao tôi coi yêu cầu này là chính xác.

Điều đáng ngạc nhiên nhất là SIM900 cũng đối phó tốt với yêu cầu “xấu” (và hồi đó tôi đã gửi yêu cầu qua ngăn xếp TCP-IP). Tuy nhiên, vào một ngày đẹp trời, máy chủ bắt đầu phản hồi những yêu cầu đó với lỗi 404. Điều này xảy ra do một số trường hợp vẫn chưa được làm rõ, hoặc nhà cung cấp dịch vụ lưu trữ đã thay đổi thuật toán xử lý yêu cầu (anh ta phủ nhận điều này) hoặc nhà điều hành di động đã làm nó. Nhưng sự thật vẫn là sự thật. Sau đó, tôi đã cố gắng gửi yêu cầu tương tự qua HTTP - mọi thứ đều hoạt động. Điều này được giải thích là do giao thức HTTP nội bộ của mô-đun SIM900 (như tôi đã nói, về cơ bản là một trình duyệt tích hợp) có thể “phân tích cú pháp” chính xác các yêu cầu không chính xác và phát chúng lên mạng ở dạng chính xác. Đây là một lợi thế khác (tất nhiên là không rõ ràng) của việc sử dụng HTTP, vì nó cho phép người lập trình có một số điểm không chính xác. Nói chung, tất nhiên, yêu cầu phải được viết chính xác và trông như thế này:

NHẬN /d_command.php?UC=1111 HTTP/1.1
CHỦ NHÀ: xxx.ru

Với yêu cầu chính xác như vậy, SIM900 trao đổi thành công cả thông qua ngăn xếp TCP-IP và qua HTTP.

SIM900 bị treo

Đôi khi, khi trao đổi qua GPRS, các tình huống phát sinh sau đó mô-đun có thể bị treo. Điều này có thể là do dữ liệu truyền qua mạng không chính xác và khiến SIM900 rơi vào trạng thái ngừng hoạt động hoặc do nhiễu trên đường truyền trao đổi của mô-đun và bộ điều khiển, trong đó SIM900 nhận được “không như mong đợi” hoặc một số sự cố không xác định khác. Nhà sản xuất chip cảnh báo rằng điều này có thể xảy ra và gợi ý rằng trong những trường hợp như vậy, hãy khởi động lại mô-đun bằng cách sử dụng một chuỗi xung đặc biệt áp dụng cho đầu vào PWRKEY.

Tuy nhiên, hóa ra, điều này không phải lúc nào cũng hữu ích - sau khi khởi động lại như vậy, mô-đun có thể “thức dậy” vẫn “trục trặc”. Và nhà sản xuất cũng cảnh báo chúng ta về điều này nếu chúng ta đọc kỹ DataSheet của mô-đun. Đây là những gì tài liệu khuyến nghị:

LƯU Ý: Nên cắt trực tiếp nguồn điện VBAT thay vì sử dụng chân đặt lại bên ngoài khi SIM900 không thể phản hồi với lệnh AT “AT+CPOWD=1” và chân PWRKEY.

Do đó, cách chính xác nhất để khởi động lại mô-đun là ngắt hoàn toàn nguồn điện khỏi nó (từ chân VBAT), đợi một lúc (ít nhất một giây để đề phòng) và cấp lại nguồn. Để khởi động lại mô-đun, tốt hơn là cung cấp một công tắc rơle hoặc bóng bán dẫn trên bo mạch, được điều khiển bởi bộ điều khiển.

Phần kết luận

Trong tương lai, tôi dự định phát hành một loạt bài viết trong đó tôi sẽ cho bạn biết cách tổ chức trao đổi giữa ứng dụng web máy chủ và SIM900, bắt đầu bằng việc mua dịch vụ lưu trữ từ nhà cung cấp và kết thúc bằng việc viết mã chương trình điều khiển.

Tạm biệt! Hãy theo dõi để cập nhật về Lười biếng thông minh .

Cuối cùng, tôi đã bắt đầu nghiên cứu mô-đun GSM phổ biến nhất trong môi trường DIY - GSM900. Mô-đun GSM là gì? Đây là một thiết bị thực hiện các chức năng của điện thoại di động. Nói cách khác, GSM900 cho phép bạn gọi đến các thuê bao mạng di động khác, nhận cuộc gọi, gửi và nhận tin nhắn SMS. Và tất nhiên, truyền dữ liệu bằng giao thức GPRS.

Tôi cần mô-đun này cho một mục đích rất cụ thể: Tôi nghĩ ra một dự án về hệ thống chiếu sáng được điều khiển từ xa. Cách dễ nhất để giải quyết vấn đề này là bằng tin nhắn SMS: gửi một SMS - đèn bật, gửi cái khác - đèn tắt. Bạn không cần bất kỳ điều khiển từ xa nào và mọi người đều có điện thoại (ngay cả những người vô gia cư). Trên thực tế, trong bài viết này tôi sẽ xem xét chính xác tùy chọn này để sử dụng mô-đun GSM900.

1. Phần sụn

Như định mệnh đã sắp đặt, tôi đã có được mô-đun GSM900A trong tay. Sau khi đọc diễn đàn đầu tiên tôi xem về sự hồi sinh của thứ này, hóa ra chữ A trong tên có nghĩa là mô-đun này thuộc khu vực Châu Á. Và do đó, anh ấy sẽ không làm việc với các nhà điều hành của chúng tôi. Sự tuyệt vọng 🙁

May mắn thay, các bài đăng sau đây trên cùng một diễn đàn chứa thông tin trấn an :) Hóa ra không phải mọi thứ đều tệ đến vậy và để mô-đun hoạt động trong khu vực của chúng tôi, nó chỉ cần được khởi động lại. Quá trình này được mô tả chi tiết trong blog của đồng nghiệp Alex-EXE của chúng tôi: firmware sim900 “tất cả trong một”
Tôi sẽ cố gắng làm điều tương tự, nhưng chi tiết hơn và có tính đến các tính năng của mô-đun của tôi.

Nếu bạn có đúng mô-đun và không cần phần sụn, bạn có thể chuyển ngay sang phần số 2.

Công cụ

Vì vậy, trước tiên hãy chuẩn bị tất cả các công cụ cần thiết. Đầu tiên, trực tiếp đối với phần sụn, bạn sẽ cần ứng dụng Tải xuống Công cụ phát triển dòng SIM900, có thể dễ dàng tìm thấy trên Internet ().

Thứ hai, bản thân tệp chương trình cơ sở 1137B02SIM900M64_ST_ENHANCE cũng sẽ hữu ích, tệp này cũng dễ lấy ().

Cuối cùng, thứ ba, chúng ta sẽ cần một thiết bị đầu cuối tốt để thử nghiệm mô-đun. Tôi thường sử dụng TeraTerm nhưng lần này khả năng của nó không đủ (hoặc tôi không hiểu về nó). Tôi đã phải cài đặt một con quái vật với một cái tên rực rỡ.

Kết nối với cầu USB-UART

Bây giờ chúng ta kết nối đường RX và TX với cầu. Về sau tôi đã sử dụng CP2102. Trong trường hợp của tôi, trái với logic, RX và TX của cầu được kết nối đối xứng với RX và TX của mô-đun GSM (chứ không phải theo chiều ngang, như thông lệ).

Bạn cũng nên cấp nguồn cho mô-đun từ nguồn mạnh và ổn định, vì dòng điện cực đại trên mô-đun có thể đạt tới 2A (được cho là). Thích hợp cho 4 pin cỡ AA. Sơ đồ kết nối hoàn chỉnh trông như thế này:

SIM900
CP2102 GND GND
CP2102 +5V VCC_MCU
CP2102 RX SIMR
CP2102TX SIMT
Nguồn +5V bên ngoài VCC5
Nguồn bên ngoài Gnd GND
RST

Model này không có nút đặt lại, vì vậy để flash chương trình cơ sở, chúng ta sẽ cần ném chân RST xuống đất trong vài giây. Để làm điều này, chúng ta sẽ để nó lơ lửng trong không khí bây giờ.

Cấu hình trước mô-đun

Trước khi bắt đầu flash chương trình cơ sở, chúng tôi sẽ kết nối với mô-đun và thay đổi tốc độ UART của nó. Để thực hiện việc này, hãy khởi chạy thiết bị đầu cuối Terminal, chọn đúng cổng và đặt tỷ giá hối đoái thành 9600. Sau đó, nhấp vào “Kết nối”.

Tất cả giao tiếp với mô-đun xảy ra thông qua các lệnh AT.

Điều đầu tiên chúng tôi nói với mô-đun sẽ là lệnh AT nguyên thủy nhất: “AT”. Đây là một loại ping mà mô-đun phải phản hồi bằng từ “OK”.

Nếu mọi thứ đều ổn và mô-đun thực sự trả lời chúng tôi là “OK”, chúng tôi sẽ gửi lệnh cài đặt tốc độ:

AT+IPR=115200

Cuối lệnh phải có ký tự trả về đầu dòng - CR. Trong bảng ASCII, nó có mã 13 (hoặc 0x0D ở hệ thập lục phân). Biểu tượng sẽ được chèn tự động nếu bạn chọn hộp kiểm “+CR” bên cạnh dòng đầu vào trong thiết bị đầu cuối của chúng tôi. Các thiết bị đầu cuối khác cũng có cài đặt tương tự.

Để đáp lại lệnh đã nhập, chúng ta sẽ lại nhận được “OK”.

Chúng tôi sẽ cần cài đặt này để tăng tốc quy trình phần sụn. Nếu không, như Alex-EXE đã chỉ ra trong blog của mình, phần sụn sẽ mất khoảng một giờ.

Thiết lập chương trình

Sau khi tất cả các dây được cắm vào đúng vị trí và mô-đun đã được chuẩn bị cho chương trình cơ sở, hãy khởi chạy ứng dụng Phát triển Công cụ tải xuống Dòng SIM900. Việc thiết lập chương trình chỉ bao gồm một số điểm:

  • Trong trường Mục tiêu, chúng tôi chỉ ra chip mục tiêu. Vì lý do nào đó, tôi không thể tải chương trình cơ sở lên SIM900A nên tôi đã chọn “SIM900”;
  • chọn đúng cổng trong trường Cổng;
  • Đặt Tốc độ Baud thành 115200;
  • cuối cùng, chỉ định tệp chương trình cơ sở trong trường Tệp lõi (tệp có phần mở rộng cla).

Thế là xong với các cài đặt.

Phần sụn

Bây giờ chúng tôi thực hiện nghiêm túc và nhất quán sáu bước quan trọng.

  • Chúng tôi kết nối nguồn với mô-đun (4 pin của chúng tôi). Đèn nguồn màu đỏ sẽ bật và đèn trạng thái sẽ bắt đầu nhấp nháy.
  • Chúng tôi kết nối USB-UART với máy tính.
  • Chúng tôi đóng dây RST xuống đất (hãy nhớ rằng suốt thời gian qua nó đã được treo trong không khí).
  • Nhấp vào nút Bắt đầu tải xuống trong chương trình.
  • Chúng tôi đếm đến ba trong đầu và nhấc RST lên khỏi mặt đất.

Chúng tôi đợi 6 phút cho đến khi phần sụn hoàn tất.

Chúng ta có gì sau phần sụn?

Đầu tiên, mô-đun hiện có thể hoạt động với các toán tử của chúng tôi. Thứ hai, chúng tôi đã cài đặt chương trình cơ sở nâng cao, trong số các tính năng của nó, chẳng hạn như nhận tọa độ mô-đun từ tháp di động, làm việc với email và truy cập vào bộ nhớ bổ sung 2,5 MB.

2. Thử nghiệm với mô-đun GSM

Bây giờ chúng ta hãy thử thực hiện nhiều thao tác hữu ích khác nhau với mô-đun. Đầu tiên, nhập mã PIN của bạn (nếu có):

AT+CPIN=8899

Phản hồi của mô-đun sẽ là:

CPIN: SẴN SÀNG.

Sau này chúng ta sẽ nhận được một số thông tin từ mô-đun.

AT+GMR - mã định danh phần sụn. AT+GSN - IMEI. AT+CPAS - trạng thái (0 – sẵn sàng làm việc, 2 – không xác định, 3 – cuộc gọi đến, 4 – kết nối thoại). AT+COPS? - thông tin về người điều hành.

Cuộc gọi điện thoại

Bây giờ chúng ta hãy quay số nào đó. Điều này được thực hiện bằng lệnh:

ATD+790XXXXXXXXX;

Dấu chấm phẩy ở cuối lệnh rất quan trọng, đừng quên nó nhé!

Nếu ai đó gọi thiết bị trong phiên UART, thông báo sau sẽ được trả về:

Bạn có thể trả lời cuộc gọi (nhận) bằng lệnh:

Nếu tai nghe và micrô được kết nối với mô-đun, bạn có thể liên lạc với thuê bao từ xa như thể sử dụng điện thoại di động thông thường.

Lệnh kết thúc cuộc gọi:

Gửi tin nhắn SMS

Đầu tiên, hãy kích hoạt chế độ tin nhắn văn bản:

TẠI+CMGF=1

và đặt mã hóa:

AT+CSCS= "GSM"

Mô-đun này cũng hỗ trợ các mã hóa khác thuận tiện hơn cho các hệ thống tự động. Nhưng đối với các thử nghiệm của chúng tôi, thuận tiện nhất là sử dụng chế độ GSM, trong đó điện thoại được chỉ định bằng số và văn bản tin nhắn được viết bằng mã hóa ASCII. Bây giờ hãy gửi cho ai đó một tin nhắn:

AT+CMGS="+79123456789"

Và ở cuối lệnh, bạn cần thêm hai ký tự dịch vụ cùng một lúc: CR và LF. Trong Terminal, điều này có thể được thực hiện bằng cách kiểm tra CR=CR+LF hoặc thêm thủ công vào cuối dòng: AT+CMGS=»+79123456789″&0D&0A

Sau khi nhập lệnh này, biểu tượng “>” sẽ được nhận phản hồi, cho biết bắt đầu nhập tin nhắn. Chúng tôi viết một số văn bản:

Chào thế giới!

Ở cuối tin nhắn chúng ta sẽ cần gửi một trong hai ký tự đặc biệt. Để gửi tin nhắn, hãy nhập ký tự từ bảng ASCII bằng số 26. Để hủy gửi - ký hiệu bằng số 27.

Trong thiết bị đầu cuối mà chúng tôi sử dụng, để gửi một ký tự theo mã, bạn có thể sử dụng một trong hai biểu thức: ở dạng thập lục phân: $1A và ở dạng thập phân: #026

Nhận tin nhắn SMS

Nếu một SMS được gửi đến thiết bị trong phiên, một tin nhắn có định dạng sau sẽ được trả về:

CMTI: "SM",4

ở đây 4 là số lượng tin nhắn chưa đọc đến.

TẠI+CMGR=4

Đáp lại chúng tôi nhận được:

CMGR: "REC READ","+790XXXXXXX","","13/09/21,11:57:46+24" Xin chào thế giới! ĐƯỢC RỒI

Nói chung, mọi thứ đều đơn giản. Điều này là khá đủ để chúng tôi hiện thực hóa kế hoạch của mình. Để nghiên cứu sâu hơn về khả năng của GFM900, tôi khuyên bạn nên đọc một bài viết khác của Alex-EXE: at-commands modem gsm sim900

3. Tương tác với vi điều khiển

Nói chung để quản lý thiết bị bên ngoài Hoàn toàn không cần thiết phải ghép nối mô-đun GSM900 với một bộ vi điều khiển khác. Bạn có thể nhúng chương trình của riêng mình vào mô-đun này, chương trình này sẽ thực hiện bất kỳ điều gì bạn muốn với các chân GPIO miễn phí. Tuy nhiên, trong hầu hết các bo mạch làm sẵn, GPIO không được định tuyến, vì vậy để tạo nguyên mẫu của thiết bị dự định, chúng tôi sẽ sử dụng nhiều nhất Arduino đơn giản Uno/Nano.

Arduino và GSM900 sẽ giao tiếp theo cách tương tự Giao diện UART. Để thực hiện việc này, hãy kết nối hai thiết bị này theo sơ đồ sau:

GSM900 GND VCC_MCU SIMT SIMR
Arduino Uno GND +5V RX TX

Bây giờ, hãy tạo một chương trình nhận tin nhắn SMS và làm sáng đèn LED ở chân số 13 trong vài giây. Với điều này, chúng tôi mô phỏng việc điều khiển một số thiết bị bên ngoài.

Const Chuỗi spin = "1234"; const int rel_pin = 13; Chuỗi ss = ""; // Gửi mã PIN void sendPin())( String cmd = "AT+CPIN="+spin+char(0x0D); Serial.print(cmd); ) // Bật đèn LED trong 2 giây void getSMS(String s)( digitalWrite(rel_pin, HIGH); delay(2000); digitalWrite(rel_pin, LOW); ) // Phân tích một chuỗi đến từ mô-đun void parsString(String src)( bool coll = false; String s = "" ; for(byte i =0;i

Chúng tôi tải chương trình lên Arduino và kiểm tra hệ thống. Nếu mọi thứ được thực hiện chính xác, việc gửi tin nhắn SMS tới thiết bị sẽ bật đèn LED trong 2 giây. Tất nhiên, thay vì đèn LED, bạn có thể bật/tắt một rơle mạnh mẽ được kết nối với lò hơi sưởi ấm trong một ngôi nhà nông thôn.

Vì vậy, sau một thời gian dài tìm hiểu những điều phức tạp khi làm việc với mô-đun GSM SIM900D, chúng tôi công bố dự án hoạt động đầu tiên kết hợp hệ thống bảo mật với khả năng điều khiển từ xa. Nói tóm lại, thiết bị có khả năng gửi SMS thông báo nếu cảm biến xâm nhập được kích hoạt, thực hiện cuộc gọi để kích hoạt giám sát âm thanh trong phòng, theo dõi nhiệt độ và gửi qua SMS theo yêu cầu, cũng như kiểm soát một số tải dựa trên lệnh được gửi. qua tin nhắn SMS.

Bất cứ ai theo dõi chủ đề này đều biết rằng tôi có một mô-đun GSM và một mô-đun điều khiển cho nó - hai bảng khác nhau được kết nối bằng một bánh sandwich (xem bảng có SIM900D và bảng điều khiển). Trên bảng điều khiển, ngoài bộ vi điều khiển ATmega32a, còn có một mô-đun nguồn được chế tạo trên bộ chuyển đổi LM2596, nó cấp nguồn cho mạch với điện áp không đổi 3,5 volt. Về nguyên tắc, bất kỳ nguồn điện nào khác cũng sẽ làm được, điều chính là nó có khả năng tiêu thụ tối đa 2 ampe trong thời gian ngắn (đây chính xác là mức tiêu thụ của mô-đun GSM tại thời điểm đăng ký).

Để thuận tiện, màn hình của điện thoại Nokia3310 được kết nối với bảng điều khiển, các phương pháp làm việc đã được mô tả nhiều lần trên trang web này. Nhờ màn hình, bạn có thể nhanh chóng xác định trạng thái của thiết bị và giá trị của cảm biến.

Kết quả là sơ đồ kết nối thu được trông như thế này (có thể nhấp vào):

Việc đánh số các chân của bộ vi điều khiển trong sơ đồ được đưa ra cho gói DIP, vì vậy nếu bạn lặp lại mạch bằng bộ vi điều khiển trong gói TQFP, hãy cẩn thận, cách đánh số chân sẽ khác. Bộ vi điều khiển được lấy xung nhịp từ một thạch anh bên ngoài ở tần số 16 MHz.

Đường kẻ Điều khiểnđi từ bộ thu của bóng bán dẫn Q2 đến chân PortD.4 của vi điều khiển đã được thêm vào để tái bảo hiểm và cần thiết để theo dõi xem mô-đun có được bật hay không. Vì ngưỡng tắt của SIM900 là 3,2 volt nên ngay cả khi điện áp giảm nhẹ, mô-đun sẽ tự động tắt, trong khi bộ vi điều khiển sẽ tiếp tục hoạt động và thực hiện chương trình (ngưỡng đặt lại cho ATmega32a là 2,7 volt). Trong điều kiện hoạt động, đường này ở mức thấp. Nếu vi điều khiển phát hiện dòng này ở mức cao, mô-đun GSM sẽ khởi động lại chức năng.

Và đây là những gì nó trông giống như trong hành động vào lúc này.

Sau lần kiểm tra cuối cùng của chương trình, tất cả những thứ này sẽ được nhét vào hộp và các kết nối có thể tháo rời sẽ được bịt kín để đảm bảo độ tin cậy.

Màn hình hiển thị các thông tin cơ bản về trạng thái của thiết bị: tên người vận hành, chất lượng tín hiệu liên lạc, giá trị nhiệt độ từ cảm biến 18b20, trạng thái đầu ra tải và cảm biến xâm nhập, cũng như thời gian và ngày.

Video kích hoạt mô-đun

Ngày và giờ được lấy từ đồng hồ được tích hợp trong mô-đun GSM. Để chúng hoạt động, cần phải có pin 3 volt được kết nối với chân 15 (VRTC). Nên lắp đặt diode D1 có điện áp rơi thấp, ví dụ như Schottky. Việc cài đặt ngày giờ được thực hiện thủ công, các lệnh đã được mô tả trước đó

Ngày được hiển thị trên màn hình ở định dạng như nhận được từ mô-đun, nghĩa là đầu tiên là năm, sau đó là tháng và ngày. Tôi vẫn chưa thay đổi gì ở đây.

Cảm biến DS18B20 có nhiệm vụ đo nhiệt độ, được kết nối với chân PortD.3 của vi điều khiển.

Bạn có thể kết nối bất kỳ tải nào với PortD.6 và điều khiển nó thông qua các lệnh SMS. Bây giờ tôi có một đèn LED treo - D4 trên sơ đồ. Nhưng không có gì ngăn cản bạn treo rơle hoặc triac ở đây và kiểm soát thứ gì đó nghiêm trọng hơn.

Vì mục đích bảo mật, dự kiến ​​​​sẽ sử dụng cảm biến chuyển động HC-SR501, được mua trên E-bay. Nếu được kích hoạt, một logic sẽ xuất hiện ở đầu ra cảm biến. Sau khi bắt được nó, vi điều khiển sẽ ra lệnh gửi tin nhắn SMS đến số điện thoại được chỉ định trong chương trình.

Đầu ra cảm biến được kết nối với chân PortD.7 của bộ vi điều khiển, trong sơ đồ, cảm biến thường được thay thế bằng một nút.

Thay vì cảm biến chuyển động, bạn có thể cài đặt bất kỳ phương tiện phát hiện xâm nhập nào khác - cảm biến mở cửa sổ và cửa ra vào, cảm biến vỡ kính, cảm biến quang điện, v.v. nói chung là mọi thứ mà trí tưởng tượng của bạn có thể làm được.

Để ngăn việc gửi SMS cảnh báo nhiều lần trong trường hợp kích hoạt cảm biến, một hạn chế đã được đưa vào chương trình: sau khi gửi SMS đầu tiên, lệnh cấm sẽ được áp dụng cho lần gửi tiếp theo. Để kích hoạt lại tính năng gửi tin nhắn thông báo khi cảm biến được kích hoạt, bạn cần gửi SMS có lệnh cụ thể đến mô-đun. Khi việc gửi SMS bị cấm, dấu chấm than sẽ xuất hiện trên màn hình bên cạnh trạng thái cảm biến.

Danh sách lệnh

Và đây là danh sách các lệnh trong SMS mà mô-đun xử lý. Để thuận tiện và đơn giản, các lệnh là kỹ thuật số, có lẽ trong các phiên bản phần sụn trong tương lai sẽ có tên lệnh có ý nghĩa hơn :)

0 – Ngắt kết nối tải (chân PortD.6 được đặt ở mức logic 0)

1 – Bật tải (chân PortD.6 được đặt ở mức logic 1)

2 – Sau khi nhận lệnh này, module sẽ gọi lại số điện thoại đã chỉ định trong chương trình

3 – Yêu cầu số dư của bạn và gửi lại qua SMS đến số được chỉ định. Có một sắc thái quan trọng ở đây - câu trả lời cho các yêu cầu USSD phải bằng tiếng Latinh. Nếu không, thay vì văn bản có ý nghĩa, phản hồi sẽ là một thông báo ở dạng mã hóa thập lục phân. Bạn cần kiểm tra với nhà cung cấp dịch vụ của mình cách chuyển đổi USSD sang tiếng Latin. Ví dụ: trên thẻ SIM tôi sử dụng từ Smarts, bạn cần nhập *102*1# (trong loa *105*0#)

4 - Yêu cầu nhiệt độ. Giá trị nhiệt độ sẽ được gửi cho chúng tôi qua SMS.

5 – Cho phép gửi tin nhắn nếu cảm biến xâm nhập được kích hoạt.

6 – Cấm gửi SMS thông báo từ cảm biến xâm nhập.

? – Với lệnh này, mô-đun sẽ gửi cho chúng tôi một SMS chứa thông tin chung về thiết bị, chẳng hạn như giá trị từ cảm biến nhiệt độ, tải có bật hay không, trạng thái đầu vào từ cảm biến xâm nhập và liệu có gửi SMS thông báo từ nó hay không được cho phép. Ví dụ: một tin nhắn có thể trông như thế này: nhiệt độ +24, tắt tải, đầu ra cảm biến chuyển động 0, gửi SMS nếu được kích hoạt đều bị cấm.

Bây giờ cách định cấu hình mô-đun để gửi SMS đến số của bạn. Trong kho lưu trữ có chương trình, chúng tôi tìm thấy tệp chính của chương trình, nó được gọi là “chương trình” 🙂 và chúng tôi tìm thấy một hằng số trong đó:

Hằng số Số điện thoại = “+7908390xxxx”

Chúng tôi thay thế số điện thoại của bạn tại đây, biên dịch chương trình và lấy tệp chương trình cơ sở hex.

Chương trình, như mọi khi, được viết bằng Bascom-AVR, vì vậy việc hiểu thuật toán làm việc với mô-đun GSM khá đơn giản. Chúc may mắn!

Và cuối cùng là phần minh họa cách mô-đun xử lý các lệnh.

Đặc biệt cảm ơn người bạn lâu năm của trang web Sergei RD3AVJ vì đã tham gia và hỗ trợ phát triển!

CẬP NHẬT: từ ngày 31/10/12

Tôi đã sửa đổi một chút phần sụn, bây giờ để đặt số lượng SMS thông báo sẽ được gửi, bạn không cần phải biên dịch lại chương trình. Chỉ cần gửi một tin nhắn SMS có tin nhắn đến mô-đun là đủ "Số đầu tiên"(không có dấu ngoặc kép) và số mà lệnh này được gửi đi sẽ được ghi vào bộ nhớ cố định của vi điều khiển.


Xin chào!
Ở đây nảy sinh nhiệm vụ quản lý một ngôi nhà nông thôn, theo dõi nhiệt độ, cửa ra vào và cửa sổ. Và sau đó câu hỏi đặt ra về phương tiện truyền dữ liệu. Vâng, dây và kênh vô tuyến không còn cần thiết nữa do chi phí cao, đường truyền cáp quang chỉ là giấc mơ, nhưng GSM là thứ bạn cần. Lúc đầu, mắt tôi đổ dồn vào những chiếc điện thoại cũ "Motorola", "Nokia", "SonyEricsson". Tôi nhìn, quay lại và thay đổi ý định. Đầu tiên, tôi không muốn hàn các điểm tiếp xúc của nút và không có phản hồi. Thứ hai, hiểu biết về phần mềm điện thoại không phải là vấn đề lớn chút nào. Nói chung, thông qua tư duy sáng tạo và bơi lội trong thế giới rộng lớn của World Wide Web, sau khi bắt được một số loại vi-rút, người ta đã tìm ra một sự thỏa hiệp. Và làm việc với phần mềm và không có bất kỳ nút nào. Mô-đun cung cấp tất cả điều này SIM900D. Tại sao tôi lại thích anh ấy?
- Đầu tiên là dễ dàng cài đặt. Bạn sẽ thấy điều này sau. - Thứ hai là giao tiếp qua UART. (Điều này có nghĩa là MK + SIM900D = giao tiếp bình thường) - Thứ ba là nguồn điện mô-đun từ 3 đến 4,8 volt. Ôi AVR, trời ơi ARM. Nếm. Chà, lời bài hát đủ rồi, đã đến lúc bắt tay vào công việc.
Mô-đun này trông như thế này.

Về việc cài đặt. Như bạn có thể thấy, mô-đun này được thiết kế để gắn trên bề mặt. Kích thước của các miếng tiếp xúc đủ lớn ngay cả đối với LUT. Dưới đây là hình ảnh thiết bị của tôi.

Như bạn có thể thấy, không có gì phức tạp. Bây giờ hãy nói về sơ đồ kết nối của điều kỳ diệu này. Chúng ta hãy nhìn vào hướng dẫn sử dụng. Và chúng ta thấy sơ đồ chân.

Vâng, có rất nhiều thứ, nhưng chúng ta sẽ không sử dụng hết chúng. Việc đầu tiên chúng ta cần làm là buộc tất cả các chân “GND” lại với nhau. Nếu bạn nhìn vào góc trên bên phải, bạn sẽ thấy ba chân riêng biệt. Hai "GND" và "ANT". Những kết luận này được đặt theo cách này là có lý do. Chúng ta hãy xem tài liệu để có hình ảnh về kết nối ăng-ten.

Các tiếp điểm 59 và 61 phải càng gần cực ăng-ten càng tốt. Cần có các mạch bổ sung được đánh dấu bằng các đường chấm để kết nối ăng-ten với cáp. Vì vậy, tôi hàn đầu nối SMA càng gần các chân 59, 60, 61 càng tốt và không bận tâm đến mạch khớp, trong khi với ăng-ten trên cáp 3 mét và ở nơi thu sóng rất kém, tôi đã vắt được 13 điểm trong số 31 từ mô-đun. Đầu nối hiển thị trong hình trên. Chính xác hơn thì chân là từ nó)) Bản thân đầu nối nằm ở phía bên kia. Trong trường hợp này, địa chỉ liên hệ 59 và 61 dường như ôm lấy ăng-ten. Vâng, một cái gì đó như thế này. Tiếp theo, hãy nói về thẻ SIM. Để cài đặt nó, tôi đã sử dụng đầu nối này (SIM ICA-501-006-01-F7)

Điều thú vị nhất là tôi tìm thấy 3 tùy chọn để sắp xếp sơ đồ thẻ SIM. Tôi nên sử dụng cái nào? Tôi sẽ không giới thiệu bất kỳ âm mưu nào, nhưng để đơn giản, tôi sẽ đưa ra sơ đồ chân của đầu nối này. Nhìn từ trên cao.

Nhưng đó không phải là tất cả. Nếu bạn xem sơ đồ kết nối của thẻ SIM trong sách hướng dẫn, bạn có thể thấy ở đó một vi mạch nhất định được gọi là SMF05C. Vi mạch này chứa tới 5 điốt bảo vệ. Cần thiết để bảo vệ danh bạ trên thẻ SIM. Tất nhiên, bạn không cần phải cài đặt nó, nhưng hãy cẩn thận và đừng dùng ngón tay chạm vào danh bạ!!! Là một người tội lỗi, tôi không thể bảo đảm cho bản thân mình nên đã hàn mikruhu. Và đây là sơ đồ.

Tất nhiên, nó được cấp cho thẻ SIM 8 chân, nhưng đối với thẻ SIM 6 chân thì cũng như vậy. Thực sự có hai vấn đề với vi mạch này. Đầu tiên là bạn có thể tìm thấy cô ấy ở đâu. Và điều thứ hai là kích thước của nó... Khi nhận hàng và lấy ra, tôi đặt nó lên bàn... Tóm lại, ở bức ảnh thứ hai từ trên xuống, nó được hàn giữa thẻ SIM và pin. Để so sánh, các điện trở là 0805. Bên phải là một bóng bán dẫn trong gói SOT-23. Vì vậy, có vẻ như chúng ta đã sắp xếp xong thẻ SIM, hãy tiếp tục. Và sau đó là công nghệ chiếu sáng. Nói chung, điều này không dành cho tất cả mọi người. Vì tất cả các tín hiệu này có thể được nhập trực tiếp vào MK và để nó tự sắp xếp. Tôi đã mang tất cả chúng ra khỏi cảm giác về vẻ đẹp của chúng. Vì vậy, hãy tự mình quyết định.
- Đầu tiên là tín hiệu cho biết mô-đun có được bật hay không (STATUS) log 1 - Thứ hai là tín hiệu cho biết mạng đã được đăng ký (NETLIGHT) log 1/0 (nhấp nháy) Nếu nó nhấp nháy cùng tần số, có nghĩa là nó chưa được đăng ký trong mạng. Nếu có khoảng cách dài, nghĩa là đã có kết nối với mạng. . - Thứ ba là nhật ký tín hiệu cuộc gọi/sms (RING) 0 Sáng lên nếu có cuộc gọi đến và nhấp nháy khi nhận được tin nhắn SMS. Hai tín hiệu đầu tiên phải được kết nối thông qua bóng bán dẫn NPN ở chế độ chuyển mạch.

Và tín hiệu thứ ba (RING) phải được kết nối thông qua bóng bán dẫn PNP. Một tín hiệu quan trọng khác là nút bật và tắt mô-đun. (Chúng ta sẽ ở đâu nếu không có cô ấy). Đây là những gì hướng dẫn sử dụng cung cấp cho chúng tôi.

Nghĩa là, chúng tôi áp nhật ký 1 vào đế của bóng bán dẫn trong 1 giây và mô-đun được bật.
Bây giờ hãy nói về dinh dưỡng. Vâng, bây giờ tôi không bận tâm đến một trận đấu vật hay, phải không? Được rồi, hãy tiếp tục. Mô-đun này được cấp nguồn bằng điện áp từ 3 đến 4,8 volt. Mọi thứ có vẻ đơn giản nhưng không phải vậy. Khi thực hiện cuộc gọi, gửi SMS hoặc tìm kiếm mạng, mô-đun có thể yêu cầu dòng điện lên tới 2A. Ồ. Vì vậy người hâm mộ LM7805 và Krenok có thể sẽ thất vọng. May mắn thay, sách hướng dẫn này có hai mạch dựa trên vi mạch MIC29302 (tôi chưa bao giờ thấy nó được giảm giá) và LM2596 (bạn có thể mua cái này). Nhưng tôi lười biếng và đơn giản là tôi không muốn lắp ráp cái hố với quá nhiều dây buộc. Tôi đã tìm kiếm trên Internet và tìm thấy nó. Có một bộ ổn định tốt như vậy cho các bộ xử lý như "Stump", "AMD" ở mức 3,3V và lên đến 7,5A. Chà, tôi nghĩ đó là thứ bạn cần và bạn có thể cấp nguồn cho ARM và mô-đun. Đây là sơ đồ của phép lạ này.

Và đây là những gì nó trông giống như được lắp ráp.

Tôi đã lắp bộ tản nhiệt vì sợ hãi, về nguyên tắc, vi mạch không nóng lên ngay cả khi có cuộc gọi. Và điều cuối cùng bạn nên chú ý đó là pin. Nó là cần thiết để giữ cho đồng hồ thời gian thực tồn tại. Điều quan trọng nhất là bạn không thể bỏ ngỏ kết luận này. Cá nhân tôi đã đồng ý về việc kết nối pin, đó là điều tôi mong muốn dành cho các bạn. Tất nhiên, bạn có thể dán hai AA)) nhưng nó quá lớn, nhưng ở dạng máy tính bảng 2032 ở 3v là thứ bạn cần. May mắn thay, chúng không đắt tiền và các ngăn có thể được hàn trực tiếp lên bảng. Theo tôi đây là giải pháp đơn giản nhất. Bạn quyết định. Vâng đó là tất cả. Đây là tất cả những gì mà sự ô nhục này trông giống nhau và trong tình trạng hoạt động.

Trong bài viết tiếp theo, tôi sẽ cho bạn biết cách tôi phá vỡ mô-đun này nhưng lập trình thông qua thiết bị đầu cuối bằng lệnh AT.
Tôi vẽ sơ đồ trong PCAD-2006
Lưu trữ với các tập tin mô-đun GSM.
Lưu trữ với các tập tin khối ổn định.
Tiếp tục loạt bài viết về module GSM.
Lệnh AT.
Giao tiếp của mô-đun với ATmega8515.
Bảng phát triển dựa trên SIM900D


Foli 14/03/13

Tôi muốn biết thêm về các lệnh AT, UART và trực tiếp làm việc với lệnh này trong CodeVision

Alexey 15/03/13

Tôi hiểu lệnh AT. Tôi không muốn đăng một nửa tác phẩm vì tôi có một số câu hỏi. Nhưng với UART và CVAVR mọi thứ đều đơn giản. Ngay sau khi tôi tìm ra lệnh AT, tôi sẽ đăng ngay lệnh nào và cách gửi chúng từ CVAVR.

Anatok 04.11.13

Tất cả đều đẹp. Nhưng nếu chuông báo động hoạt động ít nhất ở nhiệt độ âm 30 độ và được sạc bằng các tấm pin mặt trời ẩn, đặc biệt là vào mùa đông, thì sẽ có rất nhiều người muốn có một thiết bị như vậy.

Alexey 04.11.13

Mô-đun GSM tiêu thụ tới 2A khi đăng ký vào mạng hoặc thực hiện cuộc gọi hoặc liên lạc qua GPRS. Những tài nguyên như vậy cần có pin tốt và ở mức -30, pin sẽ không dùng được lâu. Ngay cả trong các trạm thời tiết trên cảm biến đường phố, nên sử dụng pin đơn giản.

Gấu 11.11.13

Nếu nó vẫn phù hợp và thú vị...hãy xem EAT cho SIM900. Bên trong ARM có một SDK trong đó bạn có thể tải ứng dụng vào SIM900 mà từ đó bạn có thể thực hiện nhiều việc... ví dụ: gửi các lệnh AT tương tự... + bàn phím + màn hình SPI... + 2 ADC :) Chúc buổi tối vui vẻ :)

Gấu 11.11.13

Nhưng vẫn rất tuyệt khi cung cấp năng lượng cho nó trên L5973D. Đúng, nó được viết về 2A trong bảng dữ liệu... nhưng trên thực tế, đây là những xung lực rất ngắn hạn. Nó hoạt động rất tốt đối với tôi, chẳng hạn như với Arduino Mega, bản thân nó được cấp nguồn từ cổng USB (có dòng điện 0,5 A)

Alexey 11.11.13

Đây là sự chà xát. Lúc đầu mình cũng cấp nguồn từ 7805, mọi thứ đều hoạt động, sau đó bùm... Và khi kết nối mạng thì mọi thứ đều tắt và sau đó nó khởi động lại. Có vẻ như con chó bảo vệ đã khởi động lại sau một cuộc tấn công kiếm ăn. Còn với L7953D thì sẽ đẹp đấy nhưng mua ở đâu và giá bao nhiêu :) Thế là mình chuyển sang IRU1075

Alexey 11.11.13

Tôi xin lỗi vì những sai sót, đó là GOODROYD chết tiệt đang điêu khắc những kẻ lừa đảo cho tôi. Anh ấy nghĩ mình thông minh hơn. Tôi sẽ không chỉnh sửa, hãy để Google xấu hổ về công việc của họ.

Chú Misha 24/12/13

Khi tôi đăng ký trên mạng Atmega, nó sẽ khởi động lại. Mặc dù nó tốn xung dcdc. 200 tụ điện microfarad. Và đôi khi nó hoạt động ổn định. Tôi đã kiệt sức rồi.

Alexey 25/12/13

Đề án đến trường quay. Rất khó để hiểu vấn đề bằng lời nói.

Chú Misha 25/12/13
Chú Misha 25/12/13

Http://ybex.com/d/tk7kgiefpklpeujb1zbl4lo5 mrkf7ayvci04ouq3.html MK được cấp nguồn bằng 2,8 (tôi thậm chí đã thử 3,7) Volt, để không ảnh hưởng đến bộ chuyển đổi mức.

Alexey 25/12/13
Serge 19/07/14

Xin chào Alexey! Bạn có bo mạch làm sẵn sim900 không, tôi có thể mua được không?

Alexey 19/07/14

Sẵn sàng theo nghĩa nào? Bản thân mô-đun này đã được lắp ráp và tất cả những gì còn lại là tạo một bảng mạch với các đầu vào và đầu ra cần thiết cho một thiết bị cụ thể. Bảng trong bài viết này chỉ là bảng demo để gỡ lỗi chương trình. Một thiết bị cụ thể yêu cầu kích thước, vị trí của đầu nối, đầu ra tai nghe và micrô. Đầu nối ăng-ten sẽ ở đâu? Cung cấp thông tin chi tiết hơn về những gì bạn cần.

Andrey 09.28.14

Theo như tôi hiểu thì đây là nguyên mẫu của chiếc khăn mà tôi rất nóng lòng muốn được xem. Chỉ ở phiên bản thương mại, nó mới được kết hợp với nguồn điện và nâng cấp đầu ra âm thanh. Rằng có một tiếng vang lớn.

Alexey 09.28.14

Thực sự nó là. Tôi vừa giết vài con chim bằng một hòn đá. Đã giải quyết vấn đề lâu đời về nguồn điện và mức độ phù hợp trên UART. Và để thêm đầu vào và đầu ra âm thanh sang trọng. Trên thực tế, một chiếc điện thoại di động đã được làm sẵn.

Andrey 09.28.14

Tôi muốn đóng góp cho tương lai. Về bản chất, bo mạch này là một khối hoàn chỉnh. Và nó THỰC HÀNH có thể được sử dụng trong thành phẩm. tuy nhiên, có một NHƯNG. Với tán meson, tốt hơn nên đặt nó lên trên (đầu nối ăng-ten, truy cập vào thẻ SIM), vì vậy nên chừa các lỗ song song với tất cả các chân cắm cho các “thiết bị ngoại vi” cho các chân giống nhau có khả năng bị hỏng. hàn chúng theo hướng “đi xuống”. Những thứ kia. Tôi muốn gắn thiết bị này vào bảng vi điều khiển, định tuyến nó đến bảng mạch của bạn, hàn các đầu nối giao phối vào đó và kết nối nó. Cùng với

Andrey 09.28.14

Tôi đã đọc được một nửa tin nhắn, nhưng tôi hy vọng ý tưởng đã rõ ràng-)

Alexey 09.28.14
Sergey 01/02/15

Cho em hỏi tại sao module nóng lên và không kết nối được mạng?

Alexey 02/01/15

Cái này có một vài nguyên nhân. Đầu tiên, dinh dưỡng bị vượt quá. Thứ hai, điểm cộng có đi đến điểm chung không? Bạn cần quan sát kỹ các chân trợ lực. Thứ ba, bụng của mô-đun có chạm vào đường cung cấp hay không. Có một số điểm tiếp xúc công nghệ trên bụng phải được cách ly với bất kỳ dây dẫn nào. Thứ tư, đầu cuối ăng-ten có bị chập vào đầu cuối chung không? Để chính xác hơn, bạn cần nhìn vào bảng. Gửi cho tôi phí qua email và tôi sẽ xem có vấn đề gì không.

Sergey 01/02/15

Tôi có bo mạch gốc, MasterKit BM8039 và cả hai đều gặp cùng một vấn đề... khi bạn lắp thẻ SIM, mô-đun bắt đầu nóng lên và không có mạng.

Alexey 02/01/15

Nó khá khó để nói. Mạch là nhà máy, bạn cần phải leo lên bảng. Từ tài liệu, rõ ràng bo mạch không có điốt bảo vệ được khuyến nghị cho thẻ SIM. Bản thân thẻ và đầu nối có cùng chân cắm không? Mô-đun 300 đã cũ và theo tôi nó chỉ hoạt động với thẻ SIM 5V, nhưng bây giờ tất cả đều là 3V. Nhưng tôi có thể sai. Bạn phải nhìn vào bảng, thật khó để nói bất cứ điều gì. Nếu cả hai triệu chứng giống nhau thì tôi sẽ hướng về đầu nối và điện áp của thẻ SIM. Một lần nữa, thẻ SIM hiện đại là 3 volt.

Sergey 01/02/15

Nó có giá sim900D...không có điốt.Khi tôi lắp thẻ vào, nguồn sẽ xuất hiện trên mô-đun và nó bắt đầu nóng lên, nhưng chẳng hạn như trên thẻ SIM. không hoạt động từ 9 feet...

Sergey 01/02/15

Ban đầu chúng hoạt động tốt... sau đó có gì đó không ổn... Tôi không thể hiểu được điều gì..

Sergey 01/02/15

Có cách nào để kiểm tra mô-đun mà không cần tháo nó ra không?

Alexey 02/01/15

Chính xác thì cái gì đã bị rút ngắn? Nếu không có nguồn vào thẻ SIM thì tôi e rằng đường dây dành cho thẻ SIM đã chết. Simka có bao nhiêu chân? 6 hay 8? Để kiểm tra, bạn có thể giao tiếp với module thông qua bus UART 3, 4 chân mà không cần lắp thẻ SIM. Nếu anh ta từ chối chấp nhận lệnh AT, thì tôi nghĩ chúng ta có thể chôn cất anh ta.

Nặc danh 01/02/15

Tôi không biết chính xác điều gì đã rút ngắn nó ra .. 8 chân .. nhưng làm thế nào để giao tiếp?

Alexey 02/01/15

Có cả 8 trên đầu nối không? Lấy chip FT232RL và lắp bộ chuyển đổi USB<->TTL, hàn vào UART của mô-đun, khởi chạy một thiết bị đầu cuối, ví dụ như Putty, viết AT và nhấn enter. Nếu nó trả về OK thì tất cả không bị mất. Nếu có sự im lặng... Vào thùng rác. Và vâng, trên bảng có những loại đèn LED nào? Việc đăng ký trên mạng được xác định như thế nào?

Serge 02.02.15 03:12

Ngoài ra còn có 8 trên đầu nối...có hai đèn LED trên bảng, xanh lục và đỏ, sự hiện diện của mạng được xác định bằng đèn xanh lục nhấp nháy ba giây một lần...bằng cách nào đó tôi có thể chèn ảnh của bảng không ?

Alexey 02.02.15 07:42

Vào diễn đàn dễ dàng hơn.

Serge 02.02.15 14:02

Nếu bạn không lắp thẻ SIM, điều đó có nghĩa là bạn cần cấp nguồn cho mô-đun?

Alexey 02.02.15 15:48

Tôi không thể biết được bằng lá trà. Tôi cần một sơ đồ hoặc một bảng mạch. Và nguồn điện của mô-đun và thẻ SIM có liên quan gì đến nó? Nó rất có thể giao nhau với một số vi điều khiển khác. Anh ấy cung cấp thức ăn. Nói chung, bạn cần một sơ đồ. Và nó giống như chẩn đoán qua điện thoại.

Serge 02.02.15 15:56

Tôi có thể đăng sơ đồ ở đâu trên diễn đàn?

Serge 02.02.15 15:57

Nguồn chỉ đến mô-đun khi bạn lắp thẻ SIM

Alexey 02.02.15 19:27

Chà, mô-đun SIM900D không có điều đó. Để bật mô-đun, bạn cần giữ mức thấp ở chân 12 rồi nâng lên. Không thể lắp hoặc tháo thẻ SIM khi mô-đun được bật, có khả năng làm cháy cổng. Nếu bạn xem tài liệu, bạn có thể tìm thấy các đề xuất ở đó để lắp đặt điốt bảo vệ trên đường cổng thẻ SIM. Trên diễn đàn. Tạo một chủ đề và đăng một bức ảnh.

Eugene 09/08/15 12:04

Khi tôi đặt điện áp vào mô-đun, có một điện thế dương ở chân thứ 12 và một điện thế dương ở chân thứ 5 (với điều kiện là các chân này được treo trong không khí). Xin vui lòng cho tôi biết, có phải có số 0 ở chặng thứ 5 không? Nếu không, xin vui lòng sửa cho tôi.

Alexey 09/08/15 13:21

Chân thứ 12 là sự bao gồm của mô-đun. Khi cấp nguồn, 1 bị treo, để bật mô-đun, bạn cần ấn chân thứ 12 vào dây chung trong vài giây, tức là cấp 0. Khi cấp nguồn cho mô-đun 5, chân này phải được kéo vào dây chung bởi hai điện trở (điều này có thể được nhìn thấy từ sơ đồ kết nối bóng bán dẫn ở chế độ chuyển mạch) và nó phải bằng 0, vì đế cần được kéo lên 0 để đóng hoàn toàn bóng bán dẫn. Sau khi nhấn chân thứ 12 về 0, số 1 sẽ xuất hiện ở chân thứ 5 và sau một lúc sẽ có một đường uốn khúc cho biết trạng thái khả dụng và kết nối với mạng.