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