8.0 KiB
Meet temperatuur - Virtuele IoT-hardware
In dit deel van de les voeg je een temperatuursensor toe aan je virtuele IoT-apparaat.
Virtuele hardware
Het virtuele IoT-apparaat maakt gebruik van een gesimuleerde Grove Digital Humidity and Temperature sensor. Dit zorgt ervoor dat deze oefening hetzelfde blijft als het gebruik van een Raspberry Pi met een fysieke Grove DHT11-sensor.
De sensor combineert een temperatuursensor met een vochtigheidssensor, maar in deze oefening ben je alleen geïnteresseerd in de temperatuursensorcomponent. In een fysiek IoT-apparaat zou de temperatuursensor een thermistor zijn die de temperatuur meet door een verandering in weerstand te detecteren naarmate de temperatuur verandert. Temperatuursensoren zijn meestal digitale sensoren die intern de gemeten weerstand omzetten in een temperatuur in graden Celsius (of Kelvin, of Fahrenheit).
Voeg de sensoren toe aan CounterFit
Om een virtuele vochtigheids- en temperatuursensor te gebruiken, moet je de twee sensoren toevoegen aan de CounterFit-app.
Taak - voeg de sensoren toe aan CounterFit
Voeg de vochtigheids- en temperatuursensoren toe aan de CounterFit-app.
-
Maak een nieuwe Python-app op je computer in een map genaamd
temperature-sensor
met een enkel bestand genaamdapp.py
en een Python-virtuele omgeving, en voeg de CounterFit pip-pakketten toe. -
Installeer een extra Pip-pakket om een CounterFit shim voor de DHT11-sensor te installeren. Zorg ervoor dat je dit installeert vanuit een terminal met de virtuele omgeving geactiveerd.
pip install counterfit-shims-seeed-python-dht
-
Zorg ervoor dat de CounterFit-webapp actief is.
-
Maak een vochtigheidssensor aan:
-
In het vak Create sensor in het Sensors-paneel, open het dropdownmenu Sensor type en selecteer Humidity.
-
Laat de Units ingesteld op Percentage.
-
Zorg ervoor dat de Pin is ingesteld op 5.
-
Selecteer de knop Add om de vochtigheidssensor op Pin 5 aan te maken.
De vochtigheidssensor wordt aangemaakt en verschijnt in de sensorenlijst.
-
-
Maak een temperatuursensor aan:
-
In het vak Create sensor in het Sensors-paneel, open het dropdownmenu Sensor type en selecteer Temperature.
-
Laat de Units ingesteld op Celsius.
-
Zorg ervoor dat de Pin is ingesteld op 6.
-
Selecteer de knop Add om de temperatuursensor op Pin 6 aan te maken.
De temperatuursensor wordt aangemaakt en verschijnt in de sensorenlijst.
-
Programmeer de temperatuursensor-app
De temperatuursensor-app kan nu worden geprogrammeerd met behulp van de CounterFit-sensoren.
Taak - programmeer de temperatuursensor-app
Programmeerde temperatuursensor-app.
-
Zorg ervoor dat de
temperature-sensor
-app geopend is in VS Code. -
Open het bestand
app.py
. -
Voeg de volgende code toe aan de bovenkant van
app.py
om de app te verbinden met CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Voeg de volgende code toe aan het bestand
app.py
om de benodigde bibliotheken te importeren:import time from counterfit_shims_seeed_python_dht import DHT
De instructie
from seeed_dht import DHT
importeert deDHT
-sensorclass om te communiceren met een virtuele Grove-temperatuursensor met behulp van een shim uit de modulecounterfit_shims_seeed_python_dht
. -
Voeg de volgende code toe na de bovenstaande code om een instantie te maken van de class die de virtuele vochtigheids- en temperatuursensor beheert:
sensor = DHT("11", 5)
Dit declareert een instantie van de
DHT
-class die de virtuele Digitale Humidity en Temperature sensor beheert. De eerste parameter geeft aan dat de gebruikte sensor een virtuele DHT11-sensor is. De tweede parameter geeft aan dat de sensor is aangesloten op poort5
.💁 CounterFit simuleert deze gecombineerde vochtigheids- en temperatuursensor door verbinding te maken met 2 sensoren: een vochtigheidssensor op de pin die wordt opgegeven bij het maken van de
DHT
-class, en een temperatuursensor die draait op de volgende pin. Als de vochtigheidssensor op pin 5 zit, verwacht de shim dat de temperatuursensor op pin 6 zit. -
Voeg een oneindige lus toe na de bovenstaande code om de waarde van de temperatuursensor op te vragen en deze naar de console te printen:
while True: _, temp = sensor.read() print(f'Temperature {temp}°C')
De aanroep van
sensor.read()
retourneert een tuple van vochtigheid en temperatuur. Je hebt alleen de temperatuurwaarde nodig, dus de vochtigheid wordt genegeerd. De temperatuurwaarde wordt vervolgens naar de console geprint. -
Voeg een korte pauze van tien seconden toe aan het einde van de
loop
, omdat de temperatuurwaarden niet continu hoeven te worden gecontroleerd. Een pauze vermindert het stroomverbruik van het apparaat.time.sleep(10)
-
Voer vanuit de VS Code-terminal met een geactiveerde virtuele omgeving het volgende uit om je Python-app te starten:
python app.py
-
Verander vanuit de CounterFit-app de waarde van de temperatuursensor die door de app wordt gelezen. Je kunt dit op twee manieren doen:
-
Voer een getal in het vak Value in voor de temperatuursensor en selecteer vervolgens de knop Set. Het getal dat je invoert, wordt de waarde die door de sensor wordt geretourneerd.
-
Vink het vakje Random aan en voer een Min- en Max-waarde in, selecteer vervolgens de knop Set. Elke keer dat de sensor een waarde leest, leest deze een willekeurig getal tussen Min en Max.
Je zou de waarden die je hebt ingesteld in de console moeten zien verschijnen. Verander de Value of de Random-instellingen om de waarde te zien veranderen.
(.venv) ➜ temperature-sensor python app.py Temperature 28.25°C Temperature 30.71°C Temperature 25.17°C
-
💁 Je kunt deze code vinden in de map code-temperature/virtual-device.
😀 Je temperatuursensorprogramma is een succes!
Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we ons best doen om nauwkeurigheid te garanderen, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.