Если понравился материал Вы всегда можете отблагодарить автора лайком или подпиской. Канал развивается и ему очень помогает ваша активность. А ещё лайки мотивируют автора на новые публикации.
Из Китая пришли модульки и можно дальше продолжать сборку.
Max30102
Я заказал в 2х исполнениях, но на борту один и тот же чип max30102.
после распаковки припаял контакты.
Неплохой материал по датчику esp32-heart-rate-pulse-oximeter-max30102
Дальше надо прикрутить к плате. Считать значения, сырые данные меня пока не интересуют, а вот данные пульс, оксигенация и температуры - нужны будут. Достаточно много материалом для ардуино на с++ например тут. На микропитоне по-меньше, но не настолько чтоб портировать max30100, MAX30102-MicroPython-driver. Решил использовать второю. Для работы с ней надо установить пакет на МК.
Учимся загружать пакеты на МК. mip, upip, mpremote
mip пакетный менеджер внутри МК, также и upip работает через интернет соединение микроконтроллера доки mip, доки mpremote. Mip - запускается через REPL, а вот mpremote - через терминал питона на компьютере с которого идёт прошивка. На хостовой машине:
pip install mpremote
mpremote mip install "github:n-elia/MAX30102-MicroPython-drive"
Я работаю через pycharm + micropython plugin И у меня не подцепился venv. Поменял интерпретатор на cmd и всё завелось.
Супер отработало. Но при попытке выполнить код - ошибка!
from time import sleep
from machine import SoftI2C, Pin
from max30102 import MAX30102 # <-
my_SDA_pin = 0 # I2C SDA d3 gpio0
my_SCL_pin = 2 # I2C SCL d2 gpio4
my_i2c_freq = 400000 # I2C frequency (Hz) here!
i2c = SoftI2C(sda=Pin(my_SDA_pin),
scl=Pin(my_SCL_pin),
freq=my_i2c_freq)
sensor = MAX30102(i2c=i2c)
sensor.setup_sensor()
Ошибка!
File"", line6, in
MemoryError: memory allocation failed,allocating 416 bytes
Проблема в том что не хватает оперативы запустить модуль. Об это написано тут и тут.
Решение - скомпилить модуль на хостовой тасчке, - будет *.mpi файл. Дальше его грузим на МК и работаем как обычно. Репозиторий mpy-cross, здесь вменяемый хелп, доки mpy.
Для компиляции так:
### Avoiding low memory error for max30102
pip install mpy_cross
#compile max30102.__init__.py to mpi
python -m mpy_cross -v max30102\__init__.py
Рабочий example.
Итак вроде пакеты загружены импорты тоже победили. Снимаем показания!
Что дальше.
Это прототип и тест подключения датчика к МК. Дальше надо обработать сырые данные посчитать пульс и содержание кислорода. Обернуть всё в класс и использовать в основном проекте. Для этого понадобится изучить материалы, найти алгоритм вычисления пульса и spo.
Материалы по будущей теме:
- https://forum.micropython.org/viewtopic.php?f=5&t=10824 форум на тему подобного проекта.
- max30102-tutorial-raspberrypi Этот проект на питоне. Тут есть реализация вычисление spo и heartbeat rate
- LCD-Arduino-STONE-HMI-Display-Heart-Rate/ ардуино проект
- max30102-pulse-oximeter-heart-rate-sensor-arduino-tutorial Особенно этот материал понравился
Ссылки
- Основная статья
Благодарности
Спасибо за внимание. Подписывайте на канал!