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.
154 lines
14 KiB
154 lines
14 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "70e5a428b607cd5a9a4f422c2a4df03d",
|
|
"translation_date": "2025-08-27T22:08:14+00:00",
|
|
"source_file": "2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md",
|
|
"language_code": "th"
|
|
}
|
|
-->
|
|
# วัดอุณหภูมิ - ฮาร์ดแวร์ IoT เสมือนจริง
|
|
|
|
ในส่วนนี้ของบทเรียน คุณจะเพิ่มเซ็นเซอร์วัดอุณหภูมิลงในอุปกรณ์ IoT เสมือนจริงของคุณ
|
|
|
|
## ฮาร์ดแวร์เสมือนจริง
|
|
|
|
อุปกรณ์ IoT เสมือนจริงจะใช้เซ็นเซอร์จำลอง Grove Digital Humidity และ Temperature sensor ซึ่งทำให้ห้องทดลองนี้เหมือนกับการใช้งาน Raspberry Pi กับเซ็นเซอร์ Grove DHT11 จริงๆ
|
|
|
|
เซ็นเซอร์นี้รวม **เซ็นเซอร์วัดอุณหภูมิ** กับ **เซ็นเซอร์วัดความชื้น** แต่ในห้องทดลองนี้คุณจะสนใจเฉพาะส่วนของเซ็นเซอร์วัดอุณหภูมิเท่านั้น ในอุปกรณ์ IoT จริง เซ็นเซอร์วัดอุณหภูมิจะเป็น [thermistor](https://wikipedia.org/wiki/Thermistor) ที่วัดอุณหภูมิผ่านการเปลี่ยนแปลงของความต้านทานเมื่ออุณหภูมิเปลี่ยนแปลง เซ็นเซอร์วัดอุณหภูมิมักจะเป็นเซ็นเซอร์ดิจิทัลที่แปลงค่าความต้านทานที่วัดได้เป็นอุณหภูมิในหน่วยองศาเซลเซียส (หรือเคลวิน หรือฟาเรนไฮต์) ภายในตัวเซ็นเซอร์
|
|
|
|
### เพิ่มเซ็นเซอร์ลงใน CounterFit
|
|
|
|
เพื่อใช้เซ็นเซอร์วัดความชื้นและอุณหภูมิเสมือนจริง คุณต้องเพิ่มเซ็นเซอร์ทั้งสองลงในแอป CounterFit
|
|
|
|
#### งาน - เพิ่มเซ็นเซอร์ลงใน CounterFit
|
|
|
|
เพิ่มเซ็นเซอร์วัดความชื้นและอุณหภูมิลงในแอป CounterFit
|
|
|
|
1. สร้างแอป Python ใหม่บนคอมพิวเตอร์ของคุณในโฟลเดอร์ชื่อ `temperature-sensor` พร้อมไฟล์เดียวชื่อ `app.py` และสภาพแวดล้อมเสมือน Python จากนั้นเพิ่มแพ็กเกจ pip ของ CounterFit
|
|
|
|
> ⚠️ คุณสามารถดู [คำแนะนำในการสร้างและตั้งค่าโปรเจกต์ Python สำหรับ CounterFit ในบทเรียนที่ 1 หากจำเป็น](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md)
|
|
|
|
1. ติดตั้งแพ็กเกจ Pip เพิ่มเติมเพื่อเพิ่ม CounterFit shim สำหรับเซ็นเซอร์ DHT11 ตรวจสอบให้แน่ใจว่าคุณกำลังติดตั้งจากเทอร์มินัลที่เปิดใช้งานสภาพแวดล้อมเสมือน
|
|
|
|
```sh
|
|
pip install counterfit-shims-seeed-python-dht
|
|
```
|
|
|
|
1. ตรวจสอบให้แน่ใจว่าแอปเว็บ CounterFit กำลังทำงานอยู่
|
|
|
|
1. สร้างเซ็นเซอร์วัดความชื้น:
|
|
|
|
1. ในกล่อง *Create sensor* ในแถบ *Sensors* เลือก *Sensor type* เป็น *Humidity*
|
|
|
|
1. ตั้งค่า *Units* เป็น *Percentage*
|
|
|
|
1. ตรวจสอบให้แน่ใจว่า *Pin* ตั้งค่าเป็น *5*
|
|
|
|
1. กดปุ่ม **Add** เพื่อสร้างเซ็นเซอร์วัดความชื้นบน Pin 5
|
|
|
|

|
|
|
|
เซ็นเซอร์วัดความชื้นจะถูกสร้างและปรากฏในรายการเซ็นเซอร์
|
|
|
|

|
|
|
|
1. สร้างเซ็นเซอร์วัดอุณหภูมิ:
|
|
|
|
1. ในกล่อง *Create sensor* ในแถบ *Sensors* เลือก *Sensor type* เป็น *Temperature*
|
|
|
|
1. ตั้งค่า *Units* เป็น *Celsius*
|
|
|
|
1. ตรวจสอบให้แน่ใจว่า *Pin* ตั้งค่าเป็น *6*
|
|
|
|
1. กดปุ่ม **Add** เพื่อสร้างเซ็นเซอร์วัดอุณหภูมิบน Pin 6
|
|
|
|

|
|
|
|
เซ็นเซอร์วัดอุณหภูมิจะถูกสร้างและปรากฏในรายการเซ็นเซอร์
|
|
|
|

|
|
|
|
## เขียนโปรแกรมแอปเซ็นเซอร์วัดอุณหภูมิ
|
|
|
|
ตอนนี้คุณสามารถเขียนโปรแกรมแอปเซ็นเซอร์วัดอุณหภูมิได้โดยใช้เซ็นเซอร์ CounterFit
|
|
|
|
### งาน - เขียนโปรแกรมแอปเซ็นเซอร์วัดอุณหภูมิ
|
|
|
|
เขียนโปรแกรมแอปเซ็นเซอร์วัดอุณหภูมิ
|
|
|
|
1. ตรวจสอบให้แน่ใจว่าแอป `temperature-sensor` เปิดอยู่ใน VS Code
|
|
|
|
1. เปิดไฟล์ `app.py`
|
|
|
|
1. เพิ่มโค้ดต่อไปนี้ที่ด้านบนของ `app.py` เพื่อเชื่อมต่อแอปกับ CounterFit:
|
|
|
|
```python
|
|
from counterfit_connection import CounterFitConnection
|
|
CounterFitConnection.init('127.0.0.1', 5000)
|
|
```
|
|
|
|
1. เพิ่มโค้ดต่อไปนี้ในไฟล์ `app.py` เพื่อเรียกใช้ไลบรารีที่จำเป็น:
|
|
|
|
```python
|
|
import time
|
|
from counterfit_shims_seeed_python_dht import DHT
|
|
```
|
|
|
|
คำสั่ง `from seeed_dht import DHT` นำเข้า class `DHT` เพื่อโต้ตอบกับเซ็นเซอร์ Grove วัดอุณหภูมิเสมือนจริงโดยใช้ shim จากโมดูล `counterfit_shims_seeed_python_dht`
|
|
|
|
1. เพิ่มโค้ดต่อไปนี้หลังโค้ดด้านบนเพื่อสร้าง instance ของ class ที่จัดการเซ็นเซอร์วัดความชื้นและอุณหภูมิเสมือนจริง:
|
|
|
|
```python
|
|
sensor = DHT("11", 5)
|
|
```
|
|
|
|
โค้ดนี้ประกาศ instance ของ class `DHT` ที่จัดการเซ็นเซอร์ **D**igital **H**umidity และ **T**emperature เสมือนจริง พารามิเตอร์แรกบอกโค้ดว่าเซ็นเซอร์ที่ใช้คือเซ็นเซอร์เสมือน *DHT11* พารามิเตอร์ที่สองบอกโค้ดว่าเซ็นเซอร์เชื่อมต่ออยู่ที่พอร์ต `5`
|
|
|
|
> 💁 CounterFit จำลองเซ็นเซอร์วัดความชื้นและอุณหภูมิรวมกันโดยเชื่อมต่อกับเซ็นเซอร์ 2 ตัว เซ็นเซอร์วัดความชื้นบนพินที่กำหนดเมื่อสร้าง class `DHT` และเซ็นเซอร์วัดอุณหภูมิที่ทำงานบนพินถัดไป หากเซ็นเซอร์วัดความชื้นอยู่บนพิน 5 shim จะคาดว่าเซ็นเซอร์วัดอุณหภูมิจะอยู่บนพิน 6
|
|
|
|
1. เพิ่มลูปแบบไม่สิ้นสุดหลังโค้ดด้านบนเพื่อดึงค่าจากเซ็นเซอร์วัดอุณหภูมิและแสดงผลในคอนโซล:
|
|
|
|
```python
|
|
while True:
|
|
_, temp = sensor.read()
|
|
print(f'Temperature {temp}°C')
|
|
```
|
|
|
|
การเรียก `sensor.read()` จะคืนค่าทูเพิลของความชื้นและอุณหภูมิ คุณต้องการเฉพาะค่าของอุณหภูมิ ดังนั้นค่าความชื้นจะถูกละเลย ค่าของอุณหภูมิจะถูกแสดงผลในคอนโซล
|
|
|
|
1. เพิ่มการพักการทำงานเล็กน้อยเป็นเวลา 10 วินาทีที่ท้าย `loop` เนื่องจากระดับอุณหภูมิไม่จำเป็นต้องตรวจสอบอย่างต่อเนื่อง การพักการทำงานช่วยลดการใช้พลังงานของอุปกรณ์
|
|
|
|
```python
|
|
time.sleep(10)
|
|
```
|
|
|
|
1. จากเทอร์มินัลใน VS Code ที่เปิดใช้งานสภาพแวดล้อมเสมือน ให้รันคำสั่งต่อไปนี้เพื่อรันแอป Python ของคุณ:
|
|
|
|
```sh
|
|
python app.py
|
|
```
|
|
|
|
1. จากแอป CounterFit เปลี่ยนค่าของเซ็นเซอร์วัดอุณหภูมิที่แอปจะอ่านค่า คุณสามารถทำได้สองวิธี:
|
|
|
|
* ใส่ตัวเลขในกล่อง *Value* สำหรับเซ็นเซอร์วัดอุณหภูมิ จากนั้นกดปุ่ม **Set** ตัวเลขที่คุณใส่จะเป็นค่าที่เซ็นเซอร์คืนกลับมา
|
|
|
|
* เลือกช่อง *Random* และใส่ค่า *Min* และ *Max* จากนั้นกดปุ่ม **Set** ทุกครั้งที่เซ็นเซอร์อ่านค่า มันจะอ่านค่าตัวเลขสุ่มระหว่าง *Min* และ *Max*
|
|
|
|
คุณควรเห็นค่าที่คุณตั้งปรากฏในคอนโซล เปลี่ยนค่า *Value* หรือการตั้งค่า *Random* เพื่อดูค่าที่เปลี่ยนแปลง
|
|
|
|
```output
|
|
(.venv) ➜ temperature-sensor python app.py
|
|
Temperature 28.25°C
|
|
Temperature 30.71°C
|
|
Temperature 25.17°C
|
|
```
|
|
|
|
> 💁 คุณสามารถค้นหาโค้ดนี้ได้ในโฟลเดอร์ [code-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/virtual-device)
|
|
|
|
😀 โปรแกรมเซ็นเซอร์วัดอุณหภูมิของคุณสำเร็จแล้ว!
|
|
|
|
---
|
|
|
|
**ข้อจำกัดความรับผิดชอบ**:
|
|
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ |