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

IoT Made Simple: Παρακολούθηση πολλαπλών αισθητήρων: 7 βήματα
IoT Made Simple: Παρακολούθηση πολλαπλών αισθητήρων: 7 βήματα

Βίντεο: IoT Made Simple: Παρακολούθηση πολλαπλών αισθητήρων: 7 βήματα

Βίντεο: IoT Made Simple: Παρακολούθηση πολλαπλών αισθητήρων: 7 βήματα
Βίντεο: Garmin Fenix 7 Pro κριτική + Tutorial 2024, Νοέμβριος
Anonim
IoT Made Simple: Παρακολούθηση πολλαπλών αισθητήρων
IoT Made Simple: Παρακολούθηση πολλαπλών αισθητήρων
IoT Made Simple: Παρακολούθηση πολλαπλών αισθητήρων
IoT Made Simple: Παρακολούθηση πολλαπλών αισθητήρων

Πριν από μερικές εβδομάδες, δημοσίευσα εδώ ένα σεμινάριο σχετικά με την παρακολούθηση της θερμοκρασίας χρησιμοποιώντας έναν DS18B20, έναν ψηφιακό αισθητήρα που επικοινωνεί μέσω ενός διαύλου 1-Wire, στέλνοντας δεδομένα μέσω Διαδικτύου με NodeMCU και Blynk:

IoT Made Simple: Παρακολούθηση θερμοκρασίας οπουδήποτε

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

Θα επεκτείνουμε αυτό που αναπτύχθηκε στο τελευταίο σεμινάριο, παρακολουθώντας τώρα δύο αισθητήρες DS18B20, που έχουν διαμορφωθεί ο ένας στον Κελσίου και ο άλλος στο Φαρενάιτ. Τα δεδομένα θα σταλούν σε μια εφαρμογή Blynk, όπως φαίνεται στο παραπάνω μπλοκ διάγραμμα.

Βήμα 1: Λογαριασμός Υλικού

  • NodeMCU ESP 12-E (*)
  • 2 X DS18B20 Αισθητήρας θερμοκρασίας
  • Αντίσταση 4.7K Ohms
  • BreadBoard
  • Καλωδίωση

(*) Οποιοσδήποτε τύπος συσκευής ESP μπορεί να χρησιμοποιηθεί εδώ. Τα πιο συνηθισμένα είναι τα NodeMCU V2 ή V3. Και τα δύο θα λειτουργούν πάντα καλά.

Βήμα 2: Αισθητήρας θερμοκρασίας DS18B20

Αισθητήρας θερμοκρασίας DS18B20
Αισθητήρας θερμοκρασίας DS18B20

Θα χρησιμοποιήσουμε σε αυτό το σεμινάριο μια αδιάβροχη έκδοση του αισθητήρα DS18B20. Είναι πολύ χρήσιμο για απομακρυσμένη θερμοκρασία σε υγρές συνθήκες, για παράδειγμα σε υγρό έδαφος. Ο αισθητήρας είναι απομονωμένος και μπορεί να λάβει μετρήσεις έως τους 125oC (η Adafrut δεν συνιστά τη χρήση του πάνω από 100oC λόγω του καλωδίου PVC μπουφάν).

Ο DS18B20 είναι ένας ψηφιακός αισθητήρας που το κάνει καλό ακόμη και σε μεγάλες αποστάσεις! Αυτοί οι ψηφιακοί αισθητήρες θερμοκρασίας 1 καλωδίου είναι αρκετά ακριβείς (± 0,5 ° C σε μεγάλο εύρος) και μπορούν να δώσουν έως και 12 bits ακρίβειας από τον ενσωματωμένο ψηφιακό σε αναλογικό μετατροπέα. Λειτουργούν τέλεια με το NodeMCU χρησιμοποιώντας ένα μόνο ψηφιακό pin, και μπορείτε ακόμη και να συνδέσετε πολλαπλά στον ίδιο pin, καθένα έχει ένα μοναδικό αναγνωριστικό 64-bit εγγεγραμμένο στο εργοστάσιο για να τα διαφοροποιήσει.

Ο αισθητήρας λειτουργεί από 3,0 έως 5,0V, πράγμα που σημαίνει ότι μπορεί να τροφοδοτηθεί απευθείας από έναν από τους ακροδέκτες 3.3V NodeMCU.

Ο αισθητήρας έχει 3 καλώδια:

  • Μαύρο: GND
  • Κόκκινο: VCC
  • Κίτρινο: 1-Wire Data

Εδώ, μπορείτε να βρείτε τα πλήρη δεδομένα: DS18B20 Datasheet

Βήμα 3: Σύνδεση των αισθητήρων στο NodeMCU

Σύνδεση των αισθητήρων στο NodeMCU
Σύνδεση των αισθητήρων στο NodeMCU
  1. Συνδέστε τα 3 καλώδια από κάθε αισθητήρα στο mini Breadboard όπως φαίνεται στην παραπάνω φωτογραφία. Χρησιμοποίησα ειδικούς συνδετήρες για να στερεώσω καλύτερα το καλώδιο του αισθητήρα σε αυτό.
  2. Σημειώστε ότι και οι δύο αισθητήρες βρίσκονται παράλληλα. Εάν έχετε περισσότερους από 2 αισθητήρες, πρέπει να κάνετε το ίδιο.

    • Κόκκινο ==> 3,3V
    • Μαύρο ==> GND
    • Κίτρινο ==> D4
  3. Χρησιμοποιήστε αντίσταση 4,7K ohm μεταξύ VCC (3.3V) και Data (D4)

Βήμα 4: Εγκατάσταση των κατάλληλων βιβλιοθηκών

Για να χρησιμοποιήσετε σωστά το DS18B20, θα χρειαστούν δύο βιβλιοθήκες:

  1. OneWire
  2. DallasTemperature

Εγκαταστήστε και τις δύο βιβλιοθήκες στο αποθετήριο Arduino IDE Library.

Σημειώστε ότι η βιβλιοθήκη OneWire ΠΡΕΠΕΙ να είναι η ειδική, τροποποιημένη για χρήση με το ESP8266, διαφορετικά θα λάβετε σφάλμα κατά τη μεταγλώττιση. Θα βρείτε την τελευταία έκδοση στον παραπάνω σύνδεσμο.

Βήμα 5: Δοκιμή των αισθητήρων

Δοκιμή αισθητήρων
Δοκιμή αισθητήρων

Για τον έλεγχο των αισθητήρων, κατεβάστε το παρακάτω αρχείο από το GitHub μου:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

*Multiple Temperature Sendor Test**2 x OneWire Sensor: DS18B20*Συνδέεται με NodeMCU D4 (ή Arduino Pin 2)**Αναπτύχθηκε από τον Marcelo Rovai - 25 Αυγούστου 2017 **************** **********************************************/ #περιλαμβάνω # περιλαμβάνει #define ONE_WIRE_BUS 2 // DS18B20 στο pin NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS). DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Δοκιμή δεδομένων διπλού αισθητήρα"); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Ο αισθητήρας 0 θα καταγράψει τη θερμοκρασία στο Celcius temp_1 = DS18B20.getTempFByIndex (1); // Ο αισθητήρας 0 θα καταγράψει το Temp στο Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); καθυστέρηση (1000)? }

Κοιτάζοντας τον παραπάνω κώδικα, θα πρέπει να παρατηρήσουμε ότι οι πιο σημαντικές γραμμές είναι:

temp_0 = DS18B20.getTempCByIndex (0); // Ο αισθητήρας 0 θα καταγράψει τη θερμοκρασία στο Κελσίου

temp_1 = DS18B20.getTempFByIndex (1); // Ο αισθητήρας 0 θα καταγράψει τη θερμοκρασία στο Φαρενάιτ

Η πρώτη θα επιστρέψει μια τιμή από τον Αισθητήρα [0] (δείτε το "index (0)") σε Κελσίου (δείτε το τμήμα του κώδικα: "getTempC". Η δεύτερη γραμμή σχετίζεται με τον Αισθητήρα [1] και θα επιστρέψει δεδομένα Θα μπορούσατε να έχετε εδώ "n" αισθητήρες, αφού έχετε διαφορετικό "δείκτη" για κάθε έναν από αυτούς.

Ανεβάστε τώρα τον κωδικό στο NodeMCU και παρακολουθήστε τη θερμοκρασία χρησιμοποιώντας τη Σειριακή οθόνη.

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

Βήμα 6: Χρήση του Blynk

Χρησιμοποιώντας το Blynk
Χρησιμοποιώντας το Blynk
Χρησιμοποιώντας το Blynk
Χρησιμοποιώντας το Blynk

Μόλις αρχίσετε να καταγράφετε δεδομένα θερμοκρασίας, ήρθε η ώρα να τα δείτε από οπουδήποτε. Θα το κάνουμε αυτό χρησιμοποιώντας το Blynk. Έτσι, όλα τα καταγεγραμμένα δεδομένα θα εμφανίζονται σε πραγματικό χρόνο στην κινητή συσκευή σας και επίσης θα δημιουργήσουμε ένα ιστορικό αποθετήριο για αυτό.

Ακολουθήστε τα παρακάτω βήματα:

  1. Δημιουργήστε ένα νέο έργο.
  2. Δώστε του ένα όνομα (στην περίπτωσή μου "Dual Temperature Monitor")
  3. Επιλέξτε Νέα συσκευή - ESP8266 (WiFi) ως "Οι συσκευές μου"
  4. Αντιγράψτε το AUTH TOKEN για χρήση στον κωδικό (μπορείτε να το στείλετε στο email σας).
  5. Περιλαμβάνει δύο widget "Gauge", που ορίζουν:

    • Εικονική καρφίτσα που θα χρησιμοποιείται με κάθε αισθητήρα: V10 (Αισθητήρας [0]) και V11 (Αισθητήρας [1])
    • Εύρος θερμοκρασίας: -5 έως 100 oC για αισθητήρα [0]
    • Εύρος θερμοκρασίας: 25 έως 212 oC για αισθητήρα [1]
    • Η συχνότητα ανάγνωσης δεδομένων: 1 δευτερόλεπτο
  6. Περιλαμβάνει ένα γραφικό στοιχείο "Γράφημα ιστορίας", το οποίο ορίζει τα V10 και V11 ως εικονικές ακίδες
  7. Πατήστε "Αναπαραγωγή" (Το τρίγωνο στη δεξιά επάνω γωνία)

Φυσικά, η εφαρμογή Blynk θα σας πει ότι το NodeMCU είναι εκτός σύνδεσης. It'sρθε η ώρα να ανεβάσετε ολόκληρο τον κωδικό στο Arduino IDE. Μπορείτε να το αποκτήσετε εδώ:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Αλλάξτε τα "εικονικά δεδομένα" με τα δικά σας διαπιστευτήρια.

/ * Διαπιστευτήρια Blynk */

char auth = "Ο ΚΩΔΙΚΟΣ ΣΑΣ BLYNK AUTH ΕΔΩ"; / * Διαπιστευτήρια WiFi */ char ssid = "YOUR SSID"; char pass = "YOUR PASSWORD";

Και αυτό είναι!

Παρακάτω ο πλήρης κωδικός. Είναι βασικά ο προηγούμενος κώδικας, όπου καταχωρήσαμε με παραμέτρους Blynk και συγκεκριμένες συναρτήσεις. Σημειώστε τις 2 τελευταίες γραμμές του κώδικα. Αυτά είναι τα πιο σημαντικά εδώ. Εάν έχετε περισσότερους αισθητήρες συλλογής δεδομένων, θα πρέπει επίσης να έχετε αντίστοιχες νέες γραμμές με αυτές (με καθορισμένες τις σχετικές νέες εικονικές ακίδες).

/**************************************************************

* IoT Multiple Temperature Monitor with Blynk * Η βιβλιοθήκη Blynk έχει άδεια με άδεια MIT * Αυτός ο κώδικας παραδείγματος είναι δημόσιος τομέας. **Multiple OneWire Sensor: DS18B20*Αναπτύχθηκε από τον Marcelo Rovai - 25 Αυγούστου 2017 ******************************** ***************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Σχολιάστε το απενεργοποιήστε τις εκτυπώσεις και εξοικονομήστε χώρο / * Διαπιστευτήρια Blynk * / char auth = "Ο ΚΩΔΙΚΟΣ ΣΑΣ BLYNK AUTH ΕΔΩ"; / * Διαπιστευτήρια WiFi */ char ssid = "YOUR SSID"; char pass = "YOUR PASSWORD"; / * TIMER */ #include SimpleTimer timer; / * DS18B20 Temperature Sensor */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 στο arduino pin2 αντιστοιχεί σε D4 στη φυσική πλακέτα OneWire oneWire (ONE_WIRE_BUS). DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; void setup () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("Δοκιμή δεδομένων διπλού αισθητήρα"); } void loop () {timer.run (); // Ξεκινά το SimpleTimer Blynk.run (); } /******************************************** ****Αποστολή δεδομένων αισθητήρα στο Blynk ************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Ο αισθητήρας 0 θα καταγράψει τη θερμοκρασία στο Celcius temp_1 = DS18B20.getTempFByIndex (1); // Ο αισθητήρας 0 θα καταγράψει το Temp στο Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // εικονική ακίδα V10 Blynk.virtualWrite (11, temp_1); // εικονική καρφίτσα V11}

Μόλις μεταφορτωθεί και εκτελεστεί ο κώδικας, ελέγξτε την εφαρμογή Blynk. Θα πρέπει τώρα να λειτουργεί επίσης όπως φαίνεται στην παραπάνω οθόνη εκτύπωσης από το iPhone μου.

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

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

Όπως πάντα, ελπίζω ότι αυτό το έργο μπορεί να βοηθήσει άλλους να βρουν τον δρόμο τους στον συναρπαστικό κόσμο της ηλεκτρονικής, της ρομποτικής και του IoT!

Επισκεφτείτε το GitHub για ενημερωμένα αρχεία: NodeMCU Dual Temp Monitor

Για περισσότερα έργα, επισκεφθείτε το ιστολόγιό μου: MJRoBot.org

Saludos από τον νότο του κόσμου!

Τα λέμε στο επόμενο διδακτικό μου!

Σας ευχαριστώ, Μαρσέλο

Συνιστάται: