Πίνακας περιεχομένων:

Crawl Space Monitor (γνωστός και ως No No Frozen Pipes !!): 12 βήματα (με εικόνες)
Crawl Space Monitor (γνωστός και ως No No Frozen Pipes !!): 12 βήματα (με εικόνες)

Βίντεο: Crawl Space Monitor (γνωστός και ως No No Frozen Pipes !!): 12 βήματα (με εικόνες)

Βίντεο: Crawl Space Monitor (γνωστός και ως No No Frozen Pipes !!): 12 βήματα (με εικόνες)
Βίντεο: 30 SCARIEST GHOST Videos of the YEAR 2024, Νοέμβριος
Anonim
Crawl Space Monitor (γνωστός και ως No No Frozen Pipes !!)
Crawl Space Monitor (γνωστός και ως No No Frozen Pipes !!)

Το νερό στο σπίτι μου προέρχεται από το πηγάδι μου μέσα από έναν μη θερμαινόμενο χώρο ανίχνευσης. Όλα τα υδραυλικά της κουζίνας και του μπάνιου διατρέχουν επίσης αυτόν τον χώρο. (Τα υδραυλικά εσωτερικού χώρου ήταν ένα χτύπημα μετά την σκέψη στα μέσα της δεκαετίας του '70 σε αυτό το σπίτι!) Έχω χρησιμοποιήσει λαμπτήρες θερμότητας σε θερμοστατικά βύσματα "δεξαμενής αποθέματος" για να διατηρήσω μια θερμοκρασία πάνω από την κατάψυξη. Υπήρχαν μερικά σημαντικά προβλήματα με αυτήν τη διάταξη: 1 - Χωρίς ορατότητα. Η πρώτη ένδειξη καμένων λαμπτήρων είναι οι παγωμένοι σωλήνες! 2 - Μερικές φορές τα βύσματα δεν κλείνουν. Αυτό προκάλεσε δυσάρεστες εκπλήξεις στον ηλεκτρικό λογαριασμό. 3 - Χωρίς λεπτομέρειες. Κράτησα 3 λάμπες "online" (συνολικά 750 watt) και ήταν μια λύση όλα ή τίποτα. (2 λαμπτήρες δεν θα το χειρίζονταν πάντα.) Αφού γνωρίστηκα με το Arduino και είδα μερικά από τα πράγματα που έκαναν οι άλλοι άνθρωποι με αυτό, αποφάσισα ότι θα του δώσω μια δίνη. Θα παραδεχτώ αμέσως από την αυλάκωση ότι έχω ξεμπερδέψει και τροποποιήσει δείγμα κώδικα από έργα άλλων ανθρώπων για να γίνει αυτό το έργο, αν και τελικά έχω ξαναγράψει τα περισσότερα. Αρχικά, έχτισα αυτόν τον "WiFi Weather Station" που βρήκα Adafruit.com και το τροποποίησε. Αντί να ενημερώσω έναν ιστότοπο, χρησιμοποίησα τις υπηρεσίες Web Amazon για να μου στέλνω ενημερώσεις κατάστασης SMS. Πρόσθεσα επίσης τον έλεγχο μερικών ρελέ 110V (https://www.adafruit.com/products/268). Τότε έγινα «έξυπνος» και αποφάσισα να το «τραχιάσω» - καλά - κάτι βραχυκύκλωσε κάτι και πήρα μια εισπνοή από τον μαγικό μπλε καπνό. Όλα τηγανισμένα… Χωρίς άλλο CC3000 WiFi ξεμπλοκάρισμα, έκανα τα πράγματα διαφορετικά αυτή τη φορά. Το έφτιαξα για να παρακολουθείται διαδραστικά μέσω σειριακής διεπαφής και στη συνέχεια πρόσθεσα μια διεπαφή EZ-Link Bluetooth FTDI. (Όχι άλλο να σέρνω τον φορητό υπολογιστή κάτω από το σπίτι για ενημερώσεις λογισμικού !!!) Δημιούργησα επίσης μια διεπαφή Python που συνδέεται στη μονάδα μέσω Bluetooth, την ερωτά τακτικά και εμφανίζει πληροφορίες κατάστασης στο Mac μου. (Υπάρχει επίσης μια "ανθρώπινη διεπαφή" στην οποία μπορεί να έχει πρόσβαση οποιοδήποτε λογισμικό εξομοίωσης τερματικού.) Ως αποτέλεσμα της επανεγγραφής και κατάργησης όλων των κωδικών WiFi και RTC, το έργο έχει συρρικνωθεί σε μέγεθος από πάνω από 29K σε μόλις 10K. Έχει επίσης βελτιώσει την αξιοπιστία στο βαθμό που ο παρατηρητής υλικού δεν έχει ενεργοποιηθεί καθόλου τις δύο εβδομάδες που τρέχει και έχω τροποποιήσει.

17/2/16 Ενημέρωση/σημείωση: Σε μια προσπάθεια να επιτευχθεί σωστή μορφοποίηση σε ορισμένο από τον κώδικα (ειδικά στην εσοχή του κώδικα Python), τα πράγματα έγιναν από άσχημα σε άχρηστα. Είμαι βέβαιος ότι το θέμα είναι προς το τέλος μου κάπου και θα προσπαθήσω να το καταλάβω. Μέχρι τότε, έχω προσθέσει συνδέσμους στα αρχεία κώδικα μέσω του DropBox. Πρέπει να είναι προσβάσιμα σε οποιονδήποτε. Εάν όχι, ενημερώστε με για να σας τα πάρω με άλλο τρόπο!

Βήμα 1: Προβλήματα προς επίλυση

Το σύστημα έπρεπε να κάνει τα ακόλουθα για μένα: 1 - παρακολούθηση της θερμοκρασίας στο χώρο ανίχνευσης. 2 - ενεργοποίηση λαμπτήρων θερμότητας όπως απαιτείται για να διατηρηθεί η θερμοκρασία πάνω από το πάγωμα. της κατάστασής τους.4 - δώστε μου την ορατότητα της θερμοκρασίας και της κατάστασης του συστήματος, συμπεριλαμβανομένων: - λειτουργεί το σύστημα; - ποια είναι η θερμοκρασία ΤΩΡΑ; - ποιο είναι το πιο κρύο που πήρε η θερμοκρασία; - πόσοι λαμπτήρες έτρεξαν; - πόσοι λαμπτήρες δοκιμάζουν καλά; - ποιος είναι ο συνολικός μου χρόνος σε "λεπτά φωτός" (γνωστός και ως "χρόνος καύσης"); 5 - κάντε όλα τα παραπάνω χωρίς να χρειάζεται να σέρνομαι κάτω από το σπίτι !!! Αποφάσισα ότι ο ευκολότερος τρόπος για να δοκιμάσω τη λειτουργία του λαμπτήρα ήταν με έναν αισθητήρα φωτός. Μερικά άλλα ζητήματα που ήθελα να αντιμετωπίσω ήταν ο χρόνος κύκλου στα φώτα. Πολύ αργό και καίω περιττό ηλεκτρικό ρεύμα. Πολύ γρήγορα και κινδυνεύω να τα κάψω από όλη την ενεργοποίηση και απενεργοποίηση με τη σχετική θέρμανση και ψύξη.

Βήμα 2: Το υλικό

Το Υλικό
Το Υλικό

2 λαμπτήρες θερμότητας 250 watt 1 λαμπτήρας εργασίας 500 watt (ένας από τους λαμπτήρες θερμότητας εξαφανίστηκε, οπότε αυτό είναι stand-in) Arduino UnoDHT22 αισθητήρας θερμοκρασίας/υγρασίας GA1A12S202 αισθητήρας φωτός PowerSwitch 110V ρελέ Bluefruit EZ-Link Serial Interface & Programmer Θήκη υψηλής τεχνολογίας (Rubbermaid σε μέγεθος σάντουιτς) Αδένας καλωδίου 1/2 μεγέθους breadboard Ακρυλικό πιάτο για breadboard και Arduino Συνδυασμένα καλώδια άλτης. Coleman 5-outlet "strip strip" Χρησιμοποίησα επίσης ένα Adafruit Trinket ως παρατηρητή υλικού, αλλά έχει αποδειχθεί ότι δεν είναι απαραίτητο (jinx, φυσικά!) Και εγώ έγραψε ένα ξεχωριστό οδηγό για αυτό, οπότε δεν θα το επαναλάβω εδώ. Το κοτσιδάκι Coleman ήταν ένα ωραίο εύρημα, καθώς μου έδωσε 4 πρίζες για τους λαμπτήρες θερμότητας ΣΥΝ μια έξοδο για την τροφοδοσία Arduino χωρίς επιπλέον διαχωριστές ή πολύπριζα. Βαθμολογημένος σε πλήρη 15 Amps με διακόπτη και εσωτερικό διακόπτη, θα μπορούσε να χειριστεί ό, τι μπορούσα να τραβήξω από μία μόνο πρίζα.

Βήμα 3: Η προσέγγιση

Ενώ το σύστημα είναι κατασκευασμένο από εφαρμογές για να περιμένεις και να κάνεις κάποια πράγματα σχετικά αργά, αυτό που δεν ήθελα να κάνω ήταν να φτιάξω ένα σύστημα όπου ο ελεγκτής καθόταν σε καθυστερημένους κύκλους () που δεν αποκρίνονταν. Wantedθελα επίσης να μπορώ να αλλάξω τις παραμέτρους διαμόρφωσης όσο πιο κοντά μπορούσα-σίγουρα όχι με τρόπο που απαιτούσε επανεγγραφή κώδικα ή μαζικές εργασίες αναζήτησης και αντικατάστασης στην πηγή. βρήκε τα πιο εξαιρετικά άρθρα του Bill Earl με θέμα "Multitasking the Arduino" (ξεκινήστε εδώ: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) και ασχολήθηκε. Με τη δημιουργία τάξεων "χρονοδιακόπτη" και "θερμάστρα" μπόρεσα να κάνω όλες τις λειτουργίες χρονισμού που ήθελα χωρίς καθυστέρηση () (με μερικές εξαιρέσεις) και να διαμορφώσω τους λαμπτήρες ("θερμαντήρες") με μία μόνο γραμμή κωδικού για κάθε ένας.

Βήμα 4: Καλωδίωση

Wiring It Up
Wiring It Up
Wiring It Up
Wiring It Up

Το διάγραμμα Fritzing δεν περιλαμβάνει το Bluefruit EZ-LinkArduino 5V & Ground to the breadboard bus DHT22 pin 1 to 5V bus DHT22 pin 2 to Arduino pin 7DHT22 pin 4 to Ground bus 10K busGA1A12S202 OUT pin to Arduino A0 Arduino 3V pin to Arduino AREF pinRelay Ground lead to Ground busRelay 1 power lead to Arduino A1Relay 2 power to Arduino A2Relay 3 power to Arduino A3Relay 4 power lead to Arduino A4 Το Το μόνο που είναι κρίσιμο είναι ότι το καλώδιο OUT στον αισθητήρα φωτός πρέπει να μεταβεί σε αναλογικό pin. Αυτό το ξεκλείδωμα θα λειτουργήσει με τον κωδικό μου όπως γράφτηκε. Εάν χρησιμοποιείτε τον παρατηρητή υλικού, θα δείτε ότι ο κώδικας μου βάζει τους καρδιακούς παλμούς στο Arduino pin 2.

Βήμα 5: Ο κώδικας Arduino, κύριο σκίτσο

CrawlSpace_monitor.ino

Βήμα 6: Σημειώσεις για τον κώδικα

Οι ακόλουθες γραμμές κώδικα δημιουργούν τα στιγμιότυπα του θερμαντήρα και καθορίζουν τις παραμέτρους λειτουργίας: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minutes), luxDelta) Heater heater1 = Heater (A1, 38, 43, 20, 1440, 5) · Θερμοσίφωνας2 = Θέρμανση (Α2, 36, 41, 20, 1440, 5) · Θερμοσίφωνας3 = Θέρμανση (Α3, 34, 39, 20, 1440, 5) · Θερμοσίφωνας4 = Θέρμανση (A4, 32, 37, 20, 1440, 5); (Και ναι, έθεσα και τους 4 θερμαντήρες παρόλο που τρέχω μόνο 3 αυτήν τη στιγμή. Θα χρειαζόμουν ακόμα να πάρω άλλο ρελέ, αλλά στη συνέχεια προσθέτοντας τον 4ο θερμαντήρα να είναι τόσο απλό όσο το συνδέω.) Κλονίζω τις θερμοκρασίες σκανδάλης τους, ξεκινώντας από τους 38 βαθμούς για το πρώτο και τελειώνοντας με τους 32 για τον ανύπαρκτο 4ο. Ένα από τα πράγματα που διαπίστωσα όταν πρωτοξεκίνησα αυτό το κομμάτι ήταν ότι έπρεπε να δώσω ένα εύρος θερμοκρασίας καθώς και να ορίσω έναν ελάχιστο "χρόνο καύσης", ή έκανα και σβήνω τα φώτα ποδηλασίας σαν τρελός. Εδώ δίνω σε καθένα από αυτά ένα spread 5 μοιρών καθώς και έναν ελάχιστο χρόνο καύσης 20 λεπτών. Ρύθμισα το διάστημα δοκιμής σε 24 ώρες και έθεσα 5 lux ως την ελάχιστη ένδειξη φωτός που χρειαζόμουν για να διαπιστώσω ότι ένας λαμπτήρας εξακολουθεί να λειτουργεί. Σχεδόν όλα όσα χρειάζονται διαμόρφωση βρίσκονται εδώ σε αυτές τις 4 γραμμές κώδικα.

Βήμα 7: Ο κώδικας Arduino, Τάξεις

Δημιούργησα 3 τάξεις για αυτό το έργο. Ταν "χρονόμετρο", "θερμαντήρας" και "συσσωρευτής". Με λίγο περισσότερη σκέψη θα πρέπει να μπορώ να διπλώσω τον συσσωρευτή στο χρονόμετρο, αλλά δεν το έχω κάνει ακόμα. Εδώ είναι πλήρως: θερμαντήρας.h

χρονόμετρο.h

συσσωρευτής.η

Βήμα 8: Παρακολούθηση του συστήματος

Παρακολούθηση του Συστήματος
Παρακολούθηση του Συστήματος

Δημιούργησα μια ενιαία διεπαφή σε δύο ξεχωριστές οθόνες. Είναι μια διαδραστική συνεδρία πάνω από τη σειριακή κονσόλα. Στην περίπτωσή μου χρησιμοποιώ το Bluefruit EZ-Link για να έχω πρόσβαση στο σύστημα χωρίς να σέρνομαι κάτω από το σπίτι ή να προσπαθώ να φιδώσω ένα καλώδιο USB ανάμεσα στις δοκούς δαπέδου! Ένα επιπλέον πλεονέκτημα του EZ-Link είναι ότι μπορώ να ανεβάσω νέο κώδικα προγράμματος στο Arduino μέσω Bluetooth επίσης. Η "ανθρώπινη" διεπαφή μπορεί να έχει πρόσβαση (Bluetooth ή φυσικό καλώδιο) με οποιοδήποτε τερματικό λογισμικό εξομοίωσης, συμπεριλαμβανομένου του σειριακού Arduino IDE οθόνη. Όταν συνδέεστε αρχικά, δεν υπάρχει απάντηση, αλλά το πλήκτρο πιέζει "u" (για "ενημέρωση") και "t" (για "δοκιμή") θα σας δώσει την έξοδο που εμφανίζεται στην εικόνα οθόνης. Το "m" ("monitor") και το "s" ("sys check") σας δίνουν τα ίδια δεδομένα αλλά σε πολύ λιγότερο αναγνώσιμη μορφή. Αυτά προορίζονται να "γδάρουν" από άλλο πρόγραμμα για αυτόματη εμφάνιση. Συγκέντρωσα ένα σενάριο Python που κάνει ακριβώς αυτό. Οποιοδήποτε άλλο κλειδί συγκεντρώνει το μήνυμα σφάλματος που εμφανίζεται. Θα δείτε μια τιμή για "χρόνο καύσης" - σκεφτείτε το σαν "λεπτά λαμπτήρων" - 1 λάμπα για 10 λεπτά = 10 λεπτά, 3 λαμπτήρες για 10 λεπτά = 30 λεπτά.

Βήμα 9: Το σενάριο Python

Το σενάριο Python
Το σενάριο Python

crawlspace_gui.py

Βήμα 10: Ακόμα πρέπει να κάνετε…

Μπορεί να μην είναι όμορφο ή τέλειο, αλλά είναι αποτελεσματικό και αποδεικνύεται αξιόπιστο. ΚΑΙ, δεν είχα κανένα πρόβλημα με παγωμένους σωλήνες ακόμα αυτόν τον χειμώνα !!! Έχω μια λίστα επιτυχημένων πραγμάτων που πρέπει να κάνω. Φυσικά, τώρα που λειτουργεί, ενδέχεται ή όχι να επιτύχω τα περισσότερα από αυτά τα στοιχεία: Λειτουργήστε το Bluetooth σε ένα από τα Raspberry Pi μου, ώστε να μπορώ να δημιουργήσω μια αφιερωμένη οθόνη. Μάθετε περισσότερα Python - στη συνέχεια καθαρίστε το Python διεπαφή. Αυτός ο διαχωρισμός των στοιχείων δεν γίνεται επίτηδες και δεν καταλαβαίνω γιατί υπάρχει. Προσθέστε μια διεπαφή σε κάτι σαν την υπηρεσία IO της Adafruit, ώστε να μπορώ να την παρακολουθώ από οπουδήποτε. Προσθέστε ειδοποίηση μηνύματος κειμένου. Μετακινηθείτε σε μικρότερο χειριστήριο (πιθανώς μετρό Μίνι ή Trinket Pro;), λιγότερο ακριβά ρελέ και καλύτερη συσκευασία. Βγάλτε το από ένα breadboard και τοποθετήστε τον σε έναν πίνακα "Perma Proto". Παράμετροι διαμόρφωσης στο EEPROM. Μια πιο λεπτομερής διεπαφή που θα υποδεικνύει - ποιοι λαμπτήρες είναι καλοί και ενδεχομένως ακόμη και χρόνος καύσης για τους μεμονωμένους λαμπτήρες. Καθώς τα τελειώνω, θα επιστρέψω και θα ενημερώσω αυτό το Instructable.

Βήμα 11: Ενημέρωση 3/16, "μόνιμη" κατασκευή

Ενημέρωση 3/16,
Ενημέρωση 3/16,
Ενημέρωση 3/16,
Ενημέρωση 3/16,
Ενημέρωση 3/16,
Ενημέρωση 3/16,

Κάνοντας ένα καλό διάλειμμα στον κρύο καιρό, έβγαλα τη μονάδα και τη μετέφερα σε ένα μικρότερο χειριστήριο (είχα σκοπό να χρησιμοποιήσω ένα Trinket Pro, αλλά είχα ένα Adafruit Metro Mini καθισμένο χωρίς αξίωση από οποιοδήποτε άλλο έργο), το κόλλησα έναν πίνακα Perma-Proto και βάλτε τα όλα σε μια καλύτερη θήκη. Με βάση το πόσο αξιόπιστο ήταν, δεν ξαναέβαλα το hardware watchdog. Εξακολουθώ να χρησιμοποιώ μόνο 3 λαμπτήρες/ρελέ όπου το σύστημα θα χειριστεί 4. Η μονάδα Bluetooth είναι σε συγκολλημένη κεφαλίδα, οπότε μπορεί να αφαιρεθεί εάν τη χρειάζομαι κάπου αλλού. Δεν χρειάστηκαν αλλαγές κώδικα για να μετακινηθείτε στο νέο ελεγκτή - μια απλή επανασύνταξη και φόρτωση με οδήγησε σε λειτουργία μέσα σε λίγα λεπτά. (Το Metro Mini έχει το ίδιο pinout με το Arduino Uno και είναι επίσης επεξεργαστής ATMega328.)

Βήμα 12: Ενημέρωση 12/1/2018 - Καλώς ορίσατε στο IoT

Το σύστημα λειτούργησε άψογα για εμάς. Μετά από δύο μάλλον σκληρούς χειμώνες, ΟΧΙ παγωμένοι σωλήνες. Στην πραγματικότητα, το σύστημα ήταν σε θέση να διατηρήσει τους σωλήνες χωρίς να κάψει ποτέ περισσότερους από 2 λαμπτήρες. Η κατοχή του 3ου λαμπτήρα στο διαδίκτυο ήταν ωραία ασφάλιση, αλλά δεν το χρειαζόμασταν ποτέ μέχρι σήμερα.

Ερχόμενος στο έτος 3 για το σύστημα, η μονάδα Bluetooth απέτυχε. Κατασκευάσαμε επίσης ένα νέο σπίτι, οπότε το σύστημα παρακολούθησης βρίσκεται πολύ έξω από το εύρος Bluetooth. (Το παλιό σπίτι μένει για λίγο, αλλά όχι για πάντα.) Στο διάστημα που μεσολάβησε, έκανα πολλά με τον επεξεργαστή ESP8266 WiFi. τόσο σε μορφή Adafruit Feather όσο και σε μορφή ανοιχτού κώδικα "NodeMCU". Το NodeMCU μπορεί γενικά να βρεθεί στο Amazon για περίπου $ 5 - πολύ λιγότερο αν αγοράζετε μαζικά και/ή από κάποιον σαν το AliExpress.

Αυτή η νέα έκδοση διατηρεί τη σειριακή διεπαφή, επομένως θα μπορούσε να χρησιμοποιηθεί με μονάδα Bluetooth ή άμεση σειριακή σύνδεση USB και το προηγούμενο σενάριο python, ωστόσο, η νέα έκδοση διαθέτει διεπαφή ιστοσελίδας. Όπως γράφτηκε, περιλαμβάνει την ακόλουθη δυνατότητα:

Ένας διαχειριστής δικτύου WiFi για την εξάλειψη των διαπιστευτηρίων WiFi με σκληρή κωδικοποίηση.

Η δυνατότητα ενημέρωσης του υλικολογισμικού μέσω αέρα μέσω του Arduino IDE (εφόσον βρίσκεστε στο ίδιο δίκτυο WiFi-σημειώστε ότι μετά τη μεταφόρτωση USB στη συσκευή, απαιτείται επαναφορά πριν λειτουργήσουν οι ενημερώσεις OTA). ΠΑΡΑΚΑΛΩ αλλάξτε τον κωδικό OTA στη γραμμή 6 για να είναι μοναδικός για εσάς !!

Μια ιστοσελίδα που εμφανίζει τα ίδια δεδομένα που κάνει το σενάριο python, με αυτόματη ανανέωση κάθε λεπτό. Δεν έβαλα κανένα είδος ασφάλειας στη σελίδα, επειδή είναι μόνο για προβολή.

Μπορείτε να βρείτε τον νέο κωδικό εδώ. Σημειώστε ότι τα ονόματα των καρφιτσών αλλάζουν κατά τη μετακίνηση στο NodeMCU.

Συνιστάται: