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.
116 lines
10 KiB
116 lines
10 KiB
# วัดอุณหภูมิ - Raspberry Pi
|
|
|
|
ในส่วนนี้ของบทเรียน คุณจะเพิ่มเซ็นเซอร์วัดอุณหภูมิให้กับ Raspberry Pi ของคุณ
|
|
|
|
## ฮาร์ดแวร์
|
|
|
|
เซ็นเซอร์ที่คุณจะใช้คือ [DHT11 humidity and temperature sensor](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html) ซึ่งรวมเซ็นเซอร์ 2 ตัวไว้ในแพ็กเกจเดียวกัน เซ็นเซอร์นี้ค่อนข้างเป็นที่นิยม โดยมีเซ็นเซอร์ที่วางจำหน่ายในเชิงพาณิชย์หลายตัวที่รวมการวัดอุณหภูมิ ความชื้น และบางครั้งความดันบรรยากาศ เซ็นเซอร์วัดอุณหภูมิในตัวนี้เป็นเทอร์มิสเตอร์ชนิด NTC (Negative Temperature Coefficient) ซึ่งเป็นเทอร์มิสเตอร์ที่ค่าความต้านทานลดลงเมื่ออุณหภูมิเพิ่มขึ้น
|
|
|
|
เซ็นเซอร์นี้เป็นเซ็นเซอร์แบบดิจิทัล โดยมี ADC ในตัวเพื่อสร้างสัญญาณดิจิทัลที่มีข้อมูลอุณหภูมิและความชื้นที่ไมโครคอนโทรลเลอร์สามารถอ่านได้
|
|
|
|
### เชื่อมต่อเซ็นเซอร์วัดอุณหภูมิ
|
|
|
|
เซ็นเซอร์วัดอุณหภูมิ Grove สามารถเชื่อมต่อกับ Raspberry Pi ได้
|
|
|
|
#### งานที่ต้องทำ
|
|
|
|
เชื่อมต่อเซ็นเซอร์วัดอุณหภูมิ
|
|
|
|

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

|
|
|
|
## เขียนโปรแกรมเซ็นเซอร์วัดอุณหภูมิ
|
|
|
|
ตอนนี้คุณสามารถเขียนโปรแกรมเพื่อใช้งานเซ็นเซอร์วัดอุณหภูมิที่เชื่อมต่ออยู่ได้แล้ว
|
|
|
|
### งานที่ต้องทำ
|
|
|
|
เขียนโปรแกรมให้กับอุปกรณ์
|
|
|
|
1. เปิด Raspberry Pi และรอให้บูตเสร็จ
|
|
|
|
1. เปิด VS Code ไม่ว่าจะเปิดโดยตรงบน Pi หรือเชื่อมต่อผ่าน Remote SSH extension
|
|
|
|
> ⚠️ คุณสามารถดู [คำแนะนำในการตั้งค่าและเปิด VS Code ในบทเรียนที่ 1 หากจำเป็น](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md)
|
|
|
|
1. จาก Terminal สร้างโฟลเดอร์ใหม่ในไดเรกทอรีบ้านของผู้ใช้ `pi` โดยตั้งชื่อว่า `temperature-sensor` และสร้างไฟล์ในโฟลเดอร์นี้ชื่อว่า `app.py`:
|
|
|
|
```sh
|
|
mkdir temperature-sensor
|
|
cd temperature-sensor
|
|
touch app.py
|
|
```
|
|
|
|
1. เปิดโฟลเดอร์นี้ใน VS Code
|
|
|
|
1. เพื่อใช้งานเซ็นเซอร์วัดอุณหภูมิและความชื้น จำเป็นต้องติดตั้งแพ็กเกจ Pip เพิ่มเติม จาก Terminal ใน VS Code ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งแพ็กเกจ Pip บน Pi:
|
|
|
|
```sh
|
|
pip3 install seeed-python-dht
|
|
```
|
|
|
|
1. เพิ่มโค้ดต่อไปนี้ในไฟล์ `app.py` เพื่อ import ไลบรารีที่จำเป็น:
|
|
|
|
```python
|
|
import time
|
|
from seeed_dht import DHT
|
|
```
|
|
|
|
คำสั่ง `from seeed_dht import DHT` จะ import คลาส `DHT` เพื่อใช้งานเซ็นเซอร์วัดอุณหภูมิ Grove จากโมดูล `seeed_dht`
|
|
|
|
1. เพิ่มโค้ดต่อไปนี้หลังจากโค้ดด้านบนเพื่อสร้าง instance ของคลาสที่จัดการเซ็นเซอร์วัดอุณหภูมิ:
|
|
|
|
```python
|
|
sensor = DHT("11", 5)
|
|
```
|
|
|
|
โค้ดนี้ประกาศ instance ของคลาส `DHT` ที่จัดการเซ็นเซอร์วัดความชื้นและอุณหภูมิแบบดิจิทัล พารามิเตอร์แรกบอกโค้ดว่าเซ็นเซอร์ที่ใช้งานคือเซ็นเซอร์ *DHT11* ซึ่งไลบรารีที่คุณใช้งานรองรับเซ็นเซอร์รุ่นอื่น ๆ ด้วย พารามิเตอร์ที่สองบอกโค้ดว่าเซ็นเซอร์เชื่อมต่ออยู่กับช่องดิจิทัล `D5` บน Grove base hat
|
|
|
|
> ✅ จำไว้ว่า ช่องเสียบทั้งหมดมีหมายเลขพินเฉพาะ พิน 0, 2, 4, และ 6 เป็นพินอนาล็อก ส่วนพิน 5, 16, 18, 22, 24, และ 26 เป็นพินดิจิทัล
|
|
|
|
1. เพิ่มลูปแบบไม่สิ้นสุดหลังจากโค้ดด้านบนเพื่อดึงค่าจากเซ็นเซอร์วัดอุณหภูมิและแสดงผลในคอนโซล:
|
|
|
|
```python
|
|
while True:
|
|
_, temp = sensor.read()
|
|
print(f'Temperature {temp}°C')
|
|
```
|
|
|
|
การเรียก `sensor.read()` จะคืนค่าทูเพิลที่มีข้อมูลความชื้นและอุณหภูมิ คุณต้องการเพียงค่าของอุณหภูมิ ดังนั้นค่าความชื้นจะถูกละไว้ ค่าของอุณหภูมิจะถูกแสดงผลในคอนโซล
|
|
|
|
1. เพิ่มคำสั่ง sleep สั้น ๆ เป็นเวลา 10 วินาทีที่ท้าย `loop` เนื่องจากไม่จำเป็นต้องตรวจสอบระดับอุณหภูมิอย่างต่อเนื่อง การ sleep จะช่วยลดการใช้พลังงานของอุปกรณ์
|
|
|
|
```python
|
|
time.sleep(10)
|
|
```
|
|
|
|
1. จาก Terminal ใน VS Code รันคำสั่งต่อไปนี้เพื่อรันแอป Python ของคุณ:
|
|
|
|
```sh
|
|
python3 app.py
|
|
```
|
|
|
|
คุณควรเห็นค่าของอุณหภูมิแสดงผลในคอนโซล ใช้สิ่งที่สามารถทำให้เซ็นเซอร์ร้อนขึ้น เช่น กดนิ้วโป้งลงบนเซ็นเซอร์ หรือใช้พัดลมเพื่อดูค่าที่เปลี่ยนแปลง:
|
|
|
|
```output
|
|
pi@raspberrypi:~/temperature-sensor $ python3 app.py
|
|
Temperature 26°C
|
|
Temperature 26°C
|
|
Temperature 28°C
|
|
Temperature 30°C
|
|
Temperature 32°C
|
|
```
|
|
|
|
> 💁 คุณสามารถค้นหาโค้ดนี้ได้ในโฟลเดอร์ [code-temperature/pi](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/pi)
|
|
|
|
😀 โปรแกรมเซ็นเซอร์วัดอุณหภูมิของคุณสำเร็จแล้ว!
|
|
|
|
---
|
|
|
|
**ข้อจำกัดความรับผิดชอบ**:
|
|
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยระบบอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ |