Библиотека предоставляет базовый интерфейс Python для датчика частоты сердечных сокращений MAXIM MAX30102 и чипа датчика Sp02.
Эта библиотека поддерживает режимы как ИК-светодиода (импульсный), так и красного светодиода (SpO2) с поддержкой (через gpiozero) для перехвата встроенных прерываний и запуска измерений в реальном времени. Примеры ниже демонстрируют общую настройку.
Создать интерфейс для своего устройства/чипа, создав экземпляр класса MAX30102.
import max30102
mx30 = max30102.MAX30102()
Можно передать ряд необязательных параметров для начальной настройки, в том числе:
i2c
пользовательский объект i2c, если у вас уже есть возможность подключения к шинережим
для включения показаний SpO2 по умолчаниюsample_rate
количество выборок данных в секундуpulse_width
длительность каждой выборкиled_current_red
количество тока, подаваемого на красный светодиодled_current_ir
количество тока, подаваемого на инфракрасный светодиодmax_buffer_len
количество измерений для локального хранения
Значения частоты дискретизации, длительности импульса и тока светодиода ограничены. Полный список в исходном коде. Если указано недопустимое значение, для удобства отображаются правильные значения. Точное значение каждого из этих значений дано в техническом описании MAX30102
Чтобы считать текущие значения датчика с микросхемы MAX30102 можно вызвать .read_sensor
. Это позволит получить последние значения из буфера и сохранить их локально. Последние значения доступны в .ir
и .red
для измерений ИК и красного соответственно. Локальный буфер FIFO используется для хранения предыдущих измерений, вплоть до max_buffer_len
, указанного при настройке.
mx30.read_sensor()
# Последние значения теперь доступны через .ir и .red
mx30.ir, mx30.red
Чтобы включить чтение Sp02, можно либо установить режим напрямую, либо использовать удобный метод:
mx30.set_mode(max30102.MODE_SPO2)
# or
ms30.enable_spo2()
Если выполнить еще одно считывание датчика, можно увидить значение параметра «.red» (который необходим для считывания насыщения кислородом).
mx30.read_sensor()
mx30.ir, mx30.red
Предыдущие измерения доступны в файлах .buffer_ir
и .buffer_red
.
Микросхема MAX30102 обеспечивает механизм прерывания, который можно использовать для запуска чтения, когда значения становятся доступными. Используя gpiozero
, можно связать этот триггер прерывания с методом MAX30102.read_sensor
, что приведет к выводу результатов измерения в реальном времени в наш буфер FIFO. Соедините контакт INT MAX30102 с подходящим контактом на вашем контроллере. Например:
mx30.set_interrupt(max30102.INTERRUPT_FIFO) # Настройте триггер на срабатывание при заполнении буфера FIFO (на MAX30102).
# Вы также можете использовать INTERRUPT_HR для получения триггера при каждом измерении.
from gpiozero import Button
interrupt = Button(16)
interrupt.when_activated = mx30.read_sensor
Теперь вы можете видеть значения в буферах, например:
mx30.buffer_red
Или можно отметить самые последние значения, например:
while True:
print(mx30.buffer_red[-10:])