A simple graphical user interface for
Girino, a Fast Arduino Oscilloscope
running on Linux, Mac OS X and Windows.
The screen capture below, as well as the others in the doc
folder,
displays the acquisition of a signal generated by various circuits including another DIY project:
Skill Builder: Advanced Arduino Sound Synthesis.
Since this little application is intimately bound to Girino, the various settings provided by Girinoscope are not detailled here. If you have already built your own Girino and studied the firmware, you should already be familiar with them.
Wait duration parameter
The Arduino code provided in the
Girino Instructable
doesn't handle very well the wait duration
parameter that you can set using the vertical green rule
(the horizontal orange rule is for the threshold to trigger the acquisition).
There is a small bug when changing the value through the serial interface
which can easily be solved by applying the following patch manually:
Girino.h, line 41:
// Replaced 3 by 4 since the wait duration range is [0, 1280[.
#define COMBUFFERSIZE 4 // Size of buffer for incoming numbers
Girino.ino, line 224:
// Added a necessary x2 factor since we read 16 bits now.
delay(COMMANDDELAY * 2);
Girino.ino, line 229:
// Replaced 'uint8' by 'uint16' for the same reason.
uint16_t newT = atoi( commandBuffer );
With this simple correction, you should now be able to change the wait duration
without problem.
However, remember that this duration is the time spent
(or, more exactly, the number of data samples measured) by Girino after the trigger.
Per instance, a wait duration
of 580
gives you 1280 - 580
data measures before the trigger and 580
after.
If this trigger occurs too early, you will not see much from the past.
In fact, since Girino resets its data buffer on each acquisition, you will mostly get zeros.
The screen captures in the doc
folder show some cases of such missing data
(since the observed signals are periodic, Girino can’t catch more than a period before a trigger occurs).
Prescaler parameter
The prescaler parameter also suffers some limitations signaled by the UI using the following colors:
The code optimization consists in applying the advices given by womai in the Girino Instructable.
Just copy the latest release somewhere
and launch the application by a simple double-click on the JAR.
In case your system doesn’t know how to handle a JAR,
you can launch it through a more explicit java -jar Girinoscope-*-dist.jar
Obviously, since this is a Java application, you need a JRE 1.7 or higher.
You just need a JDK 1.7 or higher
and Maven.
Once these tools installed, a simple mvn -Dhttps.protocols=TLSv1.2 clean package
at the root of this project will do the job.
On success, you can run the application the same way by issuing a mvn exec:java
.
Of course, you can also launch the application without maven using a java -jar target/Girinoscope-*-dist.jar
.
Note: the https.protocols=TLSv1.2
option is required with old Java versions (used by Maven) since
June 2018.
The UI is not very responsive on Linux, in particular when dragging the trigger axes.
Use java -Dsun.java2d.opengl=true -jar target/Girinoscope-*-dist.jar
to enable the GPU acceleration.
An USB port is detected but cannot be opened.
On Linux (Ubuntu), you need to be a member of the dialout
group
(a sudo usermod -a -G dialout $USER
should do the trick).
Note that on other distributions, the group(s) involved could be different.
Florent Lioult