5.6 KiB
Mäta jordfuktighet - Virtuell IoT-hårdvara
I denna del av lektionen kommer du att lägga till en kapacitiv jordfuktighetssensor till din virtuella IoT-enhet och läsa värden från den.
Virtuell hårdvara
Den virtuella IoT-enheten kommer att använda en simulerad Grove kapacitiv jordfuktighetssensor. Detta gör att labbet förblir detsamma som att använda en Raspberry Pi med en fysisk Grove kapacitiv jordfuktighetssensor.
I en fysisk IoT-enhet skulle jordfuktighetssensorn vara en kapacitiv sensor som mäter jordfuktighet genom att detektera jordens kapacitans, en egenskap som förändras när jordfuktigheten ändras. När jordfuktigheten ökar, minskar spänningen.
Detta är en analog sensor, så den använder en simulerad 10-bitars ADC för att rapportera ett värde mellan 1-1 023.
Lägg till jordfuktighetssensorn i CounterFit
För att använda en virtuell jordfuktighetssensor måste du lägga till den i CounterFit-appen.
Uppgift - Lägg till jordfuktighetssensorn i CounterFit
Lägg till jordfuktighetssensorn i CounterFit-appen.
-
Skapa en ny Python-app på din dator i en mapp som heter
soil-moisture-sensor
med en enda fil som heterapp.py
och en Python-virtuell miljö, och lägg till CounterFit pip-paketen.⚠️ Du kan hänvisa till instruktionerna för att skapa och ställa in ett CounterFit Python-projekt i lektion 1 om det behövs.
-
Se till att CounterFit-webbappen körs.
-
Skapa en jordfuktighetssensor:
-
I rutan Create sensor i panelen Sensors, öppna rullgardinsmenyn Sensor type och välj Soil Moisture.
-
Låt Units vara inställd på NoUnits.
-
Kontrollera att Pin är inställd på 0.
-
Välj knappen Add för att skapa Soil Moisture-sensorn på Pin 0.
Jordfuktighetssensorn kommer att skapas och visas i sensorlistan.
-
Programmera appen för jordfuktighetssensorn
Appen för jordfuktighetssensorn kan nu programmeras med hjälp av CounterFit-sensorer.
Uppgift - Programmera appen för jordfuktighetssensorn
Programmera appen för jordfuktighetssensorn.
-
Se till att appen
soil-moisture-sensor
är öppen i VS Code. -
Öppna filen
app.py
. -
Lägg till följande kod högst upp i
app.py
för att ansluta appen till CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Lägg till följande kod i filen
app.py
för att importera några nödvändiga bibliotek:import time from counterfit_shims_grove.adc import ADC
import time
-satsen importerar modulentime
som kommer att användas senare i denna uppgift.from counterfit_shims_grove.adc import ADC
-satsen importerar klassenADC
för att interagera med en virtuell analog-till-digital-omvandlare som kan anslutas till en CounterFit-sensor. -
Lägg till följande kod under detta för att skapa en instans av klassen
ADC
:adc = ADC()
-
Lägg till en oändlig loop som läser från denna ADC på pin 0 och skriver resultatet till konsolen. Denna loop kan sedan pausa i 10 sekunder mellan avläsningarna.
while True: soil_moisture = adc.read(0) print("Soil moisture:", soil_moisture) time.sleep(10)
-
Från CounterFit-appen, ändra värdet på jordfuktighetssensorn som kommer att läsas av appen. Du kan göra detta på två sätt:
-
Ange ett nummer i rutan Value för jordfuktighetssensorn och välj sedan knappen Set. Numret du anger kommer att vara det värde som sensorn returnerar.
-
Markera kryssrutan Random och ange ett Min- och Max-värde, och välj sedan knappen Set. Varje gång sensorn läser ett värde kommer den att läsa ett slumpmässigt nummer mellan Min och Max.
-
-
Kör Python-appen. Du kommer att se jordfuktighetsmätningarna skrivna till konsolen. Ändra Value eller inställningarna för Random för att se värdet ändras.
(.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
💁 Du kan hitta denna kod i mappen code/virtual-device.
😀 Din jordfuktighetssensorprogram var en framgång!
Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiserade översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.