विषय-सूची
- समग्र चित्र
- कोर विन्यास और M33
- सैंपल रेट और सिग्नल पथ
- कोरों के बीच संचार (साझा रिंग · RPMsg)
- विलंब बजट
- होल्टर संग्रहण · ट्रेंड
- अलार्म इंजन
- स्टेट मशीन
- बूट स्व-परीक्षण
- क्लाउड · सुरक्षा · अपडेट
- सॉफ़्टवेयर श्रेणी पृथक्करण · मॉड्यूल
- विकास क्रम · वास्तविक मापन सूची
- टेस्ट बेंच फ़र्मवेयर (ESP32-S3 + ADS1293)
- टेस्ट बेंच सत्यापन परिणाम
1. समग्र चित्र
प्रोसेसिंग इकाई NXP i.MX 95 है। रोगी को छूने वाला मापन खंड (रोगी आइलैंड) आइसोलेटेड है, और डिजिटल आइसोलेटर (ISO7762) के माध्यम से प्रोसेसिंग इकाई से जुड़ता है। प्रोसेसिंग इकाई की चिप संरचना (i.MX 95 · AFE159RP8 · AFE4490 · दूसरे चरण में RM44L920) पुष्ट विनिर्देश है, और नीचे का कोर विन्यास डिफ़ॉल्ट मान है।
रोगी आइलैंड (आइसोलेटेड, CF) │ गैर-रोगी पक्ष (i.MX 95 SoM)
──────────────────────────────────────┼───────────────────────────────────────
AFE159RP8 (ECG 8ch, इलेक्ट्रोड 10, पेस चिप में) ─ISO7762#1─ LPSPI-A ┐
AFE4490 (SpO2, PRF 500 Hz) ─ISO7762#2─ LPSPI-B ├─► Cortex-M7 800 MHz (FreeRTOS)
V1/V5 स्विच · sim/signal स्विच अवस्था ─(आइसोलेटेड GPIO)───┘ अधिग्रहण·फ़िल्टर·QRS·पेस·SpO2
(+विकल्प) NIBP मॉड्यूल UART · Resp (AFE में अंतर्निहित) ·अलार्म निर्णय·अलार्म ध्वनि
│ साझा DDR रिंग (तरंग) + RPMsg (कमांड·घटना)
▼
Cortex-A55 ×6 (Linux, Yocto) स्क्रीन (Qt)·होल्टर·ट्रेंड·क्लाउड·OTA·लॉग·अधिकार
Cortex-M33 (NXP SM) पावर·क्लॉक·रीसेट·PMIC·दोष प्रतिक्रिया (LM इकाई रीसेट)
बाहरी: TPS3430 विंडो वॉचडॉग (M7 किक करता है) → WDO → बैकअप बज़र + A55 GPIO [चरण 2] RM44L920 सुरक्षा MCU (SPI)
LTC1760 + स्मार्ट पैक A/B (SMBus, M7 का स्वामित्व) · VSYS अंडर-वोल्टेज कम्पैरेटर → M7 IRQ
कोर विन्यास के तीन सिद्धांत डिफ़ॉल्ट मान
- रोगी सुरक्षा से जुड़ा पथ (अधिग्रहण → निर्णय → अलार्म ध्वनि) अकेले M7 में बंद रहता है। Linux बंद हो जाए तब भी ध्वनि बजती है।
- Linux केवल 「दिखाना·संग्रहीत करना·भेजना」 करता है। Linux रुक जाए तो M7 पहचानकर उच्च-प्राथमिकता 「डिस्प्ले दोष」 बजाता है।
- M7 रुक जाए तो System Manager (SM) केवल M7 को रीसेट करता है, उस दौरान TPS3430 बैकअप बज़र बजाता है, और A55 तरंग को धूसर कर देता है।
2. कोर विन्यास और M33
डिज़ाइन समीक्षा में बदला गया बिंदु — M33 पर निगरानी·अलार्म बैकअप नहीं चलाया जा सकता। i.MX 95 का M33, NXP System Manager के लिए समर्पित कोर है। NXP imx-sm दस्तावेज़ (sm/doc/arch.md) का मूल पाठ:
- 「SM owns the M33 core and does not support customers adding workloads to this core.」
- 「the Cortex-M33 is not available to run customer applications. … additional customer functionality may interfere with the real-time response of the SM.」
इसलिए डिफ़ॉल्ट मान इस प्रकार रखा गया। M33 पर NXP SM को यथावत् रखा जाता है (कोड नहीं छुआ जाता, केवल कॉन्फ़िगरेशन फ़ाइल), और SM की दोष प्रतिक्रिया (FCCU·वॉचडॉग → केवल संबंधित LM रीसेट) को 「प्राथमिक हार्डवेयर निगरानी」 के रूप में उपयोग किया जाता है। SM कॉन्फ़िगरेशन में पहले से M7_LOCKUP → M7(LM1) रीसेट, WDOG3/WDOG4 → AP(LM2) रीसेट प्रतिक्रियाएँ हैं। निगरानी·अलार्म बैकअप: चरण 1: M7 ↔ A55 पारस्परिक निगरानी + बाहरी विंडो वॉचडॉग TPS3430 + बैकअप बज़र, चरण 2: RM44L920 इसे संभाल लेता है।
कोर-वार ज़िम्मेदारी डिफ़ॉल्ट मान
| कोर | OS | ज़िम्मेदारी |
|---|---|---|
| M7 (800 MHz, SoM आपूर्तिकर्ता का उल्लेख) | FreeRTOS + MCUXpresso SDK + RPMsg-Lite (विकल्प 2 Zephyr) | AFE159RP8·AFE4490 अधिग्रहण, साझा समय-अक्ष, पेस पहचान, डेसिमेशन, द्वि-स्तरीय अनुकूली notch, HPF/LPF, QRS·HR, SpO2·PR·PI, (विकल्प) श्वसन·NIBP, अलार्म शर्त निर्णय·प्राथमिकता·अलार्म ध्वनि संश्लेषण, लीड-ऑफ·सेंसर-ऑफ़, पावर निगरानी (LTC1760·पैक·VSYS), बाहरी वॉचडॉग किक, A55 निगरानी |
| M33 | NXP SM (बेयर-मेटल, स्वयं का कोड नहीं) | पावर·क्लॉक·रीसेट·PMIC, TRDC संसाधन पृथक्करण, FCCU दोष प्रतिक्रिया, रीसेट कारण रिकॉर्ड |
| A55 ×6 | Linux (NXP वेंडर कर्नेल) | Qt 6 स्क्रीन, होल्टर रिकॉर्डिंग, ट्रेंड DB, अलार्म प्रदर्शन·संचालन·लॉग, सेटिंग·अधिकार, क्लाउड सिंक्रनाइज़ेशन, OTA·USB अपडेट, सर्विस मोड, सुरक्षा |
| RM44L920 (चरण 2) | TI HALCoGen + स्वयं का (अनिर्धारित) | अलार्म निर्णय का दोहरा मिलान, बैकअप अलार्म ध्वनि, बाहरी वॉचडॉग प्रबंधन, फ़ेल-सेफ़ निर्णय |
संसाधन स्वामित्व (SM कॉन्फ़िगरेशन से स्थिर)
| संसाधन | स्वामी | टिप्पणी |
|---|---|---|
| LPSPI ×2 (ECG·PPG समर्पित बस) | M7 | AFE4490 अचयनित होने पर 3-स्टेट नहीं होता, इसलिए बस साझा करना निषिद्ध |
| DRDY·ADC_RDY इंटरप्ट GPIO, स्विच अवस्था GPIO | M7 | |
| सामान्य-उद्देश्य टाइमस्टैम्प टाइमर 1 | M7 | ECG·PPG साझा समय-अक्ष |
| SAI या PWM + अलार्म ध्वनि एम्प | M7 | Linux से स्वतंत्र रूप से ध्वनि बजनी चाहिए |
| I²C(SMBus) → LTC1760·पैक A/B | M7 | क्योंकि पावर अलार्म M7 का निर्णय है |
| (विकल्प) NIBP UART | M7 | पंप चलते समय ECG शोर संकेत M7 को पता होना चाहिए |
| WDOG5 | M7 (SM दोष प्रतिक्रिया) | WDOG5 → LM_RESET lm 1 |
| PMIC I²C, क्लॉक, रीसेट | SM | |
| डिस्प्ले (LVDS)·GPU·eMMC·USB·Wi-Fi/BT·GbE ×2·बैकअप बज़र GPIO | A55 | |
| ELE(EdgeLock Secure Enclave) | बूट श्रृंखला·A55 |
संसाधन बजट (गणना·डिफ़ॉल्ट मान)
| मद | मान | टिप्पणी |
|---|---|---|
| M7 ITCM / DTCM | 256 KB / 256 KB | Zephyr dts के आधार पर। NXP संदर्भ मैनुअल का मूल पाठ असत्यापित |
| M7 कोड स्थान | ITCM (DSP·ISR), बड़ी तालिकाएँ DDR में | डिफ़ॉल्ट मान |
| M7 लोड अनुमान | 8 kHz इंटरप्ट (प्रति बार ≤ 5 µs → 4 %) + डेसिमेशन FIR लगभग 0.75 M MAC/s + notch·QRS (500 SPS) → 10 % से कम | गणना। DWT साइकिल काउंटर से वास्तविक मापन नियोजित |
| साझा DDR आरक्षित क्षेत्र | 32 MiB (रिंग लगभग 23.2 MiB + मार्जिन) | गणना |
3. सैंपल रेट और सिग्नल पथ
8 kSPS क्यों
- IEC 60601-2-27 पेस पल्स को HR गणना से बाहर करने की माँग करता है। सीमा ±2~±700 mV, 0.1~2 ms (चौड़ाई की निचली सीमा व्यापक पक्ष 0.1 ms रखी गई)
- TI ADS1298 डेटाशीट: सॉफ़्टवेयर पहचान के लिए 「8 kSPS or more」। शोध-पत्र के आँकड़े 8 kHz Se 95.5 % · 16 kHz 97.1 % · 32 kHz 99.3 % (CinC 2018)
- AFE159RP8 की चिप के भीतर 4-लीड पेस एल्गोरिथ्म + 128 kSPS पेस आउटपुट है। पर सार्वजनिक संस्करण सारांश है, इसलिए निर्णय आउटपुट का प्रारूप·चौड़ाई·आयाम सीमा असत्यापित
डिफ़ॉल्ट मान ECG के सभी चैनल 8 kSPS 24-बिट पर लिए जाते हैं। पेस: चिप के भीतर पहचान (प्राथमिक) + M7 सॉफ़्टवेयर पहचान (द्वितीयक पुष्टि)। विस्तृत डेटाशीट से चिप के भीतर की पहचान सभी आवश्यकताएँ पूरी करती है यह पुष्ट होने पर 2 kSPS तक घटाने पर विचार किया जाएगा, उससे पहले 8 kSPS स्थिर।
M7 के भीतर का पथ
AFE159RP8 8 kSPS × 8ch × 24bit ── DRDY ISR → LPSPI DMA ─┐
├─ ① समय-चिह्न जोड़ना (सामान्य टाइमर 32bit, सैंपल नंबर u64)
AFE4490 500 SPS × 6 स्ट्रीम ── ADC_RDY ISR → LPSPI ──────┘
├─ ② पेस: चिप फ़्लैग + 8 kSPS ढलान·चौड़ाई जाँच → घटना {सैंपल नंबर, लीड, चौड़ाई}
├─ ③ पेस ब्लैंकिंग: पल्स खंड को 8 kSPS पर रैखिक इंटरपोलेशन से भरना
├─ ④ डेसिमेशन 8000 → 2000 → 500 SPS (रैखिक-फ़ेज़ FIR 2 चरण, ÷4·÷4)
│ ग्रुप डिले अनुमान: 31 टैप (8k) 1.9 ms + 63 टैप (2k) 15.5 ms ≈ 17.4 ms (गणना)
├─ ⑤ 「कच्चा डेटा」 शाखा → होल्टर संग्रहण (500 SPS 24bit, notch से पहले·HPF से पहले) + calib पंक्ति
├─ ⑥ HPF → द्वि-स्तरीय अनुकूली notch (60·120 Hz) → LPF (notch से पहले·बाद दोनों रखे जाते हैं — तुलना स्क्रीन के लिए)
├─ ⑦ QRS पहचान (अलग बैंड 5~15 Hz, notch अवस्था से स्वतंत्र)
│ पेस घटना केवल 「Paced=Yes」 होने पर HR से बाहर·मार्कर
└─ ⑧ PPG: 500 SPS → 5 सैंपल औसत 100 SPS → बैंड फ़िल्टर → R·SpO2·PR·PI। 1 सेकंड चक्र
500 SPS तक घटाने का कारण: पहले डिज़ाइन किए गए द्वि-स्तरीय notch के गुणांक fs = 500 Hz के आधार पर हैं, इसलिए उन्हें यथावत् उपयोग किया जा सकता है। ब्लैंकिंग की लंबाई और FIR टैप संख्या सिग्नल प्रोसेसिंग डिज़ाइन में वास्तविक मापन से तय की जाएँगी।
चैनल आवंटन डिफ़ॉल्ट मान
| AFE चैनल | मूल 5 इलेक्ट्रोड | 12-लीड विकल्प |
|---|---|---|
| CH1 | I (LA−RA) | I |
| CH2 | II (LL−RA) | II |
| CH3 | III (LL−LA) सीधा पुष्ट | V1 |
| CH4 | V (V1/V5 स्विच) | V2 |
| CH5~8 | स्व-निदान चक्रण (आंतरिक परीक्षण सिग्नल → calib पंक्ति, पावर·तापमान) | V3~V6 |
प्रदर्शन के लिए डाउनसैंपल
- हर स्तंभ (px) के लिए min/max ऊर्ध्वाधर रेखा से बनाया जाता है ताकि QRS का शिखर सुरक्षित रहे। साधारण छँटाई निषिद्ध
- PPG 100 SPS के लिए पड़ोसी सैंपलों का रैखिक इंटरपोलेशन
- स्क्रीन पंक्ति क्रम 6 पंक्तियाँ स्थिर: calib · lead1 · lead2 · lead3 · SpO2 · pulse पुष्ट। V लीड (V1/V5) का स्क्रीन पर स्थान अनिर्धारित, रिकॉर्ड में हमेशा शामिल रहता है
4. कोरों के बीच संचार — साझा मेमोरी रिंग + RPMsg
| पथ | क्या | कारण |
|---|---|---|
| साझा DDR रिंग (SPSC, M7 लिखता·A55 पढ़ता) | तरंग (कच्चा डेटा·प्रोसेस्ड·PPG)·धड़कन/पेस घटनाएँ | मात्रा अधिक (प्रति सेकंड दसियों kB)। शून्य कॉपी। A55 हर vsync पर राइट इंडेक्स पोल करता है → विलंब ≤ 1 फ़्रेम |
| RPMsg | कमांड·सेटिंग·अलार्म अवस्था·संख्यात्मक मान·हार्टबीट | संदेश इकाई·क्रम की गारंटी। Linux डिफ़ॉल्ट बफ़र 512 B |
RPMsg साझा हेडर (24 B, लिटिल-एंडियन) डिफ़ॉल्ट मान
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| magic | u16 | 0xEC61 |
| ver | u8 | प्रोटोकॉल संस्करण (HELLO में मिलान, भिन्न हो तो उपकरण दोष) |
| type | u8 | संदेश का प्रकार |
| len | u16 | मुख्य भाग की लंबाई (≤ 472 B = 512 − RPMsg हेडर 16 − 24) |
| flags | u16 | bit0 उत्तर अपेक्षित, bit1 पुनः प्रेषण |
| seq | u32 | भेजने वाले पक्ष की क्रम संख्या। छूटना·उल्टा क्रम पहचान |
| t_idx | u64 | 500 SPS आधारित वैश्विक सैंपल नंबर (साझा समय-अक्ष) |
| crc | u32 | CRC-32C (crc फ़ील्ड को 0 रखकर हेडर+मुख्य भाग) |
2 एंडपॉइंट: ekg-ctrl (A55 → M7 कमांड, M7 उत्तर) · ekg-evt (M7 → A55 घटना·अवस्था)।
मुख्य संदेश डिफ़ॉल्ट मान
| type | नाम | दिशा · चक्र | मुख्य बात |
|---|---|---|---|
| 0x01/0x02 | HELLO / HELLO_ACK | आरंभ पर | M7 फ़र्मवेयर संस्करण·प्रोटोकॉल संस्करण·रिंग लेआउट तालिका ↔ रिलीज़ नंबर। भिन्न हो तो उच्च-प्राथमिकता 「सॉफ़्टवेयर असंगति」 |
| 0x10 | HB_M7 | M7→A55 10 Hz | चालू समय, उपकरण अवस्था, रिंग राइट इंडेक्स, CPU लोड, सैंपल हानि संख्या, notch अवस्था |
| 0x11 | HB_UI | A55→M7 10 Hz | वास्तव में फ़्लिप हुए फ़्रेम का काउंटर, अभी स्क्रीन पर दिखाए गए अलार्म ID की सूची |
| 0x20~0x22 | CFG_SET / ACK / SNAPSHOT | अनुरोध·उत्तर·1 मिनट | सुरक्षा सेटिंग भेजकर लागू मान को वापस पढ़कर पुष्टि। अनुमत सीमा से बाहर हो तो अस्वीकार |
| 0x30~0x32 | ALARM_STATE / CMD / CMD_ACK | परिवर्तन पर तुरंत + 1 Hz | निर्णय M7 का। A55 केवल विराम (डिफ़ॉल्ट 2 मिनट)·स्वीकृति·लैच रिलीज़ संचालन |
| 0x40 | NUMERICS | 1 Hz | HR (स्रोत ECG/PPG/SIM), PR, SpO2 (「संदर्भ मान · अकैलिब्रेटेड」 फ़्लैग), PI, पैरामीटर-वार वैध/अवैध |
| 0x50~0x52 | DEVICE_STATE · POWER_STATUS · SELFTEST | परिवर्तन पर · 1 Hz · POST | उपकरण अवस्था, पैक A/B शेष·तापमान·SOH, स्व-परीक्षण परिणाम |
| 0x60 | LEAD_STATUS | परिवर्तन पर | इलेक्ट्रोड-वार लीड-ऑफ, V1/V5 स्विच स्थिति, sim/signal स्थिति, SpO2 सेंसर अवस्था |
| 0x70 · 0x80/0x81 | FAULT · SHUTDOWN_REQ/READY | घटित होने पर | दोष कोड · बंद होने से पहले होल्टर फ़ाइल बंद होने की पुष्टि |
| 0x90 | SERVICE_CMD | केवल सर्विस मोड | मापन मोड में अस्वीकार |
| 0xA0 | TIME_SYNC | 1 मिनट | UTC ↔ t_idx संगति (रिकॉर्ड के लिए। अलार्म निर्णय केवल t_idx उपयोग करता है) |
साझा मेमोरी रिंग (गणना·डिफ़ॉल्ट मान)
सभी रिंग 2 की घात लंबाई की हैं, इंडेक्स वैश्विक सैंपल नंबर u64 की मास्किंग है। M7 डेटा पूरा लिखने के बाद मेमोरी बैरियर → राइट इंडेक्स अपडेट। हर ब्लॉक (20 ms = 10 सैंपल) पर CRC-32C।
| रिंग | प्रारूप | लंबाई | आकार | उपयोग |
|---|---|---|---|---|
| R_RAW | int32 × 8ch, 500 SPS (notch से पहले·HPF से पहले) | 2¹⁹ = 17.5 मिनट | 16 MiB | होल्टर·calib। Linux के फिर से चालू होने तक रिकॉर्ड को थामे रखता है |
| R_PRE / R_POST | float32 × 8ch × 2 | 2¹⁶ = 131 s | 4 MiB | स्क्रीन, notch तुलना स्क्रीन, फ़्रीज़ |
| R_PPG | {red, ir int32, pleth float}, 100 SPS | 2¹⁷ = 21.8 मिनट | 2.5 MiB | 5·6वीं पंक्ति, होल्टर |
| R_EVT | 32 B घटना | 2¹⁴ | 512 KiB | हार्ट आइकन सिंक, एनोटेशन |
| नियंत्रण ब्लॉक | लेआउट तालिका·राइट इंडेक्स·ओवरराइट काउंटर | — | 4 KiB | |
| कुल | लगभग 23.2 MiB → आरक्षित 32 MiB |
आरक्षित क्षेत्र non-cacheable है। केवल A55 रीसेट होने पर यह DDR क्षेत्र यथावत् बचा रहता है या नहीं, यह असत्यापित — वास्तविक मापन मद S-01।
5. विलंब बजट
इलेक्ट्रोड → स्क्रीन (गणना·डिफ़ॉल्ट मान)
| चरण | विलंब |
|---|---|
| AFE159RP8 आंतरिक डिजिटल फ़िल्टर | असत्यापित |
| डेसिमेशन FIR 2 चरण | ≈ 17.4 ms |
| M7 ब्लॉक प्रोसेसिंग (20 ms ब्लॉक) | ≤ 20 ms |
| साझा रिंग → A55 पोलिंग | ≤ 16.7 ms |
| स्थिर प्रदर्शन विलंब D (QRS पहचान विलंब समायोजन, हार्ट आइकन सिंक) | 300 ms प्रारंभिक मान |
| रेंडर + पेज फ़्लिप (डबल बफ़र 2 फ़्रेम) | ≤ 33 ms |
| कुल | लगभग 390 ms + AFE विलंब |
अलार्म डिफ़ॉल्ट मान
| पथ | बजट |
|---|---|
| हृदय गति ऊपरी·निचली सीमा, एसिस्टोल (शर्त विलंब + सिग्नल उत्पादन विलंब) | योग ≤ 10 s (शर्त निर्णय ≤ 8 s + ध्वनि आरंभ ≤ 1 s + मार्जिन) — घरेलू उपयोग पर लागू न होने वाले IEC 60601-2-27 मानदंड को स्वेच्छा से अपनाया |
| लीड-ऑफ·संतृप्ति प्रदर्शन | ≤ 1 s (मानक ≤ 10 s) |
| SpO2 अपडेट रुकना | > 30 s होने पर निम्न-प्राथमिकता |
| बैटरी समाप्ति | शेष 20 मिनट पर उच्च-प्राथमिकता (मानक 「कम से कम 5 मिनट पहले」) |
| M7 निर्णय → A55 स्क्रीन प्रदर्शन | ≤ 50 ms |
| M7 निर्णय → क्लाउड·देखभालकर्ता सूचना | सर्वोत्तम प्रयास (कोई गारंटी नहीं) — अलार्म प्रणाली का हिस्सा नहीं माना जाता |
6. होल्टर संग्रहण · ट्रेंड
सिद्धांत
- उपकरण के भीतर का रिकॉर्ड मूल प्रति है, क्लाउड उसकी प्रतिलिपि
- संग्रहीत सिग्नल notch·HPF से पहले का कच्चा डेटा (500 SPS 24-बिट)। फ़िल्टर देखते समय फिर से लगाया जाता है → पुनः विश्लेषण संभव
- मूल 5 इलेक्ट्रोड 4 चैनल प्रतिदिन 518.4 MB, 12-लीड 8 चैनल प्रतिदिन 1.04 GB (गणना) → eMMC pSLC 32 GB या अधिक
1 सेकंड ब्लॉक डिफ़ॉल्ट मान
स्थिर आकार के स्लॉट: 4 चैनल 8 KiB, 8 चैनल 16 KiB (eMMC 4 KiB संरेखण)। 1 घंटा = 3600 स्लॉट वाली सेगमेंट फ़ाइल पहले से आवंटित की जाती है ताकि लिखते समय फ़ाइल मेटाडेटा न बदले।
| स्थान | फ़ील्ड | आकार |
|---|---|---|
| हेडर | magic 'EKGB', प्रारूप संस्करण, सत्र UUID, ब्लॉक क्रम संख्या, पहला सैंपल नंबर, UTC + मोनोटोनिक समय, सैंपलिंग (500), चैनल संख्या·मैप·स्केल, फ़िल्टर सेटिंग की प्रति, notch अवस्था, फ़्लैग (SIM·लीड-ऑफ·Paced·चार्जिंग के दौरान) | 128 B |
| ECG | 500 × N चैनल × 3 B (24-बिट पैकिंग) | 6,000 B (4ch) / 12,000 B (8ch) |
| PPG | 100 × 2 × 3 B (red·IR) | 600 B |
| ट्रेंड | इस 1 सेकंड का HR·PR·SpO2·PI·(RR·NIBP) + वैधता फ़्लैग | 32 B |
| एनोटेशन TLV | धड़कन (प्रकार 「संदर्भ हेतु」), पेस समय-बिंदु (8 kSPS विभेदन), लीड परिवर्तन, V1/V5 स्विचिंग, अलार्म आरंभ·अंत, रोगी बटन, समय सुधार | परिवर्ती |
| अंत भाग | CRC-32C + पिछले ब्लॉक का SHA-256 शामिल हैश श्रृंखला | 36 B |
- पेस का मूल तरंग-रूप उच्च गति पर संग्रहीत नहीं किया जाता, केवल समय-बिंदु लिखा जाता है (128 kSPS मूल तरंग होने पर प्रतिदिन लगभग 88 GB)
- लेखन: हर 1 सेकंड
pwrite1 स्लॉट +fdatasync। लेखन थ्रेड रेंडर थ्रेड के साथ लॉक साझा नहीं करता - फ़ाइल सिस्टम: ext4
data=ordered+ पूर्व आवंटन + हर ब्लॉक पर fdatasync डिफ़ॉल्ट, F2FS विकल्प के रूप में। अंतिम चयन पावर को बार-बार ज़बरदस्ती काटने के बाद हैश श्रृंखला जाँच से - हानि की मात्रा: केवल तब जब दोनों बैटरी पैक एक साथ कट जाएँ ऐसी अचानक बिजली हानि में ≤ 1~2 सेकंड। सामान्य शटडाउन पथ में 0
- आरंभ पर पुनर्प्राप्ति: अंतिम सेगमेंट को अंत से CRC·हैश श्रृंखला जाँच → टूटे अंत भाग पर 「अरिकॉर्डेड」 चिह्न + 「रिकॉर्ड बाधित」 एनोटेशन। बाधित खंड को भरा नहीं जाता
- निर्यात: EDF+/BDF (24-बिट) या WFDB-FLAC डिफ़ॉल्ट, संगतता के लिए ISHNE·DICOM Ambulatory (16-बिट)। मूल ब्लॉक यथावत्
ट्रेंड DB डिफ़ॉल्ट मान
- मूल प्रति होल्टर ब्लॉक के भीतर का 1 सेकंड ट्रेंड रिकॉर्ड है। DB टूट जाए तो भी ब्लॉक से फिर बनाया जाता है
- क्वेरी के लिए SQLite (WAL, synchronous=FULL) — 1 सेकंड तालिका + 1 मिनट·5 मिनट·1 घंटा संकलन तालिकाएँ
- संरक्षण 1 वर्ष (5~6 पैरामीटर 1 सेकंड 2 B → 315~378 MB, गणना)। विंडो 30 min ~ 7 दिन
- SpO2 से प्राप्त सूचकांकों पर 「संदर्भ मान · अकैलिब्रेटेड」 चिह्न
7. अलार्म इंजन (IEC 60601-1-8 प्राथमिकता)
- M7
AlarmCore: शर्त निर्णय, प्राथमिकता, लैचिंग, विराम टाइमर, अलार्म ध्वनि संश्लेषण। सेटिंग न आई हो तो कम्पाइल की गई डिफ़ॉल्ट सीमाओं से चलता है - A55
AlarmUI: दृश्य संकेत (रंग·झपकना·अक्षर), संचालन, अलार्म लॉग, दूरस्थ सहायक सूचना। निर्णय नहीं करता - दृश्य मिलान: M7 HB_UI से 「दिखाए गए अलार्म ID की सूची」 लेता है, और सक्रिय अलार्म 2 s से अधिक स्क्रीन पर न हो तो 「डिस्प्ले दोष」 (उच्च)
- चरण 2: RM44L920 समान इनपुट से अलग निर्णय करके M7 के परिणाम से मिलान करता है
प्राथमिकता·संकेत डिफ़ॉल्ट मान
| मद | उच्च | मध्यम | निम्न |
|---|---|---|---|
| रंग | #FF0000 भराव | पीला भराव + काले अक्षर | सियान भराव + काले अक्षर |
| झपकना | वर्तमान 1 Hz बनाए रखना (मानक का मूल पाठ जाँचने से पहले) | समान | नहीं |
| ध्वनि | 10-पल्स बर्स्ट | 3 पल्स | 1~2 पल्स |
- ध्वनि आवृत्ति: मुख्य ऊर्जा 500~1000 Hz, स्पीकर + संश्लेषित तरंग (वृद्धावस्था श्रवण-हानि को ध्यान में रखते हुए अकेला 4 kHz पीज़ो उपयोग नहीं किया जाता)
- विराम डिफ़ॉल्ट 2 मिनट, समाप्त होने पर स्वतः वापसी। तकनीकी अलार्म नॉन-लैचिंग, शारीरिक अलार्म सेटिंग के अनुसार (डिफ़ॉल्ट लैचिंग)
- केवल रंग से अंतर नहीं किया जाता: भराव + अक्षर + आइकन + झपकना + ध्वनि
अलार्म सूची (अंश) डिफ़ॉल्ट मान
| प्रकार | अलार्म | प्राथमिकता |
|---|---|---|
| शारीरिक | HR ऊपरी·निचली सीमा (डिफ़ॉल्ट 50~120, समायोजन चरण ≤ 5 bpm) | मध्यम |
| शारीरिक | एसिस्टोल | उच्च |
| शारीरिक | SpO2 निचली सीमा (डिफ़ॉल्ट 90 %, 85 % से कम डिफ़ॉल्ट निषिद्ध) — 「संदर्भ मान · अकैलिब्रेटेड」 साथ में दिखाया जाता है | मध्यम |
| शारीरिक | PR ऊपरी·निचली सीमा (डिफ़ॉल्ट 50~120) | मध्यम |
| तकनीकी | लीड-ऑफ (इलेक्ट्रोड नाम प्रदर्शन) · एम्पलीफ़ायर संतृप्ति · SpO2 सेंसर-ऑफ़ | मध्यम |
| तकनीकी | AC कटना (बिजली-कटौती मोड में प्रवेश) · SOC 10 % · होल्टर रिकॉर्डिंग विफलता | मध्यम |
| तकनीकी | शेष समय ≤ 20 मिनट · उपकरण दोष · डिस्प्ले दोष (A55 रुकना) | उच्च |
| तकनीकी | SpO2 अपडेट रुकना > 30 s · संग्रहण स्थान 90 % · क्लाउड कनेक्शन टूटना | निम्न |
| सूचना | SIMULATION (पूरी स्क्रीन) · चार्जिंग के दौरान मापन संभव नहीं · AC वापसी | — |
अतालता वर्गीकरण के परिणाम अलार्म में उपयोग नहीं होते। केवल रिकॉर्ड·संदर्भ हेतु हैं।
8. स्टेट मशीन
तीन अक्ष परस्पर व्याप्त होते हैं: उपकरण अवस्था (S) × पैरामीटर-वार सिग्नल वैधता × पावर अवस्था (P)।
उपकरण अवस्था डिफ़ॉल्ट मान
| अवस्था | प्रवेश की शर्त | स्क्रीन | ध्वनि |
|---|---|---|---|
| BOOT/POST | पावर चालू, M7 आरंभ | सफ़ेद स्प्लैश + प्रगति | POST के अंत में छोटी स्व-ध्वनि 1 बार |
| S0 सामान्य | POST पास | 6 पंक्ति तरंग·संख्यात्मक मान | शारीरिक अलार्म पर |
| S1 सिग्नल अवैध (पैरामीटर-वार) | लीड-ऑफ·सेंसर-ऑफ़·संतृप्ति·NaN·स्व-निदान विचलन·रिंग डेटा 0.5 s बाधित | संबंधित पंक्ति बिंदीदार/धूसर, संख्या 「---」 (पिछला मान नहीं रखा जाता) | तकनीकी अलार्म मध्यम/निम्न |
| S2 उपकरण दोष | POST विफल, वॉचडॉग रीसेट इतिहास, AFE संचार टूटना, संस्करण असंगति, हार्टबीट हानि | 「उपकरण दोष — मापन संभव नहीं」 पूरी स्क्रीन | उच्च (M7 स्पीकर या बैकअप बज़र) |
| S3 सुरक्षा विराम | रोगी आइलैंड पावर असामान्य, बोर्ड अति-ताप, शेष समय ≤ 5 मिनट | 「मापन रोका गया」 + कारण | उच्च |
| SERVICE | रोगी असंबद्ध + सर्विस अधिकार | सर्विस स्क्रीन | — |
दो सिद्धांत: रुकी हुई सामान्य तरंग नहीं दिखाई जाती · मुख्य प्रोसेसिंग इकाई बंद हो जाए तब भी अलार्म ध्वनि जीवित रहती है।
पावर अवस्था डिफ़ॉल्ट मान
| अवस्था | शर्त | क्रिया |
|---|---|---|
| P0 AC | AC उपस्थित | चार्जिंग। चार्जिंग के दौरान मापन 2-चरणीय अनलॉक नियम — चरण 1 के दौरान 「चार्जिंग के दौरान मापन संभव नहीं」 प्रदर्शन + हार्डवेयर इंटरलॉक |
| P1 बिजली-कटौती मोड | AC कटा | मध्यम-प्राथमिकता अलार्म 1 बार, बैकलाइट 30 %, DVFS, अपलोड अंतराल बढ़ाना। मापन·रिकॉर्डिंग·अलार्म यथावत् |
| P2 कमी | शेष ≤ 20 मिनट | उच्च-प्राथमिकता, होल्टर 1 s चक्र बनाए रखना, अपलोड रोकना |
| P3 शटडाउन अनुक्रम | शेष ≤ 5 मिनट या सेल सीमा | M7 → SHUTDOWN_REQ → A55 होल्टर बंद·fsync·लॉग → SHUTDOWN_READY → आइलैंड पावर बंद → बैकलाइट·पैनल·SoM क्रम से |
| P4 अचानक बिजली हानि | VSYS कम्पैरेटर | लेखन रोकना। हानि ≤ 1~2 s |
9. बूट स्व-परीक्षण (POST) · आवधिक परीक्षण
| क्रम | मद | ज़िम्मेदार | विफलता पर |
|---|---|---|---|
| 1 | AHAB हस्ताक्षर सत्यापन श्रृंखला (ROM → कंटेनर) | ELE / ROM | बूट नहीं होता |
| 2 | SM रीसेट कारण पढ़ना — ठीक पहले वॉचडॉग·दोष हुआ या नहीं | A55 | लॉग |
| 3 | M7 स्वयं: TCM कोड CRC, RAM पैटर्न, क्लॉक मिलान (सामान्य टाइमर vs AFE DRDY चक्र) | M7 | S2 |
| 4 | AFE159RP8: चिप ID, आंतरिक परीक्षण सिग्नल, इनपुट शॉर्ट शोर, पावर·तापमान, लीड-ऑफ कम्पैरेटर (सुविधा सूची असत्यापित) | M7 | S2 |
| 5 | AFE4490: SPI लिखना-पढ़ना मिलान, ADC_RDY = PRF, LED·PD निदान | M7 | S2 |
| 6 | बैटरी पैक A/B अवस्था·SOH, LTC1760 अवस्था | M7 | अलार्म श्रेणी के अनुसार |
| 7 | अलार्म ध्वनि संक्षेप में 1 बार | M7 | S2 |
| 8 | DDR इनलाइन ECC, eMMC जीवनकाल रजिस्टर, डेटा पार्टिशन माउंट·होल्टर पुनर्प्राप्ति | A55 | अलार्म श्रेणी के अनुसार |
| 9 | सेटिंग CRC, M7 ↔ A55 रिलीज़ नंबर मिलान | A55·M7 | S2 |
| 10 | बैकअप बज़र पथ (केवल सर्विस मोड में) | — | — |
आवधिक परीक्षण (मापन के दौरान): calib पंक्ति = आंतरिक परीक्षण सिग्नल को निरंतर स्व-निदान के लिए भी उपयोग, आयाम ±2 % से बाहर हो तो 「AFE गेन असामान्य」। पावर·तापमान को बचे हुए चैनलों पर कुछ सेकंड में चक्रित किया जाता है।
10. क्लाउड · सुरक्षा · अपडेट
क्लाउड — ऑफ़लाइन संग्रहण के बाद सिंक्रनाइज़ेशन डिफ़ॉल्ट मान
- आउटबॉक्स (SQLite क्यू) में जमा करके, कनेक्ट होने पर सबसे पुराने से क्रमवार
- रियल-टाइम चैनल: MQTT 5 QoS1, TLS 1.3 पारस्परिक प्रमाणीकरण — केवल अवस्था·घटना·1 मिनट ट्रेंड·अलार्म (संदेश सीमा के कारण तरंग नहीं भेजी जाती)
- तरंग: 1 घंटे की सेगमेंट फ़ाइल का पुनः-आरंभ योग्य अपलोड। सर्वर हैश श्रृंखला जाँचकर 「प्राप्ति पुष्टि」 देता है
- हटाना: केवल प्राप्ति-पुष्ट को, 14 दिन बीतने के बाद। अपुष्ट भाग स्वतः कभी नहीं हटाया जाता
- उपकरण प्रमाणीकरण: प्रति उपकरण X.509, निजी कुंजी सुरक्षा चिप में। सर्वर घरेलू (देश के भीतर) रीजन में, पहली सेटअप पर स्वास्थ्य जानकारी के लिए अलग सहमति स्क्रीन
- देखभालकर्ता ऐप सूचना अलार्म प्रणाली का हिस्सा न मानी जाने वाली सहायक सूचना है। मुख्य इकाई की ध्वनि·स्क्रीन प्राथमिक हैं
- फ़ायरवॉल: आने वाले कनेक्शन 0। सर्विस के लिए लोकल पोर्ट केवल सर्विस मोड में
बूट श्रृंखला (AHAB)
Boot ROM ─(ELE सत्यापन)─► बूट कंटेनर [SM(M33) · U-Boot SPL · ATF · OP-TEE · U-Boot]
U-Boot ─(AHAB प्रमाणीकरण)─► M7 फ़र्मवेयर कंटेनर (A/B स्लॉट के भीतर) → M7 आरंभ → अधिग्रहण आरंभ
U-Boot ─(हस्ताक्षरित FIT)──► कर्नेल + DTB + initramfs (A/B स्लॉट) → rootfs dm-verity
M7 फ़र्मवेयर को A/B स्लॉट में रखकर Linux के साथ एक बंडल में साथ अपडेट·साथ रोलबैक किया जाता है। इसकी कीमत यह है कि M7 का आरंभ U-Boot चरण तक देर से होता है (कुछ सेकंड, वास्तविक मापन नियोजित)। i.MX 95 के लिए AHAB हस्ताक्षर प्रक्रिया·रोलबैक काउंटर असत्यापित।
OTA (RAUC A/B, हस्ताक्षर अनिवार्य) डिफ़ॉल्ट मान
- बंडल = rootfs + कर्नेल FIT + M7 फ़र्मवेयर + सेटिंग माइग्रेशन स्क्रिप्ट = 1 रिलीज़ नंबर
- इंस्टॉल की शर्तें: रोगी असंबद्ध (सभी इलेक्ट्रोड लीड-ऑफ + SpO2 सेंसर-ऑफ़) + AC जुड़ा + होल्टर सत्र बंद + अधिकृत व्यक्ति की पुष्टि। मापन के दौरान केवल डाउनलोड
- स्वास्थ्य जाँच: नया स्लॉट आरंभ → POST पास + M7 HELLO संस्करण मेल + UI का पहला फ़्रेम → good चिह्न। 3 बार विफल → पिछला स्लॉट
- USB ऑफ़लाइन अपडेट भी समान हस्ताक्षरित बंडल। हस्ताक्षर सत्यापन से पहले कुछ भी निष्पादित नहीं किया जाता
- डेटा सुरक्षा: /data एन्क्रिप्शन, DDR इनलाइन एन्क्रिप्शन, संचार TLS 1.3
उपयोगकर्ता अधिकार डिफ़ॉल्ट मान
| भूमिका | क्या कर सकते हैं | प्रमाणीकरण |
|---|---|---|
| उपयोगकर्ता | देखना, इवेंट बटन, ध्वनि विराम (2 मिनट), चमक | नहीं |
| देखभालकर्ता | + रिकॉर्डिंग आरंभ·रोकना, दूरस्थ सूचना कनेक्शन, निर्यात | PIN |
| चिकित्सा कर्मी | + अलार्म सीमा·विलंब, फ़िल्टर मोड, Paced सेटिंग, विकल्प चालू करना | PIN |
| सर्विस | + सर्विस मोड, लॉग निर्यात, अपडेट, स्व-निदान | PIN + हस्ताक्षरित सर्विस टोकन |
| निर्माण | सीरियल·कुंजी प्रविष्टि·कैलिब्रेशन मान रिकॉर्ड → शिपमेंट के बाद लॉक | केवल कारख़ाना |
सुरक्षा सेटिंग (अलार्म सीमा·न्यूनतम ध्वनि·Paced) M7 को CFG_SET → वापस पढ़कर पुष्टि पूरी होने पर ही 「लागू」 होती है। M7 अंतिम पुष्ट मान से चलता रहता है।
11. सॉफ़्टवेयर श्रेणी पृथक्करण (IEC 62304) · मॉड्यूल
| सॉफ़्टवेयर मद | श्रेणी (डिफ़ॉल्ट मान) | पृथक्करण का आधार |
|---|---|---|
| M7: अधिग्रहण·फ़िल्टर·QRS·पेस·SpO2·AlarmCore·अलार्म ध्वनि·पावर निगरानी·A55 निगरानी | C | सीधे हानि तक ले जाने वाले निर्णय यहीं हैं |
| A55: तरंग·संख्यात्मक मान प्रदर्शन (Qt) | B | M7 फ़्रेम काउंटर·दिखाए गए अलार्म की सूची की निगरानी करता है → रुकने पर M7 उच्च-प्राथमिकता ध्वनि |
| A55: AlarmUI | B | निर्णय·ध्वनि M7 के। विराम समय की ऊपरी सीमा M7 लागू करता है |
| A55: होल्टर·ट्रेंड·क्लाउड·OTA·अधिकार·लॉग | B | विफलता तकनीकी अलार्म से प्रकट होती है या रोलबैक। अलार्म पथ से स्वतंत्र |
| M33: NXP SM | SOUP | कोर पृथक्करण का हार्डवेयर आधार |
| RM44L920 (चरण 2) | C |
पृथक्करण का आधार: अलग कोर + SM का संसाधन पृथक्करण (LM इकाई) + M7 बिना Linux के चलता है + बाहरी विंडो वॉचडॉग। यह पृथक्करण मानक के अनुसार मान्य है या नहीं, यह परीक्षण संस्था का निर्णय है इसलिए असत्यापित।
मॉड्यूल (अंश)
| मॉड्यूल | स्थान | इनपुट → आउटपुट |
|---|---|---|
acq_ecg · acq_ppg | M7 | AFE इंटरप्ट·SPI → 8 kSPS फ़्रेम / 500 SPS 6 स्ट्रीम + समय |
pace · decim · notch2 · filt | M7 | 8 kSPS → पेस घटना · 500 SPS · notch अवस्था |
qrs · spo2 | M7 | धड़कन घटना·HR / SpO2·PR·PI·गुणवत्ता |
power · alarm_core · supervisor | M7 | पावर अवस्था · अलार्म अवस्था·अलार्म ध्वनि · वॉचडॉग किक·डिस्प्ले दोष |
ipc | M7·A55 | रिंग·RPMsg (एक ही परिभाषा से C/C++/Python हेडर स्वतः उत्पन्न) |
ekg-ui · ekg-alarmui | A55 | रिंग·संख्यात्मक मान·अलार्म अवस्था → स्क्रीन, HB_UI, अलार्म संचालन |
ekg-recorder · ekg-trend · ekg-sync | A55 | 1 सेकंड ब्लॉक · SQLite · MQTT·अपलोड |
ekg-config · ekg-update · ekg-service | A55 | CFG_SET·ऑडिट लॉग · RAUC · सर्विस कमांड |
सिग्नल प्रोसेसिंग कोड (dsp/) हार्डवेयर से स्वतंत्र C में रखा जाता है ताकि PC पर भी बिल्ड हो, और सार्वजनिक ECG डेटाबेस के पुनःप्रसारण से यूनिट परीक्षण किया जाता है। RTOS बदलने पर भी लागत कम रहती है।
12. विकास क्रम · वास्तविक मापन सूची डिफ़ॉल्ट मान
| चरण | विवरण | पूर्ण मानने का मानदंड |
|---|---|---|
| 0 (बिना बोर्ड) | प्रोटोकॉल परिभाषा, सिग्नल प्रोसेसिंग PC पर — डेसिमेशन·notch·QRS·अलार्म निर्णय को रिकॉर्डेड तरंग·सिम्युलेटर तरंग से | पहचान प्रदर्शन के आँकड़े आउटपुट, notch परीक्षण, अलार्म स्टेप परीक्षण (80 → 40·120·0 bpm) |
| 1 | i.MX 95 मूल्यांकन बोर्ड से सीधे आरंभ। Yocto मूल इमेज, SM कॉन्फ़िगरेशन, M7 hello + RPMsg + साझा रिंग | HELLO/HB राउंड-ट्रिप, A55 ज़बरदस्ती रीसेट वास्तविक मापन S-01 |
| 2 | AFE कनेक्शन, 8 kSPS अधिग्रहण, Qt 6 पंक्ति स्क्रीन | सैंपल हानि 0 (24 h), स्क्रीन विलंब वास्तविक मापन |
| 3 | AlarmCore + अलार्म ध्वनि + स्टेट मशीन + POST + वॉचडॉग | दोष इंजेक्शन (M7 रुकना·A55 रुकना·AFE तार निकालना) |
| 4 | होल्टर·ट्रेंड·पावर इंटरलॉक | पावर को बार-बार ज़बरदस्ती काटना → हैश श्रृंखला हानि ≤ 1~2 s |
| 5 | सुरक्षा: AHAB हस्ताक्षर, dm-verity, RAUC, USB अपडेट | गलत हस्ताक्षर अस्वीकार, 3 बार विफलता पर रोलबैक |
| 6 | क्लाउड (घरेलू रीजन परीक्षण सर्वर) | संचार 1 सप्ताह कटने के बाद क्रमवार पुनर्प्राप्ति, अपुष्ट भाग नहीं हटाया |
| 7 | विकल्प (12-लीड·श्वसन·NIBP), RM44L920 इंटरलॉक | दोहरे निर्णय का मिलान |
| मापन ID | क्या |
|---|---|
| S-01 | A55 रीसेट के समय साझा DDR·M7 का चलते रहना, Linux रीबूट समय |
| S-02 | M7 रीसेट के बाद पुनः आरंभ समय (उस दौरान रिकॉर्ड बाधा की अवधि) |
| S-03 | M7 लोड, 8 kHz इंटरप्ट जिटर |
| S-04 | इलेक्ट्रोड → स्क्रीन विलंब, AFE159RP8 फ़िल्टर विलंब |
| S-05 | ext4 vs F2FS पावर कटौती परीक्षण, eMMC Reliable Write व्यवहार |
| S-06 | U-Boot से M7 आरंभ तक का समय |
अनिर्णीत मद: 12-लीड विकल्प में lead III का प्रबंधन (गणना या 2 AFE), V1/V5 तरंग का स्क्रीन पर स्थान।
13. टेस्ट बेंच फ़र्मवेयर — ESP32-S3 + ADS1293 + हृदय गति·ऑक्सीजन मॉड्यूल
यह मुख्य उत्पाद (AFE159RP8 · AFE4490 · i.MX 95) से भिन्न केवल टेस्ट बेंच हेतु संरचना है। उद्देश्य बाज़ार में उपलब्ध मॉड्यूलों से सिग्नल पथ·फ़्रेम·रिसीव स्क्रीन की पहले जाँच करना है।
वायरिंग (ESP32-S3 N16R8)
| सिग्नल | ESP32-S3 | टिप्पणी |
|---|---|---|
| ADS1293 SCLK / SDI / SDO / CSB | GPIO 12 / 11 / 13 / 10 | HSPI बस (2.0" स्क्रीन की बस·पिन से अलग) |
| ADS1293 DRDYB | GPIO 2 | फ़ॉलिंग एज इंटरप्ट, आंतरिक पुल-अप |
| ADS1293 ALARMB | GPIO 1 (वैकल्पिक) | केवल स्थिति पंक्ति में प्रदर्शन |
| MAX30102 SDA / SCL | GPIO 8 / 9 | 400 kHz, INT अप्रयुक्त · 10 ms पोलिंग |
| पावर | 3V3 · GND | ADS1293 मॉड्यूल पर 5 V निषिद्ध — VDDIO अधिकतम 3.6 V |
टाले गए पिन: 4·5·6·7·15 (2.0" स्क्रीन) · 19·20 (USB) · 43·44 (UART0) · 26~32 (फ़्लैश) · 33~37 (OPI PSRAM) · 0·3·45·46 (बूट स्ट्रैपिंग) · 38·48 (बोर्ड के अनुसार RGB LED)।
ADS1293 — lead I·II·III सभी का सीधा मापन
| चैनल | + | − | लीड | FLEX मान |
|---|---|---|---|---|
| CH1 | LA (IN2) | RA (IN1) | I | 0x11 (डेटाशीट उदाहरण के समान) |
| CH2 | LL (IN3) | RA (IN1) | II | 0x19 (उदाहरण के समान) |
| CH3 | LL (IN3) | LA (IN2) | III (सीधा) | 0x1A — उदाहरण में CH3 बंद करके III = II − I गणना की जाती है |
इलेक्ट्रोड आवंटन डिफ़ॉल्ट: RA→IN1, LA→IN2, LL→IN3, RL←IN4 (RLD आउटपुट)। मॉड्यूल जैक की वायरिंग असत्यापित है, इसलिए कमांड e से IN नंबर बदले जा सकते हैं।
मुख्य रजिस्टर
| पता | मान | अर्थ |
|---|---|---|
| 0x06 · 0x07 · 0x08 | 0x00 · 0x07 · 0x01 | DC लीड-ऑफ चालू, IN1~3 में करंट इंजेक्शन, 8 nA। तुलना संदर्भ VDD − 0.5 V। RL फ़ीडबैक न हो तो सभी 「अलग」 दिखना सामान्य है |
| 0x0A · 0x0B · 0x0C | 0x07 · 0x00 · 0x04 | कॉमन मोड = RA·LA·LL औसत → RLD आउटपुट → IN4 (RL) |
| 0x11 · 0x13 · 0x14 | 0x00 · 0x07 · 0x00 | आंतरिक 2.4 V संदर्भ, तीनों चैनल उच्च विभेदन, सभी चालू |
| 0x27 · 0x2F | 0x08 · 0x71 | DRDYB = CH1 ECG, स्ट्रीमिंग = स्थिति + 3 चैनल (1+9 बाइट) |
| 0x12 · 0x00 | 0x04 · 0x01 | बाहरी 4.096 MHz क्रिस्टल → डिजिटल, 15 ms प्रतीक्षा के बाद रूपांतरण आरंभ। मॉड्यूल में क्रिस्टल है या नहीं असत्यापित — न हो तो फ़र्मवेयर हर 1 सेकंड चेतावनी देता है |
RL का अलग होना लीड-ऑफ से नहीं पकड़ा जाता, इसलिए RLD आउटपुट रेल के निकट है या नहीं (RLDRAIL) यह अलग से आउटपुट किया जाता है। त्रुटि रजिस्टर हर 32 सैंपल पर, या ALARMB बिट सेट होते ही तुरंत पढ़ा जाता है।
सैंपल रेट (डेटाशीट तालिका 8, SDM 102.4 kHz, R1 = 4)
| कमांड | ODR | बैंड | ADCMAX | शोर (µV rms, तालिका मान) | 1 LSB | प्रति 1 mV कोड |
|---|---|---|---|---|---|---|
r 533 डिफ़ॉल्ट | 533.33 Hz | 105 Hz | 0xF30000 | 2.07 | 0.0861 µV | 11,612 |
r 853 | 853.33 Hz | 175 Hz | 0xB964F0 | 2.67 | 0.1129 µV | 8,859 |
r 400 | 400 Hz | 80 Hz | 0x800000 | 1.81 | 0.1635 µV | 6,117 |
533 को डिफ़ॉल्ट रखने का कारण यह है कि यह 500 SPS आधारित notch डिज़ाइन के सबसे निकट है (notch गुणांक 533.33 Hz पर फिर से गणना करने होंगे)। निदान बैंड 150 Hz को केवल 853 ढकता है, और मॉनिटर बैंड 40 Hz को तीनों ढकते हैं। इनपुट सीमा INA डिफ़रेंशियल ±400 mV है।
अंतर्निहित परीक्षण सिग्नल
| कमांड | सिग्नल | अपेक्षित कोड (533 मोड) |
|---|---|---|
t + | +VTEST = VREF/12 = +200 mV DC | 10,285,056 |
t - | −200 mV DC | 5,640,192 |
t 0 | इनपुट शॉर्ट (शोर मापन) | 7,962,624 (= ADCMAX/2) |
t x | बंद (इलेक्ट्रोड) | — |
VTEST और VREF एक ही संदर्भ से आते हैं, इसलिए यह गेन कैलिब्रेशन नहीं है, बल्कि स्व-परीक्षण·चैनलों के बीच गेन अंतर की जाँच के लिए है। 1 mV कैलिब्रेशन सिग्नल (calib) बाहरी बैटरी सिम्युलेटर का काम है।
हृदय गति·ऑक्सीजन मॉड्यूल (MAX30102 अनुमानित, I2C 0x57)
- केवल PART_ID 0x15 होने पर उपयोग किया जाता है, अन्यथा 「अनुपस्थित」 मानकर संश्लेषित पल्स तरंग दी जाती है (चिप MAX30102 है या नहीं असत्यापित)
- SpO2 मोड (लाल+IR), 100 sps, 18-बिट, प्रति सैंपल 6 बाइट। रजिस्टर मान सार्वजनिक लाइब्रेरी की परिभाषा के आधार पर हैं, और मूल डेटाशीट से मिलान असत्यापित
- SpO2 संख्या नहीं दी जाती। कैलिब्रेशन वक्र नहीं है। रिसीव स्क्रीन केवल R अनुपात को 「संदर्भ」 के रूप में दिखाती है
- परावर्तक-प्रकार मॉड्यूल होने से यह केवल तरंग पथ परीक्षण के लिए है। मुख्य उत्पाद में क्लिप-प्रकार ट्रांसमिशन प्रोब + AFE4490
सीरियल प्रोटोकॉल
533 SPS × 16 B + 100 × 12 B ≈ 9.7 kB/s (853 SPS होने पर 14.9 kB/s)। बाइनरी फ़्रेम + # से आरंभ होने वाली टेक्स्ट पंक्तियाँ (सूचना·1 सेकंड स्थिति·चेतावनी), CSV मोड भी है।
ECG फ़्रेम 16 B : A5 5A 'E' seq(u16 LE) CH1 CH2 CH3(u24, MSB पहले) flags crc8
PPG फ़्रेम 12 B : A5 5A 'P' seq(u16 LE) RED IR(u24) crc8
crc8 = बहुपद 0x07, प्रारंभिक 0, 'E'/'P' से flags तक
flags: 1 RA अलग · 2 LA अलग · 4 LL अलग · 8 RLD रेल · 16 कॉमन मोड सीमा से बाहर
32 इनपुट सीमा से बाहर · 64 संश्लेषित · 128 परीक्षण सिग्नल
CRC गणना भाग का अंश (फ़र्मवेयर और PC परीक्षण कोड एक ही हेडर उपयोग करते हैं):
static inline uint8_t ekg_crc8(const uint8_t *p, size_t n) { // बहुपद 0x07, प्रारंभिक मान 0
uint8_t c = 0;
for (size_t i = 0; i < n; i++) {
c ^= p[i];
for (int b = 0; b < 8; b++) c = (c & 0x80) ? (uint8_t)((c << 1) ^ 0x07) : (uint8_t)(c << 1);
}
return c;
}
कोड → वोल्टेज रूपांतरण डेटाशीट सूत्र 13: V = (ADC_OUT/ADCMAX − ½)·2·VREF/3.5।
| कमांड | अर्थ |
|---|---|
m a / m s | ADS1293 वास्तविक मापन / संश्लेषित (मॉड्यूल न हो तो स्वतः संश्लेषित) |
o b / o c | बाइनरी / CSV |
r 533 · r 853 · r 400 | सैंपल रेट |
t + · t - · t 0 · t x | अंतर्निहित परीक्षण सिग्नल |
e 1 2 3 4 | RA LA LL RL के IN नंबर |
l 1 · g 1 / g 0 | लीड-ऑफ करंट ×8 nA (0 = बंद) · RLD चालू/बंद |
h 72 · n 50 · w 2 · c 1 | संश्लेषित: हृदय गति · 60 Hz इंजेक्शन µV (RA 0 गुना·LA 1 गुना·LL 2 गुना) · श्वेत शोर µV rms · calib वर्ग तरंग |
d | ADS1293 रजिस्टर डंप |
संश्लेषित सिग्नल ADS1293 के समान ADC कोड रूप में जाता है, इसलिए प्राप्त करने वाले पक्ष को वास्तविक मापन और संश्लेषित में अंतर करने की ज़रूरत नहीं (केवल flags 64 भिन्न है)। संश्लेषण मॉडल में अंग विभव φRA=0, φLA=I, φLL=II रखकर लीड को विभवांतर से फिर से गणना किया जाता है, जिससे III = II − I परिभाषा से ही सिद्ध होता है। विद्युत अक्ष 50° संश्लेषण हेतु मनमाना मान है।
रिसीव·प्रदर्शन स्क्रिप्ट (PC · Raspberry Pi दोनों के लिए)
- प्राप्त सभी बाइट बिना हानि के संग्रहीत (raw) + ECG·PPG CSV + लॉग
- स्क्रीन: सफ़ेद पृष्ठभूमि, I · II · III · अवशेष II−(I+III) · पल्स तरंग लाल · पल्स तरंग IR। शीर्षक में हृदय गति (साधारण थ्रेशोल्ड विधि) · R अनुपात · fs · बाधा · अलार्म
- संग्रहीत प्रति को फिर से खोलकर जाँचने वाला पुनःप्रसारण·जाँच मोड है
सुरक्षा — मानव शरीर को छूने से पहले
इस टेस्ट बेंच में आइसोलेशन नहीं है। मॉड्यूल → ESP32 → USB → कंप्यूटर विद्युत रूप से एक ही इकाई हैं।
- लैपटॉप केवल बैटरी पर। चार्जर निकाल दें
- लैपटॉप में अन्य तार (HDMI मॉनिटर, ईथरनेट, पावर एडाप्टर वाली बाहरी डिस्क, ऑडियो) न लगाएँ
- एडाप्टर पावर वाले Raspberry Pi + स्क्रीन को शरीर इलेक्ट्रोड परीक्षण में उपयोग न करें — केवल संश्लेषित·शॉर्ट·सिम्युलेटर चरणों में
- ग्राउंडेड डेस्कटॉप में सीधे लगाकर शरीर पर इलेक्ट्रोड न लगाएँ
- लगाते समय धातु की मेज़·रेडिएटर·पानी के पाइप को न छुएँ
- गीली त्वचा·घाव पर न लगाएँ। इलेक्ट्रोड डिस्पोज़ेबल, एक बार
- पेसमेकर·प्रत्यारोपित उपकरण वाले व्यक्ति पर न लगाएँ
- इस उपकरण की तरंग·संख्याओं से स्वास्थ्य का निर्णय न करें — यह टेस्ट बेंच है
- मॉड्यूल में 5 V न दें (VDDIO अधिकतम 3.6 V)
परीक्षण क्रम
| चरण | क्या | पास मानदंड |
|---|---|---|
| ① संश्लेषित | केवल ESP32 USB से। मॉड्यूल के बिना प्राप्त करने वाले पक्ष के पूरे पथ की जाँच (m s · n 50 · c 1) | बाधा 0 · अवशेष ≤ 2 LSB · हृदय गति 72 · 60 Hz का आकार I·III में समान और II में उसका 2 गुना |
| ② शॉर्ट शोर | मॉड्यूल जुड़ा, इलेक्ट्रोड नहीं। REVID=0x01 जाँच के बाद t 0 10 सेकंड · t + · t -, फिर जैक पर चारों इलेक्ट्रोड एक बिंदु पर बाँधकर t x | t 0 शोर rms ≈ तालिका मान (533 मोड 2.07 µV rms) · t ± कोड अपेक्षित मान के समान · DRDYB चेतावनी नहीं · लीड-ऑफ बिट 0 |
| ③ सिम्युलेटर | बाहरी बैटरी सिम्युलेटर (1 V p-p → 1000:1 → 1 mV)। अभी नहीं बना | 1 mV, 1 mV के रूप में · अवशेष शोर स्तर पर (III सीधे मापन की सिद्धि का निर्णय) · 60 Hz notch से पहले/बाद का कच्चा डेटा संग्रहण · इलेक्ट्रोड एक-एक कर निकालकर लीड-ऑफ प्रतिक्रिया |
| ④ मानव इलेक्ट्रोड | ऊपर के सभी सुरक्षा मदों का पालन करने के बाद RA·LA·LL·RL 4 | लीड-ऑफ 0 · RLD रेल 0 · QRS दिखे · हृदय गति कलाई की नाड़ी से मेल खाए · 60 Hz अवशेष का आकार रिकॉर्ड |
④ से पहले ②·③ से अवश्य गुज़रें। ② में DRDYB चेतावनी आए (क्रिस्टल न होने का संदेह) तो वहीं रुकें।
14. टेस्ट बेंच सत्यापन परिणाम (2026-10-11)
- 2 प्रकार कम्पाइल पास, टेस्ट बेंच स्रोत में चेतावनी 0 (
--warnings all, arduino-cli 1.5.2-rc.1 · esp32 कोर 3.3.12)- मूल ESP32-S3 — फ़्लैश 365,710 B (27 %) · RAM 24,336 B (7 %)
- नेटिव USB CDC + OPI PSRAM + 16 MB — 366,348 B (27 %) · 25,016 B (7 %)
- बोर्ड अपलोड नहीं किया गया (पुर्ज़े नहीं पहुँचे)
- फ़्रेम क्रॉस-सत्यापन: फ़र्मवेयर के समान हेडर (फ़्रेम·संश्लेषित सिग्नल) को PC पर कम्पाइल करके 20 सेकंड की स्ट्रीम बनाई और Python रिसीव पक्ष से खोला
- ECG 10,666 फ़्रेम में से जानबूझकर CRC बिगाड़ा गया 1 फ़्रेम सही ढंग से छोड़ा गया (बाधा 1 के रूप में गिना), PPG 2,000 फ़्रेम हानि 0
- 0xA5 0xA5 बाइट वाली कोरियाई अक्षरों की टेक्स्ट पंक्तियाँ मिली होने पर भी सिंक नहीं खोया
- आइंटहोवन अवशेष अधिकतम 0.086 µV = 1 LSB, rms 0.042 µV → जाँच पास
- CSV पथ (पंक्ति पार्सिंग·seq बाधा·flags) अलग से जाँचा गया
शेष असत्यापित (पुर्ज़े आने के बाद जाँच)
- ADS1293 मॉड्यूल की पावर संरचना (VDD·VDDIO), 4.096 MHz क्रिस्टल की उपस्थिति, जैक पिन आवंटन, इनपुट सुरक्षा·RLD पुर्ज़ों के मान
- एक इनपुट पिन को एक साथ CH1 + और CH3 − पर लगाने की अनुमति (अवशेष से निर्णय)
- सेंसर मॉड्यूल MAX30102 है या नहीं, लाल·IR अदला-बदली तो नहीं हुए
- MAX30102 मूल डेटाशीट से मिलान
- ESP32-S3 बोर्ड का RGB LED पिन, USB पोर्ट प्रकार
- लीड-ऑफ 8 nA केबल कैपेसिटेंस पर कितने सेकंड में प्रतिक्रिया देता है
- चिकित्सा मानक में इलेक्ट्रोड DC करंट सीमा का संख्यात्मक मान