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.
IoT-For-Beginners/translations/th/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md

143 lines
13 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "59263d094f20b302053888cd236880c3",
"translation_date": "2025-08-27T22:09:00+00:00",
"source_file": "2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md",
"language_code": "th"
}
-->
# วัดอุณหภูมิ - Wio Terminal
ในส่วนนี้ของบทเรียน คุณจะเพิ่มเซ็นเซอร์วัดอุณหภูมิให้กับ Wio Terminal และอ่านค่าของอุณหภูมิจากเซ็นเซอร์
## ฮาร์ดแวร์
Wio Terminal ต้องการเซ็นเซอร์วัดอุณหภูมิ
เซ็นเซอร์ที่คุณจะใช้คือ [DHT11 humidity and temperature sensor](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html) ซึ่งรวมเซ็นเซอร์ 2 ชนิดไว้ในแพ็คเกจเดียวกัน เซ็นเซอร์นี้ค่อนข้างเป็นที่นิยม โดยมีเซ็นเซอร์ที่วางขายทั่วไปที่รวมการวัดอุณหภูมิ ความชื้น และบางครั้งความดันบรรยากาศด้วย ส่วนของเซ็นเซอร์วัดอุณหภูมิเป็นเทอร์มิสเตอร์แบบ Negative Temperature Coefficient (NTC) ซึ่งความต้านทานจะลดลงเมื่ออุณหภูมิเพิ่มขึ้น
นี่คือเซ็นเซอร์แบบดิจิทัล ดังนั้นจึงมี ADC ในตัวเพื่อสร้างสัญญาณดิจิทัลที่มีข้อมูลอุณหภูมิและความชื้นที่ไมโครคอนโทรลเลอร์สามารถอ่านได้
### เชื่อมต่อเซ็นเซอร์วัดอุณหภูมิ
เซ็นเซอร์วัดอุณหภูมิ Grove สามารถเชื่อมต่อกับพอร์ตดิจิทัลของ Wio Terminal ได้
#### งาน - เชื่อมต่อเซ็นเซอร์วัดอุณหภูมิ
เชื่อมต่อเซ็นเซอร์วัดอุณหภูมิ
![เซ็นเซอร์วัดอุณหภูมิ Grove](../../../../../translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.th.png)
1. เสียบปลายด้านหนึ่งของสาย Grove เข้ากับช่องเสียบบนเซ็นเซอร์วัดความชื้นและอุณหภูมิ สายจะเสียบได้เพียงด้านเดียว
1. เมื่อ Wio Terminal ไม่ได้เชื่อมต่อกับคอมพิวเตอร์หรือแหล่งจ่ายไฟอื่น ให้เชื่อมต่อปลายอีกด้านของสาย Grove เข้ากับช่องเสียบ Grove ด้านขวาบน Wio Terminal เมื่อมองที่หน้าจอ นี่คือช่องเสียบที่อยู่ไกลจากปุ่มเปิดปิดมากที่สุด
![เซ็นเซอร์วัดอุณหภูมิ Grove เชื่อมต่อกับช่องเสียบด้านขวา](../../../../../translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.th.png)
## เขียนโปรแกรมสำหรับเซ็นเซอร์วัดอุณหภูมิ
ตอนนี้ Wio Terminal สามารถเขียนโปรแกรมเพื่อใช้งานเซ็นเซอร์วัดอุณหภูมิที่เชื่อมต่อได้แล้ว
### งาน - เขียนโปรแกรมสำหรับเซ็นเซอร์วัดอุณหภูมิ
เขียนโปรแกรมให้กับอุปกรณ์
1. สร้างโปรเจกต์ Wio Terminal ใหม่โดยใช้ PlatformIO ตั้งชื่อโปรเจกต์นี้ว่า `temperature-sensor` เพิ่มโค้ดในฟังก์ชัน `setup` เพื่อกำหนดค่าพอร์ตอนุกรม
> ⚠️ คุณสามารถดู [คำแนะนำในการสร้างโปรเจกต์ PlatformIO ในโปรเจกต์ 1 บทเรียน 1 ได้หากจำเป็น](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#create-a-platformio-project)
1. เพิ่มไลบรารีที่จำเป็นสำหรับ Seeed Grove Humidity and Temperature sensor ลงในไฟล์ `platformio.ini` ของโปรเจกต์:
```ini
lib_deps =
seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1
```
> ⚠️ คุณสามารถดู [คำแนะนำในการเพิ่มไลบรารีในโปรเจกต์ PlatformIO ในโปรเจกต์ 1 บทเรียน 4 ได้หากจำเป็น](../../../1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md#install-the-wifi-and-mqtt-arduino-libraries)
1. เพิ่มคำสั่ง `#include` ต่อไปนี้ที่ด้านบนของไฟล์ ใต้คำสั่ง `#include <Arduino.h>` ที่มีอยู่แล้ว:
```cpp
#include <DHT.h>
#include <SPI.h>
```
คำสั่งนี้นำเข้าไฟล์ที่จำเป็นสำหรับการทำงานกับเซ็นเซอร์ ไฟล์เฮดเดอร์ `DHT.h` มีโค้ดสำหรับเซ็นเซอร์เอง และการเพิ่มไฟล์เฮดเดอร์ `SPI.h` ช่วยให้โค้ดที่จำเป็นสำหรับการสื่อสารกับเซ็นเซอร์ถูกรวมเข้ามาเมื่อแอปถูกคอมไพล์
1. ก่อนฟังก์ชัน `setup` ให้ประกาศเซ็นเซอร์ DHT:
```cpp
DHT dht(D0, DHT11);
```
คำสั่งนี้ประกาศอินสแตนซ์ของคลาส `DHT` ที่จัดการเซ็นเซอร์ **D**igital **H**umidity และ **T**emperature เซ็นเซอร์นี้เชื่อมต่อกับพอร์ต `D0` ซึ่งเป็นช่องเสียบ Grove ด้านขวาบน Wio Terminal พารามิเตอร์ที่สองบอกโค้ดว่าเซ็นเซอร์ที่ใช้งานคือเซ็นเซอร์ *DHT11* - ไลบรารีที่คุณใช้งานรองรับเซ็นเซอร์รุ่นอื่นด้วย
1. ในฟังก์ชัน `setup` เพิ่มโค้ดเพื่อกำหนดค่าการเชื่อมต่อแบบอนุกรม:
```cpp
void setup()
{
Serial.begin(9600);
while (!Serial)
; // Wait for Serial to be ready
delay(1000);
}
```
1. ที่ท้ายฟังก์ชัน `setup` หลังคำสั่ง `delay` สุดท้าย ให้เพิ่มคำสั่งเริ่มต้นเซ็นเซอร์ DHT:
```cpp
dht.begin();
```
1. ในฟังก์ชัน `loop` เพิ่มโค้ดเพื่อเรียกเซ็นเซอร์และพิมพ์ค่าอุณหภูมิไปยังพอร์ตอนุกรม:
```cpp
void loop()
{
float temp_hum_val[2] = {0};
dht.readTempAndHumidity(temp_hum_val);
Serial.print("Temperature: ");
Serial.print(temp_hum_val[1]);
Serial.println ("°C");
delay(10000);
}
```
โค้ดนี้ประกาศอาร์เรย์ว่างที่มี 2 ค่าแบบ float และส่งอาร์เรย์นี้ไปยังคำสั่ง `readTempAndHumidity` บนอินสแตนซ์ `DHT` คำสั่งนี้จะเติมค่าในอาร์เรย์ด้วย 2 ค่า - ความชื้นจะอยู่ในตำแหน่งที่ 0 ของอาร์เรย์ (จำไว้ว่าที่อยู่ใน C++ เริ่มต้นที่ 0 ดังนั้นตำแหน่งที่ 0 คือ 'ตำแหน่งแรก') และอุณหภูมิจะอยู่ในตำแหน่งที่ 1
ค่าอุณหภูมิจะถูกอ่านจากตำแหน่งที่ 1 ของอาร์เรย์ และพิมพ์ไปยังพอร์ตอนุกรม
> 🇺🇸 ค่าอุณหภูมิที่อ่านได้จะอยู่ในหน่วยเซลเซียส สำหรับชาวอเมริกัน หากต้องการแปลงเป็นฟาเรนไฮต์ ให้หารค่าที่อ่านได้ในหน่วยเซลเซียสด้วย 5 จากนั้นคูณด้วย 9 แล้วบวก 32 ตัวอย่างเช่น ค่าอุณหภูมิ 20°C จะกลายเป็น ((20/5)*9) + 32 = 68°F
1. สร้างและอัปโหลดโค้ดไปยัง Wio Terminal
> ⚠️ คุณสามารถดู [คำแนะนำในการสร้างโปรเจกต์ PlatformIO ในโปรเจกต์ 1 บทเรียน 1 ได้หากจำเป็น](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#write-the-hello-world-app)
1. เมื่ออัปโหลดเสร็จแล้ว คุณสามารถตรวจสอบอุณหภูมิได้โดยใช้ serial monitor:
```output
> Executing task: platformio device monitor <
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at http://bit.ly/pio-monitor-filters
--- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
Temperature: 25.00°C
Temperature: 25.00°C
Temperature: 25.00°C
Temperature: 24.00°C
```
> 💁 คุณสามารถหาโค้ดนี้ได้ในโฟลเดอร์ [code-temperature/wio-terminal](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/wio-terminal)
😀 โปรแกรมเซ็นเซอร์วัดอุณหภูมิของคุณสำเร็จแล้ว!
---
**ข้อจำกัดความรับผิดชอบ**:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาที่เป็นต้นฉบับควรถือว่าเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้