
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12


ในโครงการปีสุดท้ายของฉัน ฉันต้องการออกแบบอุปกรณ์ที่จะตรวจสอบอัตราการเต้นของหัวใจ จัดเก็บข้อมูลของคุณบนเซิร์ฟเวอร์ และแจ้งให้คุณทราบผ่านการแจ้งเตือนเมื่ออัตราการเต้นของหัวใจของคุณผิดปกติ แนวคิดเบื้องหลังโปรเจ็กต์นี้เกิดขึ้นเมื่อฉันพยายามสร้างแอปแบบพอดีบิตที่แจ้งเตือนผู้ใช้เมื่อพวกเขามีปัญหาเกี่ยวกับหัวใจ แต่ฉันไม่สามารถหาวิธีใช้ข้อมูลแบบเรียลไทม์ได้ โปรเจ็กต์นี้มีสี่ส่วนหลัก รวมถึงวงจรทางกายภาพสำหรับวัดการเต้นของหัวใจ โมดูล Wi-Fi ESP8266 พร้อมรหัสประมวลผลสัญญาณ เซิร์ฟเวอร์สำหรับจัดเก็บรหัส และแอป Android สำหรับแสดงอัตราการเต้นของหัวใจ
วิดีโอที่มีรายละเอียดเกี่ยวกับวงจรทางกายภาพสามารถดูได้ที่ด้านบน รหัสทั้งหมดสำหรับโครงการสามารถพบได้ใน Github ของฉัน
ขั้นตอนที่ 1: วงจร

มีสองวิธีหลักในการวัดการเต้นของหัวใจ แต่สำหรับโครงการนี้ ฉันตัดสินใจใช้ photoplethysmography (PPG) ซึ่งใช้แหล่งกำเนิดแสงอินฟราเรดหรือแสงสีแดงซึ่งหักเหผ่านผิวหนังสองสามชั้นแรก เซ็นเซอร์ภาพถ่ายใช้เพื่อวัดการเปลี่ยนแปลงของความเข้มของแสง (เมื่อเลือดไหลผ่านเส้นเลือด) สัญญาณ PPG มีสัญญาณรบกวนอย่างเหลือเชื่อ ดังนั้นฉันจึงใช้ตัวกรองแบนด์พาสเพื่อกรองความถี่เฉพาะที่ต้องการ หัวใจของมนุษย์เต้นระหว่างความถี่ 1 ถึง 1.6 Hz op-amp ที่ฉันใช้คือ lm324 ซึ่งมีการชดเชยแรงดันไฟฟ้าที่ดีที่สุดของ op-amps ทั้งหมดที่มีให้ฉัน หากคุณกำลังสร้างโปรเจ็กต์นี้ขึ้นมาใหม่ op-amp ที่แม่นยำจะเป็นตัวเลือกที่ดีกว่ามาก
มีการใช้อัตราขยายเพียงสองค่าเท่านั้น เนื่องจากค่าความเผื่อแรงดันไฟฟ้าสูงสุดของ ESP8266 คือ 3.3v และฉันไม่ต้องการสร้างความเสียหายให้กับบอร์ดของฉัน!
ทำตามวงจรด้านบนและพยายามทำให้มันทำงานบนกระดานขนมปัง หากคุณไม่มีออสซิลโลสโคปที่บ้าน คุณสามารถเสียบเอาต์พุตเข้ากับ Arduino และวางแผนได้ แต่ต้องแน่ใจว่าแรงดันไฟฟ้าไม่สูงกว่าความทนทานของ Arduino หรือไมโครคอนโทรลเลอร์
วงจรได้รับการทดสอบบนกระดานขนมปังและสังเกตเห็นการเปลี่ยนแปลงของเอาต์พุตเมื่อวางนิ้วบน LED และทรานซิสเตอร์ภาพถ่าย จากนั้นฉันก็ตัดสินใจประสานบอร์ดเข้าด้วยกันซึ่งไม่ได้แสดงในวิดีโอ
ขั้นตอนที่ 2: รหัสการประมวลผลสัญญาณและการสื่อสารของเซิร์ฟเวอร์



ฉันตัดสินใจใช้ Arduino IDE บน ESP8266 เพราะใช้งานง่ายมาก เมื่อวางแผนสัญญาณแล้ว ยังมีสัญญาณรบกวนอยู่มาก ดังนั้นฉันจึงตัดสินใจทำความสะอาดด้วยตัวกรองค่าเฉลี่ยเคลื่อนที่ FIR ที่มีจำนวนตัวอย่างเป็นสิบ ฉันแก้ไขตัวอย่างโปรแกรม Arduino ที่ชื่อว่า "smoothing" เพื่อทำสิ่งนี้ ฉันทดลองเล็กน้อยเพื่อหาวิธีการวัดความถี่ของสัญญาณ พัลส์มีความยาวและแอมพลิจูดต่างกันเนื่องจากหัวใจมีพัลส์สี่ประเภทและลักษณะของสัญญาณ PPG ฉันเลือกค่ากลางที่ทราบซึ่งสัญญาณข้ามเป็นจุดอ้างอิงสำหรับแต่ละพัลส์เสมอ ฉันใช้บัฟเฟอร์วงแหวนเพื่อกำหนดว่าความชันของสัญญาณเป็นบวกหรือลบเมื่อใด การรวมกันของสองสิ่งนี้ทำให้ฉันสามารถคำนวณระยะเวลาระหว่างพัลส์เมื่อสัญญาณเป็นบวกและเท่ากับค่าเฉพาะ
ซอฟต์แวร์สร้าง BPM ที่ค่อนข้างไม่ถูกต้องซึ่งไม่สามารถใช้งานได้จริง ด้วยการทำซ้ำเพิ่มเติม โปรแกรมที่ดีกว่าสามารถออกแบบได้ แต่เนื่องจากข้อจำกัดด้านเวลา นี่ไม่ใช่ตัวเลือก รหัสสามารถพบได้ในลิงค์ด้านล่าง
ซอฟต์แวร์ ESP8266
ขั้นตอนที่ 3: เซิร์ฟเวอร์และการสื่อสารข้อมูล

ฉันตัดสินใจใช้ Firebase เพื่อจัดเก็บข้อมูล เนื่องจากเป็นบริการฟรีและใช้งานง่ายมากกับแอปบนอุปกรณ์เคลื่อนที่ ไม่มี API อย่างเป็นทางการสำหรับ Firebase ที่มี ESP8266 แต่ฉันพบว่าห้องสมุด Arduino ทำงานได้ดีมาก
มีโปรแกรมตัวอย่างที่สามารถพบได้ในไลบรารี ESP8266WiFi.h ซึ่งช่วยให้คุณเชื่อมต่อกับเราเตอร์ด้วย SSID และรหัสผ่าน ใช้สำหรับเชื่อมต่อบอร์ดกับอินเทอร์เน็ตเพื่อให้สามารถส่งข้อมูลได้
แม้ว่าการจัดเก็บข้อมูลจะทำได้ง่าย แต่ก็ยังมีปัญหามากมายในการส่งการแจ้งเตือนแบบพุชผ่านคำขอ HTTP POST ฉันพบความคิดเห็นเกี่ยวกับ Github ซึ่งใช้วิธีเดิมในการทำเช่นนี้ผ่านการส่งข้อความบนคลาวด์ของ Google และไลบรารี HTTP สำหรับ ESP8266 วิธีนี้สามารถเห็นได้ในรหัสบน Github ของฉัน
บน Firebase ฉันสร้างโปรเจ็กต์และใช้ API และคีย์การลงทะเบียนในซอฟต์แวร์ การส่งข้อความบนคลาวด์ของ firebase ใช้กับแอพเพื่อส่งการแจ้งเตือนแบบพุชไปยังผู้ใช้ เมื่อทดสอบการสื่อสารข้อมูลสามารถเห็นได้ในฐานข้อมูลในขณะที่ ESP8266 กำลังทำงาน
ขั้นตอนที่ 4: แอพ Android

แอพ Android พื้นฐานมากได้รับการออกแบบด้วยสองกิจกรรม กิจกรรมแรกลงชื่อเข้าใช้หรือลงทะเบียนผู้ใช้โดยใช้ Firebase API ฉันค้นคว้าแผ่นข้อมูลและพบบทช่วยสอนต่างๆ เกี่ยวกับวิธีใช้ Firebase กับแอปบนอุปกรณ์เคลื่อนที่ กิจกรรมหลักที่แสดงให้ผู้ใช้ข้อมูลของผู้ใช้เป็นผู้ฟังเหตุการณ์ตามเวลาจริง ดังนั้นจึงไม่มีความล่าช้าที่เห็นได้ชัดเจนในการเปลี่ยนแปลง BPM ของผู้ใช้ การแจ้งเตือนแบบพุชทำได้โดยใช้การส่งข้อความบนคลาวด์ของ Firebase ที่กล่าวถึงก่อนหน้านี้ มีข้อมูลที่เป็นประโยชน์มากมายในแผ่นข้อมูล Firebase เกี่ยวกับวิธีการใช้งานนี้ และสามารถทดสอบแอปได้โดยการส่งการแจ้งเตือนจากแดชบอร์ดบนเว็บไซต์ Firebase
รหัสทั้งหมดสำหรับกิจกรรมและวิธีการสำหรับการส่งข้อความบนคลาวด์มีอยู่ในที่เก็บ Github ของฉัน
ขั้นตอนที่ 5: บทสรุป
มีปัญหาสำคัญบางประการเกี่ยวกับการวัด BPM ของผู้ใช้ ค่าต่างๆ ต่างกันมากและไม่สามารถนำมาใช้เพื่อระบุสุขภาพของผู้ใช้ได้ สิ่งนี้ทำให้รหัสประมวลผลสัญญาณที่ใช้งานบน ESP8266 หลังจากการวิจัยเพิ่มเติม ฉันพบว่าหัวใจมีสี่จังหวะที่แตกต่างกันโดยมีระยะเวลาต่างกัน จึงไม่น่าแปลกใจที่ซอฟต์แวร์จะไม่ถูกต้อง วิธีต่อสู้กับสิ่งนี้คือใช้ค่าเฉลี่ยของสี่พัลส์ในอาร์เรย์และคำนวณระยะเวลาของหัวใจเหนือพัลส์ทั้งสี่นั้น
ส่วนที่เหลือของระบบใช้งานได้ แต่นี่เป็นอุปกรณ์ทดลองที่ฉันต้องการสร้างเพื่อดูว่าวัตถุนั้นเป็นไปได้หรือไม่ รหัสเดิมที่ใช้ในการส่งการแจ้งเตือนแบบพุชจะใช้ไม่ได้ในไม่ช้า ดังนั้นหากคุณกำลังอ่านข้อความนี้ในช่วงปลายปี 2018 หรือปลายปี คุณจะต้องใช้วิธีอื่น ปัญหานี้เกิดขึ้นกับ ESP เท่านั้น ดังนั้นหากคุณต้องการใช้สิ่งนี้กับ Arduino ที่รองรับ WiFi ก็จะไม่มีปัญหา
หากคุณมีคำถามหรือปัญหาใด ๆ โปรดส่งข้อความถึงฉันที่ Instructables
แนะนำ:
Heartbeat Sensor โดยใช้ Arduino (Heart Rate Monitor): 3 ขั้นตอน

Heartbeat Sensor โดยใช้ Arduino (Heart Rate Monitor): Heartbeat Sensor เป็นอุปกรณ์อิเล็กทรอนิกส์ที่ใช้ในการวัดอัตราการเต้นของหัวใจเช่นความเร็วของการเต้นของหัวใจ การตรวจสอบอุณหภูมิร่างกาย อัตราการเต้นของหัวใจ และความดันโลหิต เป็นสิ่งพื้นฐานที่เราทำเพื่อให้เรามีสุขภาพที่ดี อัตราการเต้นของหัวใจสามารถเป็นมอน
DIY Heart Rate Monitor (logger): 4 ขั้นตอน

เครื่องวัดอัตราการเต้นของหัวใจ DIY (คนตัดไม้): ในโครงการนี้ ฉันจะแสดงให้คุณเห็นว่าสมาร์ทวอทช์เชิงพาณิชย์วัดและตรวจสอบอัตราการเต้นของหัวใจของคุณอย่างไร จากนั้นฉันจะแสดงวิธีสร้างวงจร DIY ที่สามารถทำได้เช่นเดียวกัน เก็บข้อมูลอัตราการเต้นของหัวใจ
การฝึกซ้อม Heart Rate Zone Monitor Watch: 19 ขั้นตอน (พร้อมรูปภาพ)

Training Heart Rate Zone Monitor Watch: วิทยาลัยเป็นช่วงเวลาที่วุ่นวายและวุ่นวายในชีวิตของคนๆ หนึ่ง นั่นคือเหตุผลว่าทำไมการรักษาระดับความเครียดของคุณให้อยู่ในระดับต่ำจึงเป็นสิ่งสำคัญมาก วิธีหนึ่งที่เราชอบทำคือออกกำลังกาย ช่วยให้จิตใจแจ่มใสและร่างกายแข็งแรง นั่นคือเหตุผลที่เราสร้างอุปกรณ์พกพา
Heart Rate Monitor AD8232, Arduino, การประมวลผล: 4 ขั้นตอน

Heart Rate Monitor AD8232, Arduino, การประมวลผล: Analog Devices AD8232 เป็นส่วนหน้าแบบแอนะล็อกที่สมบูรณ์แบบที่ออกแบบมาเพื่อรับสัญญาณ EKG (ElectroCardioGram) ระดับมิลลิโวลต์ แม้ว่ามันจะเป็นเรื่องง่ายที่จะต่อ AD8232 และดูสัญญาณ EKG ที่เป็นผลลัพธ์บนออสซิลโลสโคป ความท้าทายสำหรับ
การบันทึกสัญญาณไบโออิเล็กทริก: ECG และ Heart Rate Monitor: 7 ขั้นตอน

การบันทึกสัญญาณไบโออิเล็กทริก: ECG และ Heart Rate Monitor: ประกาศ: นี่ไม่ใช่อุปกรณ์ทางการแพทย์ นี่เป็นเพื่อการศึกษาโดยใช้สัญญาณจำลองเท่านั้น หากใช้วงจรนี้สำหรับการวัด ECG จริง โปรดตรวจสอบให้แน่ใจว่าวงจรและการเชื่อมต่อระหว่างวงจรกับเครื่องมือใช้การแยกที่เหมาะสม