กลับไปหน้ารวมไฟล์
simple-weather-station-8fadfe.md

สวัสดีน้องๆ ทุกคน! กลับมาพบกับรุ่นพี่อีกแล้ว กับทิปเล็กๆ น้อยๆ เรื่อง Arduino คร้าบบบ

วันนี้เราจะมาสร้าง สถานีตรวจอากาศจิ๋วแต่แจ๋ว กัน โดยใช้เซ็นเซอร์ DHT11 กับจอ OLED มาดูกันว่าเราจะทำยังไง!

ไมโครคอนโทรลเลอร์ที่ใช้ในโปรเจกต์นี้คือ Arduino Uno R3 ตัวเก่งของเรานั่นเอง

โปรเจกต์พื้นฐานนี้จะรวมสองสถาปัตยกรรมการเก็บข้อมูลเข้าด้วยกัน และต้องจัดรูปแบบผลลัพธ์เพื่อแสดงผลให้ดูดี

Analog vs. Digital Sensor Protocols

น้องห้ามใช้ analogRead() กับเซ็นเซอร์ DHT11 นะจ๊ะ! เพราะชิ้นส่วนในระบบนี้ใช้วิธีการสื่อสารคนละแบบกันเลย

  1. เซ็นเซอร์วัดอุณหภูมิและความชื้น DHT11: นี่คือเซ็นเซอร์ดิจิทัลที่มีโปรเซสเซอร์ในตัว มันส่งสตรีมข้อมูล 40 บิตที่แทนค่าที่อ่านได้

    • น้อง ต้อง ใช้ไลบรารี <DHT.h> เพื่อสื่อสารกับมัน
    • อ่านข้อมูลด้วยคำสั่งเฉพาะของไลบรารี: float temperature = dht.readTemperature(); และ float humidity = dht.readHumidity();
  2. ตัวต้านทานไวแสง (LDR): นี่คือชิ้นส่วนทางกายภาพแบบอนาล็อกล้วนๆ ความต้านทานของมันเปลี่ยนไปตามความเข้มของแสง

    • มัน ต้อง ถูกใช้ในวงจรแบ่งแรงดัน (Voltage Divider) ร่วมกับตัวต้านทานค่าคงที่ (เช่น 10K โอห์ม)
    • Arduino อ่านมันเป็นแรงดันอนาล็อกธรรมดา: int lightValue = analogRead(A0); (ให้ค่าตั้งแต่ 0 ถึง 1023)

การจัดรูปแบบข้อมูลสำหรับการแสดงผล

ไมโครคอนโทรลเลอร์อ่านค่ามาได้ประมาณ temperature = 25.0 และ humidity = 60.0 จอแสดงผลตัวอักษรมีพื้นที่จำกัด ดังนั้นต้องจัดระเบียบข้อมูลให้ดี

  • จอ LCD แบบตัวอักษร 16x2 (โดยเฉพาะแบบที่มี I2C backpack เพื่อลดสายให้ง่ายขึ้น) มีตำแหน่งตัวอักษรพอดี 32 ตำแหน่ง
  • การทำงาน: น้องต้องควบคุมตำแหน่งเคอร์เซอร์ให้แม่นยำเพื่อจัดรูปแบบผลลัพธ์:
    lcd.setCursor(0, 0); // เริ่มที่จุดเริ่มต้นของบรรทัดแรก
    lcd.print("T: "); lcd.print(temperature); lcd.print("C");
    
    lcd.setCursor(0, 1); // ย้ายไปจุดเริ่มต้นของบรรทัดที่สอง
    lcd.print("H: "); lcd.print(humidity); lcd.print("%");
    
  • ถ้าอยากแสดงข้อมูลเพิ่มเติม (เช่นจาก LDR) บนจอเล็กๆ อันเดียวกัน น้องสามารถสร้างระบบเปลี่ยนหน้า (pagination) แบบง่ายๆ ได้ ใช้ delay(3000); lcd.clear(); เพื่อล้างหน้าจอทุกๆ สองสามวินาที แล้วสลับไปแสดงข้อมูลหน้าต่างๆ

ชิ้นส่วนมาตรฐานสำหรับสถานีอากาศ

  • Arduino Uno R3 / Nano (ให้ความเร็วการทำงานและพอร์ต I/O แบบมาตรฐาน)
  • เซ็นเซอร์วัดอุณหภูมิและความชื้น DHT11 (DHT22 เป็นตัวเลือกที่แม่นยำกว่า ให้ค่าทศนิยม)
  • ตัวต้านทานไวแสง (LDR)
  • จอแสดงผลตัวอักษร LCD 16x2 + I2C Backpack (อินเทอร์เฟซ I2C ลดจำนวนสายเชื่อมต่อจาก 16 เส้นเหลือแค่ 4 เส้นอย่างฮวบฮาบ)

น้องๆ สามารถปรับแต่งระบบนี้ได้ตามใจชอบ เพราะมันค่อนข้างยืดหยุ่น [ท้าทายนิดนึง: ลองทำให้ระบบเล็กสุดๆ ดู ;) ]

สู้งานนะน้อง!

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

apps:
  - "1x Arduino IDE"
author: "RoyB"
category: ""
components:
  - "1x Arduino UNO"
  - "1x DHT11 Temperature & Humidity Sensor (4 pins)"
  - "1x Graphic OLED, 128 x 64"
description: "ใช้แค่ DHT11 Sensor กับ OLED Display ต่อเข้ากับ Arduino Uno R3 ก็สร้างสถานีอากาศส่วนตัวได้แล้ววว งานง่ายแต่หล่อ วัยรุ่นสายช่างต้องจัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://github.com/RoyBenAvraham/Simper_weather_station.git"
encryptedPayload: "U2FsdGVkX18oUhgHKHO8//QIT0MCM41bn2ztk4PXmjNbzZKcRQ6bloJD5Dy+nZDMpEv0ZnvQDXaDIzPdhOjDjE8JgrqjLw23gTRz95nu9Z4="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/simple-weather-station-8fadfe_cover.jpg"
lang: "en"
likes: 1
passwordHash: "247e4b9f22f9f2e3a3fde14cd7728bf612e33f4788552602b8393e4ee7b1ff51"
price: 699
seoDescription: "Build a Simple Weather Station using DHT11 sensor, OLED display, and Arduino Uno R3. Easy DIY electronics project."
tags:
  - "weather"
  - "iot"
  - "diy"
title: "สถานีอากาศจิ๋ว แต่ตึงๆ วัดได้ทั้งอุณหภูมิ-ความชื้น!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/CliqlcaTJro"
views: 5664