กลับไปหน้ารวมไฟล์
wifi-based-smart-watch-with-google-api-b91f4c.md

สมาร์ทวอทช์ที่เชื่อมต่ออินเทอร์เน็ตด้วย ESP-01

เลิกเล่น Bluetooth แบบพื้นฐานแล้ว มาดู WiFi-Based Smart Watch ที่ใช้พลังของ ESP8266 ESP-01 เชื่อมนาฬิกาข้อมือตรงๆ เข้าสู่อินเทอร์เน็ตเลย โปรเจกต์นี้จะเปลี่ยนอุปกรณ์สวมข้อมือให้กลายเป็นแดชบอร์ดโซเชียลมีเดียและศูนย์กลางแจ้งเตือน ที่สามารถดึงข้อมูลสดๆ จาก YouTube API และแสดงการแจ้งเตือนจากสมาร์ทโฟนผ่านแอป Android ที่เราสร้างขึ้นเองได้

ตรรกะการเชื่อมต่อของ ESP-01

เราเลือก ESP-01 มาเป็น "สมอง" ของนาฬิกา เพราะมันเล็กกระทัดรัดสุดๆ:

  • ซิงค์เวลาด้วย NTP: แทนที่จะใช้ชิป Real-Time Clock (RTC) นาฬิกาของเราใช้ Network Time Protocol (NTP) มันจะเชื่อมต่อกับเซิร์ฟเวอร์เวลาทั่วโลกผ่าน WiFi เพื่อให้หน้าปัดนาฬิกาแม่นยำถึงระดับมิลลิวินาทีเสมอ
  • เชื่อมต่อกับ YouTube API: โดยการส่งคำขอ HTTP GET พร้อมคีย์ API ที่เราตั้งเอง นาฬิกาจะไปถามข้อมูลสถิติของช่อง YouTube ของเรา มันจะแยกวิเคราะห์ข้อมูล JSON ที่ได้กลับมา เพื่อดึงจำนวน Subscriber และ View แบบเรียลไทม์มาแสดงผล โดยจะอัปเดตทุกๆ สองสามนาที
  • ติดตามโซเชียล: ใช้ตรรกะเดียวกันนี้ดึงจำนวนผู้ติดตาม Instagram มาได้ด้วย งานนี้เลยเป็นเครื่องมือชั้นดีสำหรับครีเอเตอร์ที่อยากเช็คการเติบโตของแอคเคาต์ตัวเองได้ทุกที่

เซิร์ฟเวอร์แจ้งเตือนและ MIT App Inventor

เพื่อเชื่อมโยงระหว่างนาฬิกากับสมาร์ทโฟน โปรเจกต์นี้ใช้วิธี Notification Server:

  1. แอป Android สร้างเอง: ใช้ MIT App Inventor 2 สร้างแอปพลิเคชันเฉพาะขึ้นมาเพื่อ "ฟัง" การแจ้งเตือนจากระบบของโทรศัพท์
  2. ส่งต่อข้อมูลด้วย TCP/UDP: เมื่อมีการแจ้งเตือนใหม่เข้ามา (เช่น จาก WhatsApp, SMS, Email) แอปจะส่งแพ็กเก็ตข้อมูลผ่านเครือข่ายภายในบ้าน (หรือผ่านสะพานคลาวด์) ไปยังที่อยู่ IP ของนาฬิกา
  3. แสดงผลบน OLED: นาฬิกาจะระบุตัวผู้ส่งและข้อความสั้นๆ จากนั้นแสดงผลบนจอ 1.12'' Grove OLED Display โดยใช้ไลบรารี U8g2 หรือ Grove OLED

การประกอบฮาร์ดแวร์ให้กะทัดรัด

การออกแบบให้สวมใส่ได้สะดวกคือความท้าทายใหญ่สุดของโปรเจกต์นี้:

  • OLED 1.12'': ถูกเลือกเพราะใช้อินเทอร์เฟซ I2C ซึ่งต้องการสายข้อมูลแค่สองเส้น (SDA/SCL) และให้สีดำลึก คอนทราสต์สูง อ่านง่ายในสภาพแสงต่างๆ
  • ประสิทธิภาพด้านพลังงาน: ESP-01 ขึ้นชื่อเรื่องกินไฟสูงตอนที่กำลังเชื่อมต่อ WiFi โปรเจกต์นี้จึงรวม แบตเตอรี่ LiPo 3.7V และโมดูลชาร์จ TP4056 เข้าไปด้วย เพื่อให้นาฬิกาชาร์จผ่าน USB ได้ง่าย
  • การปรับแต่งเฟิร์มแวร์: เพื่อยืดอายุแบตเตอรี่ให้ได้มากที่สุด ซอฟต์แวร์จะใช้คำสั่ง ESP.deepSleep() ในช่วงระหว่างการรีเฟรชข้อมูล โดยจะตื่นขึ้นมาเฉพาะตอนซิงค์เวลาหรือตรวจสอบการแจ้งเตือนใหม่เท่านั้น

เมื่อปีที่แล้วพี่ทำสมาร์ทวอทช์ที่ใช้ Bluetooth แต่มาไม่กี่เดือนมานี้พี่ได้ลองเล่นกับโมดูล WiFi ตัวจิ๋ว ESP-01 แล้วมันทำเอาพี่ทึ่งในความสามารถของมันมาก เลยตัดสินใจทำนาฬิกาอินเทอร์เน็ตขึ้นมา เอาง่ายๆ ก่อน พอทำนาฬิกาได้แล้วก็อยากเพิ่มฟีเจอร์เข้าไปอีก เรื่องมันเลยลุกลาม จากหนึ่งเป็นสอง สุดท้ายก็ได้นาฬิกาที่ใช้ google api แสดงสถิติของช่อง YouTube และจำนวนผู้ติดตาม Instagram ของเรา แถมยังมีเซิร์ฟเวอร์แจ้งเตือนที่ทำให้มันดึงการแจ้งเตือนจากสมาร์ทโฟนมาได้ผ่านแอปที่เราทำขึ้นจาก App Inventor อีกด้วย

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

title: "WiFi-Based Smart Watch (with Google API)"
description: "Made a WiFi-based watch with notification server and YouTube API."
author: "TeamASHcreations"
category: ""
tags:
  - "wearables"
  - "smartwatches"
  - "internet of things"
  - "monitoring"
  - "esp8266"
  - "youtube api"
views: 2998
likes: 2
price: 1499
difficulty: "Intermediate"
components:
  - "1x Grove - OLED Display 1.12'' V2"
  - "1x ESP8266 ESP-01"
  - "1x LiPo Battery 3.7V"
  - "1x TP4056 Charging Module"
tools: []
apps:
  - "1x MIT App Inventor 2"
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/808e4d74-60a6-4f93-992c-4480aa4380ad.rar"
documentationLinks: []
passwordHash: "4b183951f0282958579202a81c41c1b97be97b46bddd0bd78cd40ea8912ceb43"
encryptedPayload: "U2FsdGVkX1+LoKZG0BUY5nG3GlqGHNKs9dUNImQ2XAO+EiNEBdJXh8n4tg3x4nr873HkEz7vfdSCx4ES6GUmvwEQrELDEP86cbee71/SMd9yWBjHPLkrNqJ2BK/zDEg+"
seoDescription: "Create a WiFi-based Smart Watch featuring Notification Server and YouTube API integration with ESP-01 and OLED."
videoLinks:
  - "https://www.youtube.com/embed/ZBr22-vJ2pc"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/wifi-based-smart-watch-with-google-api-b91f4c_cover.jpg"
lang: "th"