สารบัญ:

IOT Heart Rate Monitor (ESP8266 และแอพ Android): 5 ขั้นตอน
IOT Heart Rate Monitor (ESP8266 และแอพ Android): 5 ขั้นตอน

วีดีโอ: IOT Heart Rate Monitor (ESP8266 และแอพ Android): 5 ขั้นตอน

วีดีโอ: IOT Heart Rate Monitor (ESP8266 และแอพ Android): 5 ขั้นตอน
วีดีโอ: IoT based Patient monitoring System using ESP8266, Arduino & Android Bluetooth App 2024, กรกฎาคม
Anonim
Image
Image

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

วิดีโอที่มีรายละเอียดเกี่ยวกับวงจรทางกายภาพสามารถดูได้ที่ด้านบน รหัสทั้งหมดสำหรับโครงการสามารถพบได้ใน Github ของฉัน

ขั้นตอนที่ 1: วงจร

The Circuit
The Circuit

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

มีการใช้อัตราขยายเพียงสองค่าเท่านั้น เนื่องจากค่าความเผื่อแรงดันไฟฟ้าสูงสุดของ ESP8266 คือ 3.3v และฉันไม่ต้องการสร้างความเสียหายให้กับบอร์ดของฉัน!

ทำตามวงจรด้านบนและพยายามทำให้มันทำงานบนกระดานขนมปัง หากคุณไม่มีออสซิลโลสโคปที่บ้าน คุณสามารถเสียบเอาต์พุตเข้ากับ Arduino และวางแผนได้ แต่ต้องแน่ใจว่าแรงดันไฟฟ้าไม่สูงกว่าความทนทานของ Arduino หรือไมโครคอนโทรลเลอร์

วงจรได้รับการทดสอบบนกระดานขนมปังและสังเกตเห็นการเปลี่ยนแปลงของเอาต์พุตเมื่อวางนิ้วบน LED และทรานซิสเตอร์ภาพถ่าย จากนั้นฉันก็ตัดสินใจประสานบอร์ดเข้าด้วยกันซึ่งไม่ได้แสดงในวิดีโอ

ขั้นตอนที่ 2: รหัสการประมวลผลสัญญาณและการสื่อสารของเซิร์ฟเวอร์

Image
Image
รหัสการประมวลผลสัญญาณและการสื่อสารของเซิร์ฟเวอร์
รหัสการประมวลผลสัญญาณและการสื่อสารของเซิร์ฟเวอร์

ฉันตัดสินใจใช้ 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
แอพ Android

แอพ Android พื้นฐานมากได้รับการออกแบบด้วยสองกิจกรรม กิจกรรมแรกลงชื่อเข้าใช้หรือลงทะเบียนผู้ใช้โดยใช้ Firebase API ฉันค้นคว้าแผ่นข้อมูลและพบบทช่วยสอนต่างๆ เกี่ยวกับวิธีใช้ Firebase กับแอปบนอุปกรณ์เคลื่อนที่ กิจกรรมหลักที่แสดงให้ผู้ใช้ข้อมูลของผู้ใช้เป็นผู้ฟังเหตุการณ์ตามเวลาจริง ดังนั้นจึงไม่มีความล่าช้าที่เห็นได้ชัดเจนในการเปลี่ยนแปลง BPM ของผู้ใช้ การแจ้งเตือนแบบพุชทำได้โดยใช้การส่งข้อความบนคลาวด์ของ Firebase ที่กล่าวถึงก่อนหน้านี้ มีข้อมูลที่เป็นประโยชน์มากมายในแผ่นข้อมูล Firebase เกี่ยวกับวิธีการใช้งานนี้ และสามารถทดสอบแอปได้โดยการส่งการแจ้งเตือนจากแดชบอร์ดบนเว็บไซต์ Firebase

รหัสทั้งหมดสำหรับกิจกรรมและวิธีการสำหรับการส่งข้อความบนคลาวด์มีอยู่ในที่เก็บ Github ของฉัน

ขั้นตอนที่ 5: บทสรุป

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

ส่วนที่เหลือของระบบใช้งานได้ แต่นี่เป็นอุปกรณ์ทดลองที่ฉันต้องการสร้างเพื่อดูว่าวัตถุนั้นเป็นไปได้หรือไม่ รหัสเดิมที่ใช้ในการส่งการแจ้งเตือนแบบพุชจะใช้ไม่ได้ในไม่ช้า ดังนั้นหากคุณกำลังอ่านข้อความนี้ในช่วงปลายปี 2018 หรือปลายปี คุณจะต้องใช้วิธีอื่น ปัญหานี้เกิดขึ้นกับ ESP เท่านั้น ดังนั้นหากคุณต้องการใช้สิ่งนี้กับ Arduino ที่รองรับ WiFi ก็จะไม่มีปัญหา

หากคุณมีคำถามหรือปัญหาใด ๆ โปรดส่งข้อความถึงฉันที่ Instructables

แนะนำ: