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

Καταγραφέας θερμοκρασίας WiFi (με ESP8266): 11 βήματα (με εικόνες)
Καταγραφέας θερμοκρασίας WiFi (με ESP8266): 11 βήματα (με εικόνες)

Βίντεο: Καταγραφέας θερμοκρασίας WiFi (με ESP8266): 11 βήματα (με εικόνες)

Βίντεο: Καταγραφέας θερμοκρασίας WiFi (με ESP8266): 11 βήματα (με εικόνες)
Βίντεο: Καταγραφικό Wifi Θερμοκρασίας και υγρασίας για απομακρυσμένη παρακολούθηση με εφαρμογή στο κινητό PC 2024, Νοέμβριος
Anonim
Image
Image
Υλικά
Υλικά

Γεια σας, χαίρομαι που σας βλέπω εδώ. Ελπίζω σε αυτό το διδακτικό να βρείτε χρήσιμες πληροφορίες. Μη διστάσετε να μου στείλετε προτάσεις, ερωτήσεις… Εδώ είναι μερικά βασικά δεδομένα και μια γρήγορη επισκόπηση του έργου. Για χρήστες κινητών: Βίντεο. Ενημερώστε με τι πιστεύετε για το έργο στην ενότητα σχολίων, ευχαριστώ. Πρόσφατα αγόρασα έναν πίνακα NodeMcu (βασισμένος σε esp8266) μόνο και μόνο για να το δοκιμάσω, οπότε αυτό δεν είναι ένα πραγματικά προηγμένο έργο. Αλλά λειτουργεί και είναι αυτό που χρειάζομαι, οπότε είναι εντάξει. Η κύρια λειτουργία για αυτόν τον καταγραφέα δεδομένων είναι να συλλέγει θερμοκρασία και να την αποθηκεύει σε διακομιστή. Αυτό επιτρέπει στους χρήστες να ελέγχουν τα δεδομένα και τη γραφική παράσταση στο διαδίκτυο ακόμη και όταν δεν βρίσκονται στην ίδια θέση του καταγραφικού (για παράδειγμα για έναν μετεωρολογικό σταθμό). Ένα άλλο χρήσιμο χαρακτηριστικό είναι η ενημέρωση OTA που περιλαμβάνεται στον κώδικα που επιτρέπει στον χρήστη να ενημερώνει και να προσαρμόζει εύκολα το λογισμικό. Θα αναλύσω δύο αισθητήρες και τη σχετική μέθοδο απόκτησής τους για να ισορροπήσω όλα τα υπέρ και τα κατά.

Spoiler: μετά από λίγο έλεγχο διαπίστωσα ότι ένας ψηφιακός αισθητήρας όπως ο DS18B20 είναι η καλύτερη λύση επειδή προσφέρει σταθερότητα και υψηλότερη ακρίβεια. Είναι ήδη αδιάβροχο και με το καλώδιο.

Βήμα 1: Υλικά

Υλικά
Υλικά
Υλικά
Υλικά
Υλικά
Υλικά

Αυτό είναι ένα ελάχιστο έργο με λίγα μόνο εξωτερικά στοιχεία, γι 'αυτό η λίστα BOM θα είναι πραγματικά σύντομη. Ωστόσο, ας δούμε τι υλικό ζητείται:

  • NodeMcu V3 (ή οποιοδήποτε συμβατό ESP8266 μ επεξεργαστή).
  • RGB led (κοινή άνοδος)?
  • Αντιστάσεις για led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim Integrated thermometer);
  • LM35 (θερμόμετρο οργάνων Τέξας);
  • Εξωτερική μπαταρία (προαιρετική).
  • Καλώδιο;
  • Συνδετήρας (για να γίνει πιο "προχωρημένος").
  • Πλαίσιο (προαιρετικό, πάλι για να γίνει πιο "προχωρημένο").
  • Κάτοχος led (προαιρετικό).

Σημείωση: Όπως είπα πρέπει να επιλέξετε μία από τις δύο μεθόδους. Εάν επιλέξετε θερμόμετρο LM35, θα χρειαστείτε μερικά άλλα εξαρτήματα:

  • Attiny45/85;
  • Προγραμματιστής AVR (ή Arduino ως ISP).
  • Αντίσταση (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Υποδοχή λωρίδας 2,54 mm (προαιρετικό)
  • Δίοδος (2x1N914)
  • Perfboard ή PCB?

Βήμα 2: Επιλέγοντας τον αισθητήρα

Επιλέγοντας τον αισθητήρα
Επιλέγοντας τον αισθητήρα

Η επιλογή του αισθητήρα μπορεί να είναι ένα δύσκολο βήμα: σήμερα υπάρχουν τόνοι μετατροπείς (η TI προσφέρει 144 διαφορετικά στοιχεία) τόσο αναλογικά όσο και ψηφιακά με διαφορετικό εύρος θερμοκρασίας, ακρίβεια και θήκη. Αναλογικοί αισθητήρες (46 μέρη διαθέσιμα από την TI): Πλεονεκτήματα:

  • Ο καταγραφέας δεδομένων μπορεί εύκολα να αλλάξει από θερμοκρασία σε άλλη ποσότητα (τάση, ρεύμα,…).
  • Μπορεί να είναι λίγο φθηνότερο?
  • Εύκολο στη χρήση, καθώς δεν απαιτεί ειδική βιβλιοθήκη.

Μειονεκτήματα:

  • Απαιτείται ADC (που μπορεί να επηρεάσει την ακρίβεια της μέτρησης) και άλλα εξωτερικά εξαρτήματα. Δεδομένου ότι το esp8266 έχει μόνο ένα ADC (και όχι πολύ ακριβές), θα πρότεινα να χρησιμοποιήσετε ένα εξωτερικό.
  • Χρειάζεται ειδικό καλώδιο με απόρριψη θορύβου, καθώς οποιαδήποτε επαγόμενη τάση μπορεί να αλλάξει το αποτέλεσμα.

Μετά από λίγη σκέψη αποφάσισα να χρησιμοποιήσω τον LM35, έναν γραμμικό αισθητήρα με συντελεστή κλίμακας +10mV/° C με ακρίβεια 0,5 ° C και πολύ χαμηλό ρεύμα (περίπου 60uA) με τάση λειτουργίας από 4V έως 30V. Για περισσότερες λεπτομέρειες, προτείνω να δείτε το φύλλο δεδομένων: LM35.

Digitalηφιακοί αισθητήρες (συνιστάται ιδιαίτερα) Πλεονεκτήματα:

Σχεδόν οποιαδήποτε εξωτερικά εξαρτήματα χρειάζονται

Ενσωματωμένο ADC

Μειονεκτήματα:

Ζητήστε βιβλιοθήκη ή λογισμικό αποκωδικοποίησης του ψηφιακού σήματος (I2C, SPI, Serial, One Wire,…)

Πιο ακριβό;

Επέλεξα το DS18B20 επειδή βρήκα ένα σετ 5 αδιάβροχων αισθητήρων στο Amazon και επειδή έχει τεκμηριωθεί ευρέως στο Διαδίκτυο. Κύριο χαρακτηριστικό είναι η μέτρηση 9-12bit, δίαυλος 1 καλωδίου, τάση τροφοδοσίας 3,0 έως 5,5, ακρίβεια 0,5 ° C. Και πάλι, για περισσότερες λεπτομέρειες εδώ είναι το φύλλο δεδομένων: DS18B20.

Βήμα 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Ας αναλύσουμε πώς έχω εφαρμόσει το εξωτερικό ADC και άλλη λειτουργία για το θερμόμετρο LM35. Βρήκα ένα καλώδιο με τρία καλώδια, ένα με θωράκιση και δύο χωρίς. Αποφάσισα να προσθέσω έναν πυκνωτή αποσύνδεσης για να σταθεροποιήσω την τάση τροφοδοσίας κοντά στον αισθητήρα. Για να μετατρέψω την αναλογική θερμοκρασία σε ψηφιακή, χρησιμοποίησα τον μικροεπεξεργαστή Attiny85 σε πακέτο dip8 (ξανά για περισσότερες πληροφορίες δείτε το φύλλο δεδομένων: attiny85). Το πιο σημαντικό για εμάς είναι το ADC 10 bit (δεν είναι πραγματικά το καλύτερο, αλλά αρκετά ακριβές για μένα). Για να επικοινωνήσω με το Esp8266 αποφάσισα να χρησιμοποιήσω τη Σειριακή επικοινωνία έχοντας κατά νου ότι το esp8266 λειτουργεί με 3.3V και attiny85 στα 5V (καθώς χρειάζεται για να τροφοδοτήσει τον αισθητήρα). Για να το πετύχω αυτό, χρησιμοποίησα ένα απλό διαχωριστή τάσης (βλέπε σχηματικό). Για να διαβάσουμε την αρνητική θερμοκρασία, πρέπει να προσθέσουμε μερικά εξωτερικά εξαρτήματα (αντίσταση 2x1N914 και 1x18k), αφού δεν θέλω να χρησιμοποιήσω αρνητική τροφοδοσία. Εδώ είναι ο κωδικός: αποθετήριο TinyADC. Σημείωση: για να μεταγλωττίσετε αυτόν τον κώδικα θα χρειαστεί να εγκαταστήσετε attiny to ide (εισαγάγετε αυτό στην επιλογή: https://drazzy.com/package_drazzy.com_index.json), αν δεν ξέρετε πώς να το κάνετε, απλώς αναζητήστε στο Google. r ανεβάστε απευθείας.hex αρχείο.

Βήμα 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Αγόρασα αυτούς τους αισθητήρες από την Amazon (5 κοστίζει περίπου 10 €). Έφτασε με ανοξείδωτο κάλυμμα και καλώδιο μήκους 1μ. Αυτός ο αισθητήρας μπορεί να επιστρέψει δεδομένα θερμοκρασίας 9 έως 12 bit. Πολλοί αισθητήρες μπορούν να συνδεθούν στην ίδια καρφίτσα αφού όλοι έχουν ένα μοναδικό αναγνωριστικό. Για να συνδέσετε το DS18B20 στο esp8266 μπορείτε απλά να ακολουθήσετε το σχηματικό (δεύτερη φωτογραφία). Αφού αποφάσισα ότι ο καταγραφέας μου θα είχε τρεις ανιχνευτές, έπρεπε να διακρίνω ποια είναι ποια. Έτσι σκέφτηκα να τους δώσω ένα χρώμα που σχετίζεται μέσω λογισμικού στη διεύθυνσή τους. Έχω χρησιμοποιήσει κάποιο θερμοσυστελλόμενο σωλήνα (τρίτη φωτογραφία).

Βήμα 5: Κωδικός ESP8266

Κωδικός ESP8266
Κωδικός ESP8266
Κωδικός ESP8266
Κωδικός ESP8266

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

  • Ενημέρωση OTA: δεν χρειάζεται να συνδέσετε το esp8266 στον υπολογιστή σας κάθε φορά που χρειάζεται να ανεβάσετε τον κώδικα (πρέπει να το κάνετε μόνο την πρώτη φορά).
  • Ασύρματος διαχειριστής, εάν αλλάξετε ασύρματο δίκτυο, δεν χρειάζεται να φορτώσετε ξανά το σκίτσο. Μπορείτε απλά να διαμορφώσετε ξανά τις παραμέτρους δικτύου που συνδέονται στο σημείο πρόσβασης esp8266.
  • Μετάδοση δεδομένων Thingspeak.
  • Υποστηρίζονται τόσο οι LM35 όσο και οι DS18B20.
  • Απλή διεπαφή χρήστη (το led RGB υποδεικνύει κάποιες χρήσιμες πληροφορίες).

Ζητήστε συγνώμη γιατί το λογισμικό μου δεν είναι το καλύτερο και δεν είναι πραγματικά καλά παραγγελμένο. Πριν από τη μεταφόρτωση στη συσκευή, πρέπει να αλλάξετε ορισμένες παραμέτρους για να προσαρμόσετε τον κώδικα στη ρύθμισή σας. Εδώ μπορείτε να κατεβάσετε το λογισμικό. Κοινή διαμόρφωση LM35 και DS18B20 Πρέπει να αλλάξετε τον ορισμό της καρφίτσας, το διακριτικό, τον αριθμό καναλιού, τον χρήστη και τον κωδικό πρόσβασης για ενημέρωση OTA. Γραμμή από 15 έως 23.

#ορίστε το κόκκινο YOURPINHERE #καθορίστε το πράσινο YOURPINHERE

#define blue YOURPINHERE const char* host = "επιλέξτε διεύθυνση κεντρικού υπολογιστή"; // δεν χρειάζεται πραγματικά, μπορείτε να αφήσετε το esp8266-webupdate const char* update_path = "/firmware"; // για να αλλάξετε τη διεύθυνση για ενημέρωση ex: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Βήμα 6: Κωδικός ESP8266: Χρήστης LM35

Πρέπει να συνδέσετε τον πίνακα attiny στο esp8266, για να τροφοδοτήσετε τη μονάδα ADC χρησιμοποιήστε τον πείρο VU και τον πείρο G. Πρέπει να επιλέξετε ποια καρφίτσα θέλετε να χρησιμοποιήσετε για σειριακή επικοινωνία (για να διατηρήσετε το σειριακό υλικό δωρεάν για σκοπούς εντοπισμού σφαλμάτων). Η καρφίτσα Tx πρέπει να επιλεγεί αλλά δεν χρησιμοποιείται πραγματικά. (Γραμμή 27). SoftwareSerial mySerial (RXPIN, TXPIN). Στο επάνω μέρος πρέπει να προσθέσετε: #define LM35USER

Βήμα 7: Κωδικός ESP8266: Χρήστης DS18B20

Ως πρώτη λειτουργία, πρέπει να προσδιορίσετε τη διεύθυνση της συσκευής για κάθε αισθητήρα. Μεταγλωττίστε και προγραμματίστε αυτόν τον κώδικα στο esp και αναζητήστε σειριακά τα αποτελέσματα. Μπορείτε να βρείτε τον κωδικό εδώ (αναζητήστε αυτόν τον τίτλο στη σελίδα: «Διαβάστε μεμονωμένες εσωτερικές διευθύνσεις DS18B20»). Συνδέστε μόνο έναν αισθητήρα για να λάβετε τη διεύθυνση, τα αποτελέσματα πρέπει να είναι κάπως έτσι (τυχαίος αριθμός εδώ! Ακριβώς όπως το παράδειγμα): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Τότε πρέπει να αλλάξετε τον κωδικό μου στην ενότητα " Διαμόρφωση για DS18B20 "(γραμμή 31 έως 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (9-12 0x12}; // ΑΛΛΑΓΗ ΜΕ ΤΗ ΔΙΕΥΘΥΝΣΗ ΣΑΣ DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ΑΛΛΑΓΗ ΜΕ ΤΗ ΔΙΕΥΘΥΝΣΗ ΣΑΣ DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ΑΛΛΑΓΗ ΜΕ ΤΗ ΔΙΕΥΘΥΝΣΗ ΣΑΣ Στην κορυφή πρέπει να προσθέσετε: #define DSUSER

Βήμα 8: ESP8266 Μικρό κόλπο

ESP8266 Μικρό κόλπο
ESP8266 Μικρό κόλπο

Μετά από μια μικρή δοκιμή διαπίστωσα ότι εάν συνδέσετε το esp8266 χωρίς προγραμματισμό, δεν θα εκτελέσει τον κώδικα μέχρι να πατήσετε επαναφορά μία φορά. Για να λύσω αυτό το ζήτημα, μετά από λίγη έρευνα, ανακάλυψα ότι πρέπει να προσθέσετε μια αντίσταση έλξης από 3.3V στο D3. Αυτό θα πει στον επεξεργαστή να φορτώσει τον κωδικό από τη μνήμη flash. Με αυτήν τη μέθοδο, το D3 μπορεί να χρησιμοποιηθεί απευθείας για την εισαγωγή δεδομένων για αισθητήρες DS18B20.

Βήμα 9: Λειτουργία για πρώτη φορά

Λειτουργία για πρώτη φορά
Λειτουργία για πρώτη φορά
Λειτουργία για πρώτη φορά
Λειτουργία για πρώτη φορά

Εάν έχετε ανεβάσει σωστά τον κώδικα αλλά δεν χρησιμοποιείτε ποτέ τη βιβλιοθήκη διαχείρισης Wifi, ήρθε η ώρα να διαμορφώσετε τη σύνδεση wifi. Περιμένετε μέχρι να δείτε το led RGB να αναβοσβήνει γρηγορότερα από πριν, στη συνέχεια αναζητήστε με το κινητό ή τον υπολογιστή σας το δίκτυο wifi που ονομάζεται "AutoConnectAp" και συνδεθείτε. Μετά τη σύνδεση, ανοίξτε ένα πρόγραμμα περιήγησης ιστού και πληκτρολογήστε 192.168.4.1, θα βρείτε τη διεπαφή GUI του διαχειριστή wifi (δείτε φωτογραφίες) και πατήστε "Διαμόρφωση Wifi". Περιμένετε το esp8266 για αναζήτηση σε δίκτυα wifi και επιλέξτε το επιθυμητό. Εισαγάγετε τον κωδικό πρόσβασης και πατήστε "αποθήκευση". Το Esp8266 θα επανεκκινήσει (δεν με νοιάζει το RGB led αυτή τη φορά γιατί θα βγάλει τυχαίες πληροφορίες) και θα συνδεθεί στο δίκτυο.

Βήμα 10: Συμπέρασμα

συμπέρασμα
συμπέρασμα
συμπέρασμα
συμπέρασμα
συμπέρασμα
συμπέρασμα
συμπέρασμα
συμπέρασμα

Στο τέλος, εδώ είναι ένα γράφημα που έχει ληφθεί από τον καταγραφέα δεδομένων σε λειτουργία κατά την καταγραφή της θερμοκρασίας του καταψύκτη μου. Σε πορτοκαλί χρώμα είναι το DS18B20 και σε μπλε το LM35 και το κύκλωμά του. Μπορείτε να δείτε τη μεγαλύτερη διαφορά ακρίβειας από ψηφιακό σε αναλογικό αισθητήρα (με το κακό "κύκλωμα ADC") που δίνει κάποια μη φυσικά δεδομένα. Συνοψίζοντας, αν θέλετε να δημιουργήσετε αυτόν τον καταγραφέα, προτείνω να χρησιμοποιήσετε τον ψηφιακό αισθητήρα θερμοκρασίας DS18B20, δεδομένου ότι είναι ευκολότερο στην ανάγνωση και σχεδόν "plug and play", είναι πιο σταθερό και ακριβές, λειτουργεί στα 3.3V και απαιτεί μόνο μία καρφίτσα για πολλούς αισθητήρες. Ευχαριστώ για την προσοχή, ελπίζω ότι αυτό το έργο είναι καλό για εσάς και βρήκα μερικές χρήσιμες πληροφορίες. Και για όποιον θέλει να το συνειδητοποιήσει, εύχομαι να έδινα όλες τις απαραίτητες πληροφορίες. Αν δεν έμεινες ελεύθερος να ρωτήσω τα πάντα, θα χαρώ να απαντήσω σε όλες τις ερωτήσεις. Επειδή δεν είμαι αγγλόφωνος, αν κάτι δεν πάει καλά ή δεν είναι κατανοητό, ενημερώστε με. Εάν σας άρεσε αυτό το έργο, ψηφίστε το για τους διαγωνισμούς και/ή αφήστε ένα σχόλιο. Θα με ενθαρρύνει να συνεχίσω να ενημερώνω και να δημοσιεύω νέα περιεχόμενα. Σας ευχαριστώ.

Συνιστάται: