Mục lục:

NexArdu: Điều khiển thông minh chiếu sáng: 5 bước
NexArdu: Điều khiển thông minh chiếu sáng: 5 bước

Video: NexArdu: Điều khiển thông minh chiếu sáng: 5 bước

Video: NexArdu: Điều khiển thông minh chiếu sáng: 5 bước
Video: Dụng cụ dán phim nexgard 2024, Tháng bảy
Anonim
NexArdu: Điều khiển thông minh chiếu sáng
NexArdu: Điều khiển thông minh chiếu sáng

Cập nhật

Nếu đã phát triển chức năng tương tự bằng Home Assistant. Home Assistant cung cấp nhiều khả năng. Bạn có thể tìm thấy sự phát triển ở đây.

Bản phác thảo để điều khiển hệ thống chiếu sáng trong nhà theo cách thông minh thông qua các thiết bị giống X10 không dây 433,92MHz (hay còn gọi là 433MHz), ví dụ: Nexa.

Tiểu sử

Khi nói đến hệ thống chiếu sáng trang trí, tôi cảm thấy mệt mỏi bằng cách nào đó cứ vào tuần thứ hai hoặc thứ ba, tôi phải điều chỉnh lại bộ hẹn giờ bật đèn do sự dịch chuyển của giờ mặt trời so với CET. một số đêm chúng tôi đi ngủ sớm hơn những đêm khác. Do đó, đôi khi đèn tắt "quá muộn" hoặc "quá sớm". Những điều trên đã thách thức tôi suy nghĩ: Tôi muốn đèn trang trí luôn bật ở cùng mức ánh sáng xung quanh và sau đó tắt vào một thời điểm nhất định tùy thuộc vào việc chúng ta có thức hay không.

Mục tiêu

Có thể hướng dẫn này khai thác khả năng của các thiết bị được điều khiển không dây như System Nexa hoạt động trên tần số 433,92MHz. Ở đây chúng tôi xin giới thiệu:

  1. Điều khiển chiếu sáng tự động
  2. Kiểm soát web

Kiểm soát web. Máy chủ web bên trong so với bên ngoài

Máy chủ Nội bộ khai thác khả năng của lá chắn Ethernet Arduino để cung cấp một máy chủ web. Máy chủ web sẽ tham dự các cuộc gọi máy khách web để kiểm tra và tương tác với Arduino. Đây là một giải pháp chuyển tiếp với chức năng hạn chế; Khả năng nâng cao mã máy chủ web bị giới hạn bởi bộ nhớ của Arduino. Máy chủ bên ngoài yêu cầu thiết lập một máy chủ web PHP bên ngoài. Thiết lập này phức tạp hơn và không được hướng dẫn này hỗ trợ, tuy nhiên, mã PHP / trang để kiểm tra và điều khiển Arduino được cung cấp chức năng cơ bản. Trong trường hợp này, khả năng nâng cao máy chủ web bị giới hạn bởi máy chủ web bên ngoài.

Hóa đơn nguyên vật liệu

Để tận dụng hết khả năng mà bản phác thảo này mang lại, bạn cần:

  1. Arduino Uno (được thử nghiệm trên R3)
  2. Lá chắn Arduino Ethernet
  3. Một bộ Nexa hoặc tương tự hoạt động ở 433,92MHz
  4. Một cảm biến PIR (Hồng ngoại thụ động) hoạt động ở 433,92MHz
  5. Điện trở 10KOhms
  6. Một LDR
  7. A RTC DS3231 (chỉ phiên bản máy chủ bên ngoài)
  8. Máy phát 433,92MHz: XY-FST
  9. Bộ thu 433,92MHz: MX-JS-05V

Mức tối thiểu được khuyến nghị là:

  1. Arduino Uno (được thử nghiệm trên R3)
  2. Một bộ Nexa hoặc tương tự hoạt động ở 433,92MHz
  3. Điện trở 10KOhms
  4. Một LDR
  5. Máy phát 433,92MHz: XY-FST

(Việc bỏ sót lá chắn Ethernet yêu cầu sửa đổi bản phác thảo không được cung cấp trong hướng dẫn này)

Logic Nexa. Một mô tả ngắn gọn

Bộ thu Nexa học ID điều khiển từ xa và ID nút. Nói cách khác, mọi điều khiển từ xa đều có số người gửi và mỗi cặp nút bật / tắt đều có ID nút của nó. Người nhận phải học những mã đó. Một số tài liệu Nexa nói rằng một bộ thu có thể được ghép nối với tối đa sáu điều khiển từ xa. Các thông số Nexa:

  • SenderID: ID của điều khiển từ xa
  • ButtonID: số cặp nút (bật / tắt). Nó bắt đầu bằng số 0
  • Nhóm: có / không (còn gọi là nút "Tất cả tắt / bật")
  • Lệnh: bật / tắt

Các bước có thể hướng dẫn. Ghi chú

Các Bước khác nhau được mô tả ở đây là cung cấp hai hương vị khác nhau về cách đạt được mục tiêu. Hãy thoải mái để chọn một trong những thuận tiện của bạn. Đây là chỉ số:

Bước # 1: Mạch

Bước # 2: Nexardu với Máy chủ Web Nội bộ (có NTP)

Bước # 3: Nexardu với Máy chủ Bên ngoài

Bước # 4: Thông tin có giá trị

Bước 1: Mạch…

Mạch…
Mạch…

Đi dây linh kiện đa dạng như trong hình.

Chân Arduino # 8 đến Chân dữ liệu trên mô-đun RX (bộ thu) Chânuino số 2 đến Chân dữ liệu trên mô-đun RX (bộ thu) Chânuino # 7 đến Chân dữ liệu trên mô-đun TX (người gửi) Chân A0 đến LDR

Cấu hình RTC. Chỉ cần thiết trên cấu hình Máy chủ Bên ngoài. Chân Arduino A4 đến chân SDA trên mô-đun RTC Chânuino A5 đến chân SCL trên mô-đun RTC

Bước 2: Nexardu Với Máy chủ Web Nội bộ (có NTP)

Các thư viện

Mã này sử dụng rất nhiều thư viện. Hầu hết chúng có thể được tìm thấy thông qua "Trình quản lý Thư viện" của Arduino IDE. Nếu bạn không tìm thấy một thư viện được liệt kê, vui lòng google.

Wire.hSPI.h - Yêu cầu bởi Ethernet ShieldNexaCtrl.h - Bộ điều khiển thiết bị Nexa Ethernet.h - Để bật và tính năng Ethernet ShieldRCSwitch.h - Bắt buộc đối với PIRTime.h - Bắt buộc đối với RTCTimeAlarms.h - Quản lý cảnh báo thời gianEthernetUdp.h - Bắt buộc đối với Khách hàng NTP

Bản phác thảo

Đoạn mã dưới đây khai thác khả năng sử dụng bảng Arduino UNO không chỉ làm phương tiện để điều khiển các thiết bị Nexa mà nó còn có một máy chủ Web nội bộ. Một lưu ý cần thêm là mô-đun RTC (Đồng hồ thời gian thực) được tự động điều chỉnh thông qua NTP (Giao thức thời gian mạng).

Trước khi tải mã lên Arduino, bạn có thể cần phải định cấu hình những điều sau:

  • SenderId: trước tiên bạn cần kiểm tra SenderId, xem bên dưới
  • PIR_id: trước tiên bạn cần kiểm tra SenderId, xem bên dưới
  • Địa chỉ IP LAN: đặt IP của mạng LAN thành lá chắn Ethernet Arduino của bạn. Giá trị mặc định: 192.168.1.99
  • Máy chủ NTP: Không hoàn toàn cần thiết nhưng có thể google để tìm các máy chủ NTP ở gần bạn. Giá trị mặc định: 79.136.86.176
  • Mã được điều chỉnh cho múi giờ CET. Điều chỉnh giá trị này - nếu cần, theo múi giờ của bạn để hiển thị thời gian chính xác (NTP)

Đánh hơi các mã Nexa

Đối với điều này, bạn cần phải nối dây ít nhất, thành phần RX vào Arduino như được hiển thị trong mạch.

Tìm bên dưới bản phác thảo Nexa_OK_3_RX.ino mà tại thời điểm viết, bản phác thảo này tương thích với các thiết bị Nexa NEYCT-705 và PET-910.

Các bước cần làm là:

  1. Ghép nối bộ thu Nexa với điều khiển từ xa.
  2. Tải Nexa_OK_3_RX.ino vào Arduino và mở "Serial Monitor".
  3. Nhấn nút điều khiển từ xa để điều khiển bộ thu Nexa.
  4. Lưu ý về "RemoteID" và "ButtonID".
  5. Đặt các số này trong SenderID và ButtonID trên khai báo biến của bản phác thảo trước.

Để đọc Id của PIR, chỉ cần sử dụng cùng bản phác thảo này (Nexa_OK_3_RX.ino) và đọc giá trị trên "Serial Monitor" khi PIR phát hiện chuyển động.

Bước 3: Nexardu với máy chủ bên ngoài

Các thư viện

Mã này sử dụng rất nhiều thư viện. Hầu hết chúng có thể được tìm thấy thông qua "Trình quản lý Thư viện" của Arduino IDE. Nếu bạn không tìm thấy một thư viện được liệt kê, vui lòng google.

Wire.hRTClib.h - đây là thư viện từ https://github.com/MrAlvin/RTClibSPI.h - Yêu cầu bởi Ethernet ShieldNexaCtrl.h - Nexa device controllerEthernet.h - Để bật và tính năng Ethernet ShieldRCSwitch.h - Bắt buộc đối với PIRTime.h - Bắt buộc đối với RTCTimeAlarms.h - Quản lý cảnh báo thời gianaREST.h - đối với các dịch vụ API RESTful được khai thác bởi phục vụ bên ngoài / wdt.h - Xử lý bộ đếm thời gian của cơ quan giám sát

Bản phác thảo

Bản phác thảo bên dưới có một hương vị khác của điều tương tự, lần này nâng cao khả năng mà một máy chủ web bên ngoài có thể cung cấp. Như đã đề cập trong phần giới thiệu, Máy chủ Bên ngoài yêu cầu thiết lập một máy chủ web PHP bên ngoài. Thiết lập này phức tạp hơn và không được hướng dẫn này hỗ trợ, tuy nhiên, mã PHP / trang để kiểm tra và điều khiển Arduino được cung cấp chức năng cơ bản.

Trước khi tải mã lên Arduino, bạn có thể cần phải định cấu hình những điều sau:

  • SenderId: trước tiên bạn cần đánh giá SenderId, xem phần Xem nhanh mã Nexa ở bước trước
  • PIR_id: trước tiên bạn cần phải xem SenderId, hãy xem phần Xem xét mã Nexa ở bước trước
  • Địa chỉ IP LAN: đặt IP của mạng LAN thành lá chắn Ethernet Arduino của bạn. Giá trị mặc định: 192.168.1.99

Đối với quy trình dò tìm mã Nexa, vui lòng tham khảo Bước # 1.

Hồ sơ bổ sung

Tải tệp nexardu4.txt đính kèm lên máy chủ PHP bên ngoài của bạn và đổi tên thành nexardu4.php

Thời gian RTC đặt

Để đặt ngày / giờ trên RTC, tôi sử dụng SetTime phác thảo đi kèm với thư viện DS1307RTC.

Bước 4: Thông tin có giá trị

Thông tin có giá trị
Thông tin có giá trị
Thông tin có giá trị
Thông tin có giá trị

Tốt để biết hành vi

  1. Khi Arduino ở trong "Điều khiển tự động ánh sáng", nó có thể đi qua bốn trạng thái khác nhau liên quan đến ánh sáng xung quanh và thời gian trong ngày:

    1. Tỉnh táo: Arduino đợi đêm đến.
    2. Hoạt động: Đêm đã đến và Arduino đã BẬT đèn.
    3. Somnolent: Đèn BẬT nhưng sắp đến lúc tắt. Nó bắt đầu ở "time_to_turn_off - PIR_time", nghĩa là, nếu time_to_turn_off được đặt thành 22:30 và PIR_time được đặt thành 20 phút, thì Arduino sẽ chuyển sang trạng thái ngâm vào lúc 22:10.
    4. Dormant: Màn đêm trôi qua, Arduino đã TẮT đèn và Arduino chờ bình minh thức dậy.
  2. Arduino luôn lắng nghe các tín hiệu được gửi bởi điều khiển từ xa. Tính năng này có khả năng hiển thị trạng thái của đèn (bật / tắt) trên web khi sử dụng điều khiển từ xa.
  3. Trong khi Arduino tỉnh táo, nó cố gắng TẮT đèn mọi lúc, do đó, các tín hiệu BẬT được gửi bởi một điều khiển remonte để bật đèn có thể bị Arduino ghi lại. Nếu điều này xảy ra, Arduino sẽ cố gắng tắt đèn một lần nữa.
  4. Trong khi Arduino đang hoạt động, nó cố gắng BẬT đèn mọi lúc, do đó, các tín hiệu TẮT được gửi bởi điều khiển từ xa để tắt đèn có thể bị Arduino ghi lại. Nếu điều này xảy ra, Arduino sẽ cố gắng bật lại đèn.
  5. Ở trạng thái yên tĩnh, đèn có thể được bật / tắt bằng điều khiển từ xa. Arduino sẽ không phản tác dụng.
  6. Ở trạng thái êm dịu, bộ đếm ngược PIR sẽ bắt đầu gửi lại từ "time_to_turn_off - PIR_time" và do đó time_to_turn_off sẽ được kéo dài thêm 20 phút mỗi khi PIR phát hiện chuyển động. "Đã phát hiện tín hiệu PIR!" thông báo sẽ được hiển thị trên trình duyệt web khi điều này xảy ra.
  7. Trong khi Arduino không hoạt động, đèn có thể được bật và tắt thông qua điều khiển từ xa. Arduino sẽ không phản tác dụng.
  8. Một chu trình lặp lại hoặc nguồn của Arduino sẽ đưa nó về chế độ hoạt động. Điều này có nghĩa là nếu Arduino đã được đặt lại sau time_turn_off thì Arduino sẽ bật đèn. Để tránh điều này, Arduino cần được đưa vào chế độ thủ công (đánh dấu vào "Điều khiển tự động ánh sáng") và đợi cho đến sáng để đưa nó trở lại "Điều khiển tự động ánh sáng".
  9. Như đã nói ở trên, Arduino đợi bình minh để hoạt động trở lại. Do đó, hệ thống có thể bị đánh lừa khi hướng ánh sáng đủ mạnh về phía cảm biến ánh sáng vượt qua ngưỡng "độ sáng tối thiểu". Nếu điều này xảy ra, thì Arduino sẽ chuyển sang trạng thái hoạt động.
  10. Giá trị Dung sai có tầm quan trọng cao để tránh hệ thống bật và tắt xung quanh giá trị ngưỡng Độ sáng tối thiểu. Đèn Led, do nhấp nháy và khả năng phản hồi cao, có thể là nguồn gốc của hành vi vỗ. Tăng giá trị dung sai nếu bạn gặp sự cố này. Tôi sử dụng giá trị 7.

Tốt để biết về mã

  1. Như bạn có thể nhận thấy, mã rất lớn và sử dụng một lượng lớn thư viện. Điều này làm ảnh hưởng đến dung lượng bộ nhớ trống cần thiết cho heap. Tôi đã nhận thấy hành vi không ổn định trong quá khứ khi hệ thống bị tạm dừng, đặc biệt là sau các cuộc gọi web. Do đó, thách thức lớn nhất mà tôi gặp phải là giới hạn kích thước của nó và việc sử dụng các biến đa dạng để làm cho hệ thống ổn định.
  2. Mã khai thác máy chủ nội bộ do tôi sử dụng ở nhà, đã chạy miễn phí kể từ tháng 2 năm 2016.
  3. Tôi đã nỗ lực đáng kể để làm phong phú mã bằng những lời giải thích. Hãy tận dụng điều này để chơi với các thông số đa dạng như số lần gửi mã Nexa trên mỗi cụm, thời gian đồng bộ hóa NTP, v.v.
  4. Mã này không có tính năng tiết kiệm ánh sáng ban ngày. Điều này cần được điều chỉnh thông qua trình duyệt web khi nó được áp dụng.

Một số điểm cần xem xét

  1. Thêm antenas vào mô-đun tần số vô tuyến TX và RX (RF). Nó sẽ giúp bạn tiết kiệm thời gian phàn nàn về hai điểm chính: khả năng phục hồi và phạm vi của tín hiệu RF. Tôi sử dụng dây 50Ohms dài 17,28cm (6,80in).
  2. Chẳng hạn, intructable này có thể hoạt động với các hệ thống tự động hóa gia đình khác như Proove. Một trong nhiều điều kiện cần đáp ứng là chúng phải hoạt động trên tần số 433,92MHz.
  3. Một vấn đề đau đầu với Arduino là đối phó với các thư viện có thể được cập nhật theo thời gian và đột nhiên không tương thích trở lại với bản phác thảo "cũ" của bạn; vấn đề tương tự có thể xảy ra khi nâng cấp Arduino IDE của bạn. Hãy coi chừng rằng đây có thể là trường hợp của chúng ta ở đây - vâng, vấn đề của tôi cũng vậy.
  4. Nhiều ứng dụng khách web đồng thời với các chế độ ánh sáng khác nhau tạo ra trạng thái "nhấp nháy".

Ảnh chụp màn hình

Trong băng chuyền hình ảnh ở trên, bạn tìm thấy ảnh chụp màn hình của trang web được hiển thị khi bạn gọi Arduino qua trình duyệt web của mình. Với cấu hình IP mặc định của mã, URL sẽ là

Một khía cạnh có thể được cải thiện là vị trí của nút "gửi" vì nó có hiệu lực trên tất cả các hộp nhập chứ không chỉ trên "Điều khiển tự động ánh sáng" như người ta vẫn nghĩ. Nói cách khác, nếu bạn muốn thay đổi bất kỳ giá trị nào có thể, bạn luôn cần nhấn nút "gửi".

Tài liệu chi tiết / nâng cao

Tôi đã đính kèm các tệp sau để chúng có thể giúp bạn hiểu toàn bộ giải pháp, đặc biệt để khắc phục sự cố và cải tiến.

Arduino_NexaControl_IS.pdf cung cấp tài liệu về giải pháp Máy chủ nội bộ.

Arduino_NexaControl_ES.pdf cung cấp tài liệu về giải pháp Máy chủ Bên ngoài.

Tài liệu tham khảo bên ngoài

Hệ thống Nexa (tiếng Thụy Điển)

Bước 5: Đã hoàn thành

Hoàn thành!
Hoàn thành!

Ở đó bạn đã hoàn thành tất cả và đang hoạt động!

Vỏ Arduino Uno có thể được tìm thấy trong Thingiverse với tên gọi "Arduino Uno Rev3 với Ethernet Shield XL-case".

Đề xuất: