Mục lục:

Báo động PIR đến WiFi (và Tự động hóa gia đình): 7 bước (có Hình ảnh)
Báo động PIR đến WiFi (và Tự động hóa gia đình): 7 bước (có Hình ảnh)

Video: Báo động PIR đến WiFi (và Tự động hóa gia đình): 7 bước (có Hình ảnh)

Video: Báo động PIR đến WiFi (và Tự động hóa gia đình): 7 bước (có Hình ảnh)
Video: Cảm biến chuyển động gắn trần, tường nhà P06 Tuya Smart Life Wifi PIR Motion 2024, Tháng mười một
Anonim
Image
Image
Báo động PIR tới WiFi (và Tự động hóa gia đình)
Báo động PIR tới WiFi (và Tự động hóa gia đình)

Tổng quat

Hướng dẫn này sẽ cung cấp cho bạn khả năng xem ngày / giờ cuối cùng (và tùy chọn lịch sử thời gian) khi PIR của House Alarm (cảm biến hồng ngoại thụ động) được kích hoạt, trong phần mềm tự động hóa gia đình của bạn. Trong dự án này, tôi sẽ thảo luận về cách sử dụng với OpenHAB (phần mềm tự động hóa nhà miễn phí, mà cá nhân tôi sử dụng) mặc dù nó sẽ hoạt động với bất kỳ phần mềm hoặc ứng dụng tự động hóa nào khác hỗ trợ MQTT (cũng được mô tả sau trong bài viết này). Tài liệu hướng dẫn này sẽ hướng dẫn bạn qua các bước cần thiết về cách đấu dây bảng mạch và Wemos D1 mini (bảng IOT sử dụng chip ESP8266) có thể chạm vào các vùng báo động trong hộp điều khiển cảnh báo của bạn để khi một vùng (có chứa một hoặc nhiều PIR) được kích hoạt, Wemos sẽ gửi thông báo không dây bằng giao thức MQTT tới phần mềm tự động hóa gia đình của bạn, từ đó sẽ hiển thị ngày / giờ cuối cùng của trình kích hoạt đó. Mã Arduino để lập trình Wemos cũng được cung cấp.

Giới thiệu

Hình ảnh trên là những gì tôi nhìn thấy qua một trong các màn hình trên ứng dụng OpenHAB trên iPhone của tôi. Văn bản ngày / giờ được mã hóa bằng màu sắc để trình bày nhanh hơn thời điểm PIR được kích hoạt - nó sẽ hiển thị màu đỏ (được kích hoạt trong vòng 1 phút qua), màu cam (được kích hoạt trong vòng 5 phút qua), màu xanh lá cây (được kích hoạt trong vòng 30 phút qua), màu xanh lam (được kích hoạt trong vòng một giờ trước) hoặc nếu không, màu đen. Nhấp vào ngày / giờ, sẽ hiển thị chế độ xem lịch sử của các trình kích hoạt PIR, trong đó giá trị 1 có nghĩa là được kích hoạt và số 0 là không hoạt động. Có rất nhiều cách sử dụng cho việc này, ví dụ như nó có thể bổ sung cho giải pháp hiện diện tại nhà của bạn, nó có thể phát hiện chuyển động nếu bạn đi vắng và thông qua các quy tắc OpenHAB, gửi thông báo đến điện thoại của bạn, bạn có thể sử dụng nó như tôi để xem liệu con tôi có thức dậy vào giữa đêm, được kích hoạt bởi một PIR đặt bên ngoài phòng ngủ của họ!

OpenHAB chỉ đơn giản là phần mềm tự động hóa gia đình mà tôi sử dụng, còn rất nhiều phần mềm khác - và nếu họ hỗ trợ MQTT thì bạn có thể dễ dàng điều chỉnh dự án này cho phù hợp với phần mềm bạn sử dụng.

Giả định

Điều này có thể hướng dẫn giả sử bạn đã có (hoặc sẽ thiết lập):

  • Rõ ràng là một hệ thống báo động gia đình với PIR (cảm biến hồng ngoại thụ động) và bạn có quyền truy cập vào hộp điều khiển cảnh báo để kết nối hệ thống dây điện cần thiết
  • OpenHAB (phần mềm tự động hóa gia đình mã nguồn mở miễn phí) đang chạy, mặc dù như đã thảo luận, nó sẽ hoạt động với bất kỳ phần mềm tự động hóa gia đình nào có thể bao gồm ràng buộc MQTT. Ngoài ra, bạn có thể tự thay đổi mã để phù hợp với nhu cầu của riêng mình.
  • Môi giới Mosquitto MQTT (hoặc tương tự) được cài đặt và liên kết được định cấu hình với OpenHAB (MQTT là một giao thức loại đăng ký / xuất bản tin nhắn nhẹ và tuyệt vời để giao tiếp giữa các thiết bị)

Nếu bạn không chạy OpenHAB và nhà môi giới MQTT, hãy xem bài viết tuyệt vời này trên trang web MakeUseOf

Tôi cần những gì?

Để tạo bộ điều khiển không dây, bạn sẽ cần nguồn các phần sau:

  • Wemos D1 mini V2 (tích hợp CHIP không dây ESP8266)
  • Một bộ so sánh LM339 (điều này sẽ thực hiện việc kiểm tra PIR nhàn rỗi so với được kích hoạt)
  • Nguồn điện một chiều 5V cho Wemos (HOẶC, bộ chuyển đổi DC-DC. Lưu ý: bộ điều chỉnh điện áp LM7805 có thể không hoạt động cho ứng dụng này như được thảo luận sau trong dự án này)
  • Hai điện trở cho bộ chia điện áp (kích thước sẽ phụ thuộc vào điện áp cảnh báo của bạn, sẽ được thảo luận sau trong dự án)
  • Một điện trở 1K ohm để hoạt động như một điện trở kéo xuống để điều khiển công suất LM339
  • Một MOSFET 2N7000 (hoặc tương tự) để bật LM339 một cách hợp lý (có thể tùy chọn, sẽ thảo luận sau trong dự án)
  • Một breadboard có kích thước phù hợp để thiết lập và kiểm tra mạch
  • Một loạt các dây breadboard để kết nối mọi thứ với nhau
  • Dụng cụ cần thiết: máy cắt bên, dây lõi đơn
  • Đồng hồ đo đa năng DC (bắt buộc!)

Bước 1: Hộp điều khiển hệ thống báo động

Hộp điều khiển hệ thống báo động
Hộp điều khiển hệ thống báo động

Đầu tiên một số cảnh báo và tuyên bố từ chối trách nhiệm

Cá nhân tôi có một hệ thống báo động của Bosch. Tôi thực sự khuyên bạn nên tải xuống hướng dẫn liên quan cho hệ thống báo động cụ thể của bạn và tự làm quen với nó trước khi bắt đầu vì bạn sẽ cần tắt nguồn hệ thống báo động để nối dây các khu vực. Tôi cũng khuyên bạn nên đọc toàn bộ bài viết này trước khi bắt đầu!

Dưới đây là danh sách một số điều bạn nên biết trước khi bắt đầu - hãy đảm bảo rằng bạn đã đọc và hiểu từng điều đó trước khi tiếp tục! Tôi không chịu trách nhiệm nếu bạn làm hỏng hệ thống báo động của mình và / hoặc phải trả tiền cho người cài đặt của bạn để sửa chữa nó. Tuy nhiên, nếu bạn đọc và hiểu những điều sau và thực hiện các biện pháp phòng ngừa cần thiết, bạn sẽ ổn:

1. Hệ thống báo động của tôi có một pin dự phòng bên trong hộp và cũng có một công tắc giả mạo ở bên trong nắp (cung cấp quyền truy cập vào bảng hệ thống cảnh báo), do đó, ngay cả khi tắt nguồn cảnh báo bên ngoài, khi tháo mặt trước của điều khiển hộp nó đã kích hoạt báo động! Để giải quyết vấn đề này trong khi làm việc với dự án, tôi đã bỏ qua biện pháp bảo vệ giả mạo bằng cách rút phích cắm sau đó làm ngắn mạch công tắc giả mạo (dây dày màu đỏ như trong hình trên)

2. Khi cấp nguồn lại cho hệ thống cảnh báo, sau khoảng ~ 12 giờ, bảng điều khiển cảnh báo bắt đầu phát ra tiếng bíp kèm theo mã lỗi. Sau khi xác định mã lỗi thông qua sách hướng dẫn, tôi phát hiện ra rằng nó đã cảnh báo tôi rằng:

  • Ngày / giờ chưa được đặt (tôi cần mã chính và chuỗi khóa từ sách hướng dẫn để định cấu hình lại)
  • Rằng pin dự phòng không được kết nối (khắc phục dễ dàng, tôi chỉ quên cắm lại pin)

3. Tuy nhiên, trong hệ thống báo động của tôi, có 4 khối kết nối vùng x (có nhãn Z1-Z4) để PIR kết nối với bảng báo động chính - tuy nhiên, hệ thống báo động của tôi thực sự có khả năng gồm 8 vùng. Mỗi khối kết nối vùng thực sự có thể chạy 2 vùng x mỗi vùng (Z1 thực hiện Z1 và Z5, Z2 thực hiện Z2 và Z6, v.v.). Hệ thống cảnh báo được tích hợp tính năng bảo vệ giả mạo để ngăn ai đó nói, mở nắp hệ thống báo động như đã đề cập ở trên hoặc cắt dây dẫn đến PIR. Nó phân biệt giữa từng vùng giả mạo thông qua điện trở EOL (cuối dòng). Đây là những điện trở có kích thước cụ thể nằm ở "cuối đường dây" - nói cách khác, bên trong PIR (hoặc công tắc giả mạo hộp điều khiển, hoặc hộp còi báo động hoặc bất cứ thứ gì được nối với khu vực đó) Như đã đề cập, những điện trở này được sử dụng như 'giả mạo bảo vệ '- về mặt kỹ thuật, nếu ai đó cắt cáp với PIR - bởi vì hệ thống cảnh báo đang mong đợi thấy một điện trở nhất định từ PIR đó, sau đó nếu điện trở đó thay đổi, nó sẽ giả định rằng ai đó đã can thiệp vào hệ thống và sẽ kích hoạt cảnh báo.

Ví dụ:

Trên báo động của tôi, Vùng "Z4" có 2 dây trong đó, một dây nối với PIR ở hành lang của tôi và một dây nối với công tắc giả mạo hộp điều khiển cảnh báo. Bên trong PIR hành lang, nó có một điện trở 3300 ohm. Dây còn lại chạy đến công tắc giả mạo hộp điều khiển, có điện trở 6800 ohm được mắc nối tiếp. Đây là cách hệ thống cảnh báo (về mặt logic) phân biệt giữa giả mạo "Z4" và "Z8". Tương tự như vậy, vùng "Z3" có PIR (với điện trở 3300 ohm trong đó) và cũng có công tắc giả mạo còi báo động (với điện trở 6800 ohm trong đó) tạo thành "Z7". Người cài đặt cảnh báo sẽ cấu hình trước hệ thống cảnh báo để nó biết thiết bị nào được kết nối với từng vùng (và thay đổi kích thước của điện trở EOL cho phù hợp, bởi vì hệ thống cảnh báo được lập trình để biết kích thước của các điện trở EOL khác nhau. Dưới không có trường hợp nào bạn nên thay đổi giá trị của các điện trở này!)

Vì vậy, dựa trên cơ sở ở trên, vì mỗi vùng có thể có nhiều thiết bị được gắn vào quá nó (với các giá trị điện trở khác nhau), và việc ghi nhớ công thức V = IR (điện áp = amps x điện trở) thì điều đó cũng có nghĩa là mỗi vùng có thể có điện áp khác nhau. Điều này dẫn chúng ta đến bước tiếp theo, đo từng vùng IDLE so với điện áp TRIGGERED…

Bước 2: Đo điện áp vùng báo động

Đo điện áp vùng báo động
Đo điện áp vùng báo động
Đo điện áp vùng báo động
Đo điện áp vùng báo động

Khi bạn đã có quyền truy cập vào bo mạch chính trên hệ thống cảnh báo của mình (và bỏ qua công tắc giả mạo nếu bạn có; như theo bước trước), hãy bật lại hệ thống báo động của bạn. Bây giờ chúng ta cần đo điện áp từng vùng khi IDLE của nó (không có chuyển động phía trước PIR) so với TRIGGERED (PIR đã phát hiện chuyển động) Lấy bút và giấy để bạn có thể ghi lại các kết quả đọc điện áp của mình.

CẢNH BÁO: Phần lớn hệ thống cảnh báo của bạn có nhiều khả năng đang chạy trên 12V DC, tuy nhiên nó sẽ có nguồn cấp ban đầu ở 220V (hoặc 110V) AC, với một máy biến áp chuyển đổi nguồn điện từ AC sang DC. ĐỌC hướng dẫn sử dụng và cẩn thận hơn để đảm bảo bạn KHÔNG đo bất kỳ thiết bị đầu cuối AC nào !!! Theo ảnh chụp màn hình hệ thống cảnh báo của tôi trên trang này, bạn có thể thấy rằng phần dưới cùng của hình ảnh là nguồn AC, được chuyển đổi thành 12V DC. Chúng tôi đang đo DC 12V trong các hộp màu đỏ được đánh dấu. Không bao giờ chạm vào nguồn AC. Chăm sóc cực kỳ cẩn thận!

Đo điện áp PIR

Tôi có 4 x PIR được kết nối với Z1 đến Z4. Đo lường từng khu vực của bạn như sau.

  1. Đầu tiên, xác định thiết bị đầu cuối GND và thiết bị đầu cuối vùng trên bảng cảnh báo. Tôi đã đánh dấu những điều này trong hình ảnh hiển thị từ hướng dẫn sử dụng thiết bị báo động Bosch của tôi.
  2. Lấy đồng hồ vạn năng của bạn và đặt phép đo điện áp của bạn thành 20V DC. Kết nối cáp (COM) màu đen từ đồng hồ vạn năng của bạn với đầu cuối GND trên báo động. Đặt dây dẫn màu đỏ (+) từ đồng hồ vạn năng của bạn trên vùng đầu tiên - trong trường hợp của tôi có nhãn "Z1". Ghi lại số đọc điện áp. Thực hiện các bước tương tự cho các vùng còn lại. Các phép đo điện áp của tôi như sau:
  • Z1 = 6,65V
  • Z2 = 6,65V
  • Z3 = 7,92V
  • Z4 = 7,92V

Theo như trên, hai khu vực đầu tiên của tôi chỉ có PIR được đính kèm quá chúng. Hai khu vực sau có cả PIR và bảo vệ giả mạo được nối dây vào chúng (giả mạo hộp điều khiển Z3, giả mạo còi báo động Z4) Lưu ý sự khác biệt về điện áp.

3. Bạn có thể sẽ cần 2 người cho bước tiếp theo này. Bạn cũng sẽ cần biết PIR nằm trong khu vực nào. Quay lại và đọc điện áp trên vùng đầu tiên. Bây giờ hãy nhờ ai đó trong nhà của bạn đi bộ trước PIR, điện áp sẽ giảm xuống. Ghi lại cách đọc điện áp mới. Trong trường hợp của tôi, các điện áp được đọc như sau khi PIR được kích hoạt:

  • Z1 = 0V
  • Z2 = 0V
  • Z3 = 4,30V
  • Z4 = 4,30V

Theo như trên, tôi có thể thấy rằng khi vùng 1 và 2 được kích hoạt, điện áp giảm từ 6,65V xuống 0V. Tuy nhiên, khi vùng 3 và 4 được kích hoạt, điện áp giảm từ 7,92V xuống 4,30V.

Đo nguồn điện 12V

Chúng tôi sẽ sử dụng thiết bị đầu cuối 12V DC từ hộp điều khiển cảnh báo để cấp nguồn cho dự án của chúng tôi. Chúng ta cần đo điện áp từ nguồn cấp 12V DC trên báo động. Mặc dù nó đã ghi 12V nhưng chúng ta cần biết cách đọc chính xác hơn. Trong trường hợp của tôi, nó thực sự đọc 13,15V. Viết nó xuống, bạn sẽ cần giá trị này trong bước tiếp theo.

Tại sao chúng ta đo điện áp?

Lý do chúng ta cần đo điện áp cho mỗi PIR là vì mạch chúng ta sẽ tạo. Chúng tôi sẽ sử dụng chip so sánh vi phân quad LM339 (hoặc bộ so sánh op-amp quad) làm thành phần điện cốt lõi cho dự án này. LM339 có 4 bộ so sánh điện áp độc lập (4 kênh) trong đó mỗi kênh lấy 2 x điện áp đầu vào (một đầu vào đảo ngược (-) và một đầu vào không đảo (+), xem sơ đồ) Nếu điện áp của điện áp đầu vào đảo ngược phải giảm xuống thấp hơn điện áp không nghịch đảo, thì đầu ra liên quan của nó sẽ được nối đất. Tương tự như vậy, nếu điện áp đầu vào không nghịch đảo giảm xuống thấp hơn đầu vào đảo ngược, thì đầu ra được kéo lên đến Vcc. Thật tiện lợi, trong nhà tôi có 4 x báo động PIR / vùng - do đó mỗi vùng sẽ được kết nối với mỗi kênh trên bộ so sánh. Nếu bạn có nhiều hơn 4 x PIR, bạn sẽ cần một bộ so sánh với nhiều kênh hơn hoặc một LM339 khác!

Lưu ý: LM339 tiêu thụ điện năng ở dạng nano-amps, do đó sẽ không ảnh hưởng đến điện trở EOL của hệ thống cảnh báo hiện có.

Nếu điều này gây nhầm lẫn, hãy tiếp tục bước tiếp theo, nó sẽ bắt đầu có ý nghĩa hơn khi chúng ta kết thúc nó!

Bước 3: Tạo dải phân cách điện áp

Image
Image

Bộ chia điện áp là gì?

Mạch phân áp là đoạn mạch có 2 x (trở lên) mắc nối tiếp. Chúng tôi cung cấp điện áp trong (Vin) cho điện trở đầu tiên (R1) Chân còn lại của R1 kết nối với chân đầu tiên của điện trở thứ hai (R2) và đầu kia của R2 kết nối với GND. Sau đó, chúng tôi lấy một điện áp đầu ra (Vout) từ kết nối giữa R1 và R2. Điện áp đó sẽ trở thành điện áp tham chiếu của chúng tôi cho LM339. Để biết thêm thông tin về cách hoạt động của bộ chia điện áp, hãy xem video trên youtube của Adohms

(Lưu ý: điện trở không có cực tính, vì vậy chúng có thể được đấu dây theo một trong hai cách)

Tính toán điện áp tham chiếu của chúng tôi

Giả sử rằng điện áp giảm xuống khi PIR của bạn được kích hoạt (điều này xảy ra với hầu hết các cảnh báo) thì những gì chúng tôi đang cố gắng đạt được, là nhận được số đọc điện áp gần bằng nửa giữa điện áp không tải thấp nhất và điện áp kích hoạt cao nhất của chúng tôi, điều này sẽ trở thành điện áp tham chiếu của chúng tôi.

Lấy báo thức của tôi làm ví dụ…

Điện áp không tải vùng là Z1 = 6,65V, Z2 = 6,65V, Z3 = 7,92V, Z4 = 7,92V. Do đó, điện áp không tải thấp nhất là 6,65V

Điện áp kích hoạt vùng là: Z1 = 0V, Z2 = 0V, Z3 = 4,30V, Z4 = 4,30V. Do đó, điện áp kích hoạt cao nhất là 4,30V

Vì vậy, chúng ta cần phải chọn một con số giữa 4,30V và 6,65V (không cần phải chính xác, chỉ gần đúng) Trong trường hợp của tôi, điện áp tham chiếu của tôi cần phải ở khoảng 5,46V. Lưu ý: Nếu điện áp kích hoạt không tải thấp nhất và cao nhất rất gần nhau do nhiều vùng gây ra dải điện áp khác nhau, bạn có thể cần tạo 2 hoặc nhiều bộ chia điện áp.

Tính toán các giá trị điện trở của chúng tôi cho bộ chia điện áp

Bây giờ chúng ta có một điện áp tham chiếu, chúng ta cần tính toán kích thước điện trở chúng ta cần để tạo ra một bộ chia điện áp sẽ cung cấp điện áp tham chiếu của chúng ta. Chúng tôi sẽ sử dụng nguồn điện áp DC 12V (Vs) từ cảnh báo. Tuy nhiên, theo bước trước khi chúng tôi đo nguồn cấp dữ liệu DC 12V, chúng tôi thực sự nhận được 13,15V. Chúng ta cần tính toán bộ chia điện áp sử dụng giá trị này làm nguồn.

Tính Vout bằng cách sử dụng luật ohms…

Vout = Vs x R2 / (R1 + R2)

… Hoặc sử dụng máy tính chia điện áp trực tuyến:-)

Bạn sẽ cần phải thử nghiệm với các giá trị điện trở cho đến khi bạn đạt được đầu ra mong muốn. Trong trường hợp của tôi, nó hoạt động với R1 = 6,8k ohm và R2 = 4,7K ohm, được tính ở dạng dài như sau:

Vout = Vs x R2 / (R1 + R2)

Vout = 13,15 x 4700 / (6800 + 4700)

Vout = 61, 805/11, 500

Vout = 5,37V

Bước 4: Lên dây LM339

Nối dây Wemos D1 Mini
Nối dây Wemos D1 Mini

Bộ chia điện áp đến đầu vào đảo ngược LM339

Như đã thảo luận trước đó về bộ so sánh LM339, nó sẽ cần 2 đầu vào x. Một sẽ là điện áp từ mỗi PIR đến mỗi đầu cuối không đảo ngược (+) kênh, đầu còn lại sẽ là điện áp tham chiếu của chúng tôi đến đầu cuối đảo (-) của chúng tôi. Điện áp tham chiếu cần cấp nguồn cho tất cả 4 đầu vào đảo ngược của bộ so sánh. Tắt hệ thống báo động của bạn trước khi thực hiện các bước này.

  • Chạy dây từ khối DC 12V trên hệ thống cảnh báo đến + thanh ray trên bảng mạch của bạn *
  • Chạy dây từ khối GND trên hệ thống cảnh báo đến - rail trên breadboard của bạn **
  • Cài đặt bộ so sánh LM339 ở giữa bảng mạch (rãnh chỉ ra gần chân 1 nhất)
  • Lắp 2 điện trở x để tạo thành mạch phân áp và dây dẫn để phân áp ra
  • Chạy dây từ Vout 'phân chia điện áp' đến mỗi đầu nối nghịch lưu LM339

* MẸO: sử dụng kẹp cá sấu cho nguồn điện nếu có thể, vì điều này giúp việc cung cấp nguồn BẬT / TẮT cho dự án của bạn dễ dàng hơn ** QUAN TRỌNG! Có thể yêu cầu MOSFET NẾU bạn đang cấp nguồn cho Wemos từ bảng Alarm! Trong trường hợp của tôi, LM339, Wemos và Alarm đều nhận được nguồn từ cùng một nguồn (tức là: chính hệ thống báo động) Điều này cho phép tôi bật nguồn cho mọi thứ chỉ với một kết nối nguồn duy nhất. Tuy nhiên, theo mặc định, các chân GPIO trên Wemos được định nghĩa là chân "INPUT" - có nghĩa là chúng nhận bất kỳ điện áp nào được ném vào chúng và dựa vào nguồn đó để cung cấp mức điện áp chính xác (mức tối thiểu / tối đa) để Wemos giành chiến thắng ' t sụp đổ hoặc cháy hết. Trong trường hợp của tôi, hệ thống cảnh báo nhận được nguồn và bắt đầu thực hiện trình tự khởi động của nó rất nhanh - trên thực tế, nó thực hiện điều này trước khi Wemos có thể khởi động và khai báo các chân GPIO là "INPUT_PULLUP" (điện áp được kéo lên bên trong Chip). Điều này không có nghĩa là sự khác biệt về điện áp sẽ khiến Wemos gặp sự cố khi toàn bộ hệ thống có điện. Cách duy nhất để giải quyết vấn đề này là tắt và bật Wemos theo cách thủ công. Để giải quyết vấn đề này, một MOSFET được thêm vào và hoạt động như một "công tắc logic" để cấp nguồn cho LM339. Điều này cho phép Wemos khởi động, đặt 4 chân GPIO của bộ so sánh là "INPUT_PULLUP's", trì hoãn vài giây và THÌ (thông qua một chân GPIO khác D5 được xác định là OUTPUT) gửi tín hiệu "HIGH" qua chân GPIO D5 tới MOSFET, chuyển đổi một cách hợp lý LM339. Tôi khuyên bạn nên nối dây như trên, nhưng NẾU bạn thấy rằng Wemos bị treo như tôi đã làm, thì bạn sẽ phải bao gồm MOSFET với một điện trở kéo xuống 1k ohm. Để biết thêm thông tin về cách thực hiện việc này, hãy xem phần cuối của hướng dẫn này.

Khu vực cảnh báo đến đầu vào không đảo ngược LM339

Bây giờ chúng ta cần chạy dây từ mỗi vùng trên bảng điều khiển cảnh báo đến các đầu vào của bộ so sánh LM339. Với hệ thống cảnh báo vẫn đang tắt, đối với mỗi vùng cấp một dây cho mỗi đầu vào không đảo (+) trên bộ so sánh LM339. Ví dụ, trong hệ thống của tôi:

  • Dây từ Z1 đến đầu vào LM339 1+
  • Dây từ Z2 đi đến đầu vào LM339 2+
  • Dây từ Z3 đi đến đầu vào LM339 3+
  • Dây từ Z4 đi đến đầu vào LM339 4+

Hãy tham khảo chân cắm của LM339 trong bước 3 nếu bạn có lời nhắc (nó được mã hóa bằng màu với hình ảnh breadboard). Sau khi hoàn tất, breadboard của bạn sẽ xuất hiện tương tự như hình ảnh được hiển thị trong bước này.

Bật nguồn hệ thống cảnh báo và đo điện áp ra khỏi bộ chia điện áp để đảm bảo nó bằng với điện áp tham chiếu của bạn như đã tính toán trước đó.

Bước 5: Kết nối Wemos D1 Mini

Đấu dây cho Wemos D1 mini

Bây giờ chúng tôi đã chăm sóc tất cả các đầu vào LM339, bây giờ chúng tôi cần đấu dây trong Wemos D1 mini. Mỗi chân đầu ra của LM339 đi đến chân Wemos GPIO (đầu vào / đầu ra mục đích chung) mà chúng tôi sẽ chỉ định thông qua mã làm chân pullup đầu vào. Wemos mất tối đa 5V làm điện áp Vcc (nguồn đầu vào) của nó (mặc dù điều chỉnh bên trong xuống 3,3V) Chúng tôi sẽ sử dụng bộ điều chỉnh điện áp LM7805 rất phổ biến (CHỈNH SỬA: xem bên dưới) để thả thanh 12V trên bảng mạch xuống 5V để cấp nguồn cho Wemos. Biểu dữ liệu cho LM7805 chỉ ra rằng chúng ta cần một tụ điện có dây ở mỗi bên của bộ điều chỉnh để làm mượt nguồn điện, như được hiển thị trên hình ảnh bảng mạch. Chân dài hơn của tụ điện là cực dương (+) vì vậy hãy đảm bảo rằng tụ điện này được đấu đúng cách.

Bộ điều chỉnh điện áp nhận điện áp vào (chân bên trái), nối đất (chân giữa) và điện áp ra (chân bên phải) Kiểm tra kỹ chân ra nếu bộ điều chỉnh điện áp của bạn khác với LM7805.

(CHỈNH SỬA: Tôi thấy amps đến từ bảng cảnh báo quá cao đối với LM7805 để xử lý. Điều này đã gây ra rất nhiều nhiệt trong bộ tản nhiệt nhỏ của LM7805 và khiến nó bị lỗi, và do đó khiến Wemos dừng lại đang hoạt động. Tôi đã thay thế LM7805 và các tụ điện bằng bộ chuyển đổi DC-DC và không có vấn đề gì kể từ đó. Chúng rất dễ nối dây. Đơn giản chỉ cần kết nối điện áp đầu vào từ Báo thức, trước tiên kết nối với đồng hồ vạn năng và sử dụng vít chiết áp và điều chỉnh cho đến khi điện áp đầu ra là ~ 5V)

Chân đầu vào GPIO

Đối với dự án này, chúng tôi đang sử dụng các chân sau:

  • vùng Z1 => chân D1
  • vùng Z2 => chân D2
  • vùng Z3 => chân D3
  • vùng Z4 => chân D5

Nối dây các đầu ra từ LM339 đến các chân GPIO liên quan trên bảng Wemos, theo hình ảnh bảng mạch hiển thị trong bước này. Một lần nữa, tôi đã mã hóa màu sắc cho các đầu vào và đầu ra phù hợp, để giúp bạn dễ dàng xem những gì đề cập đến cái gì. Mỗi chân GPIO trong Arduino được định nghĩa là 'INPUT_PULLUP', nghĩa là chúng sẽ được kéo lên đến 3.3V trong điều kiện sử dụng bình thường (IDLE) và LM339 sẽ kéo chúng xuống đất nếu PIR được kích hoạt. Mã phát hiện sự thay đổi CAO thành THẤP và gửi thông báo không dây đến phần mềm tự động hóa gia đình của bạn. Nếu bạn đang gặp vấn đề với cách hoạt động này, có thể bạn có đầu vào đảo ngược và không đảo ngược của bạn không đúng cách (nếu điện áp từ PIR của bạn tăng cao khi được kích hoạt, như xảy ra với hầu hết các PIR sở thích, thì bạn sẽ muốn các kết nối ngược lại)

Arduino IDE

Xóa Wemos khỏi breadboard, bây giờ chúng ta cần tải mã lên nó (liên kết thay thế ở đây) Tôi sẽ không đi vào chi tiết về cách thực hiện việc này, vì có rất nhiều bài viết trên web về cách tải mã lên Wemos hoặc ESP8266 khác bảng loại. Cắm cáp USB của bạn vào bảng Wemos và vào PC của bạn và kích hoạt Arduino IDE. Tải xuống mã và mở nó trong dự án của bạn. Bạn sẽ cần đảm bảo lắp đặt và tải đúng bo mạch cho dự án của mình cũng như chọn đúng cổng COM (Công cụ, Cổng). Bạn cũng sẽ cần cài đặt các thư viện thích hợp (PubSubClient, ESP8266Wifi) Để đưa bảng Wemos vào bản phác thảo của bạn, hãy xem bài viết này.

Bạn sẽ cần thay đổi các dòng mã sau và thay thế bằng SSID và mật khẩu của riêng bạn cho kết nối không dây của bạn. Ngoài ra, hãy thay đổi địa chỉ IP để trỏ đến nhà môi giới MQTT của riêng bạn.

// Wifi

const char * ssid = "your_wifi_ssid_here"; const char * password = "your_wifi_password_here"; // Địa chỉ IP của Nhà môi giới MQTT MQTT_SERVER (172, 16, 223, 254)

Sau khi thay đổi, hãy xác minh mã của bạn rồi tải lên bảng Wemos qua cáp USB.

Ghi chú:

  • Nếu bạn đang sử dụng các cổng GPIO khác nhau, bạn sẽ cần điều chỉnh mã. Nếu bạn đang sử dụng nhiều hơn hoặc ít vùng hơn tôi có, bạn cũng sẽ cần điều chỉnh mã và TOTAL_ZONES = 4; không đổi cho phù hợp.
  • Trong quá trình khởi động hệ thống báo động của tôi, hệ thống báo động sẽ thực hiện kiểm tra nguồn điện đối với tất cả 4 x PIR để kéo tất cả các GPIO được kết nối xuống đất, khiến Wemos nghĩ rằng các khu vực đang được kích hoạt. Mã sẽ bỏ qua việc gửi tin nhắn MQTT nếu nó thấy tất cả 4 vùng x hoạt động cùng một lúc, vì nó giả định hệ thống cảnh báo đang bật nguồn.

Liên kết tải xuống thay thế để viết mã TẠI ĐÂY

Bước 6: Kiểm tra và cấu hình OpenHAB

Kiểm tra và cấu hình OpenHAB
Kiểm tra và cấu hình OpenHAB

Kiểm tra MQTT

MQTT là một hệ thống nhắn tin "đăng ký / xuất bản". Một hoặc nhiều thiết bị có thể nói chuyện với một "nhà môi giới MQTT" và "đăng ký" theo một chủ đề nhất định. Mọi tin nhắn đến từ bất kỳ thiết bị nào khác được "xuất bản" cho cùng chủ đề đó, sẽ được nhà môi giới đẩy ra tất cả các thiết bị đã đăng ký nó. Nó là một giao thức cực kỳ nhẹ và đơn giản để sử dụng và hoàn hảo như một hệ thống kích hoạt đơn giản như giao thức ở đây. Để thử nghiệm, bạn có thể xem các tin nhắn MQTT đến từ Wemos đến nhà môi giới MQTT của bạn bằng cách chạy lệnh sau trên máy chủ Mosquitto của bạn (Mosquitto là một trong nhiều phần mềm MQTT Broker có sẵn). Lệnh này đăng ký các tin nhắn lưu giữ đến:

mosquitto_sub -v -t openhab / alert / status

Bạn sẽ thấy các tin nhắn đến từ Wemos cứ sau 30 giây hoặc lâu hơn với số "1" (nghĩa là "Tôi còn sống") Nếu bạn thấy "0's" không đổi (hoặc không có phản hồi) thì không có liên lạc nào. Khi bạn thấy số 1 xuất hiện, điều đó có nghĩa là Wemos đang giao tiếp với nhà môi giới MQTT (tìm kiếm "Di chúc và Di chúc cuối cùng của MQTT" để biết thêm thông tin về cách hoạt động hoặc xem mục blog thực sự tốt này)

Sau khi bạn đã chứng minh kết nối là hoạt động, chúng tôi có thể kiểm tra xem một trạng thái vùng đang được báo cáo qua MQTT. Đăng ký chủ đề sau (# là ký tự đại diện)

mosquitto_sub -v -t openhab / alert / #

Các thông báo trạng thái thông thường sẽ xuất hiện, cũng như địa chỉ IP của chính Wemos. Đi bộ trước PIR và bạn cũng sẽ thấy thông tin khu vực xuất hiện cho biết nó đang MỞ, sau đó một giây hoặc lâu hơn, rằng nó ĐÃ ĐÓNG CỬA, tương tự như sau:

openhab / báo động / trạng thái 1

openhab / báo động / vùng1 MỞ

openhab / báo động / khu 1 ĐÃ ĐÓNG CỬA

Khi điều này hoạt động, chúng ta có thể định cấu hình OpenHAB để điều này được thể hiện độc đáo trong GUI.

Cấu hình OpenHAB

Các thay đổi sau là bắt buộc đối với OpenHAB:

tệp biến đổi 'alert.map': (tùy chọn, để thử nghiệm)

CLOSED = IdleOPEN = TriggeredNULL = Không xác định- = Không xác định

tệp biến đổi 'status.map':

0 = Không thành công

1 = Trực tuyến - = XUỐNG! NULL = không xác định

tệp 'items':

String alertMonitorState "Alarm Monitor [MAP (status.map):% s]" {mqtt = "<[mqttbroker: openhab / alert / status: state: default]"} String alertMonitorIPAddress "Alarm Monitor IP [% s]" {mqtt = "<[mqttbroker: openhab / alert / ipaddress: state: default]"} Number zone1_Chart_Period "Zone 1 Chart" Contact alertZone1State "Zone 1 State [MAP (alert.map):% s]" {mqtt = "<[mqttbroker: openhab / alert / zone1: state: default "} String alertZone1Trigger" Lounge PIR [% 1 $ ta% 1 $ tr] "Number zone2_Chart_Period" Zone 2 Chart "Contact alertZone2State" Zone 2 State [MAP (alert.map):% s] "{mqtt =" <[mqttbroker: openhab / alert / zone2: state: default "} String alertZone2Trigger" First Hall PIR [% 1 $ ta% 1 $ tr] "Number zone3_Chart_Period" Zone 3 Chart "Contact alertZone3State" Zone 3 Trạng thái [MAP (alert.map):% s] "{mqtt =" <[mqttbroker: openhab / alert / zone3: state: default "} Chuỗi báo độngZone3Trigger" Phòng ngủ PIR [% 1 $ ta% 1 $ tr] "Số zone4_Chart_Period "Zone 4 Chart" Contact alertZone4State "Zone 4 State [MAP (alert.map):% s]" {mqtt = "<[mqttbroker: openha b / alert / zone4: state: default "} Chuỗi báo độngZone4Trigger" Main Hall PIR [% 1 $ ta% 1 $ tr]"

tệp 'sơ đồ trang web' (bao gồm cả biểu đồ rrd4j):

Mục văn bản = alertZone1Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Khung {Switch item = zone1_Chart_Period label = "Khoảng thời gian" ánh xạ = [0 = "Giờ", 1 = "Ngày", 2 = "Tuần"] Hình ảnh url = "https:// localhost: 8080 / rrdchart.png" vision = [zone1_Chart_Period == 0, zone1_Chart_Period = = Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" display = [zone1_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" display = [zone1_Chart_Period == 2]}} Text item = alertZone2Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone2_Chart_Period label = "Giai đoạn" ánh xạ = [0 = "Giờ", 1 = "Ngày", 2 = "Tuần"] Hình ảnh url = "https:// localhost: 8080 / rrdchart.png" display = [zone2_Chart_Period == 0, zone2_Chart_Period == Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" vision = [zone2_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" vision = [zone2_Chart_Period == 2]}} Mục văn bản = alertZone3Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone3_Chart_Period label = "Giai đoạn" ánh xạ = [0 = "Hour", 1 = "Day", 2 = "Week"] Image url = "https:// localhost: 8080 / rrdchart.png" vision = [zone3_Chart_Period == 0, zone3_Chart_Period == Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" display = [zone3_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" vision = [zone3_Chart_Period == 2]}} Văn bản item = alertZone4Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone4_Chart_Period label = " Khoảng thời gian "mappings = [0 =" Hour ", 1 =" Day ", 2 =" Week "] Image url =" https:// localhost: 8080 / rrdchart.png "vision = [zone4_Chart_Period == 0, zone4_Chart_Period == Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" vision = [zone4_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" vision = [zone4_Chart_Period == 2] }} // TÙY CHỌN nhưng tiện dụng để chẩn đoán trạng thái và địa chỉ IP ss Text item = alertMonitorState Text item = alertMonitorIPAddress

tệp 'quy tắc':

quy tắc "Thay đổi trạng thái Vùng báo động 1"

khi Item alertZone1State thay đổi thành OPEN rồi postUpdate (alertZone1Trigger, DateTimeType mới ()) alertZone1State.state = CLOSED end

quy tắc "Thay đổi trạng thái vùng báo động 2"

khi Item alertZone2State thay đổi thành OPEN rồi postUpdate (alertZone2Trigger, DateTimeType mới ()) alertZone2State.state = CLOSED end

quy tắc "Thay đổi trạng thái Vùng báo động 3"

khi Item alertZone3State thay đổi thành OPEN sau đó postUpdate (alertZone3Trigger, DateTimeType mới ()) alertZone3State.state = CLOSED end

quy tắc "Thay đổi trạng thái Vùng báo động 4"

khi Item alertZone4State thay đổi thành OPEN rồi postUpdate (alertZone4Trigger, DateTimeType mới ()) alertZone4State.state = CLOSED end

Bạn có thể cần thay đổi cấu hình OpenHAB ở trên một chút để phù hợp với thiết lập của riêng bạn.

Nếu bạn gặp bất kỳ vấn đề nào với PIR được kích hoạt thì hãy bắt đầu lại từ đầu và đo điện áp cho từng phần của mạch. Khi bạn hài lòng với điều đó, hãy kiểm tra hệ thống dây điện của bạn, đảm bảo có điểm chung, kiểm tra tin nhắn trên Wemos thông qua bảng điều khiển gỡ lỗi nối tiếp, kiểm tra giao tiếp MQTT và kiểm tra cú pháp của tệp biến đổi, các mục và sơ đồ trang web của bạn.

Chúc may mắn!

Đề xuất: