ชื่อโปรเจกต์: Rate of Perceived Exertion Logger (เครื่องบันทึกระดับความเหนื่อยฉบับเด็กช่าง)
ไอ้เจ้า Rate of perceived exertion หรือ RPE เนี่ย มันคือวิธีหนึ่งที่เอาไว้บอกว่าตอนที่เราออกกำลังกายเนี่ย เราเหนื่อยโฮกขนาดไหน
น้องๆ จะเห็นสเกลความเหนื่อยตั้งแต่ 6 ถึง 20 (ดูใน Figure 1 เลย) เลข 6 นี่คือชิลล์มากเหมือนเดินเล่นในสวน ส่วนเลข 20 คือเหนื่อยแบบสายตัวแทบขาด น้องก็แค่กะเอาด้วยความรู้สึกว่าตอนนี้เลเวลความเหนื่อยเราอยู่ที่เท่าไหร่

สเกลนี้ด็อกเตอร์ Gunnar Borg เป็นคนคิดค้นขึ้นมา เขาเลยเรียกกันติดปากว่า Borg scale นั่นแหละ
ตัวเลขบนสเกลอาจจะดูแปลกๆ หน่อยนะ แต่ความเจ๋งคือมันถูกออกแบบมาให้เรากะค่า Heart rate ได้ง่ายๆ แค่เอาเลขสเกลไปคูณ 10 เช่น ถ้ากด RPE ไปที่ 20 หัวใจน้องก็น่าจะเต้นอยู่แถวๆ 200 bpm แล้วล่ะ
พอดีพี่ลองเล่นพวก Data logging shield ดู เลยคิดว่ามันน่าจะหล่อเท่ดีถ้าเราเอาไอเดียนี้มาทำเป็นระบบอัตโนมัติซะเลย
Hardware description:
ของที่ต้องใช้ก็มี [Arduino](https://s.shopee.co.th/7fUgFAWSki) UNO, Deek robot data logging shield v1.0 แล้วก็ [LCD](https://s.shopee.co.th/6AfsSPcAnb) shield ที่มีปุ่มกด (Buttons)
วิธีต่อก็ง่ายจัดๆ จับ Arduino UNO, Data logging shield แล้วก็ LCD shield มาเสียบซ้อนกันเป็นชั้นๆ เหมือนเลเยอร์เค้กเลยน้อง Shield พวกนี้มันจัดการเรื่องการเชื่อมต่อให้หมดแล้ว ไม่ต้องมานั่งเดินสายไฟ (Wire) ให้พันกันยุ่งเหยิง
แต่อันนี้สำคัญนะ! พี่ถอด Pin 10 ออกจาก LCD shield ของพี่ เพราะ Pin นี้มันเอาไว้คุม Backlight ของหน้าจอ LCD แต่ Shield บางรุ่นที่พี่ซื้อมามันดันทำมาไม่ดี [2] ซึ่งถอดออกก็ไม่เสียหายอะไร เพราะในโปรเจกต์นี้ตัว Data logging shield มันต้องใช้ Pin นี้เป็น Chip select พอดี ห้ามลืมเช็คนะน้อง เดี๋ยวหาว่าพี่ไม่เตือน

Software description:
งานซอฟต์แวร์นี่คือวิชา "ก๊อปวางอย่างมีชั้นเชิง" (Code reuse) แท้ๆ
พี่ดึงฟังก์ชันอ่านค่า Clock มาจากโปรเจกต์ “ds3231.ino” ใน Library ที่ชื่อ RTClib
ส่วนการสั่งงานหน้าจอ LCD ก็ใช้โค้ดพื้นฐานทั่วไปเลย
แล้วก็ไปส่องตัวอย่าง SD ReadWrite ของ Arduino [3] มาดูว่าเขาเขียนข้อมูลลง SD card กันยังไง
ตอนแรกพี่ลอง Test โค้ดผ่าน Arduino Serial console ก่อน พี่ว่ามันเป็นวิธี Debug ที่ดีนะ พี่เลยทิ้งโค้ดส่วนนั้นไว้ให้ในไฟล์ที่อัปโหลด ถ้าอยากลองก็แค่ไป Uncomment ตรงบรรทัด //#define test เพื่อปิดการเขียนลง SD card แล้วดูค่าผ่าน Serial console แทนได้เลย
Assumption:
ก่อนจะเริ่ม น้องต้องตั้งเวลา (Set clock) บนบอร์ด Logging shield ให้ตรงก่อนนะ เพราะโค้ดชุดนี้มันไม่ได้ทำหน้าที่ตั้งเวลาให้ จัดการให้เรียบร้อยล่ะวัยรุ่น
Libraries used:
SPI
SD
RTClib
LiquidCrystal
Data format:
ข้อมูลจะถูกเก็บเป็นไฟล์ CSV (Comma separated values) หน้าตาจะเป็นแบบนี้: Year, Month, Day, Hours, Minutes, Seconds, RPE value
พอกดปุ่ม Select ปุ๊บ มันจะบันทึกวันที่ เวลา และค่า RPE เริ่มต้นที่ 6 ลงไปในไฟล์ และพอกด Select อีกทีตอนเลิกออกกำลังกาย มันจะบันทึกวันที่ เวลา และค่า RPE เป็น 0 เพื่อบอกว่าจบเซสชั่นแล้ว
Functioning:
พอเปิดเครื่อง (Turn on) ปุ๊บ ตัวเครื่องจะทำการ Initialize ตัว SD card แล้วเปิดไฟล์รอไว้เพื่อบันทึกข้อมูล
ข้อมูลทั้งหมดจะถูกเขียนต่อท้าย (Append) ลงในไฟล์เดิมที่ชื่อว่า data.txt (พี่ Hardcode ชื่อไฟล์ไว้ในโปรแกรมเลย)
ถ้าน้องลืมเสียบ SD card, เปิดไฟล์ไม่ได้ หรือเขียนข้อมูลไม่ลง ตัวเครื่องจะมีข้อความเตือนนะ อย่าลืมสังเกตด้วย
กดปุ่ม Select เพื่อเริ่ม Log แล้วก็คอยกดปุ่ม Up/Down ปรับระดับเลเวลให้ตรงกับความเหนื่อย RPE ของเรา ณ ตอนนั้น
พอออกกำลังกายเสร็จ ก็กดปุ่ม Select อีกรอบเพื่อหยุดการบันทึก เป็นอันจบงาน
Granularity and limits:
ความละเอียดในการบันทึกข้อมูลอยู่ที่ 1 วินาทีนะ ถ้ามือน้องไวจัด กดปุ่มรัวๆ หลายครั้งภายในวินาทีเดียว ข้อมูลที่บันทึกออกมามันจะโชว์ว่าเกิดขึ้นในเวลาเดียวกันเป๊ะ
อันนี้ต้องระวังหน่อยนะน้อง ถ้าจะเอาไฟล์ข้อมูลนี้ไปป้อนเข้าโปรแกรมอื่นเพื่อวาดกราฟ เดี๋ยวโปรแกรมมันจะงงเอา
References:
[1] ข้อมูล RPE (Retrieved 18/June/2019)
[2] ปัญหาของ LCD shield (Errata) (Retrieved 7/June/2019)
[3] วิธีอ่านเขียน SD card (Retrieved – 8/June/2019)
EXPANDED TECHNICAL DETAILS
Holistic Fitness Tracking
โปรเจกต์นี้จะสร้างเครื่อง Logger แบบพกพาเพื่อบันทึกค่า RPE ช่วยให้นักกีฬาเก็บข้อมูลความเหนื่อยจากภายใน (Internal intensity) ควบคู่ไปกับข้อมูลภายนอกอย่าง Heart rate ได้
- Tactile Logger Interface: ใช้ Potentiometer หรือ Rotary encoder ง่ายๆ มาแมพเข้ากับสเกล 1-10 ให้น้องหมุนปรับค่าแล้วกดปุ่มเพื่อ Log ความเหนื่อยได้ทันที
- Data Persistence: ค่าที่อ่านได้จะถูกเซฟลงใน microSD card พร้อม Timestamp จาก Module RTC DS3231 มั่นใจได้ว่าข้อมูลอยู่ครบ เอาไป Export ลง Excel หรือ MATLAB วิเคราะห์ต่อได้สบาย
High-Contrast Display
- OLED UI: งานนี้ใช้หน้าจอ I2C OLED display แบบความคมชัดสูง แสดงค่า RPE ปัจจุบันพร้อม Bar graph ช่วยให้เห็นภาพชัดๆ แม้จะกำลังหอบแฮกๆ ตอนซ้อมหนักอยู่ก็ตาม หล่อเท่เลยงานนี้!