Модуль ФПГ

_images/module_ppg.png

Технические характеристики

  • Размеры: TBA
  • Напряжение питания: TBA
  • Потребляемые ток, пиковый: TBA

Подключение к головному устройству

Подключение к головному устройству осуществляется по протоколу RS-485 через разъем SH04, расположенному на плате модуля ФПГ. Распиновка приведена на рисунке ниже.

_images/sh04w.png

Выполняемые команды

Команда на получение пульса

Формат запроса

Длина запроса - 8 байт.

Байт # Поле Тип Значение Описание
0 start_byte uint8_t 0xAA Стартовый байт. Всегда равен 0xAA
1 id uint8_t 0x40 Идентификатор получателя пакета. 0x40 - получатель - Датчик ФПГ
2 type uint8_t 0x01 Тип пакета. 0x01 - пакет команды управления
3 action uint8_t 0x00 Действие, которое необходимо выполнить. 0x00 - Чтение
4 param uint8_t 0x40 Параметр для действия. 0x40 - Данные пульса
5 data uint8_t 0x00 Данные для действия. 0x00 - нет данных
6 payload uint8_t 0x00 Дополнительные данные для действия. 0x00 - нет данных
7 checksum uint8_t 0x2B Контрольная сумма пакета - младший байт суммы всех байтов пакета

Формат ответа

Длина ответа - 12 байт.

Байт # Поле Тип Значение Описание
0 start_byte uint8_t 0xAA Стартовый байт. Всегда равен 0xAA
1 id uint8_t 0x01 Идентификатор получателя пакета 0x01 - получатель - Головное устройство
2 type uint8_t 0x40 0x40 - Данные пульса
3 systime uint32_t 0xXX

Системное время модуля в миллисекундах.

Порядок байт - little endian

4 0xXX
5 0xXX
6 0xXX
7 pulse uint32_t 0xXX

Частота сердечных сокращений в Уд/мин

Порядок байт - little endian

8 0xXX
9 0xXX
10 0xXX
11 checksum uint8_t 0xXX Контрольная сумма пакета - младший байт суммы всех байтов пакета

Имплементация значений

  • Поле systime содержит значение системного времени модуля с дискретностью 1 миллисекунда.
  • Поле pulse содержит значение частоты сердечных сокращений.

Примеры

Все команды приведены в HEX-формате без указания 0x

Запрос: AA 40 01 00 40 00 00 2B

Ответ: AA 01 40 AB 83 00 00 46 00 00 00 5F

Интерпретация ответа:

  • тип пакета - данные пульса,
  • systime = 00 00 83 AB = 33707 мс,
  • пульс = 00 00 00 46 = 70 уд/мин.

Команда на получение сатурации

Формат запроса

Длина запроса - 8 байт.

Байт # Поле Тип Значение Описание
0 start_byte uint8_t 0xAA Стартовый байт. Всегда равен 0xAA
1 id uint8_t 0x40 Идентификатор получателя пакета. 0x40 - получатель - Датчик ФПГ
2 type uint8_t 0x01 Тип пакета. 0x01 - пакет команды управления
3 action uint8_t 0x00 Действие, которое необходимо выполнить. 0x00 - Чтение
4 param uint8_t 0x41 Параметр для действия. 0x41 - Данные сатурации крови.
5 data uint8_t 0x00 Данные для действия. 0x00 - нет данных
6 payload uint8_t 0x00 Дополнительные данные для действия. 0x00 - нет данных
7 checksum uint8_t 0x2C Контрольная сумма пакета - младший байт суммы всех байтов пакета

Формат ответа

Длина ответа - 12 байт.

Байт # Поле Тип Значение Описание
0 start_byte uint8_t 0xAA Стартовый байт. Всегда равен 0xAA
1 id uint8_t 0x01 Идентификатор получателя пакета 0x01 - получатель - Головное устройство
2 type uint8_t 0x41 0x41 - Данные сатурации крови
3 systime uint32_t 0xXX

Системное время модуля в миллисекундах.

Порядок байт - little endian

4 0xXX
5 0xXX
6 0xXX
7 spo uint32_t 0xXX

Сатурация крови в процентах.

Порядок байт - little endian

8 0xXX
9 0xXX
10 0xXX
11 checksum uint8_t 0xXX Контрольная сумма пакета - младший байт суммы всех байтов пакета

Имплементация значений

  • Поле systick содержит значение системного времени модуля с дискретностью 1 миллисекунда.
  • Поля spo содержат значения сатурации крови в процентах.

Примеры

Все команды приведены в HEX-формате без указания 0x

Запрос: AA 40 01 00 41 00 00 2C

Ответ: AA 01 41 34 D4 00 00 62 00 00 00 56

Интерпретация ответа:

  • тип пакета - данные сатурации,
  • systime = 00 00 D4 34 = 54324 мс,
  • сатурация = 00 00 00 62 = 98%.

Команда на получение сырых данных

Формат запроса

Длина запроса - 8 байт.

Байт # Поле Тип Значение Описание
0 start_byte uint8_t 0xAA Стартовый байт. Всегда равен 0xAA
1 id uint8_t 0x40 Идентификатор получателя пакета. 0x40 - получатель - Датчик ФПГ
2 type uint8_t 0x01 Тип пакета. 0x01 - пакет команды управления
3 action uint8_t 0x00 Действие, которое необходимо выполнить. 0x00 - Чтение
4 param uint8_t 0x42 Параметр для действия. 0x42 - Сырые данные
5 data uint8_t 0x00 Данные для действия. 0x00 - нет данных
6 payload uint8_t 0x00 Дополнительные данные для действия. 0x00 - нет данных
7 checksum uint8_t 0x2D Контрольная сумма пакета - младший байт суммы всех байтов пакета

Формат ответа

Длина ответа - 26 байт.

Байт # Поле Тип Значение Описание
0 start_byte uint8_t 0xAA Стартовый байт. Всегда равен 0xAA
1 id uint8_t 0x01 Идентификатор получателя пакета 0x01 - получатель - Головное устройство
2 type uint8_t 0x42 0x42 - Сырые данные
3 systime uint32_t 0xXX

Системное время модуля в миллисекундах.

Порядок байт - little endian

4 0xXX
5 0xXX
6 0xXX
7 ppg_raw_red uint32_t 0xXX

Сырые данные датчика ФПГ с красного светодиода в отсчетах АЦП. Безразмерная величина.

Порядок байт - little endian

8 0xXX
9 0xXX
10 0xXX
11 ppg_raw_ir uint32_t 0xXX

Сырые данные датчика ФПГ с ИК-светодиода в отсчетах АЦП. Безразмерная величина.

Порядок байт - little endian

12 0xXX
13 0xXX
14 0xXX
15 ppg_raw_green uint32_t 0xXX

Сырые данные датчика ФПГ с зеленого светодиода в осчетах АЦП. Безразмерная величина.

Порядок байт - little endian

16 0xXX
17 0xXX
18 0xXX
19 acc_x int16_t 0xXX

Линейное ускорение по оси X в 0.244 mg = 1 LSB.

Порядок байт - little endian

20 0xXX
21 acc_y int16_t 0xXX

Линейное ускорение по оси Y в 0.244 mg = 1 LSB.

Порядок байт - little endian

22 0xXX
23 acc_z int16_t 0xXX

Линейное ускорение по оси Z в 0.244 mg = 1 LSB.

Порядок байт - little endian

24 0xXX
25 checksum uint8_t 0xXX Контрольная сумма пакета - младший байт суммы всех байтов пакета

Имплементация значений

  • Поле systick содержит значение системного времени модуля с дискретностью 1 миллисекунда.
  • Поля ppg_red, ppg_ir и ppg_green содержат значения освещенности, снятые с фотодиода по соответствующему каналу (цвету светодиода). Размерность - отсчеты АЦП и поэтому данная величина безразмерная.
  • Поля acc_x, acc_y и acc_z содержат значения линейного ускорения по соответствующим осям в формате 0.244 mg = 1 LSB.

Примеры

Все команды приведены в HEX-формате без указания 0x, что удобно для копирования в терминал.

Запрос: AA 40 01 00 42 00 00 2D

Ответ: AA 01 42 AE C3 08 00 89 83 00 00 26 85 00 00 00 00 00 27 FE 7F FC 0F 10 DC

Интерпретация ответа:

  • Тип пакета - сырые данные ФПГ
  • systime = 00 08 C3 AE = 574382 мс,
  • ppg_raw_red = 00 00 83 89 = 33673,
  • ppg_raw_ir = 00 00 85 26 = 34086,
  • ppg_raw_green = 00 00 00 00 = 0,
  • acc_x = FE 27 = -115,412 mg,
  • acc_y = FC 7F = -218.868 mg,
  • acc_z = 10 0F = 1003.084 mg.