# ควบคุมรีเลย์ - ฮาร์ดแวร์ 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) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้