13 KiB
Μέτρηση θερμοκρασίας - Εικονικό IoT Υλικό
Σε αυτό το μέρος του μαθήματος, θα προσθέσετε έναν αισθητήρα θερμοκρασίας στη εικονική IoT συσκευή σας.
Εικονικό Υλικό
Η εικονική IoT συσκευή θα χρησιμοποιήσει έναν προσομοιωμένο αισθητήρα Grove Digital Υγρασίας και Θερμοκρασίας. Αυτό διατηρεί το εργαστήριο ίδιο με τη χρήση ενός Raspberry Pi με έναν φυσικό αισθητήρα Grove DHT11.
Ο αισθητήρας συνδυάζει έναν αισθητήρα θερμοκρασίας με έναν αισθητήρα υγρασίας, αλλά σε αυτό το εργαστήριο ενδιαφέρεστε μόνο για το τμήμα του αισθητήρα θερμοκρασίας. Σε μια φυσική IoT συσκευή, ο αισθητήρας θερμοκρασίας θα ήταν ένας θεμίστορας που μετρά τη θερμοκρασία ανιχνεύοντας μια αλλαγή στην αντίσταση καθώς αλλάζει η θερμοκρασία. Οι αισθητήρες θερμοκρασίας είναι συνήθως ψηφιακοί αισθητήρες που εσωτερικά μετατρέπουν την μετρημένη αντίσταση σε θερμοκρασία σε βαθμούς Κελσίου (ή Κέλβιν, ή Φαρενάιτ).
Προσθήκη αισθητήρων στο CounterFit
Για να χρησιμοποιήσετε έναν εικονικό αισθητήρα υγρασίας και θερμοκρασίας, πρέπει να προσθέσετε τους δύο αισθητήρες στην εφαρμογή CounterFit.
Εργασία - προσθήκη αισθητήρων στο CounterFit
Προσθέστε τους αισθητήρες υγρασίας και θερμοκρασίας στην εφαρμογή CounterFit.
-
Δημιουργήστε μια νέα εφαρμογή Python στον υπολογιστή σας σε έναν φάκελο που ονομάζεται
temperature-sensor
με ένα μόνο αρχείο που ονομάζεταιapp.py
και ένα εικονικό περιβάλλον Python, και προσθέστε τα πακέτα pip του CounterFit.⚠️ Μπορείτε να ανατρέξετε στις οδηγίες για τη δημιουργία και ρύθμιση ενός CounterFit Python project στο μάθημα 1 αν χρειαστεί.
-
Εγκαταστήστε ένα επιπλέον πακέτο Pip για την εγκατάσταση ενός CounterFit shim για τον αισθητήρα DHT11. Βεβαιωθείτε ότι το εγκαθιστάτε από ένα τερματικό με ενεργοποιημένο το εικονικό περιβάλλον.
pip install counterfit-shims-seeed-python-dht
-
Βεβαιωθείτε ότι η εφαρμογή web του CounterFit είναι σε λειτουργία.
-
Δημιουργήστε έναν αισθητήρα υγρασίας:
-
Στο πλαίσιο Create sensor στο τμήμα Sensors, ανοίξτε το πλαίσιο Sensor type και επιλέξτε Humidity.
-
Αφήστε τις Units ρυθμισμένες σε Percentage.
-
Βεβαιωθείτε ότι το Pin είναι ρυθμισμένο στο 5.
-
Επιλέξτε το κουμπί Add για να δημιουργήσετε τον αισθητήρα υγρασίας στο Pin 5.
Ο αισθητήρας υγρασίας θα δημιουργηθεί και θα εμφανιστεί στη λίστα αισθητήρων.
-
-
Δημιουργήστε έναν αισθητήρα θερμοκρασίας:
-
Στο πλαίσιο Create sensor στο τμήμα Sensors, ανοίξτε το πλαίσιο Sensor type και επιλέξτε Temperature.
-
Αφήστε τις Units ρυθμισμένες σε Celsius.
-
Βεβαιωθείτε ότι το Pin είναι ρυθμισμένο στο 6.
-
Επιλέξτε το κουμπί Add για να δημιουργήσετε τον αισθητήρα θερμοκρασίας στο Pin 6.
Ο αισθητήρας θερμοκρασίας θα δημιουργηθεί και θα εμφανιστεί στη λίστα αισθητήρων.
-
Προγραμματισμός της εφαρμογής αισθητήρα θερμοκρασίας
Η εφαρμογή αισθητήρα θερμοκρασίας μπορεί τώρα να προγραμματιστεί χρησιμοποιώντας τους αισθητήρες του CounterFit.
Εργασία - προγραμματισμός της εφαρμογής αισθητήρα θερμοκρασίας
Προγραμματίστε την εφαρμογή αισθητήρα θερμοκρασίας.
-
Βεβαιωθείτε ότι η εφαρμογή
temperature-sensor
είναι ανοιχτή στο VS Code. -
Ανοίξτε το αρχείο
app.py
. -
Προσθέστε τον παρακάτω κώδικα στην κορυφή του
app.py
για να συνδέσετε την εφαρμογή στο CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Προσθέστε τον παρακάτω κώδικα στο αρχείο
app.py
για να εισάγετε τις απαιτούμενες βιβλιοθήκες:import time from counterfit_shims_seeed_python_dht import DHT
Η δήλωση
from seeed_dht import DHT
εισάγει την κλάσηDHT
για την αλληλεπίδραση με έναν εικονικό αισθητήρα θερμοκρασίας Grove χρησιμοποιώντας ένα shim από το modulecounterfit_shims_seeed_python_dht
. -
Προσθέστε τον παρακάτω κώδικα μετά τον παραπάνω κώδικα για να δημιουργήσετε μια παρουσία της κλάσης που διαχειρίζεται τον εικονικό αισθητήρα υγρασίας και θερμοκρασίας:
sensor = DHT("11", 5)
Αυτό δηλώνει μια παρουσία της κλάσης
DHT
που διαχειρίζεται τον εικονικό Digital Humidity και Temperature αισθητήρα. Η πρώτη παράμετρος λέει στον κώδικα ότι ο αισθητήρας που χρησιμοποιείται είναι ένας εικονικός αισθητήρας DHT11. Η δεύτερη παράμετρος λέει στον κώδικα ότι ο αισθητήρας είναι συνδεδεμένος στη θύρα5
.💁 Το CounterFit προσομοιώνει αυτόν τον συνδυασμένο αισθητήρα υγρασίας και θερμοκρασίας συνδέοντας σε 2 αισθητήρες, έναν αισθητήρα υγρασίας στο pin που δίνεται όταν δημιουργείται η κλάση
DHT
, και έναν αισθητήρα θερμοκρασίας που λειτουργεί στο επόμενο pin. Αν ο αισθητήρας υγρασίας είναι στο pin 5, το shim αναμένει ότι ο αισθητήρας θερμοκρασίας θα είναι στο pin 6. -
Προσθέστε έναν άπειρο βρόχο μετά τον παραπάνω κώδικα για να ελέγχετε την τιμή του αισθητήρα θερμοκρασίας και να την εκτυπώνετε στην κονσόλα:
while True: _, temp = sensor.read() print(f'Temperature {temp}°C')
Η κλήση στο
sensor.read()
επιστρέφει ένα tuple με υγρασία και θερμοκρασία. Χρειάζεστε μόνο την τιμή της θερμοκρασίας, οπότε η υγρασία αγνοείται. Η τιμή της θερμοκρασίας στη συνέχεια εκτυπώνεται στην κονσόλα. -
Προσθέστε μια μικρή παύση δέκα δευτερολέπτων στο τέλος του
loop
, καθώς τα επίπεδα θερμοκρασίας δεν χρειάζεται να ελέγχονται συνεχώς. Μια παύση μειώνει την κατανάλωση ενέργειας της συσκευής.time.sleep(10)
-
Από το τερματικό του VS Code με ενεργοποιημένο το εικονικό περιβάλλον, εκτελέστε το παρακάτω για να εκτελέσετε την εφαρμογή Python:
python app.py
-
Από την εφαρμογή CounterFit, αλλάξτε την τιμή του αισθητήρα θερμοκρασίας που θα διαβαστεί από την εφαρμογή. Μπορείτε να το κάνετε με δύο τρόπους:
-
Εισάγετε έναν αριθμό στο πλαίσιο Value για τον αισθητήρα θερμοκρασίας και στη συνέχεια επιλέξτε το κουμπί Set. Ο αριθμός που εισάγετε θα είναι η τιμή που επιστρέφει ο αισθητήρας.
-
Επιλέξτε το πλαίσιο Random και εισάγετε μια Min και Max τιμή, στη συνέχεια επιλέξτε το κουμπί Set. Κάθε φορά που ο αισθητήρας διαβάζει μια τιμή, θα διαβάζει έναν τυχαίο αριθμό μεταξύ Min και Max.
Θα πρέπει να βλέπετε τις τιμές που ορίσατε να εμφανίζονται στην κονσόλα. Αλλάξτε την Value ή τις ρυθμίσεις Random για να δείτε την αλλαγή της τιμής.
(.venv) ➜ temperature-sensor python app.py Temperature 28.25°C Temperature 30.71°C Temperature 25.17°C
-
💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο code-temperature/virtual-device.
😀 Το πρόγραμμα του αισθητήρα θερμοκρασίας σας ήταν επιτυχές!
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική μετάφραση από ανθρώπους. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.