For my smart watch project I decided to experiment with sensors for reading pulse. Looking around I stumbled upon a sensor made by Maxim – MAX30100. For my surprise once I got my development board and delved into the sensor’s datasheet I discovered it’s not as simple as just wiring up the sensor to a microcontroller and reading the data. A lot of work you have to do yourself. In this tutorial, I’ll try to explain what I’ve learned about pulse oximeter and how to make sense of their data.
For most of the people probably the next step in the world of MEMS is to interface gyroscope. Most likely use gyroscope data to fuse with accelerometer data. If you have implanted acc before, you’ll know that acc is very responsive and noisy when it comes to measuring pitch and roll. It is possible to smooth out the data via sensor fusion. In this tutorial I will explain what data we will be getting from gyroscope, how to use the data to calculate pitch, roll and yaw and finally how to fuse sensor data with complimentary filter.
Recently I’ve been playing with cheap GY-80 module, more precisely 10DOF module with accelerometer, gyroscope, magnetometer and barometer. Eventually I’ll write how to use all four of them. I’ll start with accelerometer (accel). This guide could potentially be used for interfacing most of the MEMS accels, and definitely as a guide how to interpret data coming from the accel, not only from MEMS but also how to use the data coming from Smartphone, wiimote etc. They are basically the same thing. However, I won’t be describing features as tap sensing and double tap sensing, this will be only an introduction about the raw accelerometer.
I and my friend Zenios Agapiou thought of constructing a simple two wheel balancer robot. At the beginning we thought we will just program our Atmega88pa micro-controller through standard JTAG. However, we quickly realized we have Bluetooth connected to the RX/TX device, so we thought whether we can upload Arduino bootloader to the atmega and program it wirelessly. However it wasn’t that simple as we initially anticipated.
Out of boredom I figured out I'll write a library from scratch to interface the character LCD display which I got from ebay, quite cheap. Less than 7 pounds. However, I have written before a simple code to interface an LCD from scratch for 8051. So I have some experience and understanding how the character LCD works. The difference now will be, I' ll be using 4 bits, instead of 8 bits to communicate and read the busy flag. Essentially improving the previous code. I chose to write it for Arduino this time, because I have Sanguinololu bought for my 3D printer, and at some point I want to write a LCD user interface for it, from scratch. There won't be anything spectacular about this tutorial, there are already good articles about this stuff for all kinds of devices. Moreover, arduino has bunch of LCD libraries available for download for free. BUT... in this tutorial I'll describe problems I encountered and try to be as descriptive I can be so you can understand how the character LCD works, making you able to interface it with any micro-controller available, and even driving it by hand.
First, thank you very much for all these details !
I would like to know more about the sampling rate. I need to get a sampling rate of at least 500hz, but 1khz would be perfect.
Thank you !
Thank you for the fast feedback i uplouded the code, but i have some problems
So in the link bellow i have two pictures, the upper is when i have my finger on it and the second is when the sensor dont have anythink on...
I'm not sure if I updated the code in the article. But there was one glitch regarding pulse width and LED current. And the waveform more or less looked like the one you have screenshotted.
It has been fixed on the github:...
Great explanation and work on the heart beat monitor sensor,
But i would like to ask you one question, i m having trouble to read proper data, when i put the finger on the sensor you can see that the graph is not showing the correct...
and thank you for your excellent example. You helped me a lot and saved me a ton of trouble. Here some experiences marked down for others to have it easier:
- I had to send emails with non-latin characters and therefore changed the...
Hi, You work is kind of great for new learner. In my project I am thinking of using device to measure heart rate of mouse animal which is around 1000bpm ( 5 times higher than human). I want to know whether this device can measure that extream bpm. For SP02 maybe I won't use it. You...