Hummingbird Heartbeats

I'm working with a bird researcher in Panama to use non-invasive techniques for measuring hummingbird heartbeats

Similar projects worth following

I make Pulse Sensor, and while at the last Dinacon in Gamboa, Panama (2019), Jay and I did some informal testing with birds that he caught in the backyard of his place. 

Jay is a hummingbird researcher. He'll be back in Panama this Spring (2022) to research hummingbird metabolism. We are creating a hardware package to send that will gather non-invasive data and see if we can find the bird beats.

There is not much data published about actual hummingbird heart rate. Previous papers describe invasive methods for acquiring bird ECG by inserting wires into bird pectorals, etc (see project files). We are hoping to develop non-invasive field ready PPG methods to get accurate heart beats from birds. Yeah, this is nuts.


Paper is from 2009 Describes method for acquiring bird beats involving invasive method on page 582. Heart rate is listed on page 583. Range from 322bpm to 685bpm.

Adobe Portable Document Format - 3.74 MB - 03/04/2022 at 21:22


Lasiewski -- Body temerpatures, heart and breathing rate, and evaporative water loss in hummingbirds.pdf

Paper is from 1964. Describes method for acquiring bird beats involving invasive method (p 212, 213). Heart rates are graphed on page 217. Range of heart rate recorded is 50bpm to 1000bpm+

Adobe Portable Document Format - 1.60 MB - 03/04/2022 at 21:14


  • 1 × Teensy 3.6
  • 2 × Pulse Sensor
  • 1 × Adafruit ADXL-335

  • First Attempts At Avian PPG Signal Capture

    Joel Murphy04/21/2022 at 00:35 0 comments


    Spring is a time of new growth. A shrugging off of the last Winter's hibernation and an awakening of Love's pleasures. A chance for the birth of new life. Yes, this is going somewhere. 

    Jay got some good and interesting data from hummingbirds recently. The first try was about a month ago, and it was not super successful. Here's a screenshot of the Arduino Serial Plotter from that time (check out the github readme for this project to learn more about the data we're collecting).

    In the above graph, blue and orange are Pulse Sensor signals, and the grey is from the accelerometer. Both Pulse Sensors are in contact with the hummingbird on the [anatomical sites needed]. There seems to be a high frequency signal on the orange trace, but it's not very pretty. PPG can be very sensitive to movement noise. The kit I sent included some double sticky tape but I don't think that was employed for this test. Jay had to focus on his 'real' research, so it wasn't until this week that he had a chance to try again.

    2nd 1st Try

    This is all new and fresh. We don't have any corresponding recorded data sets to accompany the following screenshots, but we're going to work with what we have. Starting with the data, because that's always the most fun. This is an example of a clear signal trace that we think is a stable hummingbird heartbeat captured with Pulse Sensor. This is super duper guess and speculation. Based on trust, anatomy, and physics. I think what follows is kinda legit.

    OK, there's a lot of lines there. Don't pay attention to the colored boxes and labels at the top left, they will just confuse you. This signal is sampled at about 20Hz (software timer). The Y axis is in counts of the Teensy ADC. The X axis is incremented with each sample. Notice that Arduino plots a vertical grey line every 100 samples. Only one Pulse Sensor was placed on the bird, and the other sensor traces should be ignored. The red signal trace corresponds to the Pulse Sensor in contact with the bird, and It looks like something is there! I counted the waves per 100 samples and here's a back of the envelope signal frequency estimation. 

    That's not unreasonable. However it requires verification. The good news is that while Jay was holding the bird, he was able to feel the respiration rate, and he says it was not in sync with the signal in the red trace above.

     [put the gif about needing more data here]

    Further test involved 'sticking' the Pulse Sensor to the accelerometer to kind of couple them to the same site. Reason behind that was to try and identify any movement noise in the Pulse Sensor signal that we might have to deal with. Here's what that looked like:

    OK, there's a lot of lines there. Don't pay attention to the colored boxes and labels at the top left, they will just confuse you. Here's a breakdown of the data traces.

    Trace ColorData SourceComments
    BlueSample Counterbyte size counter with rollover
    RedPulse SensorIn contact with bird
    GreenPulse SensorNot used, ignore it
    OrangeAccelerometer Xhmmm
    PurpleAccelerometer Yerrrrrr
    GreyAccelerometer Zahhhhhh

    First of all, the resolution of any accelerometer signals in this graph is just garbage. There might be something there, but any regular anatomical movement that the bird may cause, like breathing, seems to be very slight. I thought that the accelerometer might pick up respiration, but I'm not seeing anything at this scale. I'll wait for the data.

    Then there's that same steady ~20Hz wave still visible in the red Pulse Sensor signal. It looks like it's consistent across the screenshots that Jay sent me. It's gotta be something.... I've put more snaps and video on the github.

    The Birds And The Bees

    Anatomy Lesson

    This is a hummingbird skeleton. Notice the long flat bone? It's part of the sternum, and it's called the 'keel' in bird bone speak. Strong flying muscles attach to the keel (down-stroke?). The keel is visible on a living specimen...

    Read more »

  • ship it

    Joel Murphy03/17/2022 at 22:39 1 comment

    There comes a time in every project's life where it just kind of needs to be done. 

    I'm at that point. 

    Test drove it and fixed a few bugs. The github readme is up to date for notes on UI.

  • parts coming together

    Joel Murphy03/14/2022 at 20:33 0 comments

    Lots of updates happened over the weekend. Got to ship out this week !

    Components are soldered in, mostly.

    I used nail polish to 'conformally coat' the exposed circuitry on the sensors.

    Turns out that the accelerometer that I have in my bins is +-16g. That's way to sloppy for the kind of movement noise we're hoping to find. I've put in a purchase for a +-3g sensor in the same family.

    I'm using the Time library to timestamp the files. There's only limited metadata written to the CSV files. This could be improved, but not necessary since the recording will take place alongside other data collection and logging logs.

    The blue LED pulses when it's idle, and then turns off and the red LED lights during recording. I modified the 1/2 size breadboard case files from Adafruit's PermaProto page. I gave it a bit more of a 'strain relief' on the USB cable, and a guide/support for the SD card removal/insertion. You can get the STL files from the 2022 branch of the git repo. I printed on my TAZ Mini 2 very successfully.

    There's a coin cell to keep the Teensy 3.6 RTC alive. That's mostly for a future feature to make it more portable. I've rarely worked with the Adafruit solderable breadboard, but I gotta say, it's pretty nice and forgiving to work with !  

    boarded and boxed

    conformal coating

  • rapid prototyping

    Joel Murphy03/11/2022 at 23:07 0 comments

    There are many things that make this project easy-er to build. That I happen to have a Teensy 3.6 in a drawer goes pretty far. I've also worked with the Arduino SD Fat library, in the past, to perform high speed card writes. Turns out Bill Greiman has updated the tools. His example will benchmark the write time (I added benchmarking the analog read time) and print out the stats of every record session including any overruns. It also has a section for acquiring data that reads analog pins. I'm using analog sensors, so that's not even a lift.

    I have 5 sensor inputs. Two Pulse Sensors, and the three axis accelerometer. Acquiring and writing data always takes time, so it's important to verify a jitter 'free' sample clock. In order to do that, I'm toggling pin 24 on every sample. It should output a square wave that is half the sample rate. This is a 'sope of the pin.

    Pin toggle on sample. should be 1kHz. SPS is 2kHz

    Greiman's example also has a tool to convert the .bin file to .csv file. Dang.

    I think the interface will be primarily via computer serial port.

    I want to add a button to at least initiate a record session.

    Also, some LEDs to indicate that the thing thinks it knows what it thinks it's doing.

    The good news is that I have all the parts laying around, and I can print a case in house.

    More pics on the next log.

View all 4 project logs

Enjoy this project?



Trey Guilbeaux wrote 03/12/2022 at 13:15 point

The ECG paper provided cites a 2005 paper for their method, without going to that paper I don't know why they chose needle electrodes. I can tell you that it's probably unnecessary.

Three electrodes can be used to acquire a six lead ECG. One loop electrode can be affixed around each shoulder. This shouldn't impact flight performance at all and probably wouldn't even require removing feathers. The third loop electrode can be around the left ankle or knee.

This should provide a large amount of data for analysis. My ECG (IX-214) is capable of >1000 Hz polling rates so I would imagine most others can as well. The trick would be getting something small enough not to impede behavior. If that's not a factor, then just use something like the IX-214.

If your best option is to build something, go with an ECG with loop electrodes. Voltage vector reverses during contractions. This would make detection of beats trivially easy from a design perspective. If all you're after is a heart rate and nothing else, two loop electrodes (left shoulder and left leg) would be adequate. Just have a circuit detect a voltage reversal or transmit out the sine wave like the posted paper.

  Are you sure? yes | no

Joel Murphy wrote 03/14/2022 at 17:11 point

I'd like to learn more about the 'loop electrode' that you're talking about.

I can certainly get the sample rate OK, and I have a small pile of amps here. If I can fashion a 'loop electrode' I will try it. The only thing I get when I search for it is an implantable device ...

  Are you sure? yes | no

Trey Guilbeaux wrote 03/14/2022 at 17:39 point

It's just a wire you loop around the joint. Any electrode is just an electrical contact that only requires enough contact to conduct a signal. 

Looping the electrode increases surface area and prevents it from moving. Using conductive gel would make it easier.

  Are you sure? yes | no

Joel Murphy wrote 03/14/2022 at 20:48 point

Oh, I get the loop idea now. OK, I guess the only real issue is making contact with the actual skin of the bird. Since this project does not have ECG in the scope, that would have to be a future feature. Jay will know more about how feasible this is.

On the other hand, maybe it's possible to get the ECG from the legs...  That's exposed skin, and likely better able to withstand the stress of attaching electrodes...

  Are you sure? yes | no

Trey Guilbeaux wrote 03/14/2022 at 20:57 point

It has to go from top to bottom. Ion conduction is greatest from the head to tail (SA node to apex) then back from tail to head (apex to lateral myocardium). That's what creates the electrical signal. Going from one leg to the other would read a lateral signal, which is present, but very weak.

  Are you sure? yes | no

John Opsahl wrote 03/07/2022 at 02:47 point

A fetal doppler also comes to mind. Am curious if a $50 one could be hacked to detect >1000 bpm. 

  Are you sure? yes | no

Joel Murphy wrote 03/07/2022 at 00:13 point

PPG is possible if you have exposed skin. Birds don't have much exposed skin. Hummingbirds have a few 'bald patches'. one on the belly/abdomen that helps transferring warmth to eggs in the nest. The other is behind the crop, where they store nectar like a camel hump. 

Then there's the cloaca, which is also bare, but will also move and twitch.

All those sites show possibility for PPG. They all have pros and cons.

rPPG is untested in non-humans, as far as I know, but it's an interesting application of PPG sense tech. We would have to nail down the specs for a video capture. Hummingbird beats are fast. In order to capture heart rate, I would think that the sample rate would have to be at least 2x the expected signal rate. We would need to get video frame rate of 1000fps min and then the software to find the PPG. That's out of the scope of this project.

Since this is not a video project, we won't be doing rPPG.

  Are you sure? yes | no

John Opsahl wrote 03/06/2022 at 00:01 point

rPPG for birds?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates