Voltage and Current Logger

A low cost way to log voltage and current for wearable/IoT devices

Similar projects worth following
I needed a low cost way to measure current requirements and battery drain over time (for one of my wearable projects). I have a TON of Adafruit Feathers and FeatherWings, so I decided to use components I already had, plus an Adafruit INA219 FeatherWing to build a voltage and current logger. It logs to SD card, Adafruit IO, and has outputs for tracking and triggering "events"

I'm in the process of building a small wearable device (the be better bracelet) and I wanted it to be as small as possible. I originally powering the wearable with a coin cell battery, but realized pretty quickly that those batteries didn't have the required mAh for my project (which includes a haptic motor).

I needed a way to track battery life and current over time; I also wanted a way to easily trigger or record "events" (an action taken to take the project out of sleep). I didn't want to spend a lot of money on tools, so I looked into building something leveraging one of the 20+ un-used Adafruit Feathers (and FeatherWing accessories) in my electronics toolbox.

I knew that Adafruit had a INA219 current sensor FeatherWing... so I wired that to an Cortex M0 (with an ATWINC1500) feather and a TFT device. This allows me to see updates on the screen, send readings to Adafruit IO, and record data to an SD card.

I wanted something easily portable and extendable, so I:

  • added a small Lipo battery to the logging device
  • printed an enclosed case
  • added an on/off rocker switch
  • added two 2.1mm female panel mounts: input for a battery or other power input and an output to the device I'm measuring
  • two banana clip female panel mounts - to either "trigger" an event (e.g. sends a HIGH output to simulate a button push) or to track an incoming event (I manually pushed a button on the wearable)


Arduino file for Voltage Logger

ino - 14.15 kB - 04/27/2019 at 01:26



Top for the voltage logger case

Standard Tesselated Geometry - 53.60 kB - 04/27/2019 at 01:23



Voltage Logger Case

Standard Tesselated Geometry - 122.74 kB - 04/27/2019 at 01:23


View all 10 components

  • Creating a Case for the Logger

    Darian Johnson04/27/2019 at 01:22 0 comments

    Adafruit does a great job of making their 3D designs available in Fusion 360 archive format. That made it easy for me to modify their TFT FeatherWing Design. Specifically, I made four changes:

    • removed the on-off slide switch on the left side
    • added a slot for a micro rocker switch on the top
    • added openings for the two 2.1 mm panel mounts
    • added openings for the 2two Banana Jack panel mounts
    • increased the depth to allow a Stacked FeatherWing (the INA219 Featherwing) and assorted wires

    I've uploaded the STL files in the documents section, and I'm linking to the Adafruit post containing the original CAD files ->

  • Some suggestions to reduce cost if you make this

    Darian Johnson04/27/2019 at 01:11 0 comments

    I needed to make something quick and easy for measuring voltage. I didn't want to spend a lot of money, and I wanted to leverage components I already had.

    I've updated the components section to build exactly what I've built.... but I strongly suggest you consider other pieces/parts if you decide to build this.

    1. Use an ESP32 Feather instead of the Cortex M0 Wifi. The ESP32 is my go-to SoC these days. I didn't use this Feather because I had two Cortex M0 Wifi feathers lying unused. 
    2. Determine if you really need to save to SD; if not use a OLED screen. I only used the TFT FeatherWing because I have three sitting unused.

View all 2 project logs

Enjoy this project?



Darian Johnson wrote 04/26/2019 at 22:44 point

Sure, I'll be posting my code. I don't do anything special for creating a header row... when I start the program, it creates the file (or removes it, if it already exists), then I write a line for the columns.

File dataFile =, FILE_WRITE);
  String dataString = "date, bus voltage, shunt voltage, current (mA), load voltage, power";

  // if the file is available, write to it:
  if (dataFile) {

  Are you sure? yes | no

Jeff wrote 04/26/2019 at 22:06 point

I have a 13 channel data logger that I made with a feather 32U4, it creates a new file on the SD card every day with the title of the file being the date. I have been having trouble figuring out how to get the header with the channel names in the first row of the excel file, will you be posting your code? I will be happy to share mine if you want to see it.

  Are you sure? yes | no

Darian Johnson wrote 04/27/2019 at 01:26 point

Code has been uploaded. Good luck!

  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