Πίνακας περιεχομένων:
- Βήμα 1: Αποποίηση ευθυνών
- Βήμα 2: Ρύθμιση δωρεάν λογαριασμού IFTTT
- Βήμα 3: Δημιουργήστε μια μικροεφαρμογή IFTTT
- Βήμα 4: Διαμορφώστε το "αυτό" τμήμα του Applet σας
- Βήμα 5: Προσθέστε την υπηρεσία WebHooks στο Applet σας
- Βήμα 6: Ρυθμίστε την Ενεργοποίηση λήψης αιτήματος ιστού
- Βήμα 7: Παρέχετε ένα όνομα συμβάντος
- Βήμα 8: Διαμορφώστε το τμήμα "that" του Applet σας
- Βήμα 9: Ρύθμιση υπηρεσίας δράσης
- Βήμα 10: Συνδεθείτε στα Υπολογιστικά φύλλα Google
- Βήμα 11: Επιλέξτε μια ενέργεια
- Βήμα 12: Ρυθμίστε τη δράση
- Βήμα 13: Ελέγξτε και ολοκληρώστε το Applet σας
- Βήμα 14: Ανάκτηση πληροφοριών διαμόρφωσης που απαιτούνται αργότερα
- Βήμα 15: Προχωρήστε στην τεκμηρίωση Webhooks για το κλειδί API
- Βήμα 16: Αποθηκεύστε το κλειδί API
- Βήμα 17: Συγκεντρώστε τα εξαρτήματα
- Βήμα 18: Συναρμολογήστε τα εξαρτήματα
- Βήμα 19: Γράψτε τον κώδικα Arduino
- Βήμα 20: Αποτελέσματα
- Βήμα 21: Μονάδες
Βίντεο: Πρόγραμμα καταγραφής κατάστασης πόρτας και θερμοκρασίας: 21 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Αυτό το Instructable θα σας δείξει πώς να φτιάξετε έναν απλό καταγραφέα κατάστασης πόρτας και θερμοκρασίας για κάτω από 10,00 $ χρησιμοποιώντας έναν ESP8266 NodeMCU, έναν αισθητήρα θερμοκρασίας και υγρασίας DHT11, έναν διακόπτη καλαμιών πόρτας/παραθύρου, μια αντίσταση 10K ohm και κάποιο καλώδιο σύνδεσης.
Η γένεση αυτού του έργου προήλθε από την επιθυμία μου να κάνω περισσότερους αυτοματισμούς στο σπίτι με τον πίνακα Arduino, δεδομένου ότι διάβαζα πολλά για το συμβατό με Arduino EPS8266 NodeMCU, αποφάσισα ότι αυτός ο πίνακας θα ήταν ο τέλειος πίνακας χαμηλού κόστους για να πειραματιστώ. Αφού έψαξα στο Διαδίκτυο για έργα οικιακού αυτοματισμού χρησιμοποιώντας τους πίνακες ESP8266, αποφάσισα να συνδυάσω ένα καταγραφικό θερμοκρασίας και κατάστασης πόρτας για την πρώτη μου προσπάθεια. Τελικά αυτό το έργο θα συνδυαστεί με servos, αισθητήρες υγρασίας και άλλα ηλεκτρονικά για να αυτοματοποιήσει ένα μικρό θερμοκήπιο που σχεδίασε και έφτιαξε ο παππούς μου πριν από 50 χρόνια. Ο αισθητήρας θερμοκρασίας θα χρησιμοποιηθεί για να καθοριστεί εάν το σύστημα θέρμανσης πρέπει να ενεργοποιηθεί ή να απενεργοποιηθεί, καθώς και να δώσει σήμα στους σερβομηχανισμούς να ανοίγουν και να κλείνουν το σύστημα εξαερισμού όταν χρειάζεται. Η κατάσταση του συστήματος εξαερισμού θα παρακολουθείται με τη χρήση των μαγνητικών διακοπτών καλαμιού. Τέλος, οι αισθητήρες υγρασίας θα χρησιμοποιηθούν για την αυτοματοποίηση ενός συστήματος ποτίσματος.
Βήμα 1: Αποποίηση ευθυνών
Απλώς μια γρήγορη αποποίηση ευθυνών για να δηλώσουμε ότι ΔΕΝ αναλαμβάνουμε καμία ευθύνη για οτιδήποτε συμβεί ως αποτέλεσμα της παρακολούθησης αυτού του οδηγού. Είναι πάντα καλύτερο να ακολουθείτε τις οδηγίες του κατασκευαστή και τα φύλλα ασφαλείας όταν κατασκευάζετε οτιδήποτε, οπότε συμβουλευτείτε αυτά τα έγγραφα για οποιοδήποτε από τα μέρη και τα εργαλεία που χρησιμοποιείτε για να φτιάξετε τα δικά σας. Απλώς παρέχουμε πληροφορίες για τα βήματα που χρησιμοποιήσαμε για τη δημιουργία των δικών μας. Δεν είμαστε επαγγελματίες. Στην πραγματικότητα, 2 στα 3 από τα άτομα που συμμετείχαν σε αυτήν την κατασκευή είναι παιδιά.
Βήμα 2: Ρύθμιση δωρεάν λογαριασμού IFTTT
Εάν δεν έχετε ήδη, τώρα είναι η ώρα να δημιουργήσετε έναν δωρεάν λογαριασμό IFTTT πηγαίνοντας στην αρχική τους σελίδα. σας επιτρέπουν να αξιοποιήσετε αυτές τις υπηρεσίες με νέους τρόπους. Για αυτό το έργο θα χρησιμοποιήσουμε το IFTTT για να επιτρέψουμε σε ένα ESP8266 να καταγράψει την κατάσταση μιας πόρτας μέσω ενός διακόπτη καλαμιών και της θερμοκρασίας και της υγρασίας μέσω του αισθητήρα DHT11 σε ένα έγγραφο Φύλλα Google.
Βήμα 3: Δημιουργήστε μια μικροεφαρμογή IFTTT
Ενώ εξακολουθείτε να βρίσκεστε στο IFTTT, προχωρήστε στην ενότητα "Οι εφαρμογές μου" και δημιουργήστε μια νέα μικροεφαρμογή κάνοντας κλικ στο κουμπί "Νέα εφαρμογή".
Βήμα 4: Διαμορφώστε το "αυτό" τμήμα του Applet σας
Κάντε κλικ στη λέξη "αυτό" που είναι σε μπλε χρώμα - όπως επισημαίνεται στο παραπάνω σχήμα.
Βήμα 5: Προσθέστε την υπηρεσία WebHooks στο Applet σας
Στη γραμμή αναζήτησης, αναζητήστε την υπηρεσία "Webhooks" και επιλέξτε το εικονίδιο Webhooks.
Μόλις βρείτε την υπηρεσία "Webhooks", κάντε κλικ σε αυτήν.
Βήμα 6: Ρυθμίστε την Ενεργοποίηση λήψης αιτήματος ιστού
Επιλέξτε τη σκανδάλη "Λήψη αιτήματος ιστού".
Βήμα 7: Παρέχετε ένα όνομα συμβάντος
Στο πλαίσιο κειμένου, δώστε στη νέα σας μικροεφαρμογή ένα όνομα συμβάντος. Επέλεξα το "Data Logger" αλλά μπορείτε να επιλέξετε ό, τι σας αρέσει.
Βήμα 8: Διαμορφώστε το τμήμα "that" του Applet σας
Κάντε κλικ στη λέξη "αυτό" που είναι σε μπλε χρώμα - όπως επισημαίνεται στο παραπάνω σχήμα.
Βήμα 9: Ρύθμιση υπηρεσίας δράσης
Στο πλαίσιο αναζήτησης, αναζητήστε την υπηρεσία "Φύλλα Google" και κάντε κλικ στο εικονίδιο Φύλλα Google.
Βήμα 10: Συνδεθείτε στα Υπολογιστικά φύλλα Google
Εάν δεν το έχετε κάνει ήδη, δεν θα χρειαστεί να συνδέσετε τον λογαριασμό σας IFTTT στα Υπολογιστικά φύλλα Google. Πατήστε το κουμπί Σύνδεση που εμφανίζεται παραπάνω και ακολουθήστε τις οδηγίες στην οθόνη.
Βήμα 11: Επιλέξτε μια ενέργεια
Κάντε κλικ στο "Προσθήκη γραμμής σε υπολογιστικό φύλλο".
Βήμα 12: Ρυθμίστε τη δράση
Καταχωρίστε ένα όνομα στο πλαίσιο κειμένου "Όνομα υπολογιστικού φύλλου". Επιλέγω να χρησιμοποιήσω το "Data_Logger" για συνέπεια. Αφήστε την υπόλοιπη ρύθμιση ήσυχη (μπορείτε να πειραματιστείτε με αυτές τις ρυθμίσεις κάποια άλλη στιγμή) και, στη συνέχεια, πατήστε το κουμπί "Δημιουργία ενέργειας" στο κάτω μέρος της οθόνης.
Βήμα 13: Ελέγξτε και ολοκληρώστε το Applet σας
Μόλις είστε ικανοποιημένοι με τη διαμόρφωση της μικροεφαρμογής σας, πατήστε το κουμπί "Τέλος".
Βήμα 14: Ανάκτηση πληροφοριών διαμόρφωσης που απαιτούνται αργότερα
Κάντε κλικ στο "Webhooks" όπως επισημάνθηκε παραπάνω.
Βήμα 15: Προχωρήστε στην τεκμηρίωση Webhooks για το κλειδί API
Μπορεί να φαίνεται περίεργο, αλλά κάντε κλικ στο σύνδεσμο Τεκμηρίωση στην επάνω δεξιά γωνία για να προχωρήσετε στη σελίδα με το μοναδικό σας κλειδί API.
Βήμα 16: Αποθηκεύστε το κλειδί 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 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 χρήσιμο και να δημιουργήσετε ένα δικό σας.
Συνιστάται:
ESP8266 Παρακολούθηση θερμοκρασίας Nodemcu χρησιμοποιώντας DHT11 σε τοπικό διακομιστή ιστοσελίδων - Λάβετε θερμοκρασία δωματίου και υγρασία στο πρόγραμμα περιήγησής σας: 6 βήματα
ESP8266 Παρακολούθηση θερμοκρασίας Nodemcu χρησιμοποιώντας DHT11 σε τοπικό διακομιστή ιστοσελίδων | Λάβετε θερμοκρασία δωματίου και υγρασία στο πρόγραμμα περιήγησής σας: Γεια σας παιδιά σήμερα θα κάνουμε υγρασία & σύστημα παρακολούθησης θερμοκρασίας χρησιμοποιώντας ESP 8266 NODEMCU & Αισθητήρας θερμοκρασίας DHT11. Η θερμοκρασία και η υγρασία θα ληφθούν από τον αισθητήρα DHT11 & μπορεί να δει σε ένα πρόγραμμα περιήγησης ποια ιστοσελίδα θα διαχειριστεί
ESP8266 NodeMCU Access Point (AP) για διακομιστή Web με αισθητήρα θερμοκρασίας DT11 και θερμοκρασία εκτύπωσης και υγρασία στο πρόγραμμα περιήγησης: 5 βήματα
ESP8266 NodeMCU Access Point (AP) για διακομιστή Ιστού με αισθητήρα θερμοκρασίας DT11 και θερμοκρασία εκτύπωσης και υγρασία στο πρόγραμμα περιήγησης: Γεια σας παιδιά στα περισσότερα έργα χρησιμοποιούμε το ESP8266 και στα περισσότερα έργα χρησιμοποιούμε το ESP8266 ως διακομιστή ιστού, ώστε να μπορείτε να έχετε πρόσβαση στα δεδομένα οποιαδήποτε συσκευή μέσω wifi με πρόσβαση στον διακομιστή ιστοσελίδων που φιλοξενείται από το ESP8266, αλλά το μόνο πρόβλημα είναι ότι χρειαζόμαστε έναν δρομολογητή εργασίας για
Πίεση κουδουνιού πόρτας και αισθητήρας θερμοκρασίας: 6 βήματα
Αισθητήρας ώθησης και θερμοκρασίας πόρτας: Αυτό ενισχύει ένα τυπικό κουδούνι σκληρής ενσύρματης πόρτας με μονάδα esp-12F (esp8266). Εγκαθίσταται στην ίδια τη μονάδα καμπάνας για να αποφευχθεί οποιαδήποτε αλλαγή στην καλωδίωση. Παρέχει τις ακόλουθες λειτουργίες Ανίχνευση κουδουνιών πόρταςΑποστολή ειδοποιήσεων στο τηλέφωνο μέσω IFTTTStores
ESP32 NTP Θερμόμετρο μαγειρέματος θερμοκρασίας ανιχνευτή θερμοκρασίας με διόρθωση και συναγερμό θερμοκρασίας Steinhart-Hart .: 7 βήματα (με εικόνες)
ESP32 NTP Θερμόμετρο Θερμόμετρο μαγειρέματος με διόρθωση και συναγερμό θερμοκρασίας Steinhart-Hart .: Ακόμα στο ταξίδι για να ολοκληρώσετε ένα «επερχόμενο έργο», ", ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm " είναι ένας οδηγός που δείχνει πώς προσθέτω έναν αισθητήρα θερμοκρασίας NTP, piezo b
Αυτόματα φώτα που συνδέονται με παρακολούθηση πόρτας και πόρτας .: 5 βήματα
Αυτόματα φώτα που συνδέονται με παρακολούθηση πόρτας και πόρτας .: Φαίνεται ότι είναι πολύ δύσκολο να βρεθεί ο πίνακας διακοπτών στο σκοτάδι, αλλά αυτό το έργο είναι πραγματικά χρήσιμο για την επίλυση αυτού του προβλήματος. Ακολουθήστε τα παρακάτω βήματα για να μάθετε τη λύση αυτού