5.6 KiB
Toprak Nemini Ölç - Sanal IoT Donanımı
Bu dersin bu bölümünde, sanal IoT cihazınıza kapasitif bir toprak nem sensörü ekleyecek ve ondan değerler okuyacaksınız.
Sanal Donanım
Sanal IoT cihazı, simüle edilmiş bir Grove kapasitif toprak nem sensörü kullanacaktır. Bu, fiziksel bir Grove kapasitif toprak nem sensörü ile bir Raspberry Pi kullanmaya benzer bir deneyim sağlar.
Fiziksel bir IoT cihazında, toprak nem sensörü, toprağın nemini, toprağın kapasitansını algılayarak ölçen kapasitif bir sensör olurdu. Toprağın nemi arttıkça, voltaj düşer.
Bu bir analog sensördür ve 1-1.023 arasında bir değer raporlamak için simüle edilmiş 10-bit bir ADC kullanır.
Toprak nem sensörünü CounterFit'e ekleyin
Sanal bir toprak nem sensörü kullanmak için, bunu CounterFit uygulamasına eklemeniz gerekir.
Görev - Toprak nem sensörünü CounterFit'e ekleyin
Toprak nem sensörünü CounterFit uygulamasına ekleyin.
-
Bilgisayarınızda
soil-moisture-sensor
adlı bir klasördeapp.py
adlı tek bir dosya içeren yeni bir Python uygulaması oluşturun ve bir Python sanal ortamı oluşturup CounterFit pip paketlerini ekleyin.⚠️ Gerekirse 1. dersteki CounterFit Python projesi oluşturma ve ayarlama talimatlarına başvurabilirsiniz.
-
CounterFit web uygulamasının çalıştığından emin olun.
-
Bir toprak nem sensörü oluşturun:
-
Sensors panelindeki Create sensor kutusunda, Sensor type açılır kutusundan Soil Moisture seçeneğini seçin.
-
Units ayarını NoUnits olarak bırakın.
-
Pin ayarının 0 olduğundan emin olun.
-
Pin 0 üzerinde Soil Moisture sensörünü oluşturmak için Add düğmesine tıklayın.
Toprak nem sensörü oluşturulacak ve sensörler listesinde görünecektir.
-
Toprak nem sensörü uygulamasını programlayın
Toprak nem sensörü uygulaması artık CounterFit sensörlerini kullanarak programlanabilir.
Görev - Toprak nem sensörü uygulamasını programlayın
Toprak nem sensörü uygulamasını programlayın.
-
soil-moisture-sensor
uygulamasının VS Code'da açık olduğundan emin olun. -
app.py
dosyasını açın. -
Uygulamayı CounterFit'e bağlamak için aşağıdaki kodu
app.py
dosyasının en üstüne ekleyin:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Gerekli bazı kütüphaneleri içe aktarmak için aşağıdaki kodu
app.py
dosyasına ekleyin:import time from counterfit_shims_grove.adc import ADC
import time
ifadesi, bu ödevde daha sonra kullanılacak olantime
modülünü içe aktarır.from counterfit_shims_grove.adc import ADC
ifadesi, CounterFit sensörüne bağlanabilen sanal bir analog-dijital çeviriciyle etkileşim kurmak içinADC
sınıfını içe aktarır. -
ADC
sınıfının bir örneğini oluşturmak için aşağıdaki kodu ekleyin:adc = ADC()
-
Pin 0'daki bu ADC'den okuma yapan ve sonucu konsola yazan sonsuz bir döngü ekleyin. Bu döngü, okumalar arasında 10 saniye bekleyebilir.
while True: soil_moisture = adc.read(0) print("Soil moisture:", soil_moisture) time.sleep(10)
-
CounterFit uygulamasından, uygulama tarafından okunacak toprak nem sensörünün değerini değiştirin. Bunu iki şekilde yapabilirsiniz:
-
Toprak nem sensörü için Value kutusuna bir sayı girin ve ardından Set düğmesine tıklayın. Girdiğiniz sayı, sensör tarafından döndürülen değer olacaktır.
-
Random kutusunu işaretleyin ve bir Min ve Max değeri girin, ardından Set düğmesine tıklayın. Sensör her okuma yaptığında, Min ve Max arasında rastgele bir sayı okuyacaktır.
-
-
Python uygulamasını çalıştırın. Toprak nem ölçümlerinin konsola yazıldığını göreceksiniz. Değeri değiştirmek için Value veya Random ayarlarını değiştirin.
(.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
💁 Bu kodu code/virtual-device klasöründe bulabilirsiniz.
😀 Toprak nem sensörü programınız başarıyla çalıştı!
Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.