# Μέτρηση υγρασίας εδάφους - Εικονικό IoT Υλικό Σε αυτό το μέρος του μαθήματος, θα προσθέσετε έναν χωρητικό αισθητήρα υγρασίας εδάφους στη εικονική IoT συσκευή σας και θα διαβάσετε τιμές από αυτόν. ## Εικονικό Υλικό Η εικονική IoT συσκευή θα χρησιμοποιήσει έναν προσομοιωμένο χωρητικό αισθητήρα υγρασίας εδάφους Grove. Αυτό διατηρεί το εργαστήριο ίδιο με τη χρήση ενός Raspberry Pi με έναν φυσικό χωρητικό αισθητήρα υγρασίας εδάφους Grove. Σε μια φυσική IoT συσκευή, ο αισθητήρας υγρασίας εδάφους θα ήταν ένας χωρητικός αισθητήρας που μετρά την υγρασία του εδάφους ανιχνεύοντας τη χωρητικότητα του εδάφους, μια ιδιότητα που αλλάζει καθώς αλλάζει η υγρασία του εδάφους. Καθώς αυξάνεται η υγρασία του εδάφους, η τάση μειώνεται. Αυτός είναι ένας αναλογικός αισθητήρας, οπότε χρησιμοποιεί έναν προσομοιωμένο 10-bit ADC για να αναφέρει μια τιμή από 1-1,023. ### Προσθήκη του αισθητήρα υγρασίας εδάφους στο CounterFit Για να χρησιμοποιήσετε έναν εικονικό αισθητήρα υγρασίας εδάφους, πρέπει να τον προσθέσετε στην εφαρμογή CounterFit. #### Εργασία - Προσθήκη του αισθητήρα υγρασίας εδάφους στο CounterFit Προσθέστε τον αισθητήρα υγρασίας εδάφους στην εφαρμογή CounterFit. 1. Δημιουργήστε μια νέα εφαρμογή Python στον υπολογιστή σας σε έναν φάκελο που ονομάζεται `soil-moisture-sensor` με ένα μόνο αρχείο που ονομάζεται `app.py` και ένα εικονικό περιβάλλον Python, και προσθέστε τα πακέτα pip του CounterFit. > ⚠️ Μπορείτε να ανατρέξετε [στις οδηγίες για τη δημιουργία και ρύθμιση ενός CounterFit Python project στο μάθημα 1 αν χρειαστεί](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md). 1. Βεβαιωθείτε ότι η εφαρμογή ιστού CounterFit είναι ενεργοποιημένη. 1. Δημιουργήστε έναν αισθητήρα υγρασίας εδάφους: 1. Στο πλαίσιο *Create sensor* στον πίνακα *Sensors*, ανοίξτε το πλαίσιο *Sensor type* και επιλέξτε *Soil Moisture*. 1. Αφήστε τις *Units* ρυθμισμένες σε *NoUnits*. 1. Βεβαιωθείτε ότι το *Pin* είναι ρυθμισμένο στο *0*. 1. Επιλέξτε το κουμπί **Add** για να δημιουργήσετε τον αισθητήρα *Soil Moisture* στο Pin 0. ![Οι ρυθμίσεις του αισθητήρα υγρασίας εδάφους](../../../../../translated_images/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.el.png) Ο αισθητήρας υγρασίας εδάφους θα δημιουργηθεί και θα εμφανιστεί στη λίστα αισθητήρων. ![Ο αισθητήρας υγρασίας εδάφους δημιουργήθηκε](../../../../../translated_images/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.el.png) ## Προγραμματισμός της εφαρμογής του αισθητήρα υγρασίας εδάφους Η εφαρμογή του αισθητήρα υγρασίας εδάφους μπορεί τώρα να προγραμματιστεί χρησιμοποιώντας τους αισθητήρες του CounterFit. ### Εργασία - Προγραμματισμός της εφαρμογής του αισθητήρα υγρασίας εδάφους Προγραμματίστε την εφαρμογή του αισθητήρα υγρασίας εδάφους. 1. Βεβαιωθείτε ότι η εφαρμογή `soil-moisture-sensor` είναι ανοιχτή στο VS Code. 1. Ανοίξτε το αρχείο `app.py`. 1. Προσθέστε τον παρακάτω κώδικα στην κορυφή του `app.py` για να συνδέσετε την εφαρμογή στο CounterFit: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 1. Προσθέστε τον παρακάτω κώδικα στο αρχείο `app.py` για να εισάγετε κάποιες απαιτούμενες βιβλιοθήκες: ```python import time from counterfit_shims_grove.adc import ADC ``` Η δήλωση `import time` εισάγει το module `time` που θα χρησιμοποιηθεί αργότερα σε αυτήν την εργασία. Η δήλωση `from counterfit_shims_grove.adc import ADC` εισάγει την κλάση `ADC` για να αλληλεπιδράσει με έναν εικονικό αναλογικό σε ψηφιακό μετατροπέα που μπορεί να συνδεθεί με έναν αισθητήρα του CounterFit. 1. Προσθέστε τον παρακάτω κώδικα κάτω από αυτό για να δημιουργήσετε μια παρουσία της κλάσης `ADC`: ```python adc = ADC() ``` 1. Προσθέστε έναν άπειρο βρόχο που διαβάζει από αυτόν τον ADC στο pin 0 και γράφει το αποτέλεσμα στην κονσόλα. Αυτός ο βρόχος μπορεί στη συνέχεια να κοιμάται για 10 δευτερόλεπτα μεταξύ των αναγνώσεων. ```python while True: soil_moisture = adc.read(0) print("Soil moisture:", soil_moisture) time.sleep(10) ``` 1. Από την εφαρμογή CounterFit, αλλάξτε την τιμή του αισθητήρα υγρασίας εδάφους που θα διαβαστεί από την εφαρμογή. Μπορείτε να το κάνετε αυτό με δύο τρόπους: * Εισάγετε έναν αριθμό στο πλαίσιο *Value* για τον αισθητήρα υγρασίας εδάφους και στη συνέχεια επιλέξτε το κουμπί **Set**. Ο αριθμός που εισάγετε θα είναι η τιμή που επιστρέφεται από τον αισθητήρα. * Ελέγξτε το πλαίσιο *Random* και εισάγετε μια τιμή *Min* και *Max*, και στη συνέχεια επιλέξτε το κουμπί **Set**. Κάθε φορά που ο αισθητήρας διαβάζει μια τιμή, θα διαβάζει έναν τυχαίο αριθμό μεταξύ *Min* και *Max*. 1. Εκτελέστε την εφαρμογή Python. Θα δείτε τις μετρήσεις υγρασίας εδάφους να γράφονται στην κονσόλα. Αλλάξτε τις ρυθμίσεις *Value* ή *Random* για να δείτε την τιμή να αλλάζει. ```output (.venv) ➜ soil-moisture-sensor $ python app.py Soil moisture: 615 Soil moisture: 612 Soil moisture: 498 Soil moisture: 493 Soil moisture: 490 Soil Moisture: 388 ``` > 💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο [code/virtual-device](../../../../../2-farm/lessons/2-detect-soil-moisture/code/virtual-device). 😀 Το πρόγραμμα του αισθητήρα υγρασίας εδάφους σας ήταν επιτυχές! --- **Αποποίηση ευθύνης**: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.