|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "2bf65f162bcebd35fbcba5fd245afac4",
|
|
|
"translation_date": "2025-08-25T21:41:01+00:00",
|
|
|
"source_file": "2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md",
|
|
|
"language_code": "fa"
|
|
|
}
|
|
|
-->
|
|
|
# اندازهگیری رطوبت خاک - سختافزار مجازی IoT
|
|
|
|
|
|
در این بخش از درس، یک حسگر رطوبت خاک خازنی به دستگاه IoT مجازی خود اضافه میکنید و مقادیر آن را میخوانید.
|
|
|
|
|
|
## سختافزار مجازی
|
|
|
|
|
|
دستگاه IoT مجازی از یک حسگر رطوبت خاک خازنی شبیهسازیشده Grove استفاده خواهد کرد. این کار باعث میشود این آزمایش مشابه استفاده از یک Raspberry Pi با یک حسگر رطوبت خاک خازنی فیزیکی باشد.
|
|
|
|
|
|
در یک دستگاه IoT فیزیکی، حسگر رطوبت خاک یک حسگر خازنی است که رطوبت خاک را با تشخیص ظرفیت خازنی خاک اندازهگیری میکند، خاصیتی که با تغییر رطوبت خاک تغییر میکند. با افزایش رطوبت خاک، ولتاژ کاهش مییابد.
|
|
|
|
|
|
این حسگر آنالوگ است و از یک مبدل آنالوگ به دیجیتال ۱۰ بیتی شبیهسازیشده برای گزارش مقدار بین ۱ تا ۱۰۲۳ استفاده میکند.
|
|
|
|
|
|
### افزودن حسگر رطوبت خاک به CounterFit
|
|
|
|
|
|
برای استفاده از یک حسگر رطوبت خاک مجازی، باید آن را به برنامه CounterFit اضافه کنید.
|
|
|
|
|
|
#### وظیفه - افزودن حسگر رطوبت خاک به CounterFit
|
|
|
|
|
|
حسگر رطوبت خاک را به برنامه CounterFit اضافه کنید.
|
|
|
|
|
|
1. یک برنامه پایتون جدید در رایانه خود در پوشهای به نام `soil-moisture-sensor` با یک فایل به نام `app.py` و یک محیط مجازی پایتون ایجاد کنید و بستههای pip مربوط به CounterFit را اضافه کنید.
|
|
|
|
|
|
> ⚠️ میتوانید به [دستورالعملهای ایجاد و تنظیم یک پروژه پایتون CounterFit در درس ۱ در صورت نیاز](../../../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* روی پین ۰ ایجاد شود.
|
|
|
|
|
|

|
|
|
|
|
|
حسگر رطوبت خاک ایجاد شده و در لیست حسگرها ظاهر میشود.
|
|
|
|
|
|

|
|
|
|
|
|
## برنامهنویسی برنامه حسگر رطوبت خاک
|
|
|
|
|
|
اکنون میتوانید برنامه حسگر رطوبت خاک را با استفاده از حسگرهای 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` ماژول `time` را وارد میکند که بعداً در این تمرین استفاده خواهد شد.
|
|
|
|
|
|
دستور `from counterfit_shims_grove.adc import ADC` کلاس `ADC` را وارد میکند تا با یک مبدل آنالوگ به دیجیتال مجازی که میتواند به یک حسگر CounterFit متصل شود، تعامل داشته باشد.
|
|
|
|
|
|
1. کد زیر را در ادامه اضافه کنید تا یک نمونه از کلاس `ADC` ایجاد شود:
|
|
|
|
|
|
```python
|
|
|
adc = ADC()
|
|
|
```
|
|
|
|
|
|
1. یک حلقه بینهایت اضافه کنید که از این ADC روی پین ۰ بخواند و نتیجه را در کنسول بنویسد. این حلقه میتواند بین خواندنها به مدت ۱۰ ثانیه متوقف شود.
|
|
|
|
|
|
```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. برنامه پایتون را اجرا کنید. خواهید دید که اندازهگیریهای رطوبت خاک در کنسول نوشته میشوند. مقدار *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) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم. |