Mục lục:

Thiết bị điều khiển từ xa GSM / SMS dựa trên Arduino: 16 bước (có hình ảnh)
Thiết bị điều khiển từ xa GSM / SMS dựa trên Arduino: 16 bước (có hình ảnh)

Video: Thiết bị điều khiển từ xa GSM / SMS dựa trên Arduino: 16 bước (có hình ảnh)

Video: Thiết bị điều khiển từ xa GSM / SMS dựa trên Arduino: 16 bước (có hình ảnh)
Video: #android #nhom13 HẸN GIỜ ĐIỀU KHIỂN THIẾT BỊ QUA TIN NHẮN SMS 2024, Tháng mười một
Anonim
Thiết bị điều khiển từ xa GSM / SMS dựa trên Arduino
Thiết bị điều khiển từ xa GSM / SMS dựa trên Arduino

! ! ! LƯU Ý ! !

Do tháp điện thoại di động cục bộ đang được nâng cấp trong khu vực của tôi, tôi không thể sử dụng mô-đun GSM này nữa. Tháp mới hơn không còn hỗ trợ thiết bị 2G. Vì vậy, tôi không thể hỗ trợ gì cho dự án này nữa.

Với một loạt các mô-đun GSM có sẵn cho những người yêu thích, hầu hết chúng tôi đã kết thúc việc mua một mô-đun. Tôi đã mua một mô-đun SIM800L tại địa phương và cuối cùng đã chơi với các lệnh khác nhau của mô-đun.

Sử dụng Arduino Uno và Arduino IDE, tôi đã có thể biến ý tưởng của mình thành hiện thực. Điều này không hề dễ dàng, với VẤN ĐỀ DUY NHẤT LỚN NHẤT là giới hạn của chỉ 2KB SRAM. Sau rất nhiều nghiên cứu trên internet và các diễn đàn khác nhau, tôi đã có thể khắc phục được hạn chế này.

Các kỹ thuật lập trình khác nhau, hiểu biết nhiều hơn về trình biên dịch Arduino và sử dụng thẻ SIM và EEPROM để có thêm bộ nhớ, đã lưu dự án này. Sau một số thay đổi đối với mã, một nguyên mẫu ổn định đã được xây dựng và thử nghiệm trong khoảng thời gian một tuần.

Một hạn chế của SRAM hạn chế là thiết bị không thể được trang bị màn hình hiển thị và các phím người dùng. Điều này dẫn đến việc viết lại mã hoàn toàn. Không có giao diện người dùng, lựa chọn duy nhất còn lại để tiếp tục với dự án, là sử dụng tin nhắn SMS để cấu hình đơn vị cũng như người dùng.

Đây hóa ra là một dự án thú vị và nhiều tương lai đã được thêm vào khi quá trình phát triển tiếp tục.

Mục tiêu chính của tôi là gắn bó với Arduino Uno, hoặc trong trường hợp này là ATMEGA328p và không sử dụng bất kỳ thành phần gắn kết bề mặt nào. Điều này sẽ giúp công chúng dễ dàng sao chép và xây dựng đơn vị.

Đặc điểm kỹ thuật của đơn vị:

  • Tối đa 250 người dùng có thể được lập trình trên thiết bị
  • Bốn đầu ra kỹ thuật số
  • Bốn đầu vào kỹ thuật số
  • Mỗi đầu ra có thể được cấu hình như một đầu ra PULSE hoặc ON / OFF
  • Thời lượng xung đầu ra có thể được đặt trong khoảng 0,5.. 10 giây
  • Mỗi đầu vào có thể được cấu hình để kích hoạt các thay đổi TẮT sang BẬT.
  • Mỗi đầu vào có thể được định cấu hình để kích hoạt các thay đổi BẬT thành TẮT
  • Mỗi thời gian trễ đầu vào có thể được đặt trong khoảng từ 0 giây đến 1 giờ
  • Tin nhắn SMS cho các thay đổi trên Đầu vào có thể được gửi tới 5 người dùng khác nhau
  • Người dùng có thể đặt tên và văn bản trạng thái cho mỗi đầu vào
  • Người dùng có thể đặt tên và văn bản trạng thái cho mỗi đầu ra
  • Thiết bị có thể được cấu hình để nhận tin nhắn số dư thẻ SIM qua nhắn tin USSD.
  • Tất cả người dùng có thể yêu cầu cập nhật trạng thái I / O của thiết bị
  • Tất cả người dùng có thể kiểm soát từng đầu ra thông qua tin nhắn SMS
  • Tất cả người dùng có thể kiểm soát các đầu ra riêng lẻ bằng cách gọi thiết bị

Các tính năng an toàn

  • Thiết lập ban đầu của thiết bị chỉ có thể được thực hiện khi ở thiết bị.
  • Thiết lập ban đầu chỉ có thể được thực hiện bởi MASTER USER
  • Các lệnh thiết lập ban đầu sẽ tự động bị tắt sau mười phút.
  • Chỉ các cuộc gọi và tin nhắn SMS được nhắn tin từ những người dùng đã biết mới có thể kiểm soát thiết bị
  • Người dùng chỉ có thể vận hành các đầu ra do NGƯỜI SỬ DỤNG CHÍNH chỉ định cho họ

Các tính năng khác

  • Các cuộc gọi đến đơn vị này là miễn phí, vì cuộc gọi không bao giờ được trả lời.
  • Khi thiết bị được gọi, cuộc gọi sẽ chỉ dừng lại sau 2 giây. Đây là xác nhận với người gọi rằng đơn vị đã trả lời cuộc gọi.
  • Nếu nhà cung cấp dịch vụ thẻ SIM hỗ trợ tin nhắn USSD, người dùng MASTER có thể thực hiện các yêu cầu về số dư. Tin nhắn USSD chứa số dư, sau đó sẽ được chuyển tiếp đến NGƯỜI DÙNG CHÍNH.

Bước 1: Cung cấp điện

Nguồn cấp
Nguồn cấp

Để thiết bị có thể được kết nối với các hệ thống an ninh tiêu chuẩn (hệ thống báo động, cửa ga ra điện, động cơ cổng điện), thiết bị sẽ được cấp nguồn từ 12V DC thường có sẵn trên các hệ thống như vậy.

Nguồn được cấp trên các cực 12V IN và 0V, và được bảo vệ bằng cầu chì 1A. Có sẵn các đầu cuối 12V OUT bổ sung và cũng được bảo vệ bằng cầu chì.

Diode D1 bảo vệ thiết bị chống lại các kết nối phân cực ngược trên đường 12V.

Các tụ điện C1 và C2 lọc bỏ bất kỳ tiếng ồn nào có trên đường cung cấp 12V. Nguồn cung cấp 12V được sử dụng để cấp nguồn cho các rơ le của thiết bị.

Nguồn cung cấp 5V bao gồm bộ điều chỉnh điện áp LM7805L và đầu ra ổn định + 5V cần thiết cho mô-đun SIM800L GSM, cũng như bộ vi xử lý. Các tụ điện C3 và C4 lọc bỏ bất kỳ tiếng ồn nào có thể có trên đường cung cấp + 5V. Các tụ điện kích thước tương đối lớn đã được sử dụng, vì mô-đun SIM800L GSM sử dụng khá nhiều năng lượng khi truyền tải.

Không cần tản nhiệt trên bộ điều chỉnh điện áp.

Bước 2: Đầu vào kỹ thuật số

Đầu vào kỹ thuật số
Đầu vào kỹ thuật số
Đầu vào kỹ thuật số
Đầu vào kỹ thuật số

Tất cả các tín hiệu đầu vào kỹ thuật số đều là 12V và phải được giao tiếp với bộ điều khiển vi mô 5V. Đối với điều này, các bộ ghép quang được sử dụng để cách ly tín hiệu 12V khỏi hệ thống 5V.

Điện trở đầu vào 1K giới hạn dòng điện đầu vào cho bộ ghép quang trong khoảng 10mA.

Do giới hạn về không gian, không có không gian trên Bo mạch PC cho các điện trở kéo lên 5V. Bộ điều khiển vi mô được thiết lập để cho phép các chân đầu vào kéo lên yếu.

Khi không có tín hiệu trên đầu vào (LOW) của bộ ghép quang, sẽ không có dòng điện nào chạy qua đèn LED của bộ ghép quang. Do đó, bóng bán dẫn bộ ghép quang bị tắt. Việc kéo lên yếu của bộ điều khiển vi mô sẽ kéo bộ thu lên gần 5V và sẽ được bộ điều khiển vi mô coi là mức logic CAO.

Với 12V được áp dụng (CAO) cho đầu vào của bộ ghép quang, khoảng 10mA sẽ chạy qua đèn LED của bộ ghép quang. Do đó bóng bán dẫn bộ ghép quang sẽ được bật. Điều này sẽ kéo bộ thu xuống gần 0V và sẽ được bộ điều khiển vi mô coi là mức logic THẤP.

Lưu ý rằng đầu vào mà bộ điều khiển vi mô nhìn thấy được đảo ngược so với đầu vào 12V.

Mã thông thường để đọc chân đầu vào trông như sau:

boolean Input = digitalRead (đầu vào);

Để sửa tín hiệu đảo ngược, hãy sử dụng mã sau:

boolean Input =! digitalRead (inputpin); // LƯU Ý! ở phía trước của bài đọc

Bây giờ, đầu vào mà bộ điều khiển vi mô nhìn thấy sẽ tương ứng với đầu vào trên đầu vào 12V.

Mạch đầu vào cuối cùng bao gồm 4 đầu vào kỹ thuật số. Mỗi đầu vào được kết nối với các thiết bị đầu cuối trên PC Board.

Bước 3: Đầu ra kỹ thuật số

Đầu ra kỹ thuật số
Đầu ra kỹ thuật số
Đầu ra kỹ thuật số
Đầu ra kỹ thuật số
Đầu ra kỹ thuật số
Đầu ra kỹ thuật số

Thông thường, với một mạch chỉ dẫn động một số rơ le tối thiểu, cách tốt nhất là sử dụng một mạch điều khiển bóng bán dẫn như hình minh họa. Nó đơn giản, chi phí thấp và hiệu quả.

Các điện trở cung cấp kéo xuống đất và giới hạn dòng điện cơ sở của bóng bán dẫn. Bóng bán dẫn được sử dụng để tăng dòng điện có sẵn để điều khiển rơ le. Chỉ với 1mA được rút ra từ chân điều khiển vi mô, bóng bán dẫn có thể chuyển tải 100mA. Quá đủ cho hầu hết các loại rơ le. Diode là một diode bay trở lại, bảo vệ mạch khỏi các xung điện áp cao trong quá trình chuyển mạch rơ le. Lợi thế bổ sung của việc sử dụng mạch này, là điện áp hoạt động của rơle có thể khác với điện áp của bộ điều khiển vi mô. Do đó, thay vì sử dụng rơ le 5V, người ta có thể sử dụng bất kỳ điện áp DC nào lên đến 48V.

Giới thiệu ULN2803

Dự án càng yêu cầu nhiều rơle thì số lượng thành phần càng cao. Điều này sẽ làm cho việc thiết kế PCB khó khăn hơn và có thể sử dụng không gian PCB có giá trị. Nhưng việc sử dụng mảng bóng bán dẫn, như ULN2803, chắc chắn sẽ hỗ trợ việc giữ cho kích thước PCB nhỏ. ULN2803 phù hợp lý tưởng cho đầu vào 3.3V và 5V từ bộ điều khiển vi mô và có thể điều khiển rơle lên đến 48V DC. ULN2803 này có 8 mạch bóng bán dẫn riêng lẻ, mỗi mạch được trang bị tất cả các thành phần cần thiết để chuyển đổi một rơ le.

Mạch đầu ra cuối cùng bao gồm một ULN3803, điều khiển 4 rơ le đầu ra DC 12V. Mỗi tiếp điểm của rơle có sẵn trên bảng điều khiển PC Board.

Bước 4: Bộ tạo dao động bộ điều khiển vi mô

Bộ tạo dao động bộ điều khiển vi mô
Bộ tạo dao động bộ điều khiển vi mô
Bộ tạo dao động bộ điều khiển vi mô
Bộ tạo dao động bộ điều khiển vi mô
Bộ tạo dao động bộ điều khiển vi mô
Bộ tạo dao động bộ điều khiển vi mô

Mạch tạo dao động

Bộ điều khiển vi mô cần một bộ dao động để hoạt động chính xác. Để phù hợp với thiết kế Arduino Uno, mạch sẽ sử dụng bộ dao động 16MHz tiêu chuẩn. Hai tùy chọn có sẵn:

Pha lê

Phương pháp này sử dụng một tinh thể kết nối với hai tụ tải. Đây là lựa chọn phổ biến nhất.

Bộ cộng hưởng

Một bộ cộng hưởng về cơ bản là một tinh thể và hai tụ tải trong một gói 3 chân duy nhất. Điều này làm giảm số lượng thành phần và tăng không gian có sẵn trên PC Board.

Để giữ số lượng thành phần thấp nhất có thể, tôi đã chọn sử dụng bộ cộng hưởng 16MHz.

Bước 5: Đèn LED báo hiệu

Đèn LED chỉ báo
Đèn LED chỉ báo
Đèn LED chỉ báo
Đèn LED chỉ báo

Bất kỳ mạch nào sẽ là gì nếu không có một số đèn LED? Cung cấp được thực hiện trên PC Board cho đèn LED 3mm.

Điện trở 1K được sử dụng để hạn chế dòng điện qua đèn LED dưới 5mA, Khi sử dụng đèn LED sáng cao 3mm cho độ sáng tuyệt vời.

Để dễ dàng giải thích các đèn LED trạng thái, hai màu được sử dụng. Bằng cách kết hợp hai đèn LED với các chỉ báo nhấp nháy, có thể thu được khá nhiều thông tin chỉ từ hai đèn LED.

dẫn màu đỏ

Đèn LED màu đỏ được sử dụng để chỉ ra các tình trạng lỗi, sự chậm trễ kéo dài, bất kỳ lệnh nào không chính xác.

LED xanh

Đèn LED màu xanh lá cây được sử dụng để chỉ ra các đầu vào và lệnh khỏe mạnh và / hoặc chính xác.

Bước 6: Mạch thiết lập lại bộ xử lý vi mô

Mạch khởi động lại bộ vi xử lý
Mạch khởi động lại bộ vi xử lý

Vì lý do bảo mật, một số chức năng của thiết bị chỉ khả dụng trong 10 phút đầu tiên sau khi bật nguồn thiết bị.

Với nút đặt lại, không cần phải tắt nguồn thiết bị để đặt lại thiết bị.

Làm thế nào nó hoạt động

Điện trở 10K sẽ giữ dòng RESET gần 5V. Khi nhấn nút, dòng ĐẶT LẠI sẽ được kéo về 0V, do đó giữ bộ điều khiển vi mô ở trạng thái đặt lại. Khi nút được nhả ra, dòng ĐẶT LẠI trở về% v, khôi phục lại bộ điều khiển vi mô.

Bước 7: Mô-đun SIM800L

Mô-đun SIM800L
Mô-đun SIM800L
Mô-đun SIM800L
Mô-đun SIM800L
Mô-đun SIM800L
Mô-đun SIM800L

Trái tim của thiết bị là mô-đun SIM800L GSM. Mô-đun này chỉ sử dụng 3 chân I / O trên bộ điều khiển vi mô.

Mô-đun giao tiếp với bộ điều khiển vi mô thông qua một cổng nối tiếp tiêu chuẩn.

  • Tất cả các lệnh đến thiết bị được gửi qua cổng nối tiếp bằng các lệnh AT tiêu chuẩn.
  • Với cuộc gọi đến hoặc khi nhận được SMS, thông tin sẽ được gửi đến bộ điều khiển vi mô qua cổng nối tiếp bằng văn bản ASCII..

Để tiết kiệm dung lượng, mô-đun GSM được kết nối với Bo mạch PC thông qua đầu cắm 7 chân. Điều này giúp cho việc tháo lắp mô-đun GSM trở nên dễ dàng. Điều này cũng cho phép người dùng dễ dàng lắp / tháo thẻ SIM ở dưới cùng của mô-đun.

Cần có thẻ SIM đang hoạt động và thẻ SIM phải có thể gửi và nhận tin nhắn SMS.

Thiết lập mô-đun SIM800L GSM

Khi bật nguồn thiết bị, chốt đặt lại mô-đun GSM được kéo xuống thấp trong một giây. Điều này đảm bảo rằng mô-đun GSM chỉ khởi động sau khi nguồn điện đã ổn định. Mô-đun GSM mất vài giây để khởi động lại, vì vậy hãy đợi 5 giây trước khi gửi bất kỳ lệnh AT nào đến mô-đun.

Để đảm bảo rằng mô-đun GSM được cấu hình để giao tiếp chính xác với bộ điều khiển vi mô, các lệnh AT sau được sử dụng trong khi khởi động:

TẠI

được sử dụng để xác định xem mô-đun GSM có khả dụng hay không

AT + CREG?

Thăm dò lệnh này cho đến khi mô-đun GSM được đăng ký trên mạng điện thoại di động

AT + CMGF = 1

Đặt chế độ tin nhắn SMS thành ASCII

AT + CNMI = 1, 2, 0, 0, 0

Nếu có sẵn SMS, hãy gửi chi tiết SMS tới cổng nối tiếp mô-đun GSM

AT + CMGD = 1, 4

Xóa mọi tin nhắn SMS được lưu trữ trên thẻ SIM

AT + CPBS = / "SM

Đặt danh bạ của mô-đun GSM vào thẻ SIM

AT + COPS = 2, sau đó AT + CLTS = 1, sau đó AT + COPS = 0

Đặt thời gian mô-đun GSM thành thời gian mạng điện thoại di động

Chờ 5 giây để thời gian được thiết lập

AT + CUSD = 1

Bật chức năng nhắn tin USSD

Bước 8: Bộ điều khiển Micro

Bộ điều khiển Micro
Bộ điều khiển Micro
Bộ điều khiển Micro
Bộ điều khiển Micro
Bộ điều khiển Micro
Bộ điều khiển Micro

Bộ điều khiển vi mô là AtMega328p tiêu chuẩn, giống như được sử dụng trên Arduino Uno. Do đó, mã có thể so sánh với cả hai. Để cho phép lập trình trên bo mạch dễ dàng, một tiêu đề lập trình 6 chân có sẵn trên PC Board.

Các phần khác nhau của thiết bị được kết nối với bộ vi xử lý và bao gồm các phần sau:

  • Bốn đầu vào kỹ thuật số
  • Bốn đầu ra kỹ thuật số
  • Bộ dao động
  • Hai đèn LED chỉ báo
  • Đặt lại mạch
  • Mô-đun GSM SIM800L

Tất cả các liên lạc đến và đi từ mô-đun GSM được thực hiện bằng cách sử dụng chức năng SoftwareSerial (). Phương pháp này được sử dụng để giải phóng cổng nối tiếp chính cho Arduino IDE trong giai đoạn phát triển.

Chỉ với 2KB SRAM và 1KB EEPROM, không đủ bộ nhớ để lưu trữ nhiều hơn một vài người dùng có thể được liên kết với thiết bị. Để giải phóng SRAM, tất cả thông tin người dùng được lưu trữ trên thẻ SIM trên mô-đun GSM. Với sự sắp xếp này, thiết bị có thể phục vụ cho 250 người dùng khác nhau.

Dữ liệu cấu hình của thiết bị được lưu trữ vào EEPROM, do đó tách biệt dữ liệu người dùng và dữ liệu hệ thống với nhau.

Vẫn còn một số chân I / O dự phòng có sẵn, Tuy nhiên, tùy chọn thêm màn hình LCD và / hoặc bàn phím đã không thể thực hiện được do lượng lớn SRAM được sử dụng bởi bộ đệm nhận và truyền SoftWareSerial (), Do thiếu bất kỳ loại giao diện người dùng nào trên thiết bị, tất cả cài đặt và người dùng đều được lập trình bằng tin nhắn SMS.

Bước 9: Tối ưu hóa bộ nhớ SRAM

Tối ưu hóa bộ nhớ SRAM
Tối ưu hóa bộ nhớ SRAM

Khá sớm trong giai đoạn phát triển, Arduino IDE đã báo cáo bộ nhớ SRAM thấp khi biên dịch mã. Một số phương pháp đã được sử dụng để khắc phục điều này.

Giới hạn dữ liệu nhận được trên cổng nối tiếp

Mô-đun GSM sẽ báo cáo tất cả các thông báo tới cổng nối tiếp của bộ điều khiển vi mô. Khi nhận một số tin nhắn SMS, tổng độ dài của tin nhắn nhận được có thể vượt quá 200 ký tự. Điều này có thể nhanh chóng tiêu thụ tất cả SRAM có sẵn trên chip AtMega và sẽ gây ra các vấn đề về độ ổn định.

để ngăn chặn điều này, chỉ 200 ký tự đầu tiên của BẤT KỲ tin nhắn nào nhận được từ mô-đun GSM sẽ được sử dụng. Ví dụ dưới đây cho thấy điều này được thực hiện như thế nào bằng cách đếm các ký tự nhận được trong biến Counter.

// quét dữ liệu từ cổng nối tiếp phần mềm

// ----------------------------------------------- RxString = ""; Bộ đếm = 0; while (SSerial.available ()) {delay (1); // độ trễ ngắn để có thời gian đặt dữ liệu mới vào bộ đệm // lấy ký tự mới RxChar = char (SSerial.read ()); // thêm 200 ký tự đầu tiên vào chuỗi if (Counter <200) {RxString.concat (RxChar); Bộ đếm = Bộ đếm + 1; }}

Giảm mã Serial.print ()

Mặc dù tiện dụng trong quá trình phát triển, Arduino Serial Monitor có thể sử dụng rất nhiều SRAM. Mã được phát triển bằng cách sử dụng càng ít mã Serial.print () càng tốt. Một phần mã đã được kiểm tra để hoạt động, tất cả mã Serial.print () đã bị xóa khỏi phần đó của mã.

Sử dụng mã Serial.print (F ((""))

Nhiều thông tin thường được hiển thị trên Arduino Serial Monitor sẽ có ý nghĩa hơn khi các mô tả được thêm vào. Lấy ví dụ sau:

Serial.println ("Đang chờ các hành động cụ thể");

Chuỗi "Đang chờ các hành động cụ thể" là cố định và không thể thay đổi.

Trong quá trình biên dịch mã, trình biên dịch sẽ bao gồm chuỗi "Đang chờ các hành động cụ thể" trong bộ nhớ FLASH.

Ngoài ra, trình biên dịch thấy rằng chuỗi là một hằng số, được sử dụng bởi lệnh "Serial.print" hoặc "Serial.println". Trong quá trình khởi động vi mô, hằng số này cũng được đặt vào bộ nhớ SRAM.

Bằng cách sử dụng tiền tố "F" trong các hàm Serial.print (), nó cho trình biên dịch biết rằng chuỗi này chỉ có sẵn trong bộ nhớ FLASH. Đối với ví dụ này, chuỗi chứa 28 ký tự. Đây là 28 byte có thể được giải phóng trong SRAM.

Serial.println (F ("Đang chờ các hành động cụ thể"));

Phương pháp này cũng áp dụng cho các lệnh SoftwareSerial.print (). Khi mô-đun GSM hoạt động trên các lệnh AT, mã chứa nhiều lệnh SoftwareSerial.print ("xxxx"). Sử dụng tiền tố "F" đã giải phóng gần 300 byte SRAM.

Không sử dụng cổng nối tiếp phần cứng

Sau khi gỡ lỗi mã, cổng nối tiếp phần cứng đã bị vô hiệu hóa bằng cách xóa TẤT CẢ các lệnh Serial.print (). Điều này giải phóng thêm một vài byte SRAM.

Không có bất kỳ lệnh Serial.print () nào còn lại trong mã, thêm 128 byte SRAM đã được cung cấp. Điều này được thực hiện bằng cách xóa cổng nối tiếp phần cứng khỏi mã. Điều này tăng tốc độ truyền 64 byte và bộ đệm nhận 64 byte.

// Serial.begin (9600); // cổng nối tiếp phần cứng bị vô hiệu hóa

Sử dụng EEPROM cho chuỗi

Đối với mỗi đầu vào và đầu ra, cần lưu ba chuỗi. Chúng là tên kênh, chuỗi khi kênh bật và chuỗi khi kênh tắt.

Với tổng số 8 kênh I / O, chúng sẽ

  • 8 chuỗi chứa tên kênh, mỗi chuỗi dài 10 ký tự
  • 8 chuỗi chứa kênh Trên mô tả, mỗi chuỗi dài 10 ký tự
  • 8 chuỗi chứa mô tả kênh Tắt, mỗi chuỗi dài 10 ký tự

Quảng cáo này lên đến 240 byte SRAM. Thay vì lưu trữ các chuỗi này trong SRAM, chúng được lưu trữ trong EEPROM. Điều này giải phóng thêm 240 byte SRAM.

Khai báo chuỗi với độ dài chính xác

Biến thường được khai báo ở đầu mã. Một lỗi thường gặp khi khai báo biến chuỗi, đó là chúng ta không khai báo chuỗi với số ký tự chính xác.

Chuỗi GSM_Nr = "";

Chuỗi GSM_Name = ""; Chuỗi GSM_Msg = "";

Trong khi khởi động, bộ điều khiển vi mô sẽ không cấp phát bộ nhớ trong SRAM cho các biến này. Điều này sau đó có thể gây ra sự không ổn định khi các chuỗi này được sử dụng.

Để ngăn chặn điều này, hãy khai báo các chuỗi với số ký tự chính xác mà chuỗi sẽ sử dụng trong phần mềm.

Chuỗi GSM_Nr = "1000000000";

Chuỗi GSM_Name = "2000000000"; Chuỗi GSM_Msg = "3000000000";

Lưu ý cách tôi đã không khai báo các chuỗi có các ký tự giống nhau. Nếu bạn khai báo tất cả các chuỗi này bằng câu "1234567890", trình biên dịch sẽ thấy cùng một chuỗi trong ba biến và chỉ cấp phát đủ bộ nhớ trong SRAM cho một trong các chuỗi.

Bước 10: Kích thước bộ đệm nối tiếp phần mềm

Kích thước bộ đệm nối tiếp phần mềm
Kích thước bộ đệm nối tiếp phần mềm

Trong đoạn mã sau, bạn sẽ nhận thấy rằng tối đa 200 ký tự có thể được đọc từ cổng nối tiếp phần mềm.

// quét dữ liệu từ cổng nối tiếp phần mềm

// ----------------------------------------------- RxString = ""; Bộ đếm = 0; while (SSerial.available ()) {delay (1); // độ trễ ngắn để tạo thời gian cho dữ liệu mới được đặt vào bộ đệm // lấy ký tự mới RxChar = char (SSerial.read ()); // thêm 200 ký tự đầu tiên vào chuỗi if (Counter <200) {RxString.concat (RxChar); Bộ đếm = Bộ đếm + 1; }}

Điều này cũng yêu cầu bộ đệm ít nhất 200 byte cho cổng nối tiếp phần mềm. theo mặc định, bộ đệm cổng nối tiếp phần mềm chỉ có 64 byte. Để tăng bộ đệm này, hãy tìm kiếm tệp sau:

SoftwareSerial.h

Mở tệp bằng trình soạn thảo văn bản và thay đổi kích thước bộ đệm thành 200.

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

* Định nghĩa ************************************************ ****************************** / #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // Kích thước bộ đệm RX #endif

Bước 11: Tạo bảng PC

Tạo bảng PC
Tạo bảng PC

Bảng PC được thiết kế bằng cách sử dụng phiên bản phần mềm miễn phí của Cadsoft Eagle (tôi tin rằng tên đã thay đổi).

  • Bảng PC là một thiết kế một mặt.
  • Không có thành phần gắn kết bề mặt nào được sử dụng.
  • Tất cả các thành phần được gắn vào bo mạch PC, bao gồm cả mô-đun SIM800L.
  • Không cần các thành phần hoặc kết nối bên ngoài
  • Dây nhảy được ẩn bên dưới các thành phần để có cái nhìn gọn gàng hơn.

Tôi sử dụng phương pháp sau để tạo Bo mạch PC:

  • Hình ảnh Bảng PC được in trên Press-n-Peel bằng máy in laser.
  • Sau đó, Press-n-Peel được đặt lên trên một miếng PC Board sạch và được cố định bằng một số băng dính.
  • Hình ảnh Bảng PC sau đó được chuyển từ Press-n-Peel sang Bảng PC trống bằng cách đưa bảng qua máy ép. Đối với tôi, 10 đường chuyền là tốt nhất.
  • Sau khi Bo mạch PC nguội xuống nhiệt độ phòng, Press-n-Peel từ từ được nhấc ra khỏi bo mạch.
  • Bo mạch PC sau đó được khắc bằng cách sử dụng các tinh thể Ammonium Persulphate hòa tan trong nước nóng.
  • Sau khi khắc, mực Press-n-Peel màu xanh lam và mực đen được loại bỏ bằng cách làm sạch Bo mạch PC đã được khắc bằng một ít axeton.
  • Bảng sau đó được cắt theo kích thước bằng Dremel
  • Các lỗ cho tất cả các bộ phận xuyên lỗ được khoan bằng mũi khoan 1mm.
  • Các đầu nối vít đầu cuối được khoan bằng mũi khoan 1,2mm.

Bước 12: Lắp ráp hội đồng quản trị PC

Hội đồng PC
Hội đồng PC
Hội đồng PC
Hội đồng PC
Hội đồng PC
Hội đồng PC
Hội đồng PC
Hội đồng PC

Việc lắp ráp được thực hiện bằng cách thêm các thành phần nhỏ nhất trước và làm việc theo cách của bạn cho đến các thành phần lớn nhất.

Tất cả các thành phần được sử dụng trong Có thể hướng dẫn này, ngoại trừ mô-đun SIM800, đều có nguồn gốc từ nhà cung cấp địa phương của tôi. Cảm ơn họ vì luôn có hàng. Vui lòng xem websie Nam Phi của họ:

www.shop.rabtron.co.za/catalog/index.php

GHI CHÚ! Đầu tiên hàn hai jumper nằm dưới IC ATMEGA328p

Thứ tự như sau:

  • Điện trở và diode
  • Nút reset
  • Ổ cắm IC
  • Bộ điều chỉnh điện áp
  • Chân tiêu đề
  • Tụ điện nhỏ
  • Đèn LED
  • Giá đỡ cầu chì
  • Khối thiết bị đầu cuối
  • Rơ le
  • Tụ điện

Trước khi lắp IC, hãy kết nối thiết bị với 12V và kiểm tra tất cả các điện áp xem có chính xác không.

Cuối cùng, sử dụng một số sơn mài trong suốt, phủ mặt đồng của Bảng PC để bảo vệ nó khỏi các yếu tố.

Khi sơn đã khô, hãy lắp các vi mạch vào, nhưng vẫn để mô-đun GSM cho đến khi AtMega được lập trình.

Bước 13: Lập trình AtMega328p

Lập trình AtMega328p
Lập trình AtMega328p
Lập trình AtMega328p
Lập trình AtMega328p
Lập trình AtMega328p
Lập trình AtMega328p

# # Nâng cấp chương trình cơ sở lên Phiên bản 3.02 # #

Đã bật SMS được gửi tới NGƯỜI DÙNG CHÍNH khi có điện trở lại thiết bị

Tôi đang sử dụng Arduino Uno với lá chắn lập trình để lập trình đơn vị. Để biết thêm thông tin về cách sử dụng Arduino Uno như một lập trình viên, hãy tham khảo Tài liệu hướng dẫn này:

Arduino UNO là lập trình viên AtMega328P

Mô-đun GSM cần phải được gỡ bỏ khỏi PC Board để có quyền truy cập vào tiêu đề lập trình. Cẩn thận để không làm hỏng dây ăng-ten khi tháo mô-đun GSM.

Kết nối cáp lập trình giữa bộ lập trình và thiết bị bằng tiêu đề lập trình trên PC Board., Và tải bản phác thảo lên thiết bị.

Nguồn cung cấp 12V bên ngoài không cần thiết để lập trình thiết bị. Bo mạch PC sẽ được cấp nguồn từ Arduino thông qua cáp lập trình.

Mở tệp đính kèm trong Arduino IDE và lập trình nó cho thiết bị.

Sau khi lập trình, tháo cáp lập trình và lắp mô-đun GSM.

Thiết bị hiện đã sẵn sàng để sử dụng.

Bước 14: Kết nối thiết bị

Kết nối thiết bị
Kết nối thiết bị
Kết nối thiết bị
Kết nối thiết bị
Kết nối thiết bị
Kết nối thiết bị

Tất cả các kết nối với thiết bị được thực hiện thông qua các đầu cuối vít.

Cấp nguồn cho thiết bị

Đảm bảo rằng bạn đã lắp thẻ SIM đã đăng ký vào mô-đun GSM và thẻ SIM đó có thể gửi và nhận tin nhắn SMS.

Kết nối nguồn điện 12V DC với 12V IN và bất kỳ đầu cuối 0V nào. Sau khi được cấp nguồn, đèn LED màu đỏ trên PC Board sẽ bật. Trong khoảng một phút nữa, mô-đun GSM lẽ ra đã kết nối với mạng điện thoại di động. Đèn LED màu đỏ sẽ tắt và đèn LED màu đỏ trên mô-đun GSM sẽ nhấp nháy nhanh chóng.

Khi đã đạt đến giai đoạn này, thiết bị đã sẵn sàng để được định cấu hình.

Kết nối đầu vào

Các đầu vào kỹ thuật số hoạt động trên 12V. Để bật đầu vào, cần phải cấp nguồn 12V cho đầu vào. Loại bỏ 12V sẽ tắt đầu vào.

Kết nối đầu ra

Mỗi đầu ra bao gồm một tiếp điểm thay đổi. Lên dây từng số liên lạc theo yêu cầu.

Bước 15: Thiết lập ban đầu

Thiết lập ban đầu
Thiết lập ban đầu

Thiết lập ban đầu của thiết bị phải được thực hiện để đảm bảo rằng tất cả các thông số được đặt về mặc định ban đầu và thẻ SIM được cấu hình để chấp nhận thông tin người dùng ở định dạng chính xác.

Vì tất cả các lệnh đều dựa trên SMS, bạn sẽ cần một điện thoại khác để thực hiện thiết lập.

Để thiết lập ban đầu, bạn cần phải có mặt tại đơn vị.

Đặt số điện thoại MASTER USER

Vì chỉ NGƯỜI DÙNG CHÍNH mới có thể cấu hình thiết bị, nên bước này phải được thực hiện trước.

  • Thiết bị phải được cấp nguồn.
  • Nhấn và thả nút Reset, và đợi đèn LED màu đỏ trên PC Board tắt.
  • Đèn LED NET trên mô-đun GSM sẽ nhấp nháy nhanh chóng.
  • Bây giờ thiết bị đã sẵn sàng để chấp nhận các lệnh thiết lập ban đầu. Việc này phải được thực hiện trong vòng 10 phút.
  • Gửi tin nhắn SMS chứa MASTER, mô tả đến số điện thoại của đơn vị.
  • Nếu nhận được, đèn LED màu xanh lá cây trên PC Board sẽ nhấp nháy hai lần.
  • MASTER USER hiện đã được lập trình.

Khôi phục thiết bị về mặc định ban đầu

Sau khi MASTER USER đã được lập trình, các cài đặt của thiết bị phải được đặt về mặc định xuất xưởng.

  • Gửi một tin nhắn SMS chỉ với CLEARALL đến số điện thoại của đơn vị.
  • Nếu nhận được, đèn LED màu xanh lá cây và màu đỏ trên Bảng mạch PC sẽ nhấp nháy luân phiên mỗi giây một lần. Thiết bị đã được khôi phục với cài đặt mặc định của nhà sản xuất.
  • Tất cả các cài đặt đã được khôi phục về mặc định ban đầu.
  • Nhấn và thả nút Đặt lại để khởi động lại thiết bị.

Định dạng thẻ SIM

Bước cuối cùng là xóa tất cả thông tin được lưu trữ trên thẻ SIM và định cấu hình nó để sử dụng trong thiết bị này.

  • Nhấn và thả nút Reset, và đợi đèn LED màu đỏ trên PC Board tắt.
  • Đèn LED NET trên mô-đun GSM sẽ nhấp nháy nhanh chóng.
  • Bây giờ thiết bị đã sẵn sàng để chấp nhận các lệnh thiết lập ban đầu. Việc này phải được thực hiện trong vòng 10 phút.
  • Gửi tin nhắn SMS chỉ với ERASESIM đến số điện thoại của đơn vị.
  • Nếu nhận được, đèn LED màu xanh lá cây trên PC Board sẽ nhấp nháy theo thời gian cây.

Thiết bị hiện đã được định cấu hình và sẵn sàng để sử dụng.

Bước 16: Lệnh SMS

Lệnh SMS
Lệnh SMS

Có ba loại lệnh khác nhau được sử dụng bởi đơn vị. Tất cả các lệnh ae gửi qua SMS, và đều ở định dạng sau:

CHỈ HUY,,,,,

  • Tất cả các lệnh, ngoại trừ các lệnh NGƯỜI DÙNG BÌNH THƯỜNG đều phân biệt chữ hoa chữ thường.
  • Các tham số không phân biệt chữ hoa chữ thường.

Lệnh thiết lập ban đầu

MASTER, tên

Số điện thoại của người gửi SMS được sử dụng làm số điện thoại CHÍNH CỦA NGƯỜI DÙNG. Mô tả cho đơn vị có thể được thêm ở đây.

QUET SẠCH TÂT CẢ

Đặt lại thiết bị về mặc định ban đầu

XÓA

Xóa tất cả dữ liệu khỏi thẻ SIM

CÀI LẠI

Khởi động lại thiết bị

MASTER USER Lệnh để cấu hình thiết bị

OUTMODE, c, m, t LƯU Ý! ! ! CHƯA THỰC HIỆN

Đặt các kênh cụ thể để có đầu ra PULSED, TIMED hoặc LATCHING. t là khoảng thời gian tính bằng phút cho đầu ra TIMED

PULSE, cccc

Đặt các kênh cụ thể thành đầu ra PULSED. Nếu không được đặt, các kênh sẽ được đặt làm đầu ra LATCHING.

PULSETIME, t Đặt thời lượng đầu ra xung tính bằng giây (0.. 10 giây)

INPUTON, cccc

Đặt các kênh phải kích hoạt và gửi tin nhắn SMS khi trạng thái chuyển từ TẮT sang BẬT

ĐẦU VÀO, cccc

Đặt các kênh phải kích hoạt và gửi tin nhắn SMS khi trạng thái chuyển từ BẬT sang TẮT

INTIME, c, t

Đặt thời gian trễ đầu vào để phát hiện các thay đổi trạng thái tính bằng giây

INTEXT, ch, name, on, off

Đặt tên của từng kênh đầu vào, trên văn bản và tắt văn bản

OUTTEXT, ch, name, on, off

Đặt tên của từng kênh đầu ra, trên văn bản và văn bản tắt

Thêm, vị trí, số, thông lượng chú thích, SMSoutputs, đầu vào

Thêm người dùng vào thẻ SIM tại 'vị trí' bộ nhớ, với các kênh đầu ra và đầu vào được chỉ định cho người dùng

Del, vị trí

Xóa người dùng khỏi 'vị trí' bộ nhớ thẻ SIM

Tên kênh

Sẽ phát xung với tên ChannelName

ChannelName, onText hoặc ChannelName, offText

Sẽ bật / tắt đầu ra với tên ChannelName và onText / offText

Lệnh người dùng thông thường để điều khiển thiết bị

???? Yêu cầu cập nhật trạng thái I / O. SMS trạng thái sẽ được gửi đến người khởi tạo.

Tên kênh

Sẽ phát xung với tên ChannelName

ChannelName, onText

Sẽ Bật đầu ra với tên ChannelName và văn bản trạng thái onText

ChannelName, offText Sẽ tắt đầu ra với tên ChannelName và văn bản trạng thái tắtText

Để có mô tả chi tiết hơn về các lệnh, vui lòng tham khảo tài liệu PDF đính kèm.

Đề xuất: