Mục lục:

Crawl Space Monitor (hay còn gọi là: No More Frozen Pipes !!): 12 bước (có hình ảnh)
Crawl Space Monitor (hay còn gọi là: No More Frozen Pipes !!): 12 bước (có hình ảnh)

Video: Crawl Space Monitor (hay còn gọi là: No More Frozen Pipes !!): 12 bước (có hình ảnh)

Video: Crawl Space Monitor (hay còn gọi là: No More Frozen Pipes !!): 12 bước (có hình ảnh)
Video: [Review Phim] Ở Tù 10 Năm Với IQ 300 | Review Phim Hàn Hay 2024, Tháng mười một
Anonim
Crawl Space Monitor (hay còn gọi là: No More Frozen Pipes !!)
Crawl Space Monitor (hay còn gọi là: No More Frozen Pipes !!)

Nước đến nhà tôi từ giếng của tôi thông qua một khoảng trống không được sưởi ấm. Tất cả hệ thống ống nước của nhà bếp và phòng tắm cũng chạy qua không gian này. (Hệ thống ống nước trong nhà là một sự cố mới xảy ra vào giữa những năm 70 trên ngôi nhà này!) Tôi đã sử dụng đèn nhiệt trên phích cắm ổn nhiệt của "bể chứa" để duy trì nhiệt độ trên mức đóng băng. Có một vài vấn đề đáng kể với sự sắp xếp này: 1 - Không có khả năng hiển thị. Dấu hiệu đầu tiên của bóng đèn bị cháy là đường ống bị đóng băng! 2 - Đôi khi phích cắm không ngắt. Điều đó đã tạo ra những bất ngờ khó chịu đến với hóa đơn điện.3 - Không chi tiết. Tôi giữ 3 bóng đèn "trực tuyến" (tổng cộng 750 watt) và đó là một giải pháp tất cả hoặc không có gì. (Không phải lúc nào 2 bóng đèn cũng xử lý được.) Sau khi được giới thiệu về Arduino và nhìn thấy một số công việc mà những người khác đang làm với nó, tôi quyết định sẽ quay lại với nó. Tôi sẽ thừa nhận ngay lập tức rằng tôi đã không biết xấu hổ và chỉnh sửa mã mẫu từ các dự án của người khác để làm cho nó hoạt động, mặc dù cuối cùng tôi đã viết lại hầu hết mọi thứ. Adafruit.com và sửa đổi nó. Thay vì cập nhật một trang web, tôi đã sử dụng Amazon Web Services để gửi cho tôi các cập nhật trạng thái qua SMS. Tôi cũng đã thêm điều khiển một số rơ le 110V (https://www.adafruit.com/products/268). Sau đó, tôi trở nên "thông minh" và quyết định "xử lý" nó - à - một thứ gì đó đã làm thiếu một thứ gì đó và tôi nhận được một làn khói xanh kỳ diệu. Mọi thứ đã được xào nấu… Không gặp phải sự cố đột phá WiFi CC3000 khác, lần này tôi đã làm mọi thứ khác đi. Tôi đã xây dựng nó để được giám sát tương tác thông qua giao diện nối tiếp và sau đó thêm giao diện EZ-Link Bluetooth FTDI. (Không còn phải kéo máy tính xách tay dưới nhà để cập nhật phần mềm !!!) Tôi cũng đã xây dựng một giao diện Python kết nối với thiết bị qua Bluetooth, truy vấn nó thường xuyên và hiển thị thông tin trạng thái trên máy Mac của tôi. (Ngoài ra còn có một "giao diện con người" có thể được truy cập bằng bất kỳ phần mềm mô phỏng đầu cuối nào.) Do việc viết lại và xóa tất cả mã WiFi và RTC, dự án đã giảm kích thước từ hơn 29K xuống chỉ còn 10K. Nó cũng đã được cải thiện độ tin cậy đến mức mà cơ quan giám sát phần cứng không hề kích hoạt trong vài tuần nó đang chạy và tôi đã điều chỉnh.

2/17/16 Cập nhật / lưu ý: Trong một nỗ lực để có được định dạng thích hợp trên một số mã (đặc biệt là thụt lề của mã Python), mọi thứ đã từ xấu đến không sử dụng được. Tôi chắc chắn rằng vấn đề đang ở đâu đó của tôi và tôi sẽ cố gắng tìm ra nó. Cho đến lúc đó, tôi đã thêm liên kết vào các tệp mã thông qua DropBox. Bất cứ ai cũng có thể truy cập chúng. Nếu không, vui lòng cho tôi biết để tôi có thể đưa chúng đến với bạn theo cách khác!

Bước 1: Các vấn đề cần giải quyết

Hệ thống cần thiết để thực hiện những việc sau đối với tôi: 1 - theo dõi nhiệt độ trong không gian thu thập thông tin.2 - bật đèn nhiệt khi cần thiết để duy trì nhiệt độ trên mức đóng băng.3 - khi không hoạt động, hãy kiểm tra định kỳ các bóng đèn và cung cấp cho tôi khả năng hiển thị 4 - cung cấp cho tôi khả năng hiển thị về nhiệt độ và trạng thái hệ thống, bao gồm: - hệ thống có đang chạy không? - nhiệt độ BÂY GIỜ là bao nhiêu? - nhiệt độ lạnh nhất là bao nhiêu? - có bao nhiêu bóng đèn chạy? - có bao nhiêu bóng đèn kiểm tra tốt? - tổng thời gian tính theo "phút sáng" (còn gọi là "thời gian đốt cháy") của tôi là bao nhiêu? 5 - thực hiện tất cả những điều trên mà tôi không cần phải chui xuống nhà !!! Tôi quyết định rằng cách dễ nhất để kiểm tra hoạt động của bóng đèn là Một số vấn đề khác mà tôi muốn giải quyết là thời gian chu kỳ trên đèn. Quá chậm, và tôi đang đốt điện không cần thiết. Quá nhanh và tôi có nguy cơ làm cháy chúng từ tất cả các lần bật và tắt cùng với việc làm nóng và làm mát liên quan.

Bước 2: Phần cứng

Phần cứng
Phần cứng

2 đèn nhiệt 250 watt 1 đèn làm việc 500 watt (một trong những đèn nhiệt của tôi đã biến mất, vì vậy đây là một giá đỡ) Arduino UnoDHT22 Cảm biến nhiệt độ / độ ẩm Cảm biến ánh sángGA1A12S202PowerSwitch 110V rơ le) Tuyến cáp 1/2 kích thước breadboardAcrylic tấm cho breadboard và ArduinoDây nhảy được phân loại. Coleman 5-ổ cắm "dải xưởng" Tôi cũng đã sử dụng Adafruit Trinket làm cơ quan giám sát phần cứng, nhưng nó đã được chứng minh là không cần thiết (tất nhiên là jinx!) Và tôi đã viết một hướng dẫn riêng về nó nên tôi sẽ không lặp lại điều đó ở đây. Bím tóc Coleman là một phát hiện tuyệt vời, vì nó cung cấp cho tôi 4 ổ cắm cho đèn sưởi của tôi CỘNG một ổ cắm cho bộ nguồn Arduino mà không cần bất kỳ bộ chia hoặc dải nguồn bổ sung nào liên quan. Được đánh giá ở mức 15 A đầy đủ với một công tắc và một cầu dao bên trong, nó có thể xử lý mọi thứ tôi có thể kéo qua một ổ cắm duy nhất.

Bước 3: Phương pháp tiếp cận

Trong khi hệ thống là ứng dụng được xây dựng để ngồi chờ và thực hiện một số việc tương đối chậm, điều tôi không muốn làm là xây dựng một hệ thống mà bộ điều khiển đang ngồi trong các chu kỳ delay () không phản hồi. Tôi cũng muốn có thể thay đổi các thông số cấu hình càng gần càng tốt - chắc chắn không phải theo cách yêu cầu viết lại mã hoặc thực hiện các hoạt động tìm kiếm và thay thế hàng loạt trên nguồn. đã tìm thấy các bài báo xuất sắc nhất của Bill Earl về "Đa nhiệm trong Arduino" (bắt đầu tại đây: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) và rất bận rộn. Bằng cách tạo các lớp "bộ hẹn giờ" và "bộ sưởi", tôi có thể thực hiện tất cả các chức năng định thời mà tôi muốn mà không sử dụng độ trễ () (chỉ với một số ngoại lệ) và định cấu hình các bóng đèn ("bộ sưởi") với một dòng mã duy nhất cho mỗi một.

Bước 4: Nối dây

Nối dây
Nối dây
Nối dây
Nối dây

Sơ đồ Fritzing không bao gồm Bluefruit EZ-LinkArduino 5V & Ground tới bus của breadboardDHT22 chân 1 đến 5V busDHT22 chân 2 đến chân Arduino chân 7DHT22 chân 4 đến Ground bus10K giữa chân DHT22 1 và 2GA1A12S202 chân VCC đến chân 5V busGA1A12S202 GND để nối đất busGA1A12S202 chân OUT tới chân Arduino A0Arduino 3V đến chân Arduino AREF Chân cắm nối đất dẫn đến thanh nối đất Đường dây nguồn 1 dẫn đến nguồn Arduino A1Relay 2 dẫn đến nguồn Arduino A2Relay 3 dẫn nguồn đến Arduino A3Relay 4 dẫn nguồn đến Arduino A4 Hầu hết các kết nối này có thể được sắp xếp lại theo ý muốn của bạn. Điều quan trọng duy nhất là dây dẫn OUT trên cảm biến ánh sáng cần phải đi đến chân analog. Ghim này sẽ hoạt động với mã của tôi như được viết. Nếu bạn đang sử dụng cơ quan giám sát phần cứng, bạn sẽ thấy mã của tôi đặt nhịp tim trên chân 2 của Arduino.

Bước 5: Mã Arduino, Bản phác thảo chính

CrawlSpace_monitor.ino

Bước 6: Ghi chú về mã

Các dòng mã sau đây tạo các phiên bản của lò sưởi và xác định các thông số hoạt động: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (phút), luxDelta) Lò sưởi1 = Heater (A1, 38, 43, 20, 1440, 5); Máy sưởi 2 = Máy sưởi (A2, 36, 41, 20, 1440, 5); Máy sưởi 3 = Máy sưởi (A3, 34, 39, 20, 1440, 5); Máy sưởi 4 = Máy sưởi (A4, 32, 37, 20, 1440, 5); (Và vâng, tôi đã xác định tất cả 4 lò sưởi mặc dù hiện tại tôi chỉ chạy 3 cái. Tôi vẫn cần phải lấy một rơ le khác, nhưng sau đó thêm lò sưởi thứ 4 sẽ đơn giản như cắm nó vào.) Tôi điều chỉnh nhiệt độ kích hoạt của chúng, bắt đầu ở 38 độ cho lần đầu tiên và kết thúc ở 32 cho lần thứ 4 không tồn tại. Một trong những điều tôi nhận thấy khi lần đầu tiên bắt đầu đúc kết điều này là tôi cần đưa ra một phạm vi nhiệt độ cũng như xác định "thời gian đốt cháy" tối thiểu, hoặc tôi đã bật và tắt đèn xe đạp như điên. Ở đây tôi cung cấp cho mỗi người trong số họ một độ lây lan 5 độ cũng như thời gian đốt cháy tối thiểu 20 phút. Tôi đặt khoảng thời gian thử nghiệm là 24 giờ và đặt 5 lux làm chỉ số ánh sáng tối thiểu mà tôi cần để xác định bóng đèn vẫn hoạt động. Khá nhiều thứ cần cấu hình nằm ngay trong 4 dòng mã này.

Bước 7: Mã Arduino, các lớp

Tôi đã tạo 3 lớp cho dự án này. Đó là "bộ đếm thời gian", "máy sưởi" và "bộ tích lũy". Suy nghĩ thêm một chút nữa là tôi có thể gấp bộ tích lũy thành bộ đếm thời gian, nhưng tôi vẫn chưa làm được. Ở đây họ có đầy đủ: hot.h

timer.h

ắc quy.h

Bước 8: Giám sát hệ thống

Giám sát hệ thống
Giám sát hệ thống

Tôi đã tạo một giao diện duy nhất cho hai màn hình riêng biệt. Nó là một phiên tương tác trên bảng điều khiển nối tiếp. Trong trường hợp của tôi, tôi đang sử dụng Bluefruit EZ-Link để có thể truy cập hệ thống mà không cần chui xuống nhà hoặc cố gắng luồn dây cáp USB vào giữa các thanh nối sàn! Một lợi ích bổ sung của EZ-Link là tôi cũng có thể tải mã chương trình mới lên Arduino qua Bluetooth. màn hình. Khi bạn kết nối ban đầu, không có phản hồi, nhưng các phím nhấn "u" (để "cập nhật") và "t" (cho "kiểm tra") sẽ cho bạn kết quả hiển thị trong ảnh chụp màn hình. "m" ("monitor") và "s" ("sys check") giúp bạn có cùng một dữ liệu nhưng ở định dạng khó đọc hơn nhiều. Chúng được dự định sẽ được "cạo" bởi một chương trình khác để hiển thị tự động. Tôi đã tập hợp một tập lệnh Python để thực hiện điều đó. Bất kỳ phím nào khác cũng hiển thị thông báo lỗi. Bạn sẽ thấy một giá trị cho "thời gian cháy" - hãy nghĩ về giá trị này như "phút bóng đèn" - 1 bóng đèn trong 10 phút = 10 phút, 3 bóng đèn trong 10 phút = 30 phút.

Bước 9: Tập lệnh Python

Tập lệnh Python
Tập lệnh Python

crawlspace_gui.py

Bước 10: Vẫn phải làm…

Nó có thể không đẹp, hoặc hoàn hảo, nhưng nó hiệu quả và chứng tỏ bản thân đáng tin cậy. VÀ, tôi chưa gặp bất kỳ vấn đề nào về đường ống bị đóng băng trong mùa đông này !!! Tôi có một danh sách những việc cần làm. Tất nhiên, bây giờ nó đã hoạt động, tôi có thể có hoặc không bao giờ hoàn thành hầu hết các mục sau: Lấy Bluetooth chạy trên một trong những Raspberry Pi của tôi để tôi có thể tạo một màn hình chuyên dụng. Tìm hiểu thêm một số Python - sau đó dọn dẹp Python giao diện. Việc tách các phần tử đó không có mục đích và tôi không hiểu tại sao nó lại ở đó. Mini hay Trinket Pro?), Rơ le rẻ hơn và đóng gói tốt hơn. Lấy nó ra khỏi breadboard và lên bảng "Perma Proto". thậm chí có thể đốt cháy thời gian cho các bóng đèn riêng lẻ.

Bước 11: Cập nhật 3/16, bản dựng "vĩnh viễn"

Cập nhật 3/16,
Cập nhật 3/16,
Cập nhật 3/16,
Cập nhật 3/16,
Cập nhật 3/16,
Cập nhật 3/16,

Nghỉ ngơi tốt trong thời tiết lạnh giá, tôi đã lấy thiết bị và chuyển nó sang một bộ điều khiển nhỏ hơn (tôi đã định sử dụng Trinket Pro, nhưng có một Adafruit Metro Mini đang ngồi xung quanh không được thừa nhận bởi bất kỳ dự án nào khác), hàn nó lên một bảng Perma-Proto, và đặt tất cả vào một trường hợp tốt hơn. Dựa trên mức độ đáng tin cậy của nó, tôi đã không đặt cơ quan giám sát phần cứng trở lại nó. Tôi vẫn chỉ sử dụng 3 đèn / rơ le trong đó hệ thống sẽ xử lý 4. Mô-đun Bluetooth nằm trên một tiêu đề hàn, vì vậy có thể được tháo ra nếu tôi cần nó ở một nơi khác. Không có thay đổi mã nào cần thiết để chuyển sang bộ điều khiển mới - một biên dịch và tải đơn giản đã giúp tôi thiết lập và chạy trong vài phút. (Metro Mini có sơ đồ chân giống hệt Arduino Uno và cũng là bộ xử lý ATMega328.)

Bước 12: Cập nhật 12/1/2018 - Chào mừng bạn đến với IoT

Hệ thống đã hoạt động hoàn hảo cho chúng tôi. Sau hai mùa đông khá khắc nghiệt, KHÔNG có đường ống bị đóng băng. Trên thực tế, hệ thống đã có thể duy trì các đường ống mà không bao giờ đốt quá 2 bóng đèn. Có bóng đèn thứ 3 trực tuyến là một bảo hiểm tốt, nhưng chúng tôi chưa bao giờ cần nó cho đến nay.

Sắp bước sang năm thứ 3 cho hệ thống, mô-đun Bluetooth không thành công. Chúng tôi cũng đã xây dựng một ngôi nhà mới, vì vậy hệ thống giám sát nằm ngoài phạm vi của Bluetooth. (Ngôi nhà cũ ở lại một thời gian, nhưng không phải là mãi mãi.) Trong thời gian can thiệp, tôi đã làm rất nhiều với bộ xử lý hỗ trợ WiFi ESP8266; cả ở định dạng Adafruit Feather và ở định dạng "NodeMCU" nguồn mở. NodeMCU thường có thể được tìm thấy trên Amazon với giá khoảng $ 5 - ít hơn nhiều nếu bạn mua số lượng lớn và / hoặc từ một người nào đó như AliExpress.

Phiên bản mới này vẫn duy trì giao diện nối tiếp, vì vậy nó vẫn có thể được sử dụng với mô-đun Bluetooth hoặc kết nối nối tiếp USB trực tiếp và tập lệnh python trước đó, tuy nhiên, phiên bản mới có giao diện trang web. Như đã viết, nó bao gồm các tính năng sau:

Trình quản lý mạng WiFi để loại bỏ thông tin xác thực WiFi mã hóa cứng.

Khả năng cập nhật chương trình cơ sở qua mạng bằng Arduino IDE (miễn là bạn đang sử dụng cùng một mạng WiFi - lưu ý rằng sau khi tải USB lên thiết bị, cần phải đặt lại trước khi cập nhật OTA hoạt động). HÃY thay đổi mật khẩu OTA ở dòng 6 là duy nhất cho bạn !!

Một trang web hiển thị dữ liệu giống như tập lệnh python, với tính năng tự động làm mới mỗi phút. Tôi đã không đặt bất kỳ loại bảo mật nào trên trang, vì nó chỉ hiển thị.

Bạn có thể tìm thấy mã mới ở đây. Lưu ý rằng tên pin thay đổi khi chuyển sang NodeMCU.

Đề xuất: