Pulse Oximeter
Digital health and bioinformatic engineering embedded systems
A.A. 2019/2020
Configuration
Useful to set the user can enter thresholds to have new configuration or correct readings use an existing one. If a new configuration is provided, it overrides the previous one, stored in the EEPROM. If no configuration is provided, default parameters are used.
Data Acquisition
Pressing the user button starts the data acquisition. The MAX30100 acquires data cyclically. If the sample average is exceeded, a buzzer emits a sound. The sample average is shown on the LCD.
Log Messages
Each 10 seconds, a status message is printed on UART. An RTC was used to show the current status, date, and time. The status message is also sent via MQTT.
Hardware Schema
- STM32F401RE
- PO MAX30100
- LCD1602
- RTC DS1307
- WIFI ESP8266
- EEPROM AT24C256
- Passive buzzer
Board logic levels 3.3V. Connection to 3.3V power. Resistor for the LCD contrast and for the LCD LED.
Connections
- LCD LED connection to 5V to increase backlight
- Connection of devices that use I2C, to the same 2 pins, to create a single master-multiple slaves connection
- Loop to acquire PO data
- Filters to remove noise from PO raw data
- Global variable used to detect if the button has been pressed and two loops used to check if the button has been pressed or not
- Structures to store configuration and datetime
Software Architectures
Use PWM to control passive buzzer tones. Creation of a circular buffer for USART, since the USART usually uses only one byte, but here some parameters have variable length. Creation of a personalized ISR because the default callback cannot use a circular buffer. EEPROM initialized to 0xFF. ESP8266 equipped with a default firmware.
Protocols
- UART: ESP8266 module communicates using UART and the responses have different length. A circular buffer was designed for asynchronous read of the responses. The ISR sends a byte at a time whenever the UART transmit buffer is empty and conversely, copies each byte received in the receive buffer.
- I2C: Master-multislave with different addresses but same data connection. Slaves: PO, RTC, EEPROM.
- MQTT: Periodic publish on a broker. For convenience, functions have been implemented that check the buffer content for a specific string.
Libraries
- MAX30100
- RTC DS1307
- LCD1602
- ESP8266
Thanks for the attention!
-
Elettronica analogica - Forme d'onda dei generatori / funzione ad impulso PULSE
-
English presentation, esame di Lingua Inglese
-
Appunti Informatica base
-
The staggered structure of bone - mechanical behaviour and toughening mechanism