You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/th/2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md

127 lines
9.0 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f8f541ee945545017a51aaf309aa37c3",
"translation_date": "2025-08-27T22:12:51+00:00",
"source_file": "2-farm/lessons/3-automated-plant-watering/virtual-device-relay.md",
"language_code": "th"
}
-->
# ควบคุมรีเลย์ - ฮาร์ดแวร์ IoT เสมือน
ในส่วนนี้ของบทเรียน คุณจะเพิ่มรีเลย์เข้าไปในอุปกรณ์ IoT เสมือนของคุณ นอกเหนือจากเซ็นเซอร์วัดความชื้นในดิน และควบคุมมันตามระดับความชื้นในดิน
## ฮาร์ดแวร์เสมือน
อุปกรณ์ IoT เสมือนจะใช้รีเลย์ Grove จำลอง ซึ่งทำให้การทดลองนี้เหมือนกับการใช้ Raspberry Pi กับรีเลย์ Grove จริง
ในอุปกรณ์ IoT จริง รีเลย์จะเป็นรีเลย์แบบเปิดปกติ (หมายความว่าวงจรเอาต์พุตจะเปิดหรือถูกตัดการเชื่อมต่อเมื่อไม่มีสัญญาณส่งไปยังรีเลย์) รีเลย์แบบนี้สามารถจัดการวงจรเอาต์พุตได้สูงสุด 250V และ 10A
### เพิ่มรีเลย์ใน CounterFit
เพื่อใช้รีเลย์เสมือน คุณต้องเพิ่มมันในแอป CounterFit
#### งาน
เพิ่มรีเลย์ในแอป CounterFit
1. เปิดโปรเจกต์ `soil-moisture-sensor` จากบทเรียนที่แล้วใน VS Code หากยังไม่ได้เปิด คุณจะเพิ่มลงในโปรเจกต์นี้
1. ตรวจสอบให้แน่ใจว่าแอปเว็บ CounterFit กำลังทำงานอยู่
1. สร้างรีเลย์:
1. ในกล่อง *Create actuator* ในแถบ *Actuators* คลิกที่กล่อง *Actuator type* และเลือก *Relay*
1. ตั้งค่า *Pin* เป็น *5*
1. คลิกปุ่ม **Add** เพื่อสร้างรีเลย์บน Pin 5
![การตั้งค่ารีเลย์](../../../../../translated_images/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.th.png)
รีเลย์จะถูกสร้างและปรากฏในรายการ actuators
![รีเลย์ที่ถูกสร้าง](../../../../../translated_images/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.th.png)
## เขียนโปรแกรมควบคุมรีเลย์
แอปเซ็นเซอร์วัดความชื้นในดินสามารถเขียนโปรแกรมเพื่อใช้รีเลย์เสมือนได้แล้ว
### งาน
เขียนโปรแกรมอุปกรณ์เสมือน
1. เปิดโปรเจกต์ `soil-moisture-sensor` จากบทเรียนที่แล้วใน VS Code หากยังไม่ได้เปิด คุณจะเพิ่มลงในโปรเจกต์นี้
1. เพิ่มโค้ดต่อไปนี้ในไฟล์ `app.py` ใต้ส่วน imports ที่มีอยู่:
```python
from counterfit_shims_grove.grove_relay import GroveRelay
```
คำสั่งนี้นำเข้า `GroveRelay` จากไลบรารี Grove Python shim เพื่อโต้ตอบกับรีเลย์ Grove เสมือน
1. เพิ่มโค้ดต่อไปนี้ใต้การประกาศคลาส `ADC` เพื่อสร้างอินสแตนซ์ `GroveRelay`:
```python
relay = GroveRelay(5)
```
โค้ดนี้สร้างรีเลย์โดยใช้ Pin **5** ซึ่งเป็นพินที่คุณเชื่อมต่อรีเลย์
1. เพื่อทดสอบว่ารีเลย์ทำงานหรือไม่ ให้เพิ่มโค้ดต่อไปนี้ในลูป `while True:`:
```python
relay.on()
time.sleep(.5)
relay.off()
```
โค้ดนี้เปิดรีเลย์ รอ 0.5 วินาที จากนั้นปิดรีเลย์
1. รันแอป Python รีเลย์จะเปิดและปิดทุกๆ 10 วินาที โดยมีการหน่วงเวลา 0.5 วินาทีระหว่างการเปิดและปิด คุณจะเห็นรีเลย์เสมือนในแอป CounterFit ปิดและเปิดตามการทำงานของรีเลย์
![รีเลย์เสมือนเปิดและปิด](../../../../../images/virtual-relay-turn-on-off.gif)
## ควบคุมรีเลย์จากความชื้นในดิน
ตอนนี้รีเลย์ทำงานแล้ว มันสามารถควบคุมได้ตามการอ่านค่าความชื้นในดิน
### งาน
ควบคุมรีเลย์
1. ลบโค้ด 3 บรรทัดที่คุณเพิ่มเพื่อทดสอบรีเลย์ และแทนที่ด้วยโค้ดต่อไปนี้:
```python
if soil_moisture > 450:
print("Soil Moisture is too low, turning relay on.")
relay.on()
else:
print("Soil Moisture is ok, turning relay off.")
relay.off()
```
โค้ดนี้ตรวจสอบระดับความชื้นในดินจากเซ็นเซอร์วัดความชื้นในดิน หากค่ามากกว่า 450 จะเปิดรีเลย์ และปิดรีเลย์หากค่าต่ำกว่า 450
> 💁 จำไว้ว่าเซ็นเซอร์วัดความชื้นในดินแบบ capacitive จะอ่านค่าความชื้นในดินต่ำเมื่อดินมีความชื้นมาก และในทางกลับกัน
1. รันแอป Python คุณจะเห็นรีเลย์เปิดหรือปิดตามระดับความชื้นในดิน เปลี่ยน *Value* หรือการตั้งค่า *Random* สำหรับเซ็นเซอร์วัดความชื้นในดินเพื่อดูค่าที่เปลี่ยนแปลง
```output
Soil Moisture: 638
Soil Moisture is too low, turning relay on.
Soil Moisture: 452
Soil Moisture is too low, turning relay on.
Soil Moisture: 347
Soil Moisture is ok, turning relay off.
```
> 💁 คุณสามารถหาโค้ดนี้ได้ในโฟลเดอร์ [code-relay/virtual-device](../../../../../2-farm/lessons/3-automated-plant-watering/code-relay/virtual-device)
😀 โปรแกรมเซ็นเซอร์วัดความชื้นในดินเสมือนที่ควบคุมรีเลย์ของคุณสำเร็จแล้ว!
---
**ข้อจำกัดความรับผิดชอบ**:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้