ทำ Data Logger ด้วย TTGo T1 (ESP32) และโมดูล DS3231

ในปัจจุบันเราต้องการ ESP32 Application ประเภท Data Logger อยู่บ่อยครั้ง ซึ่งชิพ ESP32 สามารถตอบโจทย์ทางด้านนี้ได้เป็นอย่างดี ไม่ว่าจะเป็นการทำแบบ  Online หรือ Offline ถือว่าเป็นชิพที่ครบเครื่องจริงๆครับ

ในบทความนี้ผู้เขียนเลือกใช้วิธีการเก็บข้อมูลแบบ Offline เนื่องจากต้องการลดปัญหาทางด้านเครือข่าย และไม่ต้องการให้จบด้วย Module ESP32 ในตัวเดียว

TTGo T1 (V1.3)

ผู้เขียนเลือกใช้บอร์ด TTo T1 ซึ่งเป็น Breakout Board จาก Lilygo เนื่องจากราคาถูก และรองรับการเสียบ SDCard และแบตเตอรี่ในตัว

TTGo T1 Pin Mapping

TTGo T1 Pin Mapping

RTC Module (DS3231)

RTC Module หรือ โมดูลนาฬิกา เป็นสิ่งที่ขาดไม่ได้ เนื่องจากโจทย์ในรอบนี้เราไม่มีการเชื่อมต่อผ่าน Internet ดังนั้น ถ้าเราต้องการเก็บข้อมูลจากเซ็นเซอร์แล้ว เราต้องมีเวลากำกับ ไม่เช่นนั้นเราจะไม่รู้ว่าข้อมูลของช่วงเวลาไหน ซึ่งจริงๆแล้วสามารถใช้ RTC เบอร์ไหนก็ได้ครับ แต่วันนี้ผู้เขียนจะเลือก DS3231 มาใช้เนื่องจากตัวนี้สามารถบอกอุณภูมิได้ด้วยนั่นเอง!!

เริ่มกันเลย!

Wiring

  # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
  #                 Installation :                                      #
  #         DS3231 SDA       <---------->   (21) SDA                    #
  #         DS3231 SCL       <---------->   (23) SCL                    #
  #         DS3231 VCC       <---------->   3.3v or 5v                  #
  #         DS3231 GND       <---------->   GN                          #
  # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

ค้นหา I2C Address

หลังจากแสกนแล้วจะเจอ 2 Address ตามภาพ

ติดตั้ง Library

  1. RTC By Makuna
  2. LilyGO / esp32-micro-sdcard
RTC By Makuna
LilyGO/esp32-micro-sdcard

เปิดตัวอย่าง DS3231_Simple และรัน จะได้ผลได้ภาพครับ ถ้าได้แบบนี้แล้ว แสดงว่าปกติ! ได้ค่าอุณหภูมิ และเวลามาแล้ว!!!

ทดสอบ อ่าน/เขียน SDCard

รันแล้วจะได้ตัวอย่างดังในภาพ แสดงว่าเราเขียน SDCard ได้แล้ว!

เริ่มเขียนโค๊ดกันเลย!

RTCSetup

RTCSetup เป็นฟังก์ชั่นสำหรับเซ็ตเวลา โดยจะให้เป็นเวลาตอนคอมไพล์โปรแกรม

loop

อ่าน Sensor และ Date/Time ทุกๆ 500ms โดยเราจะเก็บไว้ในตัวแปร Global เพื่อเก็บไปใช้ในส่วนของ Save ไฟล์ลง SDCard อีกที

  1. temperatureC
  2. filenamestring
  3. datestring
  4. timestring

บันทึกข้อมูล!

โปรแกรมนี้เราจะสร้าง Task ขึ้นมาเพื่อบันทึกข้อมูลลงใน SDCard ครับ ซึ่งกำหนดได้ว่าจะให้บันทึกข้อมูลทุกๆ กี่วินาทีดี ซึ่งโปรแกรมตัวอย่างจะบันทึกค่าทุกๆ 5 วินาที และกระพริบไฟบอก 20ms เพื่อให้รู้ว่ามีการบันทึกข้อมูลแล้ว และเราจะ Delay การ Start Task เป็นเวลา 10วินาที เพื่อรอให้ main โปรแกรมทำงานไปก่อน

เพียงเท่านี้เราก็จะได้โปรแกรมที่ทำหน้าที่เก็บข้อมูล Sensor ไว้ใน SDCard ในรูปแบบของไฟล์ CSV แล้ว!!!

ซึ่งโค๊ดทั้งหมดจะมีหน้าตาแบบนี้! (สามารถกดโหลดได้โดยการคลิ๊กที่ภาพได้เลย!)

ข้อมูลในไฟล์ .csv

เปิดดูไฟล์กันหน่อย! จะเห็นว่ามีข้อมูลมาเรียบร้อย… เราลองมา Plot Graph ดูหน่อยดีกว่า! ซึ่งรอบนี้ผมใช้โปรแกรม Numbers (เหมือน Excel) เปิดขึ้นมาทำกราฟ อุณภูมิที่เราเก็บไว้ครับ แจ่มแจ๋วไปเลย!

เห็นมั้ยครับ เพียงเท่านี้เราก็มี Data Logger ไว้ใช้งานแล้ว…

รอบหน้าเรามาดูกันว่าเราจะเอาไฟล์ .csv ของเราไปทำอะไรกันต่อได้บ้าง!

Happy Logging!

เลือกซื้อสินค้าได้ที่ร้านของเราที่ https://www.aiiotshop.com

Leave a Comment