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

Πρόγραμμα καταγραφής κατάστασης πόρτας και θερμοκρασίας: 21 βήματα
Πρόγραμμα καταγραφής κατάστασης πόρτας και θερμοκρασίας: 21 βήματα

Βίντεο: Πρόγραμμα καταγραφής κατάστασης πόρτας και θερμοκρασίας: 21 βήματα

Βίντεο: Πρόγραμμα καταγραφής κατάστασης πόρτας και θερμοκρασίας: 21 βήματα
Βίντεο: Πρόγραμμα καταγραφής περιστατικών ρατσιστικής βίας - Racist Violence Recording Programme 2024, Ιούλιος
Anonim
Έργο καταγραφής πόρτας και θερμοκρασίας κατάστασης
Έργο καταγραφής πόρτας και θερμοκρασίας κατάστασης

Αυτό το Instructable θα σας δείξει πώς να φτιάξετε έναν απλό καταγραφέα κατάστασης πόρτας και θερμοκρασίας για κάτω από 10,00 $ χρησιμοποιώντας έναν ESP8266 NodeMCU, έναν αισθητήρα θερμοκρασίας και υγρασίας DHT11, έναν διακόπτη καλαμιών πόρτας/παραθύρου, μια αντίσταση 10K ohm και κάποιο καλώδιο σύνδεσης.

Η γένεση αυτού του έργου προήλθε από την επιθυμία μου να κάνω περισσότερους αυτοματισμούς στο σπίτι με τον πίνακα Arduino, δεδομένου ότι διάβαζα πολλά για το συμβατό με Arduino EPS8266 NodeMCU, αποφάσισα ότι αυτός ο πίνακας θα ήταν ο τέλειος πίνακας χαμηλού κόστους για να πειραματιστώ. Αφού έψαξα στο Διαδίκτυο για έργα οικιακού αυτοματισμού χρησιμοποιώντας τους πίνακες ESP8266, αποφάσισα να συνδυάσω ένα καταγραφικό θερμοκρασίας και κατάστασης πόρτας για την πρώτη μου προσπάθεια. Τελικά αυτό το έργο θα συνδυαστεί με servos, αισθητήρες υγρασίας και άλλα ηλεκτρονικά για να αυτοματοποιήσει ένα μικρό θερμοκήπιο που σχεδίασε και έφτιαξε ο παππούς μου πριν από 50 χρόνια. Ο αισθητήρας θερμοκρασίας θα χρησιμοποιηθεί για να καθοριστεί εάν το σύστημα θέρμανσης πρέπει να ενεργοποιηθεί ή να απενεργοποιηθεί, καθώς και να δώσει σήμα στους σερβομηχανισμούς να ανοίγουν και να κλείνουν το σύστημα εξαερισμού όταν χρειάζεται. Η κατάσταση του συστήματος εξαερισμού θα παρακολουθείται με τη χρήση των μαγνητικών διακοπτών καλαμιού. Τέλος, οι αισθητήρες υγρασίας θα χρησιμοποιηθούν για την αυτοματοποίηση ενός συστήματος ποτίσματος.

Βήμα 1: Αποποίηση ευθυνών

Απλώς μια γρήγορη αποποίηση ευθυνών για να δηλώσουμε ότι ΔΕΝ αναλαμβάνουμε καμία ευθύνη για οτιδήποτε συμβεί ως αποτέλεσμα της παρακολούθησης αυτού του οδηγού. Είναι πάντα καλύτερο να ακολουθείτε τις οδηγίες του κατασκευαστή και τα φύλλα ασφαλείας όταν κατασκευάζετε οτιδήποτε, οπότε συμβουλευτείτε αυτά τα έγγραφα για οποιοδήποτε από τα μέρη και τα εργαλεία που χρησιμοποιείτε για να φτιάξετε τα δικά σας. Απλώς παρέχουμε πληροφορίες για τα βήματα που χρησιμοποιήσαμε για τη δημιουργία των δικών μας. Δεν είμαστε επαγγελματίες. Στην πραγματικότητα, 2 στα 3 από τα άτομα που συμμετείχαν σε αυτήν την κατασκευή είναι παιδιά.

Βήμα 2: Ρύθμιση δωρεάν λογαριασμού IFTTT

Ρύθμιση δωρεάν λογαριασμού IFTTT
Ρύθμιση δωρεάν λογαριασμού IFTTT

Εάν δεν έχετε ήδη, τώρα είναι η ώρα να δημιουργήσετε έναν δωρεάν λογαριασμό IFTTT πηγαίνοντας στην αρχική τους σελίδα. σας επιτρέπουν να αξιοποιήσετε αυτές τις υπηρεσίες με νέους τρόπους. Για αυτό το έργο θα χρησιμοποιήσουμε το IFTTT για να επιτρέψουμε σε ένα ESP8266 να καταγράψει την κατάσταση μιας πόρτας μέσω ενός διακόπτη καλαμιών και της θερμοκρασίας και της υγρασίας μέσω του αισθητήρα DHT11 σε ένα έγγραφο Φύλλα Google.

Βήμα 3: Δημιουργήστε μια μικροεφαρμογή IFTTT

Δημιουργήστε μια μικροεφαρμογή IFTTT
Δημιουργήστε μια μικροεφαρμογή IFTTT

Ενώ εξακολουθείτε να βρίσκεστε στο IFTTT, προχωρήστε στην ενότητα "Οι εφαρμογές μου" και δημιουργήστε μια νέα μικροεφαρμογή κάνοντας κλικ στο κουμπί "Νέα εφαρμογή".

Βήμα 4: Διαμορφώστε το "αυτό" τμήμα του Applet σας

Διαμορφώστε το
Διαμορφώστε το

Κάντε κλικ στη λέξη "αυτό" που είναι σε μπλε χρώμα - όπως επισημαίνεται στο παραπάνω σχήμα.

Βήμα 5: Προσθέστε την υπηρεσία WebHooks στο Applet σας

Προσθέστε την υπηρεσία WebHooks στο Applet σας
Προσθέστε την υπηρεσία WebHooks στο Applet σας

Στη γραμμή αναζήτησης, αναζητήστε την υπηρεσία "Webhooks" και επιλέξτε το εικονίδιο Webhooks.

Μόλις βρείτε την υπηρεσία "Webhooks", κάντε κλικ σε αυτήν.

Βήμα 6: Ρυθμίστε την Ενεργοποίηση λήψης αιτήματος ιστού

Ρυθμίστε την Ενεργοποίηση λήψης αιτήματος ιστού
Ρυθμίστε την Ενεργοποίηση λήψης αιτήματος ιστού

Επιλέξτε τη σκανδάλη "Λήψη αιτήματος ιστού".

Βήμα 7: Παρέχετε ένα όνομα συμβάντος

Δώστε ένα όνομα συμβάντος
Δώστε ένα όνομα συμβάντος

Στο πλαίσιο κειμένου, δώστε στη νέα σας μικροεφαρμογή ένα όνομα συμβάντος. Επέλεξα το "Data Logger" αλλά μπορείτε να επιλέξετε ό, τι σας αρέσει.

Βήμα 8: Διαμορφώστε το τμήμα "that" του Applet σας

Διαμορφώστε το
Διαμορφώστε το

Κάντε κλικ στη λέξη "αυτό" που είναι σε μπλε χρώμα - όπως επισημαίνεται στο παραπάνω σχήμα.

Βήμα 9: Ρύθμιση υπηρεσίας δράσης

Ρύθμιση υπηρεσίας δράσης
Ρύθμιση υπηρεσίας δράσης

Στο πλαίσιο αναζήτησης, αναζητήστε την υπηρεσία "Φύλλα Google" και κάντε κλικ στο εικονίδιο Φύλλα Google.

Βήμα 10: Συνδεθείτε στα Υπολογιστικά φύλλα Google

Συνδεθείτε στα Υπολογιστικά φύλλα Google
Συνδεθείτε στα Υπολογιστικά φύλλα Google

Εάν δεν το έχετε κάνει ήδη, δεν θα χρειαστεί να συνδέσετε τον λογαριασμό σας IFTTT στα Υπολογιστικά φύλλα Google. Πατήστε το κουμπί Σύνδεση που εμφανίζεται παραπάνω και ακολουθήστε τις οδηγίες στην οθόνη.

Βήμα 11: Επιλέξτε μια ενέργεια

Επιλέξτε μια ενέργεια
Επιλέξτε μια ενέργεια

Κάντε κλικ στο "Προσθήκη γραμμής σε υπολογιστικό φύλλο".

Βήμα 12: Ρυθμίστε τη δράση

Ρυθμίστε τη δράση
Ρυθμίστε τη δράση

Καταχωρίστε ένα όνομα στο πλαίσιο κειμένου "Όνομα υπολογιστικού φύλλου". Επιλέγω να χρησιμοποιήσω το "Data_Logger" για συνέπεια. Αφήστε την υπόλοιπη ρύθμιση ήσυχη (μπορείτε να πειραματιστείτε με αυτές τις ρυθμίσεις κάποια άλλη στιγμή) και, στη συνέχεια, πατήστε το κουμπί "Δημιουργία ενέργειας" στο κάτω μέρος της οθόνης.

Βήμα 13: Ελέγξτε και ολοκληρώστε το Applet σας

Ελέγξτε και Οριστικοποιήστε το Applet σας
Ελέγξτε και Οριστικοποιήστε το Applet σας

Μόλις είστε ικανοποιημένοι με τη διαμόρφωση της μικροεφαρμογής σας, πατήστε το κουμπί "Τέλος".

Βήμα 14: Ανάκτηση πληροφοριών διαμόρφωσης που απαιτούνται αργότερα

Ανάκτηση πληροφοριών διαμόρφωσης που απαιτούνται αργότερα
Ανάκτηση πληροφοριών διαμόρφωσης που απαιτούνται αργότερα

Κάντε κλικ στο "Webhooks" όπως επισημάνθηκε παραπάνω.

Βήμα 15: Προχωρήστε στην τεκμηρίωση Webhooks για το κλειδί API

Προχωρήστε στην τεκμηρίωση Webhooks για το κλειδί API
Προχωρήστε στην τεκμηρίωση Webhooks για το κλειδί API

Μπορεί να φαίνεται περίεργο, αλλά κάντε κλικ στο σύνδεσμο Τεκμηρίωση στην επάνω δεξιά γωνία για να προχωρήσετε στη σελίδα με το μοναδικό σας κλειδί API.

Βήμα 16: Αποθηκεύστε το κλειδί API

Αποθηκεύστε το κλειδί API
Αποθηκεύστε το κλειδί API
Αποθηκεύστε το κλειδί API
Αποθηκεύστε το κλειδί API

Η πρώτη γραμμή της οθόνης τεκμηρίωσης εμφανίζει το μοναδικό σας κλειδί API. Αντιγράψτε και αποθηκεύστε αυτό το κλειδί για χρήση αργότερα.

Είναι επίσης καλή ιδέα να δοκιμάσετε το applet εδώ. Θυμηθείτε να αλλάξετε το {event} σε Data_Logger ή οτιδήποτε ονομάσατε στο συμβάν σας και προσθέστε ορισμένα δεδομένα στις 3 κενές τιμές και, στη συνέχεια, κάντε κλικ στο κουμπί "Test It" στο κάτω μέρος της σελίδας. Θα πρέπει να δείτε ένα πράσινο μήνυμα που λέει "Το συμβάν ενεργοποιήθηκε". Εάν ναι, προχωρήστε στα Έγγραφα Google και επιβεβαιώστε ότι τα δεδομένα που εισαγάγατε στη δοκιμαστική σελίδα εμφανίστηκαν στο έγγραφο των Φύλλων Google.

Βήμα 17: Συγκεντρώστε τα εξαρτήματα

Συγκεντρώστε τα εξαρτήματα
Συγκεντρώστε τα εξαρτήματα
Συγκεντρώστε τα εξαρτήματα
Συγκεντρώστε τα εξαρτήματα
Συγκεντρώστε τα εξαρτήματα
Συγκεντρώστε τα εξαρτήματα

Θα χρειαστείτε μόνο μερικά μέρη.

1) ESP8266 NodeMcu Development Board

2) Αισθητήρας θερμοκρασίας/υγρασίας DHT11

3) Διακόπτης καλαμιών πόρτας/παραθύρου

4) Αντίσταση 10k Ohm

5) Καλώδιο σύνδεσης

Βήμα 18: Συναρμολογήστε τα εξαρτήματα

1) Συνδέστε έναν από τους ακροδέκτες 3v3 στο ESP8266 με τον πείρο vcc στο DHT11.

2) Συνδέστε έναν από τους πείρους γείωσης στο ESP8266 με τον πείρο γείωσης στο DHT11.

3) Συνδέστε τον πείρο D4 (γνωστός και ως τον πείρο 2 στο IDE) στο ESP8266 με τον ακροδέκτη δεδομένων στο DHT11.

4) Συνδέστε έναν άλλο πείρο 3v3 στο ESP8266 στη μία πλευρά του διακόπτη καλαμιών πόρτας/παραθύρου.

5) Συνδέστε τον πείρο D5 (γνωστός και ως τον πείρο 14 στο IDE) στο ESP8266 στην άλλη πλευρά του διακόπτη καλαμιών πόρτας/παραθύρου και επίσης συνδέστε τον στη μία πλευρά της αντίστασης 10k ohm.

6) Συνδέστε την άλλη πλευρά της αντίστασης 10k ohm σε έναν άλλο πείρο γείωσης στο ESP8266.

Για τις επιλογές καρφιτσών ESP8266, ανατρέξτε σε αυτό το χρήσιμο διάγραμμα ή στο πολύ χρήσιμο βίντεο.

Βήμα 19: Γράψτε τον κώδικα Arduino

Γράψτε τον κώδικα Arduino
Γράψτε τον κώδικα Arduino

Αντιγράψτε και επικολλήστε τον παρακάτω κωδικό στο Arduino IDE.

#include #include #include "DHT.h"

#define DHTPIN 2 // σε ποιο ψηφιακό pin είμαστε συνδεδεμένοι

#define DOORPIN 14 // σε ποιο ψηφιακό pin είναι ο διακόπτης της πόρτας.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char* ssid = "some_ssid"; // αλλάξτε αυτό για να χρησιμοποιήσετε το ssid const char* password = "some_password"; // αλλάξτε αυτό για να χρησιμοποιήσετε τον κωδικό πρόσβασής σας int sleepTime = 100;

// Maker Webhooks IFTTT

const char* server = "maker.ifttt.com";

// πόρος URL IFTTT

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Βεβαιωθείτε ότι χρησιμοποιείτε το όνομα της υπηρεσίας σας και το κλειδί api.

String doorStatus = "Κλειστό";

πτητική κατάσταση boolChanged = false;

// Εάν κοιμάστε για ώρες, τότε ορίστε το διάστημα κατά ώρα * 60 λεπτά * 60 δευτερόλεπτα * 1000 χιλιοστά του δευτερολέπτου

const μεγάλο διάστημα = 1.0 * 60 * 60 * 1000. // 1 ώρα χωρίς υπογραφή πολύ προηγούμενοMillis = 0 - (2 * διάστημα);

void setup () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Αισθητήρας πόρτας dht.begin (); WiFi.begin (ssid, κωδικός πρόσβασης);

Serial.print ("\ nΣύνδεση..");

while (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = true; Serial.println ("Έλεγχος της πόρτας!"); if (digitalRead (DOORPIN) == HIGH) // Ελέγξτε αν η πόρτα είναι ανοιχτή {Serial.println ("Η πόρτα είναι κλειστή!"); doorStatus = "Κλειστό"; } else {Serial.println ("Η πόρτα είναι ανοιχτή!"); doorStatus = "Άνοιξε"; }}

void checkStatus () {

εάν (WiFi.status () == WL_CONNECTED) {// Ελέγξτε την κατάσταση σύνδεσης WiFi // Η θερμοκρασία ή η υγρασία ανάγνωσης διαρκεί περίπου 250 χιλιοστά του δευτερολέπτου! // Οι ενδείξεις αισθητήρων μπορεί επίσης να είναι παλιές έως 2 δευτερόλεπτα (είναι πολύ αργός αισθητήρας) float h = dht.readHumidity (); // Διαβάστε τη θερμοκρασία ως Κελσίου (η προεπιλογή) επιπλέει t = dht.readTemperature (); // Διαβάστε τη θερμοκρασία ως Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Ελέγξτε αν απέτυχε η ανάγνωση και βγείτε νωρίς (για να προσπαθήσετε ξανά). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Η ανάγνωση απέτυχε από τον αισθητήρα DHT!"); //Serial.print ("."); // Η ανάγνωση από τον αισθητήρα DHT απέτυχε! ΕΠΙΣΤΡΟΦΗ; } // Υπολογίστε τον δείκτη θερμότητας σε Φαρενάιτ (το προεπιλεγμένο) float hif = dht.computeHeatIndex (f, h); // Υπολογισμός του δείκτη θερμότητας σε Κελσίου (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Θερμοκρασία:"); Serial.print (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Δείκτης θερμότητας:"); Serial.print (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Υγρασία:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Ελέγξτε αν η πόρτα είναι ανοιχτή

{Serial.println ("Η πόρτα είναι κλειστή!"); doorStatus = "Κλειστό"; } else {Serial.println ("Η πόρτα είναι ανοιχτή!"); doorStatus = "Άνοιξε"; } String jsonObject = String ("{" value1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (διακομιστής); http.addHeader ("Τύπος περιεχομένου", "εφαρμογή/json"); http. POST (jsonObject); http.writeToStream (& Σειριακό); http.end (); // Κλείσιμο σύνδεσης

stateChanged = false?

int sleepTimeInMinutes = διάστημα / 1000 /60; Serial.print ("\ n / nΠήγαινε για ύπνο για"); Serial.print (sleepTimeInMinutes); Serial.println ("λεπτό (α) …"); }}

void loop () {

ανυπόγραφο μακρύ ρεύμαMillis = millis (); καθυστέρηση (4000)? // Εάν έχουμε υπερβεί τον χρόνο που έχει παρέλθει, τότε επιβάλλετε έλεγχο της πόρτας και της θερμοκρασίας. if (currentMillis - previousMillis> = διάστημα) {stateChanged = true; previousMillis = currentMillis; Serial.print (count ++); Serial.println (") Έλεγχος λόγω του χρόνου που έχει παρέλθει!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Έλεγχος λόγω αλλαγής κατάστασης!"); }

// Εάν η κατάσταση άλλαξε, ελέγξτε την πόρτα και τη θερμοκρασία.

if (stateChanged) {checkStatus (); }

καθυστέρηση (χρόνος ύπνου)

}

Βήμα 20: Αποτελέσματα

Αποτελέσματα
Αποτελέσματα

Μόλις ανεβάσετε τον πηγαίο κώδικα στο προηγούμενο βήμα, θα πρέπει να έχετε αποτελέσματα όπως το παραπάνω παράδειγμα.

Βήμα 21: Μονάδες

Βρήκα πολλές χρήσιμες συμβουλές και συμβουλές από τα Random Nerd Tutorials και θα ήθελα να τους ευχαριστήσω για όλη τη βοήθειά τους. Ειδικά το εξαιρετικό σεμινάριο για το ESP32 ESP8266 Publish Sensor Readings στα Φύλλα Google σε ποια βασικά τμήματα αυτού του Instructable βασίζονται.

Επιπλέον, το DHT11 Instructable από το TheCircuit με βοήθησε να καταλάβω πώς να χρησιμοποιήσω αυτόν τον πολύ φθηνό αλλά ενδιαφέροντα μικρό αισθητήρα.

Επιπλέον, υπάρχουν πολλά σεμινάρια που ασχολούνται με την παρακολούθηση των θυρών σας, όπως το Garage Door Monitor και ένα άλλο από τα Random Nerd Tutorials. Χρησιμοποίησα κομμάτια από αυτά για να με βοηθήσουν να καταλάβω πώς να κάνω τον διακόπτη καλαμιού μου να λειτουργεί σωστά.

Τέλος, με αυτές τις πληροφορίες καθώς και άλλες λεπτομέρειες που βρήκα στο Διαδίκτυο μπόρεσα να δημιουργήσω ένα σύστημα που ικανοποιούσε τις ανάγκες μου. Ελπίζω να βρείτε αυτό το Instructable χρήσιμο και να δημιουργήσετε ένα δικό σας.

Συνιστάται: