# ควบคุมรีเลย์ - Raspberry Pi ในส่วนนี้ของบทเรียน คุณจะเพิ่มรีเลย์เข้าไปใน Raspberry Pi ของคุณเพิ่มเติมจากเซ็นเซอร์วัดความชื้นในดิน และควบคุมมันตามระดับความชื้นในดิน ## ฮาร์ดแวร์ Raspberry Pi ต้องการรีเลย์ รีเลย์ที่คุณจะใช้คือ [Grove relay](https://www.seeedstudio.com/Grove-Relay.html) ซึ่งเป็นรีเลย์แบบเปิดปกติ (หมายความว่าวงจรเอาต์พุตจะเปิดหรือถูกตัดการเชื่อมต่อเมื่อไม่มีสัญญาณส่งไปยังรีเลย์) และสามารถรองรับวงจรเอาต์พุตได้สูงสุด 250V และ 10A นี่คืออุปกรณ์แอคชูเอเตอร์แบบดิจิทัล ดังนั้นจึงเชื่อมต่อกับพินดิจิทัลบน Grove Base Hat ### เชื่อมต่อรีเลย์ รีเลย์ Grove สามารถเชื่อมต่อกับ Raspberry Pi ได้ #### งาน เชื่อมต่อรีเลย์ ![รีเลย์ Grove](../../../../../translated_images/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.th.png) 1. เสียบปลายด้านหนึ่งของสาย Grove เข้ากับช่องเสียบบนรีเลย์ สายจะเสียบได้เพียงด้านเดียวเท่านั้น 1. เมื่อ Raspberry Pi ปิดอยู่ ให้เชื่อมต่อปลายอีกด้านของสาย Grove เข้ากับช่องเสียบดิจิทัลที่มีเครื่องหมาย **D5** บน Grove Base Hat ที่ติดตั้งอยู่กับ Pi ช่องนี้เป็นช่องที่สองจากซ้ายในแถวของช่องเสียบที่อยู่ถัดจากพิน GPIO ปล่อยให้เซ็นเซอร์วัดความชื้นในดินเชื่อมต่ออยู่กับช่อง **A0** ![รีเลย์ Grove เชื่อมต่อกับช่อง D5 และเซ็นเซอร์วัดความชื้นในดินเชื่อมต่อกับช่อง A0](../../../../../translated_images/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.th.png) 1. เสียบเซ็นเซอร์วัดความชื้นในดินลงในดิน หากยังไม่ได้เสียบจากบทเรียนก่อนหน้า ## เขียนโปรแกรมควบคุมรีเลย์ ตอนนี้ Raspberry Pi สามารถเขียนโปรแกรมเพื่อใช้งานรีเลย์ที่เชื่อมต่ออยู่ได้แล้ว ### งาน เขียนโปรแกรมให้กับอุปกรณ์ 1. เปิด Raspberry Pi และรอให้บูตเสร็จ 1. เปิดโปรเจกต์ `soil-moisture-sensor` จากบทเรียนก่อนหน้าใน VS Code หากยังไม่ได้เปิด คุณจะเพิ่มโค้ดในโปรเจกต์นี้ 1. เพิ่มโค้ดต่อไปนี้ในไฟล์ `app.py` ใต้ส่วนของการนำเข้าโค้ดที่มีอยู่แล้ว: ```python from grove.grove_relay import GroveRelay ``` คำสั่งนี้นำเข้า `GroveRelay` จากไลบรารี Python ของ Grove เพื่อใช้งานกับรีเลย์ Grove 1. เพิ่มโค้ดต่อไปนี้ใต้การประกาศคลาส `ADC` เพื่อสร้างอินสแตนซ์ของ `GroveRelay`: ```python relay = GroveRelay(5) ``` โค้ดนี้สร้างรีเลย์โดยใช้พิน **D5** ซึ่งเป็นพินดิจิทัลที่คุณเชื่อมต่อรีเลย์ไว้ 1. เพื่อทดสอบว่ารีเลย์ทำงานหรือไม่ ให้เพิ่มโค้ดต่อไปนี้ในลูป `while True:`: ```python relay.on() time.sleep(.5) relay.off() ``` โค้ดนี้จะเปิดรีเลย์ รอ 0.5 วินาที แล้วปิดรีเลย์ 1. รันแอป Python รีเลย์จะเปิดและปิดทุกๆ 10 วินาที โดยมีการหน่วงเวลา 0.5 วินาทีระหว่างการเปิดและปิด คุณจะได้ยินเสียงคลิกของรีเลย์เมื่อเปิดและปิด และไฟ LED บนบอร์ด Grove จะสว่างเมื่อรีเลย์เปิด และดับเมื่อรีเลย์ปิด ![รีเลย์เปิดและปิด](../../../../../images/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 คุณจะเห็นรีเลย์เปิดหรือปิดขึ้นอยู่กับค่าความชื้นในดิน ลองในดินแห้ง แล้วเติมน้ำดู ```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/pi](../../../../../2-farm/lessons/3-automated-plant-watering/code-relay/pi) 😀 โปรแกรมควบคุมรีเลย์ด้วยเซ็นเซอร์วัดความชื้นในดินของคุณสำเร็จแล้ว! --- **ข้อจำกัดความรับผิดชอบ**: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้