title: ThingSpeak Arduino Weather Station description: ก้าวแรกสู่โลก IoT ด้วยการสร้างสถานีตรวจอากาศออนไลน์ที่ส่งข้อมูลไปยัง Cloud
ก้าวแรกสู่โลก IoT: โปรเจคสถานีตรวจอากาศผ่าน ThingSpeak
การเริ่มต้นเรียนรู้เรื่อง IoT (Internet of Things) สำหรับมือใหม่อาจดูเป็นเรื่องยากและน่าสับสน เพราะมีตัวเลือกทั้งฮาร์ดแวร์และซอฟต์แวร์ที่หลากหลายจนเลือกไม่ถูก แต่ไม่ต้องกังวลไปครับ! "ThingSpeak" คือแพลตฟอร์ม Cloud สำหรับงาน IoT ที่ใช้งานง่ายและทรงพลังที่สุดตัวหนึ่ง
บทความนี้จะพาคุณไปสร้างโปรเจค IoT แรกในชีวิต นั่นคือ "สถานีตรวจอากาศ (Weather Station)" ที่มีคุณสมบัติครบถ้วน:
- ประหยัดและเข้าถึงง่าย: ใช้อุปกรณ์พื้นฐานที่หาซื้อได้ทั่วไป
- เข้าใจง่าย: ลอจิกไม่ซับซ้อน เหมาะสำหรับการเริ่มต้น
- เท่และใช้งานได้จริง: ข้อมูลอุณหภูมิและความชื้นจะถูกส่งไปแสดงผลเป็นกราฟแบบ Real-time บนระบบ Cloud
เป้าหมายของโปรเจคนี้คือการนำข้อมูลจากเซนเซอร์ DHT11 ส่งผ่านโมดูล Wi-Fi ESP-01 ไปยัง ThingSpeak Cloud โดยมี Arduino Uno เป็นตัวประมวลผลหลัก
อุปกรณ์ที่คุณต้องเตรียม
- Arduino UNO: บอร์ดไมโครคอนโทรลเลอร์หลักที่ทำหน้าที่รับข้อมูลจากเซนเซอร์และสั่งการโมดูล Wi-Fi
- ESP-01 (ESP8266): โมดูล Wi-Fi ขนาดจิ๋วแต่ประสิทธิภาพสูง ทำหน้าที่เป็นสะพานเชื่อมต่อระหว่าง Arduino กับอินเทอร์เน็ต

- DHT-11 Sensor: เซนเซอร์วัดอุณหภูมิและความชื้นแบบดิจิทัล ราคาประหยัดและมีความแม่นยำเพียงพอสำหรับโปรเจคเริ่มต้น
- Breadboard และ Breadboard Power Supply: อุปกรณ์สำหรับต่อวงจรและแหล่งจ่ายไฟแยก
- สายจัมเปอร์ (Connecting Wires)
ข้อควรระวังสำคัญ (Technical Insight): แม้ว่า Arduino จะมีขา 3.3V ให้ใช้งาน แต่เรา ไม่แนะนำ ให้ใช้จ่ายไฟให้ ESP-01 โดยตรง เนื่องจากในช่วงที่ ESP-01 ทำการรับส่งข้อมูล (Peak operation) จะมีการดึงกระแสสูง (ประมาณ 200mA+) ซึ่งเกินขีดจำกัดที่ตัวบอร์ด Arduino จะจ่ายได้ การใช้แหล่งจ่ายไฟแยกอย่าง Breadboard Power Supply จึงเป็นทางเลือกที่ปลอดภัยและเสถียรที่สุด
การเชื่อมต่อวงจร (Connections)
การเชื่อมต่ออุปกรณ์ต่างๆ เข้าด้วยกันต้องระมัดระวังเรื่องแรงดันไฟ โดยเฉพาะ ESP-01 ที่ทำงานด้วยแรงดัน 3.3V เท่านั้น ห้ามต่อกับ 5V โดยเด็ดขาด

การต่อโมดูล ESP-01:
- VCC: ต่อกับ 3.3V (จาก Power Supply แยก)
- GND: ต่อกับ GND (ใช้ร่วมกันทั้งระบบ)
- CH_PD (Enable): ต่อกับ 3.3V เพื่อเปิดการทำงานของชิป
- RESET: ต่อกับ 3.3V
- TX: ต่อกับขา Digital 2 (Arduino) - ทำหน้าที่รับข้อมูลผ่าน SoftwareSerial
- RX: ต่อกับขา Digital 3 (Arduino) - ทำหน้าที่ส่งข้อมูลผ่าน SoftwareSerial
การต่อเซนเซอร์ DHT-11:
- VCC: ต่อกับ 5V
- OUT/Data: ต่อกับขา A0 (ในโค้ดจะกำหนดให้เป็นขา Data อ่านค่าดิจิทัล)
- GND: ต่อกับ GND
หมายเหตุ: อย่าลืมปรับ Jumper บน Breadboard Power Supply ให้เป็น 3.3V ก่อนจ่ายไฟให้ ESP-01 เมื่อตรวจสอบความถูกต้องแล้วจึงเริ่มจ่ายไฟ หากไม่มีควันหรือกลิ่นไหม้ แสดงว่าคุณพร้อมก้าวต่อไปแล้ว!
การตั้งค่าแพลตฟอร์ม Cloud: ThingSpeak
ThingSpeak เป็นหัวใจหลักในการเก็บข้อมูลของเราบน Cloud ขั้นตอนการเตรียมการมีดังนี้:
- เข้าไปที่หน้าแรกของ ThingSpeak

- สมัครสมาชิก (Sign Up) และสร้างช่องข้อมูลใหม่ (New Channel)
- ตั้งชื่อ Channel และกำหนด Field 1 เป็น Temperature และ Field 2 เป็น Humidity
- หลังจากสร้างเสร็จ ให้คลิกไปที่แท็บ API Keys เพื่อคัดลอก Write API Key ไว้ใช้งานในโค้ด

การตั้งค่าโปรแกรม Arduino IDE
เพื่อให้ Arduino สามารถสื่อสารกับเซนเซอร์และส่งข้อมูลได้ เราจำเป็นต้องติดตั้ง Library เสริมที่สำคัญ:

- SoftwareSerial.h: เป็น Library พื้นฐานที่มีมาให้อยู่แล้ว ใช้เพื่อจำลองขา Digital ให้ทำงานเหมือนขา Serial (TX/RX)
- Adafruit Unified Sensor: เป็นไลบรารีพื้นฐานสำหรับเซนเซอร์ของ Adafruit ดาวน์โหลดที่นี่
- DHT Sensor Library: ไลบรารีสำหรับอ่านค่าจากเซนเซอร์ตระกูล DHT โดยเฉพาะ ดาวน์โหลดที่นี่
วิธีติดตั้ง: ดาวน์โหลดเป็นไฟล์ .ZIP แล้วไปที่ Arduino IDE เลือกเมนู Sketch -> Include Library -> Add .ZIP Library...

วิเคราะห์และปรับแต่ง Source Code
คุณสามารถดาวน์โหลดโค้ดฉบับเต็มได้ที่: Weather Station GitHub หรือคัดลอกจาก Virgin Robotics
การทำงานของโค้ด (Code Logic):
- Initialization: โปรแกรมจะเริ่มประกาศขา
SoftwareSerial(2, 3)เพื่อคุยกับ ESP-01 และกำหนดขาเซนเซอร์ DHT บนขาA0 - Wi-Fi Connection: ในส่วน
setup()โปรแกรมจะส่งคำสั่ง "AT Command" ผ่าน SoftwareSerial ไปยัง ESP-01 เพื่อเชื่อมต่อกับ Wi-Fi Router - Data Reading: ใน
loop()โปรแกรมจะเรียกฟังก์ชันอ่านค่า Temperature และ Humidity จากเซนเซอร์ DHT11 - Transmission: เมื่อได้ค่ามาแล้ว Arduino จะสร้าง HTTP Request (GET) โดยนำค่าที่อ่านได้ไปต่อท้าย API Key แล้วส่งผ่าน ESP-01 ไปยัง Server ของ ThingSpeak
สิ่งที่คุณต้องแก้ไขก่อนอัปโหลด:
- ใส่ Write API Key ที่ได้จาก ThingSpeak ลงในส่วนที่กำหนด

- ระบุ SSID (ชื่อ Wi-Fi) และ Password ของที่บ้านคุณให้ถูกต้อง

ผลลัพธ์และการทดสอบ
เมื่ออัปโหลดโค้ดสำเร็จและวงจรทำงานได้ถูกต้อง ข้อมูลจะเริ่มถูกส่งไปยัง ThingSpeak ทุกๆ 15 วินาที (ซึ่งเป็นข้อจำกัดของ ThingSpeak Free Account ที่ต้องเว้นระยะห่างระหว่างการส่งข้อมูล)

คุณจะได้เห็นกราฟเส้นที่ขยับขึ้นลงตามสภาพอากาศจริงในห้องของคุณ ซึ่งคุณสามารถเปิดดูข้อมูลนี้ได้จากทุกที่ทั่วโลกผ่านสมาร์ทโฟนหรือเบราว์เซอร์!
หากคุณพบปัญหาในการใช้งานหรือมีข้อสงสัยเกี่ยวกับโค้ด สามารถสอบถามได้ในคอมเมนต์ หรือแวะไปเยี่ยมชมโปรเจคเจ๋งๆ เพิ่มเติมได้ที่ virginrobotics.blogspot.com พวกเรายินดีช่วยเหลือวิศวกรมือใหม่ทุกคนครับ!