กลับไปหน้ารวมไฟล์
uploading-bme280-sensor-data-to-thingspeak-using-esp32-7b39eb.md

ในบทสอนนี้ พี่จะพาน้องๆ ไปต่อเซนเซอร์ BME280 กับ ESP32 เพื่ออ่านค่าอุณหภูมิ ความชื้น และความกดอากาศ แล้วอัพโหลดข้อมูลขึ้น ThingSpeak แบบเรียลไทม์ โปรเจคแบบนี้แหละที่ใช่สำหรับงาน IoT อย่างสถานีตรวจอากาศในบ้านหรือระบบตรวจสภาพแวดล้อม งานเข้าจัดไปวัยรุ่น!

BME280 คืออะไร?

undefined

BME280 เป็นเซนเซอร์ขั้นสูงจาก Bosch ที่สามารถวัดค่าสิ่งแวดล้อมได้สามอย่าง: อุณหภูมิ, ความชื้นสัมพัทธ์ และความกดอากาศ ด้วยการกินไฟน้อยและขนาดกะทัดรัด เลยฮิตใช้ในโปรเจค IoT ต่างๆ

คุณสมบัติหลัก:

ช่วงอุณหภูมิ: -40 ถึง 85 °C

ช่วงความชื้น: 0% ถึง 100%

ช่วงความดัน: 300 ถึง 1100 hPa

การสื่อสาร: I2C (ที่ใช้ในบทสอนนี้) และ SPI

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

ก่อนเริ่ม ตรวจสอบให้แน่ใจว่าน้องมีอุปกรณ์เหล่านี้ครบ:

ESP32

เซนเซอร์ BME280 (เวอร์ชัน I2C)

สายจัมเปอร์

บัญชีบน ThingSpeak

บอร์ด Esp32

undefined

พินหัวเมีย

undefined

สายจัมเปอร์ หัวเมีย-หัวผู้

undefined

PCB

undefined

undefined

ไฟล์ Gerber สำหรับผลิต PCB สามารถดาวน์โหลดได้จากแหล่งข้อมูลที่เกี่ยวข้อง

วงจร

undefined

การต่อเซนเซอร์ BME280 เข้ากับ ESP32

เราจะใช้อินเตอร์เฟซ I2C ในการเชื่อมต่อ ตามนี้เลยน้อง ห้ามช็อตนะตัวนี้:

การต่อสาย I2C:

VCC (BME280) → 3.3V (ESP32)

GND (BME280) → GND (ESP32)

SDA (BME280) → GPIO 21 (ESP32)

SCL (BME280) → GPIO 22 (ESP32)

ทิปเล็กน้อย: ถ้าเซนเซอร์ BME280 ของน้องไม่มีตัวต้านทานดึงขึ้น (Pull-up Resistor) ในตัวบนเส้น SDA และ SCL ให้เพิ่มตัวต้านทานภายนอก 4.7kΩ ระหว่างแต่ละเส้นกับไฟ 3.3V ด้วยล่ะ

ทิปเล็กน้อย: ถ้าเซนเซอร์ BME280 ของน้องไม่มีตัวต้านทานดึงขึ้น (Pull-up Resistor) ในตัวบนเส้น SDA และ SCL ให้เพิ่มตัวต้านทานภายนอก 4.7kΩ ระหว่างแต่ละเส้นกับไฟ 3.3V ด้วยล่ะ

ตั้งค่า ThingSpeak

ก่อนอัพโหลดข้อมูล ต้องตั้งค่า ThingSpeak ก่อน:

สร้างบัญชี ThingSpeak ถ้ายังไม่มี

สร้างช่องใหม่ (Channel) พร้อมฟิลด์ที่ต้องการ (เช่น "Temperature", "Humidity" และ "Pressure")

เมื่อสร้างเสร็จ ให้คัดลอกคีย์ API สำหรับเขียนข้อมูล (Write API Key) มาไว้ใช้ในโค้ดเพื่อส่งข้อมูลขึ้นไป สู้งานนะน้อง!

Cloud Graphing API (ThingSpeak)

ThingSpeak (สร้างโดย MathWorks) เป็นแพลตฟอร์ม IoT analytics ที่รับข้อมูลตัวเลขดิบจากไมโครคอนโทรลเลอร์แล้วแปลงเป็นกราฟสดสวยๆ ให้อัตโนมัติเลย

  1. ขั้นตอนตั้งค่า: สร้าง "Channel" ฟรีบน ThingSpeak แล้วจะได้ Write API Key มาเป็นชุดตัวอักษร-ตัวเลขยาวๆ หนึ่งก้อน
  2. ขั้นตอนเก็บข้อมูลผ่าน I2C: ในฟังก์ชัน loop() ของ ESP32 จะไปถามข้อมูลจากโมดูล BME280 ผ่านพิน SDA/SCL เพื่อดึงค่าทศนิยมสามค่ามา คือ Temp, Humidity, Pressure
  3. ขั้นตอนสร้างคำขอเว็บ: ต้องสร้าง URL string ที่มีรูปแบบเฉพาะเจาะจงมากๆ ขึ้นมา String url = "http://api.thingspeak.com/update?api_key=" + MY_API_KEY + "&field1=" + String(Temp) + "&field2=" + String(Humidity);

การ Execute HTTP POST

  • โค้ดจะใช้ไลบรารี่ <WiFi.h> และ <HTTPClient.h> ในการทำงาน
  • ESP32 จะเชื่อมต่อกับเราเตอร์ Wi-Fi ที่บ้านเราอย่างรวดเร็ว
  • จากนั้นก็ http.begin(url); int httpCode = http.GET();
  • มันจะ "เข้าไปเยี่ยมชม" URL ยาวๆ นั้นแบบเงียบๆ โดยที่เราไม่เห็นนั่นเอง เซิร์ฟเวอร์ของ ThingSpeak เห็นการเข้าเว็บนั้น ก็จะดึงค่าตัวเลข Temp และ Humidity ที่ซ่อนอยู่ในที่อยู่เว็บออกมา แล้วนำไปเพิ่มลงในกราฟได้อย่างแม่นยำ!
  • กระบวนการทั้งหมดใช้เวลาประมาณ 2 วินาทีเท่านั้น หลังจากนั้นโค้ดจะสั่ง delay(60000) (หรือให้เข้าสู่โหมด deep sleep) เพื่อให้มันส่งข้อมูลแค่ทุกๆ 1 นาที

อุปกรณ์ฮาร์ดแวร์สำหรับเครือข่าย

  • ESP32 Dev Module: มีเสาอากาศ Wi-Fi 2.4GHz ในตัวและ RAM ขนาดใหญ่ที่รองรับ SSL
  • Bosch BME280 Breakout Board (วัดอุณหภูมิ/ความชื้น/ความกดอากาศ)
  • แหล่งจ่ายไฟ USB ที่เสถียร (ห้ามช็อตนะตัวนี้ ไม่งั้นงานพังแน่!)

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

apps:
  - "1x rogerbit."
author: "carlosvolt"
category: "Internet of Things, BT & Wireless"
components:
  - "1x ESP32"
description: "มาเล่นกัน! ในโปรเจคตึงๆ นี้ เราจะสอนน้องๆ ต่อ BME280 Sensor เข้ากับบอร์ด ESP32 เพื่ออ่านค่าอุณหภูมิ ความชื้น และความกดอากาศแบบเทพๆ แล้วส่งขึ้น Cloud ไปจัดเก็บใน ThingSpeak เลย"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX19gBweWkw1rHozC/fuES+aIiTxSqtD785TQ233y9mBtg+59nWToBtxZMmrIDkRblCdeQzV9kYwGSV6I4RSYRAwrXqM8aeVOpws="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/uploading-bme280-sensor-data-to-thingspeak-using-esp32-7b39eb_cover.png"
lang: "en"
likes: 0
passwordHash: "4f4cf0bc908fe9fb0206f503d920f8e0790fd813651165842ba3ae34f154ac9a"
price: 699
seoDescription: "Learn to connect BME280 Sensor to ESP32 and upload Temperature, Humidity, and Pressure data to ThingSpeak in this guide."
tags:
  - "Data Collection"
  - "Internet Of Things"
title: "งานง่ายแต่หล่อ! ส่งข้อมูลเซนเซอร์ BME280 ขึ้น ThingSpeak ด้วย ESP32"
tools: []
videoLinks:
  - "https://youtu.be/v9SKW7p9Gso"
views: 1990