11 KiB
ควบคุมรีเลย์ - Wio Terminal
ในส่วนนี้ของบทเรียน คุณจะเพิ่มรีเลย์เข้าไปใน Wio Terminal ของคุณนอกเหนือจากเซ็นเซอร์วัดความชื้นในดิน และควบคุมรีเลย์ตามระดับความชื้นในดิน
ฮาร์ดแวร์
Wio Terminal ต้องการรีเลย์
รีเลย์ที่คุณจะใช้คือ Grove relay ซึ่งเป็นรีเลย์แบบเปิดปกติ (หมายความว่าวงจรเอาต์พุตจะเปิดหรือถูกตัดการเชื่อมต่อเมื่อไม่มีสัญญาณส่งไปยังรีเลย์) และสามารถรองรับวงจรเอาต์พุตได้สูงสุด 250V และ 10A
นี่เป็นตัวกระตุ้นแบบดิจิทัล ดังนั้นจึงเชื่อมต่อกับขาพอร์ตดิจิทัลบน Wio Terminal พอร์ตแบบรวมอนาล็อก/ดิจิทัลถูกใช้งานอยู่แล้วกับเซ็นเซอร์วัดความชื้นในดิน ดังนั้นรีเลย์นี้จะเชื่อมต่อกับพอร์ตอื่น ซึ่งเป็นพอร์ตแบบรวม I2C และดิจิทัล
เชื่อมต่อรีเลย์
รีเลย์ Grove สามารถเชื่อมต่อกับพอร์ตดิจิทัลของ Wio Terminal ได้
งานที่ต้องทำ
เชื่อมต่อรีเลย์
-
เสียบปลายด้านหนึ่งของสาย Grove เข้ากับซ็อกเก็ตบนรีเลย์ สายจะเสียบได้เพียงด้านเดียว
-
เมื่อ Wio Terminal ถูกตัดการเชื่อมต่อจากคอมพิวเตอร์หรือแหล่งจ่ายไฟอื่น ให้เชื่อมต่อปลายอีกด้านของสาย Grove เข้ากับซ็อกเก็ต Grove ด้านซ้ายบน Wio Terminal (เมื่อมองที่หน้าจอ) โดยปล่อยให้เซ็นเซอร์วัดความชื้นในดินยังคงเชื่อมต่ออยู่กับซ็อกเก็ตด้านขวา
- เสียบเซ็นเซอร์วัดความชื้นในดินลงในดิน หากยังไม่ได้เสียบจากบทเรียนก่อนหน้า
เขียนโปรแกรมควบคุมรีเลย์
ตอนนี้ Wio Terminal สามารถเขียนโปรแกรมเพื่อใช้งานรีเลย์ที่เชื่อมต่ออยู่ได้
งานที่ต้องทำ
เขียนโปรแกรมให้กับอุปกรณ์
-
เปิดโปรเจกต์
soil-moisture-sensor
จากบทเรียนก่อนหน้าใน VS Code หากยังไม่ได้เปิด คุณจะเพิ่มโค้ดในโปรเจกต์นี้ -
ไม่มีไลบรารีสำหรับตัวกระตุ้นนี้ - มันเป็นตัวกระตุ้นแบบดิจิทัลที่ควบคุมด้วยสัญญาณสูงหรือต่ำ การเปิดใช้งานทำได้โดยการส่งสัญญาณสูงไปยังขา (3.3V) และการปิดใช้งานทำได้โดยการส่งสัญญาณต่ำ (0V) คุณสามารถทำได้โดยใช้ฟังก์ชัน
digitalWrite
ที่มีอยู่ใน Arduino เริ่มต้นโดยเพิ่มโค้ดต่อไปนี้ที่ด้านล่างของฟังก์ชันsetup
เพื่อกำหนดพอร์ต I2C/ดิจิทัลให้เป็นขาเอาต์พุตเพื่อส่งแรงดันไฟฟ้าไปยังรีเลย์:pinMode(PIN_WIRE_SCL, OUTPUT);
PIN_WIRE_SCL
คือหมายเลขพอร์ตสำหรับพอร์ต I2C/ดิจิทัล -
เพื่อทดสอบว่ารีเลย์ทำงานหรือไม่ ให้เพิ่มโค้ดต่อไปนี้ในฟังก์ชัน
loop
ด้านล่างdelay
สุดท้าย:digitalWrite(PIN_WIRE_SCL, HIGH); delay(500); digitalWrite(PIN_WIRE_SCL, LOW);
โค้ดนี้จะส่งสัญญาณสูงไปยังขาที่รีเลย์เชื่อมต่อเพื่อเปิดใช้งานรีเลย์ รอ 500 มิลลิวินาที (ครึ่งวินาที) จากนั้นส่งสัญญาณต่ำเพื่อปิดรีเลย์
-
สร้างและอัปโหลดโค้ดไปยัง Wio Terminal
-
เมื่ออัปโหลดเสร็จ รีเลย์จะเปิดและปิดทุกๆ 10 วินาที โดยมีความล่าช้าครึ่งวินาทีระหว่างการเปิดและปิด คุณจะได้ยินเสียงคลิกเมื่อรีเลย์เปิดและปิด และไฟ LED บนบอร์ด Grove จะสว่างเมื่อรีเลย์เปิด และดับเมื่อรีเลย์ปิด
ควบคุมรีเลย์ด้วยความชื้นในดิน
เมื่อรีเลย์ทำงานแล้ว คุณสามารถควบคุมมันตามค่าความชื้นในดินได้
งานที่ต้องทำ
ควบคุมรีเลย์
-
ลบ 3 บรรทัดของโค้ดที่คุณเพิ่มเพื่อทดสอบรีเลย์ จากนั้นแทนที่ด้วยโค้ดต่อไปนี้:
if (soil_moisture > 450) { Serial.println("Soil Moisture is too low, turning relay on."); digitalWrite(PIN_WIRE_SCL, HIGH); } else { Serial.println("Soil Moisture is ok, turning relay off."); digitalWrite(PIN_WIRE_SCL, LOW); }
โค้ดนี้จะตรวจสอบค่าความชื้นในดินจากเซ็นเซอร์วัดความชื้นในดิน หากค่ามากกว่า 450 จะเปิดรีเลย์ และปิดรีเลย์เมื่อค่าต่ำกว่า 450
💁 จำไว้ว่าเซ็นเซอร์วัดความชื้นในดินแบบ capacitive จะอ่านค่าความชื้นในดินที่ต่ำกว่าเมื่อดินมีความชื้นมาก และในทางกลับกัน
-
สร้างและอัปโหลดโค้ดไปยัง Wio Terminal
-
ตรวจสอบอุปกรณ์ผ่าน serial monitor คุณจะเห็นรีเลย์เปิดหรือปิดตามค่าความชื้นในดิน ลองในดินแห้ง จากนั้นเติมน้ำ
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/wio-terminal
😀 โปรแกรมควบคุมรีเลย์ด้วยเซ็นเซอร์วัดความชื้นในดินของคุณสำเร็จแล้ว!
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้