Kết nối cảm biến chuyển động không dây Sapsan với Arduino. Về cảm biến chuyển động và kết nối nó với Arduino

Kết nối cảm biến chuyển động không dây Sapsan với Arduino. Về cảm biến chuyển động và kết nối nó với Arduino

Cảm biến hồng ngoại (IR) thường được sử dụng để đo khoảng cách, nhưng chúng cũng có thể được sử dụng để phát hiện vật thể. Bằng cách kết nối một số cảm biến hồng ngoại với Arduino, chúng ta có thể tạo cảnh báo an ninh.

Ôn tập

Cảm biến hồng ngoại (IR) thường được sử dụng để đo khoảng cách, nhưng chúng cũng có thể được sử dụng để phát hiện vật thể. Cảm biến hồng ngoại bao gồm một bộ phát hồng ngoại và một bộ thu hồng ngoại. Máy phát phát ra các xung bức xạ hồng ngoại trong khi máy thu phát hiện bất kỳ phản xạ nào. Nếu máy thu phát hiện thấy sự phản chiếu, điều đó có nghĩa là có một vật thể nào đó ở một khoảng cách nào đó phía trước cảm biến. Nếu không có sự phản chiếu thì không có đối tượng.

Cảm biến hồng ngoại mà chúng tôi sẽ sử dụng trong dự án này sẽ phát hiện sự phản chiếu trong một phạm vi cụ thể. Những cảm biến này có kích thước nhỏ thiết bị tuyến tính thiết bị ghép điện tích (CCD), phát hiện góc mà bức xạ hồng ngoại quay trở lại cảm biến. Như minh họa trong hình bên dưới, cảm biến truyền xung hồng ngoại vào không gian và khi có vật thể xuất hiện trước cảm biến, xung sẽ phản xạ trở lại cảm biến theo một góc tỷ lệ với khoảng cách giữa vật thể và cảm biến. Bộ thu cảm biến phát hiện và xuất ra góc và sử dụng giá trị này, bạn có thể tính toán khoảng cách.

Bằng cách kết nối một vài cảm biến hồng ngoại với Arduino, chúng ta có thể tạo ra một cảnh báo an ninh đơn giản. Chúng tôi sẽ cài đặt cảm biến trên cửa rầm và bằng cách căn chỉnh chính xác các cảm biến, chúng tôi có thể phát hiện khi có người bước qua cửa. Khi điều này xảy ra, đầu ra của cảm biến hồng ngoại sẽ thay đổi và chúng tôi sẽ phát hiện sự thay đổi này bằng cách liên tục đọc đầu ra của cảm biến từ sử dụng Arduino. TRONG trong ví dụ này chúng ta biết rằng một vật thể đang đi qua cửa khi số đọc đầu ra của cảm biến hồng ngoại vượt quá 400. Khi điều này xảy ra, Arduino sẽ kích hoạt cảnh báo. Để đặt lại báo thức, người dùng có thể nhấn một nút.

Phụ kiện

  • 2 x cảm biến khoảng cách hồng ngoại;
  • 1 x Arduino Mega 2560;
  • 1 x còi;
  • 1 nút x;
  • Điện trở 1 x 470 Ohm;
  • 1 x bóng bán dẫn NPN;
  • người nhảy.

Sơ đồ kết nối

Sơ đồ cho dự án này được thể hiện trong hình dưới đây. Đầu ra của hai cảm biến hồng ngoại được kết nối với chân A0 và A1. Hai chân còn lại được kết nối với chân 5V và GND. Bộ rung 12 volt được kết nối với chân 3 thông qua một bóng bán dẫn và nút dùng để tắt tiếng báo động được kết nối với chân 4.


Bức ảnh dưới đây cho thấy cách chúng tôi dán các cảm biến vào khung cửa cho thí nghiệm này. Tất nhiên, nếu bạn sử dụng nó thường xuyên, bạn sẽ cài đặt các cảm biến theo cách khác.


Cài đặt

  1. Kết nối chân 5V và GND của bo mạch Arduino với chân nguồn và chân GND của cảm biến. Bạn cũng có thể cung cấp cho họ nguồn điện bên ngoài.
  2. Kết nối các chân đầu ra của cảm biến với chân A0 và A1 của bo mạch Arduino.
  3. Kết nối chân 3 của Arduino với đế của bóng bán dẫn thông qua điện trở 1k ohm.
  4. Cấp điện áp 12V vào cực thu của bóng bán dẫn.
  5. Kết nối cực dương của còi 12V với bộ phát và cực âm với bus mặt đất.
  6. Kết nối chân 4 với chân 5V thông qua một nút. Vì lý do an toàn, để tránh dòng điện lớn, tốt hơn hết bạn nên thực hiện việc này thông qua một điện trở nhỏ bổ sung.
  7. Kết nối bo mạch Arduino với máy tính của bạn qua cáp USB và tải chương trình vào bộ vi điều khiển bằng Arduino IDE.
  8. Cấp nguồn cho bo mạch Arduino bằng nguồn điện, pin hoặc cáp USB/

Mã số

const int buzzer=3; // chân 3 là đầu ra của còi const int pushbutton=4; // chân 4 là đầu vào cho nút void setup() ( pinMode(buzzer,OUTPUT); // đặt chân 3 thành đầu ra pinMode(pushbutton,INPUT); // đặt chân 4 thành đầu vào ) void loop() ( / / đọc đầu ra của cả hai cảm biến và so sánh kết quả với giá trị ngưỡng int cảm biến1_value = analogRead(A0); int cảm biến2_value = analogRead(A1); if (sensor1_value > 400 || cảm biến2_value > 400) ( while(true) ( ​​​digitalWrite(buzzer,HIGH) ; // bật báo thức if(digitalRead(pushbutton) == HIGH) break; ) ) else ( digitalWrite(buzzer,LOW); // tắt báo thức ) )

Băng hình

Trong thập kỷ qua, trộm ô tô đã chiếm một trong những vị trí quan trọng nhất trong cơ cấu tội phạm trên thế giới. Điều này không phải do mức độ nghiêm trọng cụ thể của loại trộm cắp này so với tổng số tội phạm, mà là do mức độ nghiêm trọng của thiệt hại gây ra do giá ô tô cao. Hiệu quả yếu kém của các biện pháp chống trộm xe được thực hiện vào cuối những năm 90 đã dẫn đến việc thành lập các nhóm ổn định chuyên thực hiện các tội ác này và sở hữu tính năng đặc biệt tội phạm có tổ chức; Có lẽ bạn đã từng nghe đến thuật ngữ "kinh doanh ô tô đen". Đội xe ô tô của các nước châu Âu hàng năm thiếu ≈ 2% số ô tô trở thành đối tượng của các cuộc tấn công tội phạm. Vì vậy, tôi đã nảy ra ý tưởng làm một thiết bị báo động GSM cho ô tô của mình trên Dựa trên Arduino Uno.

Hãy bắt đầu nào!

Chúng ta sẽ thu thập từ đâu?

Chúng ta cần chọn trái tim của hệ thống của chúng ta. Theo tôi, không có gì tốt hơn Arduino Uno để truyền tín hiệu như vậy. Tiêu chí chính là có đủ số lượng “chân” và giá cả.


Các tính năng chính của Arduino Uno

Vi Điều Khiển - ATmega328
Điện áp hoạt động - 5 V
Điện áp đầu vào (khuyến nghị) - 7-12 V
Điện áp đầu vào (giới hạn) - 6-20 V
Đầu vào/Đầu ra kỹ thuật số - 14 (6 trong số đó có thể được sử dụng làm đầu raPWM)
Đầu vào tương tự - 6
Dòng điện không đổi qua đầu vào/đầu ra - 40 mA
Dòng điện không đổi cho đầu ra 3,3V - 50mA
Bộ nhớ flash - 32 KB (ATmega328) trong đó 0,5 KB được sử dụng cho bộ nạp khởi động
RAM - 2 KB (ATmega328)
EEPROM - 1 KB (ATmega328)
Tần số đồng hồ - 16 MHz


Phù hợp!

Bây giờ bạn cần chọn mô-đun GSM, vì hệ thống báo động của chúng tôi phải có khả năng thông báo cho chủ xe. Vì vậy, bạn cần phải google nó... Đây, một cảm biến tuyệt vời - SIM800L, kích thước đơn giản là tuyệt vời.


Tôi nghĩ và đặt hàng từ Trung Quốc. Tuy nhiên, mọi thứ hóa ra không hề màu hồng như vậy. Cảm biến chỉ từ chối đăng ký thẻ SIM trên mạng. Mọi thứ có thể đã được thử - kết quả là con số không.
Thành lập người tốt người đã cung cấp cho tôi nhiều hơn điều tuyệt vời- Khiên Sim900. Bây giờ đây là một điều nghiêm trọng. Shield có cả micrô và giắc cắm tai nghe, khiến nó trở thành một chiếc điện thoại hoàn chỉnh.


Các tính năng chính của Sim900 Shield

4 chuẩn tần số hoạt động 850/ 900/ 1800/ 1900 MHz
GPRS đa khe loại 10/8
Trạm di động GPRS loại B
Tuân thủ GSM giai đoạn 2/2+
Loại 4 (2 W @850/ 900 MHz)
Lớp 1 (1 W @ 1800/1900 MHz)
Điều khiển bằng lệnh AT (GSM 07.07, 07.05 và lệnh AT mở rộng SIMCOM)
Tiêu thụ điện năng thấp: 1,5mA (chế độ ngủ)
Phạm vi nhiệt độ hoạt động: -40°C đến +85°C


Phù hợp!

Được rồi, nhưng bạn cần lấy số đo từ một số cảm biến để thông báo cho chủ sở hữu. Nếu ô tô bị kéo đi thì vị trí của ô tô rõ ràng sẽ thay đổi trong không gian. Hãy lấy một gia tốc kế và một con quay hồi chuyển. Tuyệt vời. Được rồi, bây giờ chúng tôi đang tìm kiếm một cảm biến.

Tôi nghĩ rằng GY-521 MPU6050 chắc chắn sẽ phù hợp. Hóa ra nó còn có cảm biến nhiệt độ. Chúng ta cũng nên sử dụng nó, sẽ có một “tính năng sát thủ” như vậy. Giả sử chủ nhân của chiếc ô tô đã đậu nó dưới nhà và rời đi. Nhiệt độ bên trong xe sẽ thay đổi “êm dịu”. Điều gì xảy ra nếu kẻ đột nhập cố gắng đột nhập vào xe? Ví dụ, anh ta sẽ có thể mở cửa. Nhiệt độ trong xe sẽ bắt đầu thay đổi nhanh chóng khi không khí trong cabin bắt đầu hòa quyện với không khí môi trường. Tôi nghĩ nó sẽ hoạt động.


Các tính năng chính của GY-521 MPU6050

Con quay hồi chuyển 3 trục + mô-đun gia tốc 3 trục GY-521 trên chip MPU-6050. Cho phép bạn xác định vị trí và chuyển động của một vật thể trong không gian, vận tốc góc khi quay. Nó cũng có một cảm biến nhiệt độ tích hợp. Nó được sử dụng trong nhiều loại máy bay trực thăng và mô hình máy bay; một hệ thống ghi lại chuyển động cũng có thể được lắp ráp dựa trên các cảm biến này.

Chip - MPU-6050
Điện áp cung cấp - từ 3,5V đến 6V (DC);
Phạm vi con quay hồi chuyển - ±250 500 1000 2000°/s
Phạm vi gia tốc - ±2±4±8±16g
Giao diện truyền thông - I2C
Kích thước - 15x20 mm.
Trọng lượng - 5 g


Phù hợp!

Một cảm biến rung cũng sẽ có ích. Đột nhiên họ cố gắng mở xe bằng “vũ lực”, hoặc trong bãi đậu xe, một chiếc xe khác tông vào xe bạn. Hãy lấy cảm biến rung SW-420 (có thể điều chỉnh).


Đặc điểm chính của SW-420

Điện áp nguồn - 3,3 - 5V
Tín hiệu đầu ra - Cao/Thấp kỹ thuật số (thường đóng)
Cảm biến được sử dụng - SW-420
Bộ so sánh được sử dụng là LM393
Kích thước - 32x14 mm
Ngoài ra - Có điện trở điều chỉnh.


Phù hợp!

Vặn mô-đun thẻ nhớ SD. Chúng tôi cũng sẽ viết một tập tin nhật ký.


Đặc điểm chính của mô-đun thẻ nhớ SD

Mô-đun này cho phép bạn lưu trữ, đọc và ghi vào thẻ SD dữ liệu cần thiết cho hoạt động của thiết bị dựa trên bộ vi điều khiển. Việc sử dụng thiết bị có liên quan khi lưu trữ các tệp từ hàng chục megabyte đến hai gigabyte. Bảng mạch chứa hộp đựng thẻ SD, bộ ổn định nguồn thẻ và phích cắm đầu nối cho giao diện và đường dây nguồn. Ví dụ: nếu bạn cần làm việc với âm thanh, video hoặc dữ liệu quy mô lớn khác, ghi nhật ký các sự kiện, dữ liệu cảm biến hoặc lưu trữ thông tin máy chủ web, thì mô-đun thẻ nhớ SD cho Arduino sẽ giúp bạn có thể sử dụng thẻ SD cho những mục đích này. Sử dụng mô-đun này, bạn có thể nghiên cứu các tính năng của thẻ SD.
Điện áp cung cấp - 5 hoặc 3,3 V
Dung lượng bộ nhớ thẻ SD - lên tới 2 GB
Kích thước - 46 x 30 mm


Phù hợp!

Và hãy thêm một bộ điều khiển servo; khi các cảm biến được kích hoạt, bộ điều khiển servo với đầu ghi video sẽ quay và quay video về sự cố. Hãy lấy ổ servo MG996R.


Các tính năng chính của Ổ đĩa servo MG996R

Ổn định và bảo vệ đáng tin cậy từ thiệt hại
- Ổ đĩa kim loại
- Vòng bi hai hàng
- Chiều dài dây 300 mm
- Kích thước 40x19x43mm
- Trọng lượng 55 g
- Góc quay: 120 độ.
- Tốc độ hoạt động: 0,17 giây/60 độ (4,8V không tải)
- Tốc độ hoạt động: 0,13 giây/60 độ (6V không tải)
- Momen khởi động: 9,4kg/cm ở nguồn điện 4,8V
- Momen khởi động: 11kg/cm ở nguồn điện 6V
- Điện áp hoạt động: 4,8 - 7,2V
- Toàn bộ bộ phận truyền động được làm bằng kim loại


Phù hợp!

Chúng tôi thu thập

Có một số lượng lớn bài viết trên Google về việc kết nối từng cảm biến. Và tôi không có mong muốn phát minh ra những chiếc xe đạp mới, vì vậy tôi sẽ để lại liên kết đến các phương án đơn giản và hiệu quả.

Chúng là những nền tảng phần cứng đặc biệt trên cơ sở đó bạn có thể tạo ra nhiều các thiết bị điện tử, bao gồm và . Các thiết bị loại này được phân biệt bởi thiết kế đơn giản và khả năng lập trình các thuật toán vận hành của chúng. Nhờ điều này, được tạo bằng Arduino báo động GSM, có thể được tùy chỉnh tối đa cho đối tượng mà nó sẽ bảo vệ.

Mô-đun Arduino là gì?

Arduinos được triển khai dưới dạng các bo mạch nhỏ có bộ vi xử lý và bộ nhớ riêng. Bảng mạch cũng chứa một tập hợp các điểm tiếp xúc chức năng mà bạn có thể kết nối với nhiều thiết bị điện khí hóa khác nhau, bao gồm cả các cảm biến được sử dụng cho hệ thống an ninh.

Bộ xử lý Arduino cho phép bạn tải chương trình do chính người dùng viết. Bằng cách tạo thuật toán độc đáo của riêng mình, bạn có thể cung cấp các chế độ hoạt động tối ưu cho cảnh báo an ninh cho các đối tượng khác nhau và cho điều kiện khác nhau dụng và nhiệm vụ cần giải quyết.

Làm việc với Arduino có khó không?

Các mô-đun Arduino rất phổ biến đối với nhiều người dùng. Điều này trở nên khả thi do tính đơn giản và khả năng tiếp cận của nó.

Các chương trình điều khiển mô-đun được viết bằng C++ thông thường và các phần bổ sung dưới dạng các hàm đơn giản để điều khiển các quy trình I/O trên các chân mô-đun. Ngoài ra, phần mềm Arduino IDE miễn phí hoạt động trên Windows, Linux hoặc Mac OS có thể được sử dụng để lập trình.

Với các mô-đun Arduino, quy trình lắp ráp thiết bị được đơn giản hóa đáng kể. Hệ thống báo động GSM trên Arduino có thể được tạo ra mà không cần đến mỏ hàn - quá trình lắp ráp diễn ra bằng cách sử dụng bảng mạch, dây nối và dây dẫn.

Làm cách nào để tạo báo thức bằng Arduino?

Các yêu cầu cơ bản mà hệ thống báo động DIY gsm được tạo trên Arduino phải đáp ứng bao gồm:

  • thông báo cho chủ sở hữu cơ sở về việc đột nhập, đột nhập;
  • hỗ trợ các hệ thống bên ngoài như còi báo động, đèn cảnh báo;
  • điều khiển báo động qua SMS hoặc cuộc gọi;
  • hoạt động tự động mà không cần nguồn điện bên ngoài.

Để tạo báo thức, bạn sẽ cần:

  • mô-đun Arduino;
  • một bộ cảm biến chức năng;
  • hoặc modem;
  • nguồn điện tự chủ;
  • thiết bị truyền động bên ngoài.

Một tính năng đặc biệt của mô-đun Arduino là việc sử dụng các bảng mở rộng đặc biệt. Với sự trợ giúp của họ, bạn có thể kết nối tất cả các thiết bị bổ sung với Arduino cần thiết để lắp ráp cấu hình hệ thống an ninh. Các bo mạch như vậy được lắp đặt phía trên mô-đun Arduino dưới dạng một “bánh sandwich” và các thiết bị phụ trợ tương ứng được kết nối với chính các bo mạch đó.

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

Khi một trong các cảm biến được kết nối được kích hoạt, tín hiệu sẽ được truyền đến bộ xử lý của mô-đun Arduino. Sử dụng phần mềm người dùng đã tải xuống, bộ vi xử lý sẽ xử lý phần mềm đó theo một thuật toán cụ thể. Do đó, lệnh vận hành bộ truyền động bên ngoài có thể được tạo ra, lệnh này được truyền đến nó thông qua bảng giao diện mở rộng tương ứng.

Để đảm bảo khả năng gửi tín hiệu cảnh báo đến chủ sở hữu ngôi nhà hoặc căn hộ được bảo vệ, một mô-đun GSM đặc biệt được kết nối với mô-đun Arduino thông qua bảng mở rộng. Một thẻ SIM từ một trong những nhà cung cấp dịch vụ di động được cài đặt trong đó.

Trong trường hợp không có bộ chuyển đổi GSM đặc biệt, một bộ chuyển đổi thông thường có thể thực hiện vai trò của nó. điện thoại di động. Ngoài việc gửi tin nhắn SMS cảnh báo cảnh báo và quay số, sự hiện diện của kết nối di động sẽ cho phép bạn điều khiển hệ thống cảnh báo GSM trên Arduino từ xa, cũng như theo dõi tình trạng của đối tượng bằng cách gửi các yêu cầu đặc biệt.

"Ghi chú!

Để liên lạc với chủ sở hữu đối tượng, ngoài các mô-đun GSM, có thể sử dụng các modem thông thường để cung cấp khả năng liên lạc qua Internet.”

Trong trường hợp này, khi cảm biến được kích hoạt, tín hiệu được xử lý bởi bộ xử lý sẽ được truyền qua modem đến một cổng hoặc trang web đặc biệt. Và từ trang web, một tin nhắn SMS cảnh báo hoặc gửi thư đến e-mail được liên kết sẽ tự động được tạo.

kết luận

Việc sử dụng các mô-đun Arduino sẽ cho phép người dùng thiết kế độc lập các cảnh báo GSM có thể hoạt động với nhiều cảm biến chức năng khác nhau và điều khiển các thiết bị bên ngoài. Nhờ khả năng sử dụng cảm biến khác nhau Các chức năng báo động có thể được mở rộng đáng kể và có thể tạo ra một tổ hợp giám sát không chỉ sự an toàn của đối tượng mà còn cả tình trạng của nó. Ví dụ: có thể kiểm soát nhiệt độ tại cơ sở, phát hiện rò rỉ nước và khí đốt, tắt nguồn cung cấp trong trường hợp khẩn cấp, v.v.

Xin chào mọi người, hôm nay chúng ta sẽ xem xét một thiết bị gọi là cảm biến chuyển động. Nhiều người trong chúng ta đã nghe nói về điều này, một số thậm chí đã xử lý thiết bị này. Cảm biến chuyển động là gì? Chúng ta hãy cố gắng tìm ra nó, vì vậy:

Cảm biến chuyển động hoặc cảm biến dịch chuyển - một thiết bị (thiết bị) phát hiện chuyển động của bất kỳ vật thể nào. Rất thường xuyên các thiết bị này được sử dụng trong các hệ thống an ninh, báo động và giám sát. Có rất nhiều dạng yếu tố của các cảm biến này, nhưng chúng tôi sẽ xem xét mô-đun cảm biến chuyển động để kết nối với bảng Arduino,và đặc biệt từ công ty RobotDyn. Tại sao lại là công ty này? Tôi không muốn quảng cáo cửa hàng này và các sản phẩm của cửa hàng này, nhưng chính sản phẩm của cửa hàng này đã được chọn làm mẫu trong phòng thí nghiệm do sản phẩm của họ trình bày chất lượng cao cho người tiêu dùng cuối cùng. Thế là chúng ta gặp nhau - cảm biến chuyển động(Cảm biến PIR) từ RobotDyn:


Những cảm biến này có kích thước nhỏ, tiêu thụ ít năng lượng và dễ sử dụng. Ngoài ra, cảm biến chuyển động của RobotDyn còn có các điểm tiếp xúc được sàng lọc bằng lụa, đây tất nhiên là một việc nhỏ nhưng rất dễ chịu. Chà, những người sử dụng cùng một cảm biến, nhưng chỉ của các công ty khác, không nên lo lắng - tất cả chúng đều có chức năng giống nhau và ngay cả khi các điểm tiếp xúc không được đánh dấu, bạn vẫn có thể dễ dàng tìm thấy sơ đồ chân của các cảm biến đó trên Internet.

Đặc tính kỹ thuật chính của cảm biến chuyển động (PIR Sensor):

Vùng hoạt động của cảm biến: từ 3 đến 7 mét

Góc theo dõi: lên tới 110 o

Điện áp hoạt động: 4,5...6 Vôn

Mức tiêu thụ hiện tại: lên tới 50 µA

Ghi chú: Chức năng tiêu chuẩn của cảm biến có thể được mở rộng bằng cách kết nối cảm biến ánh sáng với chân IN và GND, khi đó cảm biến chuyển động sẽ chỉ hoạt động trong bóng tối.

Đang khởi tạo thiết bị.

Khi bật, cảm biến mất gần một phút để khởi động. Trong khoảng thời gian này, cảm biến có thể đưa ra tín hiệu sai; điều này cần được tính đến khi lập trình bộ vi điều khiển với cảm biến được kết nối với nó hoặc trong các mạch truyền động nếu kết nối được thực hiện mà không sử dụng bộ vi điều khiển.

Góc và diện tích phát hiện.

Góc phát hiện (theo dõi) là 110 độ, phạm vi khoảng cách phát hiện từ 3 đến 7 mét, hình minh họa bên dưới thể hiện tất cả:

Điều chỉnh độ nhạy (khoảng cách phát hiện) và thời gian trễ.

Bảng bên dưới hiển thị các điều chỉnh chính của cảm biến chuyển động, bên trái có bộ điều chỉnh độ trễ thời gian, tương ứng, ở cột bên trái có mô tả về các cài đặt có thể có. Cột bên phải mô tả việc điều chỉnh khoảng cách phát hiện.


Kết nối cảm biến:

  • Cảm Biến PIR - Arduino Nano
  • Cảm Biến PIR - Arduino Nano
  • Cảm Biến PIR - Arduino Nano
  • Cảm biến PIR - cho cảm biến ánh sáng
  • Cảm biến PIR - cho cảm biến ánh sáng

Sơ đồ kết nối điển hình được hiển thị trong sơ đồ bên dưới; trong trường hợp của chúng tôi, cảm biến được hiển thị thông thường từ phía sau và được kết nối với bo mạch Arduino Nano.

Phác thảo thể hiện hoạt động của cảm biến chuyển động (chúng tôi sử dụng chương trình):

/* * Cảm biến PIR -> Cảm biến Arduino Nano * PIR -> Cảm biến Arduino Nano * PIR -> Arduino Nano */ void setup() ( // Thiết lập kết nối với màn hình cổng Serial.begin(9600); ) void loop( ) ( //Đọc giá trị ngưỡng từ cổng A0 // thường cao hơn 500 nếu có tín hiệu if(analogRead(A0) > 500) ( //Tín hiệu từ cảm biến chuyển động Serial.println("Có chuyển động!!!"); ) else ( //Không có tín hiệu Serial.println("Mọi thứ đều yên lặng..."); ) )

Bản phác thảo là một thử nghiệm phổ biến về hoạt động của cảm biến chuyển động, nó có nhiều nhược điểm, chẳng hạn như:

  1. Có thể xảy ra cảnh báo sai, cảm biến yêu cầu tự khởi tạo trong vòng một phút.
  2. Liên kết cứng nhắc với màn hình cổng, không có bộ truyền động đầu ra (rơle, còi báo động, đèn LED)
  3. Thời gian tín hiệu ở đầu ra cảm biến quá ngắn, khi phát hiện chuyển động, cần phải lập trình để trì hoãn tín hiệu trong một khoảng thời gian dài hơn.

Bằng cách làm phức tạp mạch và mở rộng chức năng của cảm biến, bạn có thể tránh được những nhược điểm được mô tả ở trên. Để làm điều này, bạn sẽ cần bổ sung mạch bằng mô-đun rơle và kết nối đèn 220 volt thông thường thông qua mô-đun này. Bản thân mô-đun rơle sẽ được kết nối với chân 3 trên bo mạch Arduino Nano. Vì vậy, sơ đồ nguyên lý:

Bây giờ là lúc cải thiện một chút bản phác thảo đã kiểm tra cảm biến chuyển động. Trong bản phác thảo, độ trễ trong việc tắt rơle sẽ được thực hiện, vì bản thân cảm biến chuyển động có thời gian tín hiệu quá ngắn ở đầu ra khi được kích hoạt. Chương trình thực hiện độ trễ 10 giây khi cảm biến được kích hoạt. Nếu muốn, thời gian này có thể tăng hoặc giảm bằng cách thay đổi giá trị của biến Giá trị độ trễ. Dưới đây là bản phác thảo và video của toàn bộ mạch lắp ráp đang hoạt động:

/* * Cảm biến PIR -> Cảm biến Arduino Nano * PIR -> Cảm biến Arduino Nano * PIR -> Arduino Nano * Mô-đun chuyển tiếp -> Arduino Nano */ // reout - pin (tín hiệu đầu ra) cho mô-đun rơle const int relout = 3 ; //prevMillis - biến để lưu trữ thời gian của chu kỳ quét chương trình trước đó //interval - khoảng thời gian để đếm giây trước khi tắt rơle không dấu dài prevMillis = 0; khoảng int = 1000; // DelayValue - khoảng thời gian mà rơle được giữ ở trạng thái bật int DelayValue = 10; //initSecond - Biến lặp vòng lặp khởi tạo int initSecond = 60; //countDelayOff - bộ đếm khoảng thời gian tĩnh int countDelayOff = 0; // trigger - cờ kích hoạt cảm biến chuyển động static bool trigger = false; void setup() ( //Quy trình chuẩn để khởi tạo cổng mà mô-đun rơle được kết nối // QUAN TRỌNG!!! - để mô-đun rơle duy trì ở trạng thái tắt ban đầu // và không kích hoạt trong quá trình khởi tạo, bạn cần để ghi //giá trị CAO vào cổng đầu vào/đầu ra, điều này sẽ tránh được tiếng “click” sai và // duy trì trạng thái của rơle như trước khi toàn bộ mạch được đưa vào hoạt động pinMode(relout, OUTPUT); digitalWrite(relout, HIGH); //Mọi thứ ở đây rất đơn giản - chúng ta đợi cho đến khi 60 chu kỳ kết thúc (biến initSecond) // kéo dài 1 giây, trong thời gian đó cảm biến “tự khởi tạo” for(int i = 0; i< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >500) ( //Đặt cờ kích hoạt cảm biến chuyển động if(!trigger) ( trigger = true; ) ) //Trong khi cờ kích hoạt cảm biến chuyển động được đặt while(trigger) ( //Execute Tuân theo chỉ dẫn// Lưu vào biến currMillis // giá trị mili giây đã trôi qua kể từ khi bắt đầu // thực thi chương trình unsigned long currMillis = millis(); //So sánh với giá trị mili giây trước đó //nếu chênh lệch lớn hơn khoảng thời gian đã chỉ định thì: if(currMillis - prevMillis > interval) ( //Lưu giá trị hiện tại của mili giây vào biến prevMillis prevMillis = currMillis; // Kiểm tra bộ đếm độ trễ bằng cách so sánh nó với giá trị của khoảng thời gian / /trong thời gian đó rơle phải được giữ ở trạng thái BẬT if(countDelayOff >= DelayValue) ( ​​//Nếu giá trị bằng thì: //đặt lại kích hoạt cờ kích hoạt cảm biến chuyển động = false; //Đặt lại bộ đếm độ trễ countDelayOff = 0; // Tắt rơle digitalWrite(reout, HIGH); //Ngắt ngắt chu kỳ; ) else ( //Nếu giá trị vẫn nhỏ hơn, sau đó // Tăng bộ đếm độ trễ lên một countDelayOff ++; // Giữ rơle ở trạng thái bật digitalWrite(reout, LOW ); ) ) ) )

Chương trình có cấu trúc sau:

unsigned dài prevMillis = 0;

khoảng int = 1000;

...

CurrMillis dài không dấu = millis();

if(currMillis - prevMillis > khoảng)

{

prevMillis = CurrMillis;

....

// Các hoạt động của chúng ta được bao bọc trong phần thân của cấu trúc

....

}

Để làm rõ, người ta quyết định bình luận riêng về thiết kế này. Vì thế, thiết kế này cho phép bạn thực hiện một nhiệm vụ song song trong chương trình. Phần thân của cấu trúc hoạt động khoảng một lần mỗi giây, điều này được hỗ trợ bởi biến khoảng thời gian. Đầu tiên, biến hiện tạiMillis giá trị trả về khi gọi hàm được gán mili(). Chức năng mili() trả về số mili giây đã trôi qua kể từ khi bắt đầu chương trình. Nếu sự khác biệt currMillis - prevMillis lớn hơn giá trị của biến khoảng thời gian thì điều này có nghĩa là đã hơn một giây trôi qua kể từ khi bắt đầu thực hiện chương trình và bạn cần lưu giá trị của biến hiện tạiMillis thành một biến trướcMillis sau đó thực hiện các thao tác có trong phần thân của cấu trúc. Nếu sự khác biệt currMillis - prevMillis nhỏ hơn giá trị biến khoảng thời gian, khi đó chưa đến một giây giữa các chu kỳ quét chương trình và các thao tác có trong phần thân của cấu trúc sẽ bị bỏ qua.

Vâng, ở cuối bài viết có một đoạn video của tác giả:

Vui lòng kích hoạt javascript để bình luận hoạt động.

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? Vì vậy, đáp ứng hệ thống 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à giá hiện tại kể từ ngày nó được 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, được kết nối với chân A0 (trong trường hợp này, chân A0 được sử dụng làm chân 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 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 console 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ự động tìm kiếm địa chỉ và cấu hình mô-đun tự động. 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. Chiếm: 66% SRAM, 92% bộ nhớ Flash.
GSM_2017_01_15-23-26.hex- Hỗ trợ modem A6_Mini. Giám sát sự hiện diện của nguồn đ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 của thông tin gỡ lỗi tới màn hình cổng đã giảm đi một chút. 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ố, thông tin chính xác sẽ được hiển thị trong bảng điều khiển. Có thể đã sửa lỗi do đôi khi gửi tin nhắn SMS trả lời trống. 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 theo mặc định, thông số SendSms lại bằng 1. Lúc này, 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, báo hiệu hoạt động bình thường của 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 cảnh báo được kích hoạt, WatchPowerOn2 - giám sát nguồn điện bên ngoài luôn được bật. Chức năng kích hoạt và giải giáp bằng các thiết bị bên ngoài được thực hiện; các chân A1(D15) và A2(D16) được sử dụng cho việc này. Cảnh báo sẽ bật/tắt khi mức +5V cao xuất hiện ở chân A1(D15) hoặc ở 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ờ bảng điều khiển thậm chí còn trở nên gọn gàng hơn, nhưng nếu chế độ kiểm tra “TestOn” được bật, thông tin bổ sung sẽ được hiển thị trong bảng điều khiển. Đã sửa lỗi “Đã gửi!”; 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 "gọi sai liên tục". 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. Bận: 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 nghị 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 “pin báo động” khi cảm biến được kích hoạt; giá trị không được vượt quá 255 giây. Lệnh ClearSMS đã bị xóa, tin nhắn giờ đây 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- Hiện đang gửi lệnh console tới mô-đun GSM chỉ được thực hiện 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ớ. Bận: 66% SRAM, 94% Bộ nhớ Flash.
GSM_2017_04_30-12-57.hex- Tạm thời kích hoạt đầu ra thông tin bổ sung tới 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ớ. Chiếm: 66% SRAM, 92% bộ nhớ Flash.
GSM_2017_05_06-11-52.hex- Đã sửa lỗi với chức năng DelayBeforeAlarm. Chiếm: 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. Giờ đây, bạn có thể đặt thời gian sau đó một tin nhắn SMS sẽ được gửi cho biết nguồn điện bên ngoài đã tắt. 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 đó sẽ 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- Tham số “I” (Thông tin) đã được thêm vào lệnh AddPhone và EditMainPhone, có nhiệm vụ gửi thông báo SMS 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 với đè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ỏ. Giờ đây, thiết bị có thể được tắt trong khi có cuộc gọi báo động; bây giờ chúng được thực hiện ở chế độ nền. 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ố. Chiếm: 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. Chiếm: 68% SRAM, 96% bộ nhớ Flash.
GSM_2017_07_26-10-03.hex- Đã thêm lệnh ModemID. Việc tự động phát hiện modem chỉ được thực hiện nếu giá trị của tham số này bằng 0. Sau khi đặt giá trị tham số thành 0, thiết bị sẽ tự động khởi động lại. 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ế độ công tắc 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ể 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 đó sẽ có thông báo (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ế độ vận hành 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.


Cổng Arduino Nano v3 được sử dụng

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- Đầu vào để điều khiển bên ngoài. Cảnh báo sẽ bật/tắt khi 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.


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. Người đầu tiên gọi đến máy 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 cảnh báo 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 - Thông số “SMS” - một tin nhắn SMS sẽ được gửi 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ố dư- 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 báo rằng nguồn điện bên ngoài đã tắt. 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 modem đang 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ôngBật- 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- Đã bật điều khiển cảnh báo bằng thiết bị bên ngoài hoặc nú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ínhMức độ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ínhĐộ trễTrướ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 trong khoảng thời gian được đặt bởi 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ớ ổn định của 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, loại trừ dương tính giả khi modem đang hoạt động thì 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 nhận được cuộc gọi từ số được ủy quyền hoặc tin nhắn SMS có lệnh GuardOn/GuardOff thì tùy thuộc vào tình trạng hiện tại bảo mật sẽ được gửi một tin nhắn SMS về việc kích hoạt hoặc vô hiệu hóa tới 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à 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 phát sáng màu xanh lá cây - không được kích hoạt, 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 cảm biến trở lên để mở firmware (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); Alarm(); ) 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 = = CAO && 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ì đó. Phiên bản này sử dụng điốt 1N4007; nếu 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! :)

Mình đang định mua +207 Thêm vào mục yêu thích Tôi thích bài đánh giá +112 +243
lượt xem