protocentral / afe4490_oximeter Goto Github PK
View Code? Open in Web Editor NEWThis pulse oximetry shield from ProtoCentral uses the AFE4490 IC to enable your Arduino to measure heart rate as well as SpO2 values.
License: Other
This pulse oximetry shield from ProtoCentral uses the AFE4490 IC to enable your Arduino to measure heart rate as well as SpO2 values.
License: Other
Hi guys, I'm having trouble getting this to work. I followed the instructions as best as I could. Unfortunately I'm not getting any readings. When I click the run button, I'm able to select the port and press start but I do not get any readings. The RED PPG is a flat green light while the IR doesn't register. No SpO2 value is displayed.
I'd be grateful if you could help me as I am inexperienced with such projects.
Hi brother,
It is not an issue, but I have some doubt in ppg probe. Brother whether you are using Transmissive probe or reflective sensor.
The ppg signal obtained through this code is an inverted graph nah? therefore i want to invert the ppg signal t get the proper output for my project. Also my project is to calculate hemoglobin concentration, how can i modify the above code to calculate hemoglobin concentration.
I want to get the ppg signal as below
Hi,
Would someone be able to explain the line of code (line 436) below and why the numerator is multiplied by 100? Also, possibly what the dc_max represents on the actual PPG signal?
an_ratio[n_i_ratio_count]= (n_nume*100)/n_denom ; //formular is ( n_y_ac *n_x_dc_max) / ( n_x_ac *n_y_dc_max)
Thank you
I followed the instructions on the Github page, and when running the .pde files in Processing, I got this error:
ControlP5 2.2.6 infos, comments, questions at http://www.sojamo.de/libraries/controlP5
################ EXCEPTION IN EVENT HANDLER ################
An error occured during execution of the eventhandler:
CLASS: openview_pulseox METHOD: start_click
Caused by java.lang.NullPointerException
openview_pulseox.start_click(openview_pulseox.java:829)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
g4p_controls.GAbstractControl.fireEvent(Unknown Source)
g4p_controls.GButton.mouseEvent(Unknown Source)
g4p_controls.GWindowImpl.mouseEvent(Unknown Source)
sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
processing.core.PApplet$RegisteredMethods.handle(PApplet.java:1436)
processing.core.PApplet.handleMethods(PApplet.java:1638)
processing.core.PApplet.handleMouseEvent(PApplet.java:2749)
processing.core.PApplet.dequeueEvents(PApplet.java:2652)
processing.core.PApplet.handleDraw(PApplet.java:2493)
processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1547)
processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)
##############################################################
What would cause this error? I am using the version 2 pulse oximeter shield.
Hello,
Using this microcontroller with AFE4490 Breakout Board Kit and Pulse Oximeter Shield I have the same bad problems:
1st method is loading examples from Arduino Library won't compile due to redeclared "RESET" , so the next step like using OpenView doesn't matter.
2nd method is loading manually examples from:
https://github.com/Protocentral/AFE4490_Oximeter/tree/f59b2d74fc27a488b90e599e8cf3954cacc0a3a0
which compile successfull and the R/IR LED are lighting, but after open dedicated software Processing GUI, the PPG-graph is only flat.
I really haven't idea what to do, try much combinations buy finally my set-up doesn't work correctly. Additionally OpenView 64-bit return error log after chosing Port COM and Device so I try to use 32-bit. Please contact
Hello,
I am using this shield as part of a larger device and I am relatively inexperienced with Arduino. I have somewhat of an understanding of the code, however, I was wondering if you could provide some guidance for the extraction of the raw pulse waveforms? I am trying to graph the waveform along with waveforms from two other probes (one ear PPG and one ECG). Any help is much appreciated! Thanks!
Hi,
I am using the ProtoCentral AFE4490 Pulse Oximeter Breakout Board Kit with my Arduino UNO. I am following the instruction and it works as expected.
However, the same code is not working with Arduino UNO WiFi Rev 2.
I need some help in this regard.
Thanks.
Maitreya
The layer 2 and 15 have any function? There isn't any wire or polygon connected
Best Regards
Dear Protocentral,
I bought the spo2 shield recently and followed the instructions given in this git. Processing graph output values always shows values in range of 60 to 70. A normal healthy person like I should get values in 94+ range. I came across this section after a brief look at processing code:
` AvgYdata[arrayIndex] = (float)receivedVoltage_RED;
AvgZdata[arrayIndex] = (float)receivedVoltage_IR;
value1 = (float)( AvgYdata[arrayIndex] - averageValue(AvgYdata));
value2 = (float)( AvgZdata[arrayIndex] - averageValue(AvgZdata));
ydata[arrayIndex] = value1;
zdata[arrayIndex] = value2;
float RedDC = (float) averageValue(AvgYdata);
float IrDC = (float) averageValue(AvgZdata);
arrayIndex++;
if (arrayIndex == pSize)
{
arrayIndex = 0;
time = 0;
RedAC = s.SPO2_Value(ydata);
IrAC = s.SPO2_Value(zdata);
float value = (RedAC/abs(RedDC))/(IrAC/abs(IrDC));
/******** Emprical Formalae *********/
//float SpO2 = 10.0002*(value)-52.887*(value) + 26.817*(value) + 98.293;
// float SpO2 =((0.81-0.18*(value))/(0.73+0.11*(value)));
float SpO2=110-25*(value);
SpO2 = (int)(SpO2 * 100);
SpO2 = SpO2/100;
oxygenSaturation.setText(SpO2+"");`
Hi guys,
I am trying to use this with a raspberry. I used this code and the BCM2835 for hardware management (GPIO etc....).
Most is working (communication, SPI, spo² value seems correct..) but the heartbeat is very unstable (78bpm then 150 then 90...).
Can you point at extra care to have to get this code working on another target? I have seen the "FS" constant that is supposed to be a sampling frequency, but I don't know how to adjust it for my target.
Thank you very much for your help.
hi from the first time I run the shield with arduino the probe sometimes it is work normally and sometimes I it is not working it need to disconnect the port many times to work normally please tell me what to do
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.