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

เบื้องหลังและที่มาของโปรเจกต์ (The Story)

ในช่วงวิกฤตการแพร่ระบาดของ COVID-19 ที่ผ่านมา เป็นจุดเปลี่ยนที่ทำให้ผมและครอบครัวตัดสินใจย้ายไปพำนักที่ต่างจังหวัดเพื่อความปลอดภัย และในระหว่างที่ต้องกักตัวและมีเวลาว่างมากขึ้น ผมจึงมองหากิจกรรมที่สร้างสรรค์และมีประโยชน์ในเชิงวิศวกรรม นั่นคือจุดเริ่มต้นที่ทำให้ผมหันมาสนใจบอร์ด Arduino อย่างจริงจัง โดยผมเริ่มต้นด้วยชุด Environmental Bundle ซึ่งประกอบไปด้วยบอร์ดไมโครคอนโทรลเลอร์ประสิทธิภาพสูงอย่าง Arduino MKR WiFi 1010 และ Arduino MKR ENV Shield เพื่อสร้างระบบตรวจวัดสภาพแวดล้อมอัจฉริยะสำหรับพื้นที่กสิกรรมรอบที่พัก

รายละเอียดอุปกรณ์และฮาร์ดแวร์ (The Hardware)

การเลือกใช้ฮาร์ดแวร์ในตระกูล MKR Series นั้นมีข้อดีอย่างมากในด้านฟอร์มแฟกเตอร์ที่เล็กกะทัดรัดและการใช้พลังงานที่ต่ำ โดยอุปกรณ์ที่คุณต้องเตรียมมีดังนี้:

  • Arduino MKR WiFi 1010: หัวใจหลักของระบบ ใช้ชิป SAMD21 Cortex-M0+ 32-bit และโมดูล u-blox NINA-W102 สำหรับการเชื่อมต่อ WiFi และ Bluetooth ซึ่งรองรับการรักษาความปลอดภัยของข้อมูลผ่านชิป ECC508 crypto chip
  • Arduino MKR ENV Shield: ชิลด์เสริมที่ติดตั้งเซนเซอร์มาให้ครบครัน ทั้งอุณหภูมิ, ความชื้นสัมพัทธ์, ความดันบรรยากาศ, ความเข้มแสง และค่ารังสี UV (UVA/UVB)
  • Soil Moisture Sensor: สำหรับวัดความชื้นในดิน ซึ่งเป็นตัวแปรสำคัญในการดูแลพืชพรรณ
  • สาย Grove 4-pin to 4-pin male connector: เพื่อเชื่อมต่อเซนเซอร์ความชื้นเข้ากับระบบ
  • Waterproof Box (กล่องกันน้ำ): จำเป็นอย่างยิ่งสำหรับการใช้งานภายนอกอาคารเพื่อป้องกันความชื้นและฝุ่นละอองเข้าสู่แผงวงจร
  • Power Supply: แหล่งจ่ายไฟที่เหมาะสมสำหรับระบบ

ขั้นตอนการประกอบและการติดตั้ง (Assembly Guide)

การประกอบระบบ IoT สำหรับใช้งานกลางแจ้งต้องคำนึงถึงความทนทานต่อสภาพอากาศเป็นหลัก โดยสามารถปฏิบัติตามขั้นตอนดังนี้:

Plug the Arduino ENV Shield to the MKR 1010 เริ่มต้นด้วยการเสียบ Arduino MKR ENV Shield ลงบนบอร์ด MKR WiFi 1010 ตรวจสอบให้แน่ใจว่าขาพินตรงกันทุกตำแหน่ง

Connect the moisture sensor to it's cable and wrap it so it wont get wet เชื่อมต่อเซนเซอร์วัดความชื้นในดินเข้ากับสายสัญญาณ และใช้เทปพันสายไฟหรือท่อหดเพื่อป้องกันจุดเชื่อมต่อไม่ให้สัมผัสกับความชื้นโดยตรง

In a waterproof box, make a lole similar to this one for the cable ทำการเจาะช่องที่กล่องกันน้ำให้มีขนาดพอดีกับสายสัญญาณ เพื่อนำสายเซนเซอร์จากภายนอกเข้าไปเชื่อมต่อกับบอร์ดด้านใน

And wrap the outside with duct tape ใช้เทปกาวคุณภาพสูง (Duct Tape) ปิดทับบริเวณรอยต่อที่สายไฟลอดผ่าน เพื่อเสริมการป้องกันน้ำรั่วซึม

Then plug it to the Arduino เชื่อมต่อสายจากเซนเซอร์ความชื้นเข้ากับพอร์ต Analog ของ Arduino เพื่อเตรียมการอ่านค่า

Make some holes to the box's cover. It's important they are facing outside. เจาะรูระบายอากาศที่ฝาครอบกล่อง เพื่อให้เซนเซอร์บน ENV Shield สามารถวัดค่าอุณหภูมิและความชื้นในอากาศภายนอกได้แม่นยำ โดยรูที่เจาะควรหันลงด้านล่างเพื่อป้องกันเม็ดฝนตกใส่

This is how it sould look when it's finished. ภาพรวมของระบบหลังจากประกอบเสร็จสิ้น พร้อมสำหรับการนำไปติดตั้งในหน้างานจริง

เมื่อฮาร์ดแวร์พร้อมแล้ว ขั้นตอนต่อไปคือการติดตั้งในพื้นที่จริง โดยการขุดดินหรือหาตำแหน่งที่ปลอดภัยสำหรับการวางตัวอุปกรณ์:

Dig a hole of a similar size to the box ขุดหลุมขนาดพอเหมาะกับกล่องกันน้ำ เพื่อลดแรงปะทะจากลมและช่วยรักษาอุณหภูมิภายในกล่องให้คงที่

Positioning the device

Put the cover on... And it's finished! ปิดฝากล่องให้สนิทและตรวจสอบการซีลกันน้ำเป็นครั้งสุดท้าย เท่านี้ระบบของคุณก็พร้อมทำงาน

สำหรับการจัดการด้านพลังงาน เนื่องจากในพื้นที่ติดตั้งอาจไม่มีปลั๊กไฟถาวร ผมจึงเลือกใช้แหล่งจ่ายไฟภายนอกแบบพกพามาทดสอบชั่วคราว อย่างไรก็ตาม บอร์ด MKR WiFi 1010 มีวงจรชาร์จแบตเตอรี่ Li-Po ในตัว ซึ่งคุณสามารถอัปเกรดไปใช้แผงโซลาร์เซลล์ขนาดเล็กเพื่อความยั่งยืนได้

The battery supply I used (คำเตือนทางเทคนิค: หลีกเลี่ยงการใช้แบตเตอรี่ 9V ทั่วไป เนื่องจากมีความจุต่ำและประสิทธิภาพการแปลงแรงดันไม่เหมาะสมกับงาน IoT ระยะยาว)

การวิเคราะห์ซอฟต์แวร์และโค้ด (The Code)

ในส่วนของซอฟต์แวร์ เราจะใช้ไลบรารีมาตรฐานเพื่อให้การดึงค่าจากเซนเซอร์มีความแม่นยำและเขียนโค้ดได้กระชับที่สุด เริ่มจากการเรียกใช้ไลบรารีสำหรับ MKR ENV Shield:

#include <Arduino_MKRENV.h>

ในฟังก์ชัน setup() นอกเหนือจากการตั้งค่าการเชื่อมต่อ Arduino IoT Cloud แล้ว เราจำเป็นต้องสั่งงาน ENV.begin() เพื่อตรวจสอบความพร้อมของเซนเซอร์บน Shield ทั้งหมด หากการเชื่อมต่อล้มเหลว ระบบจะทำการหยุดการทำงานเพื่อแจ้งเตือนให้ตรวจสอบฮาร์ดแวร์:

if (!ENV.begin()) {
  Serial.println("Failed to initialize MKR ENV shield!");
  while(1); // หยุดการทำงานหากหา Shield ไม่พบ
}

เพื่อให้ข้อมูลถูกอัปเดตไปยัง Dashboard ของเราแบบ Real-time เราต้องประกาศตัวแปรในส่วนของ Cloud Properties (เช่น humidity, temperature, moisture) ให้เป็นชนิด int หรือ float ตามความเหมาะสม จากนั้นภายใน Loop หลัก เราจะเขียนคำสั่งเพื่ออ่านค่าจากเซนเซอร์และเก็บไว้ในตัวแปรเหล่านั้น ตัวอย่างเช่น:

// ตัวอย่างการอ่านค่าและส่งขึ้น Cloud
temperature = ENV.readTemperature();
humidity = ENV.readHumidity();
moisture = analogRead(A1); // อ่านค่าความชื้นในดินจากขา Analog

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

บทสรุปและการต่อยอดเชิงวิศวกรรม

ระบบนี้เป็นเพียงจุดเริ่มต้นของการนำเทคโนโลยี IoT มาประยุกต์ใช้ในการเกษตรแม่นยำ (Precision Agriculture) หากในอนาคตคุณต้องการขยายขอบเขตไปใช้ในพื้นที่ห่างไกลที่ไม่มีสัญญาณ WiFi คุณสามารถเปลี่ยนไปใช้บอร์ด Arduino MKR GSM 1400 เพื่อส่งข้อมูลผ่านเครือข่ายโทรศัพท์เคลื่อนที่ และติดตั้งระบบโซลาร์เซลล์พร้อมแบตเตอรี่ Li-Po เพื่อให้ระบบทำงานได้ด้วยตัวเองแบบ 100% ซึ่งจะเป็นการปฏิวัติการจัดการฟาร์มให้มีประสิทธิภาพสูงสุดอย่างแท้จริง

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

title: "IoT Weather Station"
description: "Easily monitorize your garden's environment with simple components."
author: "enriquekirkpatrickc"
category: "Sensors & Environment"
tags:
  - "weather"
  - "environmental sensing"
  - "iot"
  - "cloud"
views: 13618
likes: 8
price: 2450
difficulty: "Intermediate"
components:
  - "1x GROVE - 4 PIN MALE TO GROVE 4 PIN CABLE"
  - "1x Grove - Moisture Sensor"
  - "1x Arduino MKR WiFi 1010"
  - "1x Arduino MKR ENV Shield"
tools: []
apps:
  - "1x Arduino IDE"
  - "1x Arduino IoT Cloud"
  - "1x Arduino Web Editor"
downloadableFiles:
  - "https://create.arduino.cc/editor/Kyrpy/5f285408-1c6c-49fd-a05c-cf8043c6b0a7/preview"
  - "https://create.arduino.cc/editor/Kyrpy/5f285408-1c6c-49fd-a05c-cf8043c6b0a7/preview"
documentationLinks: []
passwordHash: "3ce562cfe24deecf5901d3a7cd8b127acbdf29663ee4eac2a3d33667f179887e"
encryptedPayload: "U2FsdGVkX19Y5+EJII2Y8f/wOE0wrsOM6GdSezMjtOcyEj39DfmpiqG5HoOsaVQzmJ2w0EGILxj/8aRhi81Kcb9rYtPAxjg5QREoTbefUagZPqvg7ONtXrI0/GFRl3ZDPOTNKNX42Tbp8oMFUlTjdeaTOPiEtvAphR2IfNB1xsg="
seoDescription: "Build an IoT Weather Station to monitor your garden's environment using simple components. Easy DIY electronics project."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/iot-weather-station-d6033a_cover.jpg"
lang: "en"