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.
143 lines
13 KiB
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 ได้
|
|
|
|
#### งาน - เชื่อมต่อเซ็นเซอร์วัดอุณหภูมิ
|
|
|
|
เชื่อมต่อเซ็นเซอร์วัดอุณหภูมิ
|
|
|
|

|
|
|
|
1. เสียบปลายด้านหนึ่งของสาย Grove เข้ากับช่องเสียบบนเซ็นเซอร์วัดความชื้นและอุณหภูมิ สายจะเสียบได้เพียงด้านเดียว
|
|
|
|
1. เมื่อ Wio Terminal ไม่ได้เชื่อมต่อกับคอมพิวเตอร์หรือแหล่งจ่ายไฟอื่น ให้เชื่อมต่อปลายอีกด้านของสาย Grove เข้ากับช่องเสียบ Grove ด้านขวาบน Wio Terminal เมื่อมองที่หน้าจอ นี่คือช่องเสียบที่อยู่ไกลจากปุ่มเปิดปิดมากที่สุด
|
|
|
|

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