App to Measure Voltages on Analog Pins - IOIO Meter

233 views
Skip to first unread message

Johannes Rieke

unread,
Apr 29, 2014, 12:47:11 PM4/29/14
to ioio-...@googlegroups.com
Hello everybody,

I have developed an Android app that measures the voltages on your IOIO's analog pins and shows it in colorful graphs. 
It is now available on Google Play as "IOIO Meter", just look there for feature details and screenshots. And to stay in the spirit of IOIO, the app is completely free and without ads!
Your downloads and especially your feedback are very welcome! Just drop me a line at johanne...@gmail.com or comment below.
I am currently developing a PC version, so stay tuned for updates.

Best,
Johannes Rieke

PS: You have tested my app with IOIO v1 or over bluetooth? Please leave a comment below, as I cannot test these device settings at the moment.

Ytai Ben-Tsvi

unread,
Apr 29, 2014, 9:34:54 PM4/29/14
to ioio-...@googlegroups.com

Thanks for sharing that! Looks handy.

--
You received this message because you are subscribed to the Google Groups "ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ioio-users+...@googlegroups.com.
To post to this group, send email to ioio-...@googlegroups.com.
Visit this group at http://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.

Paul McMahon

unread,
Apr 30, 2014, 7:39:15 AM4/30/14
to ioio-...@googlegroups.com
Cool, that does look handy, and nice job on the user interface and visuals.
If you're looking for other app ideas, you might consider a logic analyzer mode, where it stores digital values, based on a threshold voltage which is set for each pin.
Thanks for the app!

Paul McMahon

unread,
Apr 30, 2014, 8:33:44 AM4/30/14
to ioio-...@googlegroups.com
Some more ideas: CSV export, and email export!
Would be very handy.

Johannes Rieke

unread,
May 2, 2014, 9:17:27 AM5/2/14
to ioio-...@googlegroups.com
Thanks for your comments (and to Ytai, thanks for creating IOIO)!
I will definitely take CSV export into consideration.
If you like the app, a rating/review/+1 would be awesome to bring it to other's attention!

Tim Frisch

unread,
May 13, 2014, 9:28:07 AM5/13/14
to ioio-...@googlegroups.com
Great app Johannes; just a question for you.

For your graphs did you use Android GraphView? It looks like you managed to use that as well as modify it a  bit to add a more custom clean feel.

Johannes Rieke

unread,
May 13, 2014, 5:23:47 PM5/13/14
to ioio-...@googlegroups.com
Thanks, Tim!
I have tested GraphView but found that it was too slow for the high frequency plotting needed in the app. Instead, I ended up using achartengine. It also takes its time to repaint but there is no really good graphing library for android at the moment...
Additionally, I incorporated the tweek from the third answer here, which deletes old data after some time. Otherwise, achartengine would considerably slow down and crash eventually, when it handles some ten or hundred thousand data points. For the view with each pin in its own graph, I also created a routine which only updates the graphs that are currently visible.
For optical customization, see my code snippet below.

Please do not hesitate with additional questions!

Best regards,

Johannes


       plotRenderer = new XYMultipleSeriesRenderer();
       plotRenderer.setAxesColor(Color.BLACK);
       plotRenderer.setMargins(new int[] {(int)Helper.dpToPx(6.7f), (int)Helper.dpToPx(16.7f), (int)Helper.dpToPx(-5f), (int)Helper.dpToPx(10)});
        plotRenderer.setMarginsColor(Color.argb(0, 255, 255, 255));
        plotRenderer.setLabelsTextSize(Helper.dpToPx(13.3f));
        plotRenderer.setLabelsColor(Color.BLACK);
        plotRenderer.setXLabelsColor(Color.BLACK);
        plotRenderer.setYLabelsColor(0, Color.BLACK);
        plotRenderer.setYLabelsAlign(Paint.Align.RIGHT);
        plotRenderer.setYLabelsPadding(Helper.dpToPx(7f));
        plotRenderer.setYLabelsVerticalPadding(Helper.dpToPx(-4.8f));
        plotRenderer.setYAxisMin(-0.1);
        plotRenderer.setYAxisMax(3.5);
        plotRenderer.setXAxisMin(0);
        plotRenderer.setXAxisMax(10);
        plotRenderer.setShowLegend(false);
        plot = ChartFactory.getLineChartView(getContext(), dataset, plotRenderer);


Abstract Class Helper:

public static float dpToPx(float dp) {
        return (dp * Resources.getSystem().getDisplayMetrics().density);
    }




--
You received this message because you are subscribed to a topic in the Google Groups "ioio-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ioio-users/kMoSeGmFHbk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ioio-users+...@googlegroups.com.

schneewit...@gmail.com

unread,
May 20, 2014, 6:54:02 AM5/20/14
to ioio-...@googlegroups.com
Hello Johannes,

thanks very much for sharing your work. I just found your app today and tried it with my IOIO-OTG via Bluetooth.

Unfortunately it doesn't connect. I checked the connectivity with two other, independent programs, and they work.
I have to admit that I have a relatively old firmware on my IOIO, something like V3.30. I'm not sure if this is probably related to the problem.

Comments on your app: it is quite intuitive and easy to use. Very useful is the scrolling and zooming. The scrolling even synchronises all graphs
in the each_analog_signal_in_a_single_graph-overview ( don't know how to call it differently ).

So, please keep going and maybe you can just post me if you think that the firmware revision has something to do with my problem.

best regards
Schnee

Ytai Ben-Tsvi

unread,
May 20, 2014, 11:37:15 AM5/20/14
to ioio-...@googlegroups.com
The logcat output on the Android will tell you if your firmware is too old. It is very likely that this is your problem. There's no harm in upgrading so you might as well do it regardless.


--
You received this message because you are subscribed to the Google Groups "ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ioio-users+...@googlegroups.com.

Johannes Rieke

unread,
May 20, 2014, 1:29:15 PM5/20/14
to ioio-...@googlegroups.com
Hi Schnee,

thanks for your feedback and kind words! As Ytai said, the easiest way is to just go ahead and upgrade your firmware, it's really not a lot of work. I would be happy to hear about your results, especially as I could not test the app via bluetooth yet.

@Ytai: Is there anything I can do to expand support for older firmware versions (I am currently using IOIOLib from version 4.0 in the app)?

Thanks,
Johannes


--
You received this message because you are subscribed to a topic in the Google Groups "ioio-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ioio-users/kMoSeGmFHbk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ioio-users+...@googlegroups.com.

schneewit...@gmail.com

unread,
May 20, 2014, 3:06:55 PM5/20/14
to ioio-...@googlegroups.com
Hello Ytai,

haven't done much with the Android development environment, I'm not sure how to get this "logcat output". I know that this is not the right thread for it. Sorry Johannes for hijacking.
I assume I connect my Android device ( Nexus 7 running 4.2.1 ) to a PC via USB cable, connect IOIO OTG via bluetooth and start the app on the Android device.
I have used the adb once in the past, so I should get it running again. And there I can see the logcat, right ?
I'll look into the firmware update procedure later.

Thanks and best regards
Schnee

Johannes Rieke

unread,
May 20, 2014, 3:27:12 PM5/20/14
to ioio-...@googlegroups.com
Hi Schnee,

no problem, whatever helps you to get the app running :). 
There are also a bunch of apps for reading logcat right on your phone (just search for logcat on Google Play), this will probably be easier than connecting to PC and setting everything up. 
But I would advise you not to spend to much time with that, just follow this or this routine to update your firmware and you will be done in 5 minutes.

Best,
Johannes


--
You received this message because you are subscribed to a topic in the Google Groups "ioio-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ioio-users/kMoSeGmFHbk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ioio-users+...@googlegroups.com.

schneewit...@gmail.com

unread,
May 20, 2014, 4:03:59 PM5/20/14
to ioio-...@googlegroups.com
Thanks for your hints Johannes !

best regards
Schnee

Ytai Ben-Tsvi

unread,
May 21, 2014, 11:51:46 AM5/21/14
to ioio-...@googlegroups.com
@Johannes: You can build your app against an earlier version of IOIOLib if you want it compatible with earlier versions of the firmware (as well as later versions, since the firmware is backward compatible).

@Schnee: The standard ways to get the logcat output is either run 'adb logcat' from the command line or open the Logcat view in Eclipse. USB debugging needs to be on on the Android for that to work.




best regards
Schnee

--
You received this message because you are subscribed to the Google Groups "ioio-users" group.

schneewit...@gmail.com

unread,
May 25, 2014, 11:42:09 AM5/25/14
to ioio-...@googlegroups.com
Hello Johannes,

I upgrade to 5.00 now, but the connection still does not work.

It took me a while as I first tried with my Linux machine and finally end up with the known problem of the bootloader ( endless connect/disconnect )
I used my windows machine for the upgrade. It was not so easy to find the .ioioapp I have to say !

Ok, back to your program. I paired my IOIO-OTG as usual and start your app, press the "play" symbol and get the message "not connected".

Is this probably something with the too new firmware now? Do I need to downgrade to 4.00 ?

best regards
Schnee

Johannes Rieke

unread,
May 25, 2014, 5:07:43 PM5/25/14
to ioio-...@googlegroups.com
I think it should no be an issue that the firmware is "too new" as the firmware is backward compatible, as Ytai said. Are you still trying to connect via bluetooth? Maybe you could try USB and see if that works...

Best, Johannes


--
You received this message because you are subscribed to a topic in the Google Groups "ioio-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ioio-users/kMoSeGmFHbk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ioio-users+...@googlegroups.com.

schneewit...@gmail.com

unread,
May 26, 2014, 1:53:53 AM5/26/14
to ioio-...@googlegroups.com
Hello Johannes,

sorry, I didn't made my configuration setup clear enough.

I use a Nexus7 (2012) with Android 4.2.1 (rooted)
Usually I connect the IOIO-OTG via bluetooth. This time I connected it to the USB port of the N7 through a cable. I had to find an appropriate
cable first, as the "normal" USB OTG for storage does not work.

Luckly I had several other cables and could get connection, but had to disable USB debugging. I could connect ( through USB cable ) to IOIO-OTG, but not with your app.
I can connect ( through bluetooth ) to the IOIO, but not with your app.

Sadly I have to say, that even your app is great and nice, I couldn't get it working with my configuration. I'm still hoping that it is just a very simple stupid mistake I did.
I can get hold of some other smart phone, like Sony Xperia Z1 and try it once again, just to make sure that the issue is not related to my N7. However, this phone has
already an update to kitkat, and I'm not sure if this will seemless work with the IOIO-OTG over USB. But it should do it over bluetooth.

best regards
Schnee

schneewit...@gmail.com

unread,
May 26, 2014, 4:11:57 PM5/26/14
to ioio-...@googlegroups.com
Hello Johannes,

ok, I couldn't get the Sony Xperia, but got a Toshiba AT300 with Jelly Bean 4.1.1.

I could only try over bluetooth and got "Not connected" from your app.
Frankly speaking, as other apps work with the configuration, I would assume that there is an issue with your implementation
related to IOIO-OTG. And bluetooth is another level of challenge.

Would the logcat output help? Or anything else to support you?
best regards
Schnee

Johannes Rieke

unread,
May 27, 2014, 5:05:18 PM5/27/14
to ioio-...@googlegroups.com
Hi Schnee,

that seems really strange, especially as it occurs on different versions and setups. I am quite busy right now but I will definitely take another look at the source code and my setup as soon as I can. I'll keep you posted...

Best regards,
Johannes


Ytai Ben-Tsvi

unread,
May 28, 2014, 12:02:27 PM5/28/14
to ioio-...@googlegroups.com
Don't know about Bluetooth (maybe IOIOLibBT wasn't linked into the app?), but the OpenAccessory thing is almost surely related to the fact that the app was compiled with an old version of IOIOLib. One of the more recent versions of IOIOLib fixed some compatibility issues with newer Android versions over OpenAccessory.

If you send the logcat output I might be able to figure out the answers to these guesses.


--
You received this message because you are subscribed to the Google Groups "ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ioio-users+...@googlegroups.com.

schneewit...@gmail.com

unread,
May 28, 2014, 4:00:34 PM5/28/14
to ioio-...@googlegroups.com
Hello Ytai,

I couldn't believe, but I managed to get a logcat out of my Nexus7 ! Well, the app is still not working, but I could compare a working application ( IOIO Droid ) with the IOIOMeter.

This is the part of the logcat when IOIOMeter tries to connect via bluetooth to my IOIO-OTG

I/ActivityManager(  656): Start proc com.ioiometer for activity com.ioiometer/.MainActivity: pid=4292 uid=10097 gids={50097, 3003}
D/IOIOConnectionRegistry( 4292): Bootstrap class not found: ioio.lib.impl.SocketIOIOConnectionBootstrap. Not adding.
D/IOIOConnectionRegistry( 4292): Bootstrap class not found: ioio.lib.android.accessory.AccessoryConnectionBootstrap. Not adding.
D/IOIOConnectionRegistry( 4292): Bootstrap class not found: ioio.lib.android.bluetooth.BluetoothIOIOConnectionBootstrap. Not adding.


I'm not an expert, but "class not found" does not look very promissing.
@Johannes: this is still the version from the google play store.

This is an excerpt of the logcat when I connect IOIO-Droid via bluetooth to the IOIO-OTG
D/IOIOConnectionRegistry( 4640): Successfully added bootstrap class: ioio.lib.impl.SocketIOIOConnectionBootstrap
D/IOIOConnectionRegistry( 4640): Successfully added bootstrap class: ioio.lib.android.accessory.AccessoryConnectionBootstrap
D/BluetoothManagerService(  656): Message: 20
D/BluetoothManagerService(  656): Added callback: android.bluetooth.IBluetoothManagerCallback$Stub$Proxy@428f2200:true
D/IOIOConnectionRegistry( 4640): Successfully added bootstrap class: ioio.lib.android.bluetooth.BluetoothIOIOConnectionBootstrap
D/AccessoryIOIOConnection( 4640): No accessory found.
D/BluetoothAdapterService(1105438192)( 1206): Get Bonded Devices being called
D/BluetoothAdapterProperties( 1206): getBondedDevices: length=4
D/IOIOImpl( 4640): Waiting for IOIO connection
V/IOIOImpl( 4640): Waiting for underlying connection
V/SocketIOIOConnection( 4640): Creating server socket
V/SocketIOIOConnection( 4640): Waiting for TCP connection
D/IOIOImpl( 4640): Waiting for IOIO connection
V/IOIOImpl( 4640): Waiting for underlying connection
D/IOIOImpl( 4640): Waiting for IOIO connection
V/IOIOImpl( 4640): Waiting for underlying connection
V/BluetoothIOIOConnection( 4640): Attempting to connect to Bluetooth device: IOIO (00:00)
W/BluetoothAdapter( 4640): getBluetoothService() called with no BluetoothManagerCallback


Hope this helps somehow.

I would prefere IOIOMeter over IOIODroid, because of the displaying graph capabilities
best regards
Schnee

PS: Machine: Nexus7 (2013), Kitkat 4.4.2

 

Johannes Rieke

unread,
May 28, 2014, 4:09:03 PM5/28/14
to ioio-...@googlegroups.com
Hi Schnee,

thanks for that! As I have told you before privately, I really found an implementation issue in the version from the play store, that's were the "ClassNotFound" errors come from. I thought that the version I had send you today would fix this but obviously it doesn't. 
I could now get my own bluetooth dongle to work with my IOIO, so I will be able to try and debug it myself now. I will let you know as soon as I have fixed it.

Best,
Johannes


Johannes Rieke

unread,
May 28, 2014, 4:44:47 PM5/28/14
to ioio-...@googlegroups.com
Ok, that seems really strange. When I run the app (not the one from the play store but the one where I have fixed the bluetooth issue) in debug mode, everything runs fine and I can connect via bluetooth. However, if I create a signed apk in release mode and run it on my phone, I get the same errors as Schnee telling me that the bluetooth and accessory classes were not found.

@Ytai, could this have anything to do with the fact that I am using AndroidStudio for development? 

schneewit...@gmail.com

unread,
May 28, 2014, 4:52:44 PM5/28/14
to ioio-...@googlegroups.com
Hello Johannes,


On Wednesday, May 28, 2014 10:09:03 PM UTC+2, Johannes Rieke wrote:
 
I thought that the version I had send you today would fix this but obviously it doesn't. 

 
As said, I'm only tested the version from the play store, not the one that you send me. Sorry for the misunderstanding. As I'm handling different machines right now,
to find implementation issues, I haven't actually copied the newer version to this particular machine.

This is the output with the new app. Even less IOIO activities then before !?
I/ActivityManager(  656): Displayed com.ioiometer/.MainActivity: +325ms
D/audio_hw_primary(  187): select_devices: out_snd_device(3: speaker-reverse) in_snd_device(0: )
D/ACDB-LOADER(  187): ACDB -> send_afe_cal
D/audio_hw_primary(  187): select_devices: out_snd_device(3: speaker-reverse) in_snd_device(0: )
D/ACDB-LOADER(  187): ACDB -> send_afe_cal


best regards
Schnee



Ytai Ben-Tsvi

unread,
May 28, 2014, 8:23:47 PM5/28/14
to ioio-...@googlegroups.com
The signing process might be obfuscating the class names. You should make sure the 3 classes mentioned in Schnee's email do not get obfuscated. 


--
You received this message because you are subscribed to the Google Groups "ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ioio-users+...@googlegroups.com.

Johannes Rieke

unread,
May 28, 2014, 9:01:15 PM5/28/14
to ioio-...@googlegroups.com
Thanks Ytai, that put me on the right track! If I disable Proguard when building the release version, everything works fine and I get a bluetooth connection.
I will push an update to the Play store (probably) tomorrow. A big thank you to Schnee and Ytai for your help!

Best,
Johannes



--
You received this message because you are subscribed to a topic in the Google Groups "ioio-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ioio-users/kMoSeGmFHbk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ioio-users+...@googlegroups.com.

Ytai Ben-Tsvi

unread,
May 28, 2014, 9:11:21 PM5/28/14
to ioio-...@googlegroups.com

Cool. Be advised that you can selectively prevent only certain classes from being obfuscated if you wanted to.

Johannes Rieke

unread,
May 31, 2014, 3:20:09 PM5/31/14
to ioio-...@googlegroups.com
I have pushed the bluetooth update to the Play store now, and included IOIO firmware 3.30 along the way. I'm looking forward for your feedback!
Thanks again to Schnee for pointing this out and to Ytai for your help!
@Ytai Thanks for pointing this out, for now I am droping it completely because file size doesn't really matter, anyway.

Best, Johannes

schneewit...@gmail.com

unread,
Jun 1, 2014, 3:20:52 AM6/1/14
to ioio-...@googlegroups.com
Hello Johannes,

I have the update already on my Nexus7. However, I'm traveling abroad and have no access to my IOIO for about a week. Sorry for the delay.
I'll let you know the outcome as soon as possible.

best regards
Schnee

schneewit...@gmail.com

unread,
Jun 8, 2014, 3:40:50 PM6/8/14
to ioio-...@googlegroups.com
Hello Johannes,

tonight I checked it and it's WOW !

So, your app via bluetooth connected to my Nexus 7 I can read the values from my IOIO-OTG.

Two things: I changed the frequency ( from 200ms to 5 seconds ) and could not see any difference in the graphs. I would expect that they run slower or the output will be more rough
or something.
Another point is a suggestion: I think it would be nice, if you have the overview ( let's call it tile-mode ) and press on one of the graphs, that only this graph will be shown full screen.

I will further play with your app. Thanks for your work.
best regards
Schnee

Johannes Rieke

unread,
Jun 8, 2014, 4:08:12 PM6/8/14
to ioio-...@googlegroups.com
Hi Schnee,

awesome that it works and thanks a lot! 
The fact that you do not see any speed difference when changing the frequency is probably due to the fast processor in the Nexus 7. Try it on a (older) smartphone with all pins in one graph and you will see a difference, trust me ;) Alternatively you can try zooming in (by two finger zoom) and if you get to a small enough time scale, you should see the values come in more frequently.
The graph selection feature is a cool idea, I will keep it in mind if I find some time to work on the app (quite busy with other projects right now).

Best regards,
Johannes


Peter Retief

unread,
Jun 11, 2014, 2:05:24 PM6/11/14
to ioio-...@googlegroups.com
Looks great, I am looking for a module to check status of ports, it would be helpful if i could use your source as a base - but I understand perfectly if you would rather not

I have linked it with bt and it works really well - do you have a commercial application in mind?

Johannes Rieke

unread,
Jun 12, 2014, 12:55:20 PM6/12/14
to ioio-...@googlegroups.com
Hi Peter,

thanks for you feedback! 
Right now the source code is not very well documented and reviewed, so I would not really like to publish it completely at the moment. Maybe you can just send me a private email describing what you want to do and/or what parts you need, then I can see if I can provide you with something. 
Currently, I have no plans to make the application commercial, let's see how things are evolving.

Best,
Johannes

PS: A rating on the Play store is very welcome if you like the app!



--

Johannes Rieke

unread,
Feb 26, 2015, 5:43:19 PM2/26/15
to ioio-...@googlegroups.com
Hi everybody,

just wanted to let you know that I finally found some time to update my IOIO Meter app
You can now save the voltages from your IOIO as a CSV file! (thanks for the idea!)

Also, I have uploaded the code to GitHub, feel free to use it as you like. 
If you have any questions or feedback, just write me (johanne...@gmail.com).

Best,
Johannes Rieke
Reply all
Reply to author
Forward
0 new messages