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.
114 lines
9.1 KiB
114 lines
9.1 KiB
# ควบคุมรีเลย์ - Raspberry Pi
|
|
|
|
ในส่วนนี้ของบทเรียน คุณจะเพิ่มรีเลย์เข้าไปใน Raspberry Pi ของคุณเพิ่มเติมจากเซ็นเซอร์วัดความชื้นในดิน และควบคุมมันตามระดับความชื้นในดิน
|
|
|
|
## ฮาร์ดแวร์
|
|
|
|
Raspberry Pi ต้องการรีเลย์
|
|
|
|
รีเลย์ที่คุณจะใช้คือ [Grove relay](https://www.seeedstudio.com/Grove-Relay.html) ซึ่งเป็นรีเลย์แบบเปิดปกติ (หมายความว่าวงจรเอาต์พุตจะเปิดหรือถูกตัดการเชื่อมต่อเมื่อไม่มีสัญญาณส่งไปยังรีเลย์) และสามารถรองรับวงจรเอาต์พุตได้สูงสุด 250V และ 10A
|
|
|
|
นี่คืออุปกรณ์แอคชูเอเตอร์แบบดิจิทัล ดังนั้นจึงเชื่อมต่อกับพินดิจิทัลบน Grove Base Hat
|
|
|
|
### เชื่อมต่อรีเลย์
|
|
|
|
รีเลย์ Grove สามารถเชื่อมต่อกับ Raspberry Pi ได้
|
|
|
|
#### งาน
|
|
|
|
เชื่อมต่อรีเลย์
|
|
|
|

|
|
|
|
1. เสียบปลายด้านหนึ่งของสาย Grove เข้ากับช่องเสียบบนรีเลย์ สายจะเสียบได้เพียงด้านเดียวเท่านั้น
|
|
|
|
1. เมื่อ Raspberry Pi ปิดอยู่ ให้เชื่อมต่อปลายอีกด้านของสาย Grove เข้ากับช่องเสียบดิจิทัลที่มีเครื่องหมาย **D5** บน Grove Base Hat ที่ติดตั้งอยู่กับ Pi ช่องนี้เป็นช่องที่สองจากซ้ายในแถวของช่องเสียบที่อยู่ถัดจากพิน GPIO ปล่อยให้เซ็นเซอร์วัดความชื้นในดินเชื่อมต่ออยู่กับช่อง **A0**
|
|
|
|

|
|
|
|
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 จะสว่างเมื่อรีเลย์เปิด และดับเมื่อรีเลย์ปิด
|
|
|
|

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