กลับไปหน้ารวมไฟล์
papagayo-iot-kite-data-logger-cb71ef.md

เทเลเมทรีบนว่าว หรือ "ปาปากาโย" ที่เชื่อมต่อกับอินเทอร์เน็ตของสรรพสิ่ง (IoT) ว่าวคืออุปกรณ์บินได้ที่ใช้เพื่อความบันเทิง ประกอบด้วยพื้นผิวที่ทำจากกระดาษ ผ้า หรือวัสดุน้ำหนักเบาอื่นๆ ที่ติดตั้งบนโครงไม้ไผ่แข็งแรง และมีสายป่านผูกอยู่ด้านล่าง

ไอเดียคือการติดตั้งเซ็นเซอร์บนโครงว่าว เพื่อวัดสภาพแวดล้อมที่ระดับความสูงบินหนึ่งๆ จากนั้นบันทึกข้อมูลด้วยต้นแบบเครื่องบันทึกข้อมูล (data-logger) และนำไปวิเคราะห์เชิงตัวเลขในภายหลัง

"ปาปากาโย" (Papagayo) คือคำภาษาสเปนที่แปลว่าว่าวนั่นเอง

ภาพรวมโปรเจกต์

"Papagayo-IoT Sky-Logger" คือระบบเทเลเมทรีน้ำหนักเบา แข็งแรงทนทาน ออกแบบมาเพื่อ "วิทยาศาสตร์พลเมือง" (Citizen Science) ด้านบรรยากาศ โดยการติดตั้งเซ็นเซอร์ชุดหนึ่งบนว่าวที่บินสูง (หรือ ปาปากาโย) โปรเจกต์นี้จะเก็บข้อมูลตัวแปรสภาพแวดล้อม เช่น อุณหภูมิและความดัน ที่ความสูงซึ่งสถานีภาคพื้นดินธรรมดาเข้าถึงไม่ได้ ด้วยการใช้ Arduino Uno และ I2C Real-Time Clock เฉพาะทาง ระบบจะประทับเวลาและบันทึกข้อมูลลงในหน่วยความจำแบบไม่ลบเลือน (non-volatile) ในเวลาจริง สิ่งนี้ทำให้เกิดเวิร์กโฟลว์การวิเคราะห์ข้อมูลแบบ "หลังการบิน" ซึ่งสามารถแมปและสร้างภาพให้เห็นการไล่ระดับอุณหภูมิตามเส้นทางการบินบนพีซีได้

เป้าหมาย

  1. วัดตัวแปรสภาพแวดล้อมบนของที่บินได้ (ว่าวหรือ "ปาปากาโย") โดยใช้เทคโนโลยีอินเทอร์เน็ตของสรรพสิ่ง (IoT) เช่น อุณหภูมิ, ความสูง, ความชื้น ฯลฯ
  2. สร้างต้นแบบทั้งฮาร์ดแวร์และซอฟต์แวร์
  3. วิเคราะห์ข้อมูลในภายหลัง

ลึกลงไปในรายละเอียดทางเทคนิค

  • สถาปัตยกรรมบัส One-Wire (DS18B20):
    • เจ้านายสายเดี่ยว: เซ็นเซอร์อุณหภูมิ DS18B20 นั้นพิเศษเพราะมันใช้ โปรโตคอล Maxim One-Wire ซึ่งทำให้ Arduino สามารถสื่อสารกับเซ็นเซอร์หลายตัวได้โดยใช้เพียงพินดิจิทัลเดียว
    • ตรรกะของตัวต้านทานดึงขึ้น (Pull-up Resistor Logic): ใช้ ตัวต้านทาน 4.7K โอห์ม วางระหว่างสายข้อมูลกับ VCC เพื่อสร้างสถานะ "Passive High" ที่จำเป็นสำหรับการส่งสัญญาณ One-Wire ทำให้มั่นใจในความสมบูรณ์ของข้อมูลแม้จะใช้สายจัมเปอร์ยาวๆ เพื่อวางเซ็นเซอร์ไว้ที่ขอบโครงว่าว
  • การจัดการอุปกรณ์หลายตัวบน I2C (โมดูล DS1307):
    • โปรเจกต์นี้ใช้โมดูล RTC ที่ทำงานสองหน้าที่ บนบัส I2C (พิน A4/A5) Arduino จะสื่อสารกับ DS1307 (ที่แอดเดรส 0x68) เพื่อติดตามเวลาอย่างแม่นยำ และกับ EEPROM 24C32 (ที่แอดเดรส 0x50) เพื่อเก็บข้อมูล
  • การบันทึกข้อมูลแบบไม่ลบเลือน (EEPROM):
    • หน่วยความจำภายในของ Arduino Uno นั้นจำกัด (1KB) การใช้ EEPROM 24C32 ทำให้ระบบปาปากาโยสามารถเก็บข้อมูลเซ็นเซอร์ได้สูงสุด 32kbits (4000 ไบต์)
    • โครงสร้าง MyData: เพื่อเพิ่มประสิทธิภาพการใช้หน่วยความจำ เฟิร์มแวร์ใช้โครงสร้างข้อมูล C++ struct ที่อัดประทับเวลา (ชั่วโมง/นาที/วินาที) และค่าอุณหภูมิเข้าเป็นบล็อกไบนารีเดียว ทำให้บันทึกการบินได้มากที่สุดก่อนจะต้องดึงข้อมูลออกมา
  • ลูปทำงานตามเวลาแบบขับเคลื่อนด้วยเหตุการณ์ (Event-Driven Temporal Loops):
    • "ลูปสุดอีเลแกนท์" ในเฟิร์มแวร์จะไม่บันทึกข้อมูลด้วยความเร็วสูงสุด (ซึ่งจะทำให้หน่วยความจำเต็มในไม่กี่วินาที) แต่จะตรวจสอบจาก DS1307 ว่า "ตรงกับ" ช่วงเวลาที่ตั้งไว้ล่วงหน้าหรือไม่ เพื่อให้แน่ใจว่าการอ่านค่าถูกบันทึกในรอบที่สม่ำเสมอทุก 5 หรือ 10 วินาที เพื่อการสร้างกราฟที่แม่นยำ

โค้ดประกอบเอกสาร

ขั้นแรก ให้เพิ่มไลบรารีสำหรับการสื่อสาร I2C ใน Arduino โมดูล DS1307 มีอินเทอร์เฟซ I2C ง่ายๆ ที่ใช้แอดเดรสสองอัน แอดเดรส I2C คงที่ของชิป RTC DS1307 คือ 0x68 และแอดเดรส I2C คงที่ของ EEPROM 24C32 คือ 0x50

ขั้นที่สอง ตั้งค่า RTC และตั้งเวลาปลุก (alarm) สำหรับการปล่อยว่าวบิน

สาม ดูวงวนสุดเท่ตอนรันโค้ด แล้วรอรับอีเวนต์จากสัญญาณเตือน (Alarm Event) กันดีกว่า

สี่ อ่านค่าจากเซ็นเซอร์วัดอุณหภูมิ (Temperature Sensor) ในช่วงเวลาที่กำหนด

ห้า เขียนข้อมูลลงไปเก็บในหน่วยความจำภายใน EEPROM module

และสุดท้าย MyData คือโครงสร้างข้อมูล (Data Structure) ที่ใช้จัดการตัวแปรสภาพแวดล้อมต่างๆ นั่นเอง

แผนผังการต่อวงจร (Diagram)

ต่อขา A5 และ A4 ของ Arduino เข้ากับ RTC DS1307 นะจ๊ะ หรือจะเรียกอีกชื่อว่า A5 (SCL) กับ A4 (SDA) ก็ได้เหมือนกัน

บัดกรี DS18B20 ตามขั้วที่ระบุในเอกสารประกอบให้ดีๆ หลังจากติดตั้งเสร็จ เราก็จะอ่านค่าอุณหภูมิจากขา DS ได้แล้ว อย่าลืมต่อตัวต้านทาน (Resistor) 4.7K ระหว่าง VCC กับ DS ด้วยล่ะ

วิศวกรรมศาสตร์และอากาศพลศาสตร์ (Engineering & Aerodynamics)

  • ตัวบ้านแบบ "กระป๋องพริงเกิลส์": การบินในที่สูงเจอทั้งแรงสั่นสะเทือนและแรงต้านลม การใช้ กระป๋องพริงเกิลส์น้ำหนัก 40g เป็นตัวหุ้มทรงกระบอกน้ำหนักเบา มันช่วยป้องกันเบรดบอร์ดและ Arduino จากอากาศปั่นป่วน แถมยังรักษาค่าสัมประสิทธิ์แรงต้าน (Drag Coefficient) ให้ต่ำ ซึ่งสำคัญมากสำหรับความเสถียรของว่าว
  • การจัดการพลังงาน (Power Management): บินนานๆ ต้องมีแหล่งพลังงานที่เชื่อถือได้ แบตเตอรี่ 9V ให้แรงดันเหลือเฟือสำหรับเรกูเลเตอร์ 5V ของ Arduino ส่วน แบตเตอรี่กระดุม CR2032 ทำให้ RTC ไม่ลืมเวลา แม้ว่าแบตเตอรี่หลักจะหลุดตอนลงจอดแบบกระแทกๆ
  • การใช้งานภาคสนาม (Field Deployment): โปรเจคนี้เน้นขั้นตอน "สวิตช์แล้วบิน" (Switch-to-Fly) สวิตช์แบบกดติด-กดดับ (Toggle Switch) ทำหน้าที่เป็นตัวกด "บันทึก" (Record) ช่วยให้เราทดสอบระบบบนพื้นก่อนจะปล่อยว่าวขึ้นไปเล่นในชั้นโทรโพสเฟียร์
  • การวิเคราะห์เชิงตัวเลข (Numerical Analysis): ข้อมูลที่ดึงมาจาก EEPROM มักจะถูกส่งออกเป็นไฟล์ CSV ซึ่งทำให้น้องๆ สามารถคำนวณ อัตราการลดลงของอุณหภูมิตามความสูง (Lapse Rate) ได้ เป็นการเชื่อมโยงระหว่างอิเล็กทรอนิกส์แบบงานอดิเรกกับอุตุนิยมวิทยาแบบมืออาชีพเลยทีเดียว

ผลลัพธ์ (Results)


คว้าชั้นโทรโพสเฟียร์มาด้วย Papagayo-IoT — ที่ที่การเล่นว่าวมาบรรจบกับ Big Data

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

title: "โปรเจควัดลมด้วยว่าว Papagayo-IoT งานง่ายแต่หล่อ!"
description: "Papagayo เป็นชื่อว่าวในภาษาสเปนจ้า โปรเจคนี้คือระบบบันทึกและส่งข้อมูลการบินว่าวแบบเรียลไทม์ ตึงๆ ด้วย RTC พร้อมต่อยอดเป็น IoT แอพเทพๆ ในอนาคตได้เลย จัดไป!"
author: "quijanov"
category: "Internet of Things, BT & Wireless"
tags:
  - "Drones"
  - "Helicopters"
  - "Weather"
views: 1072
likes: 0
price: 299
difficulty: "Intermediate"
components:
  - "1x Arduino Uno Rev3"
  - "1x 30 watt stylus soldering iron"
  - "1x The open-source Arduino Software (IDE)"
  - "1x Switch"
  - "1x Pringles chedar chips jar 40g"
  - "1x Arduino Uno Case - Clear"
  - "1x Mini breadboard - White"
  - "1x  nylon thread roll"
  - "1x CR2032 battery"
  - "1x Cutting and Drilling Tools"
  - "1x 9V Battery with cap"
  - "1x Tiny RTC I2C DS1307"
  - "1x Jumper wires (generic)"
  - "1x 4.7K ohm resistor"
  - "1x DS18B20 temperature sensor"
tools: []
apps:
  - "1x GitHub"
  - "1x Autodesk tinkercad.com"
  - "1x Wokwi"
downloadableFiles:
  - "https://github.com/quijanov/papagayo-iot"
documentationLinks: []
passwordHash: "2b3bc3789e8e97efd50682d68dc94f202732b6856d0699ad7c7f588bec4aa500"
encryptedPayload: "U2FsdGVkX19zd/yYHrC2jfZtEtcAl2ynuXVGmcvLFEk5uGP+YlmQGKZaT3JbvkotsYMFIi+z3MtnwMRda29Xtq83GmFxfe5evu6nnQoaNARIB0xvHsmSOzofJDLwoujeYp+OHroFqHrCftvcjo4Dtg=="
seoDescription: "Papagayo-IoT is a kite flying data logger and telemetry system with RTC for future IoT applications."
videoLinks:
  - "https://youtu.be/SO71T3IJwMk?si=TX5rIWkJ3YEgBJa8"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/papagayo-iot-kite-data-logger-cb71ef_cover.jpg"
lang: "en"