กลับไปหน้ารวมไฟล์
thingspeak-arduino-weather-station-543675.md

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 เป็นตัวประมวลผลหลัก


อุปกรณ์ที่คุณต้องเตรียม

  1. Arduino UNO: บอร์ดไมโครคอนโทรลเลอร์หลักที่ทำหน้าที่รับข้อมูลจากเซนเซอร์และสั่งการโมดูล Wi-Fi
Arduino UNO บอร์ดประมวลผลยอดนิยม
  1. ESP-01 (ESP8266): โมดูล Wi-Fi ขนาดจิ๋วแต่ประสิทธิภาพสูง ทำหน้าที่เป็นสะพานเชื่อมต่อระหว่าง Arduino กับอินเทอร์เน็ต
ESP-01 Wi-Fi Module
  1. DHT-11 Sensor: เซนเซอร์วัดอุณหภูมิและความชื้นแบบดิจิทัล ราคาประหยัดและมีความแม่นยำเพียงพอสำหรับโปรเจคเริ่มต้น
  1. Breadboard และ Breadboard Power Supply: อุปกรณ์สำหรับต่อวงจรและแหล่งจ่ายไฟแยก
MB102 Breadboard Power Supply
  1. สายจัมเปอร์ (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 ขั้นตอนการเตรียมการมีดังนี้:

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

การตั้งค่าโปรแกรม Arduino IDE

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

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

วิธีติดตั้ง: ดาวน์โหลดเป็นไฟล์ .ZIP แล้วไปที่ Arduino IDE เลือกเมนู Sketch -> Include Library -> Add .ZIP Library...

ขั้นตอนการเพิ่ม Library แบบ ZIP

วิเคราะห์และปรับแต่ง 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

สิ่งที่คุณต้องแก้ไขก่อนอัปโหลด:

  1. ใส่ Write API Key ที่ได้จาก ThingSpeak ลงในส่วนที่กำหนด
ระบุ API Key เพื่อยืนยันตัวตนกับระบบ Cloud
  1. ระบุ SSID (ชื่อ Wi-Fi) และ Password ของที่บ้านคุณให้ถูกต้อง
ตั้งค่าการเชื่อมต่อ Wi-Fi

ผลลัพธ์และการทดสอบ

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

กราฟแสดงผลอุณหภูมิและความชื้นแบบ Real-time

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

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

ข้อมูล Frontmatter ดั้งเดิม

title: "ThingSpeak Arduino Weather Station"
description: "Monitor the Temperature and Humidity in your room and also beam that data to Cloud."
author: "neverofftheinternet"
category: "Internet of Things, BT & Wireless"
tags:
  - "weather"
  - "environmental sensing"
  - "internet of things"
views: 40007
likes: 10
price: 699
difficulty: "Intermediate"
components:
  - "1x Arduino UNO"
  - "1x Jumper wires (generic)"
  - "1x DHT11 Temperature & Humidity Sensor (3 pins)"
  - "1x SparkFun Breadboard Power Supply 5V/3.3V"
  - "1x ESP8266 ESP-01"
  - "1x Breadboard (generic)"
tools: []
apps:
  - "1x Windows 10"
  - "1x ThingSpeak API"
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "5c3a48d22ae6436717a3172f83b5060d1b4b11360fa643502c51633b4cd5380b"
encryptedPayload: "U2FsdGVkX19nIm9IjnwO9o+OJ8qYmeHiiLtqcUskEleZ8xriUA7TfoPgNCvFwD6NVSS5UtTdOBBVZcEZdxsr+kjO6FZQmRNAau3Y4Hq4JSd/resuWtDCYsaMzVQMlCCVCPF+AyZ5IrTI0Fg7PNxs2Q=="
seoDescription: "Build an Arduino Weather Station to monitor Temperature and Humidity and upload data to ThingSpeak Cloud."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/thingspeak-arduino-weather-station-543675_cover.jpg"
lang: "en"