RoadTest: OpenScope MZ Development Kit
Author: avnrdf
Creation date:
Evaluation Type: Test Equipment
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: Saleae Logic 4 (now discontinued). Cheap Chinese logic analyzers, but they don't include as many features (waveform generator, oscilloscope etc.)
What were the biggest problems encountered?: Buggy software - UI would randomly freeze and require a reboot. Missing features - the Logic Analyzer has no protocol decoder.
Detailed Review:
EDIT: Managed to get Sigrok to decode CSV files that are exported from Waveforms Live. Check the Logic Analyzer section for more details.
Introduction
Digilent's OpenScope MZ, the new entry level device in their instrumentation lineup which sells for $89.
Digilent's instrumentation lineup also includes the Analog Discovery ($259 - EOL), Analog Discovery 2 ($279) & the Digital Discovery ($199), though educational pricing drops the prices of the first two down to $159 & $179. All three of these support Digilent's Waveforms software and are much more capable (and pricier) than the OpenScope MZ.
The OpenScope doesn't come very close to its more expensive siblings in performance or specifications, but its significantly lower price makes it more accessible to hobbyists, amateurs & makers.
An oscilloscope, a logic analyzer, power supply, data logger & power supply are needed to comfortably work with electronics: all of which are too expensive for a hobbyist to consider purchasing (even any one of those!).
Digilent has packaged all these tools into one device: the OpenScope MZ which is sold for an affordable price. It includes all of the above mentioned features and is available at a relatively accessible price.
OpenScope MZ | Analog Discovery | Analog Discovery 2 | Digital Discovery 2 | Saleae Logic 4 | Saleae Logic 8 | Saleae Logic 8 | DSCope Kit | Saleae Clone | Kingst LA1010 | Kingst LA1016 | |
---|---|---|---|---|---|---|---|---|---|---|---|
$89 | $259 (EOL) | $279 | $199 | $109 (EOL) | $149 (old) | $399 (current) | $99 (Logic) + $129 (Scope) = $229 | $5 (China) | $49 | $88 | |
Analog Channels | 2ch 12bit | 2 ch 14bit | 2ch 14bit | 1 | 8 (shared) | 2 | |||||
Analog Rate | 6.25 MS/s | 100 MS/s | 100 MS/s | 6MS/s | 10MS/s | 200M @ 1ch, 100M @ 2ch | |||||
Analog B/W | 2 Mhz | 5 Mhz | 30 Mhz | 600kHz | 1Mhz | 30Mhz | |||||
Analog Vin | +/- 20V | +/- 25V | +/- 25V | 0-5V | 0-5V | +/- 25V typ, 100V (max) | |||||
Digital Ch | 10 | 16 | 16 | 32 | 4 | 8 | 8 (shared) | 16 | 8 | 16 | |
Digital Rate | 10 MS/s | 100 MS/s | 100 MS/s | <800 MS/s | 12 MS/s | 24 MS/s | 100 MS/s | 16ch @ 100Mhz, 4ch @ 400Mhz | 24 MS/s | 100M @ 3ch 16M @ 16ch | 100M @ 16ch |
Digital B/W | 3Mhz | 25Mhz | 50Mhz | 20 Mhz | 20 Mhz | ||||||
Digital Samples | 10+ Billion | 10+ Billion | 10+ Billion | 16M * 16 = 256M | 10G | 10G | |||||
Digital Vin | 5V tolerant | 3.3V | 1.8, 3.3 & 5V | 1.2, 3.3 V | 2.5V - 5.5V | 2.5V - 5.5V | 2.5V - 5.5V | 0 - 6V | 0 - 5V | 0-5 V | +/-50V |
Pattern Generator | 16ch, 100MS/s | 16ch, 100MS/s | 16ch, 100MS/s | 2x <10Mhz | 2x <20Mhz PWM | ||||||
Waveform Generator | +/- 3V 10MS/s | 2x +/-5V 100MS/s | x +/-5V 100MS/s | ||||||||
Power Supply | 2x 0-4V 50mA | 0-5V 50mA | 0-5V 0.7A* | 4x 1.2-3.3V 0.1A | |||||||
Digital I/O | |||||||||||
Software | Waveforms Live | Waveforms | Waveforms | Waveforms | Saleae | Saleae | Saleae | DSLogic | Saleae | Kingst VIS | Kingst VIS |
Sigrok support | WIP | Yes | Yes | WIP | Yes | Yes | |||||
Protocol Analyzer | None | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Extra | Wifi | N/W, Spectrum, Voltmeter |
The OpenScope is a unique device: it might get beaten when it comes to specifications, features or price, but it will always win at at least one of those.
Cheap logic analyzers are aplenty: if you're looking for a logic analyzer, buy one of those since they've got better software & perform better. However, if you're in the market for an oscilloscope, the OpenScope MZ if your best bet, and it includes a few more features too.
The package with OpenScope MZ reached just after Christmas (around a week later than it should have) because of a delay at customs (they're very busy around that time of the year.)
The package was in a good condition, and the OpenScope box was in the middle of bubble wrap.
The OpenScope box is small: 10cm x 9cm x 4cm, and very light:
A simple paper box that folds open: The leads with the connectors are on top, and the OpenScope is below that.
In the box:
The front of the OpenScope contains most of the parts: the 30 pin connector, micro USB port, Microchip's PIC32MZ MCU (which is responsible for all the instrumentation functionality) and Microchip's MRF24 WiFi module. Also on the front is the FTDI FT232 USB-UART IC, an ON Semiconductor 3.3V linear voltage regulator and all the instrumentation circuitry (resistors, op-amps etc). There are a couple of LEDs and 2 buttons on the front too.
The back does not have much. There are rubber standoffs in the 4 corners, which raise the height of the PCB so that it doesn't touch the surface below, and also provide a little grip so that it is less prone to sliding. In practice, the standoffs do reduce slippage, but since the board is very light, even a little tension on the USB cable is enough to lift one side of it up.
There is a SD card slot on the bottom, and a few SMDs. The marking on the board I received says that this revision is 'F', while schematics available online point to a newer 'G' revision (though schematics for earlier revisions are also available).
Overall, the board looks to be designed and manufactured neatly. Most of the components are SMD (except the connector which is a through hole) and seem to be soldered well.
The main connector is a 15x2. The colors of the wires are different to make them easier to identify. Plugging in the connector the first time took a little effort because the pins on the PCB were bent dow
n, which didn't leave enough space for the connector to slide in between the pins and the PCB.
To get started, simply plug in a micro USB cable. The board takes a few seconds to initialize (it took more time when I plugged it in for the very first time, if I recall correctly, Digilent's documentation says that this is because it initializes the driver).
Product Overview & Documentation:
Digilent has published a couple of videos which detail the process of connecting, setting up and using the functions of the board.
The OpenScope MZ was on Kickstarter. That page is an interesting read because it contains details of the iterations that the device went through.
Digilent also published a Learning Edition Workbook, which goes through the basics of setting up the OpenScope and using its functions.
Here's an interesting 3 hour long video (of which I've watched only half) going through the design of the OpenScope:
The presentation slides can be found at https://reference.digilentinc.com/_media/reference/instrumentation/openscope-mz/21037_ad2_finalslides_1_.pdf
OpenScope MZ Reference Manual (PDF - Digilent)
OpenScope MZ firmware on Digilent's GitHub
The documentation (schematics) and the Microchip Masters video (+slides) are very interesting because they go over the design decisions, and more importantly, serve as a bridge between what I learnt in my analog electronics engineering course and how instrumentation is implemented in practice.
*I've used images and documentation from here as a reference*
Installation & Setup:
First install the Digilent Agent (which is free).
Digilent Agent runs in the background. Right-click on the logo and select "Launch WaveForms Live".
Waveforms Live will automatically open in a browser window:
Architecture wise, the OpenScope was designed with both: serial & wireless connections in mind. The command parser is common, which allows 2 sources (Waveforms Live browser page & app) to be used simultaneously.
It gives you a couple of options: You can connect wirelessly (though not the first time since you need to set up the board and enter the network credentials), simulate a scope, or connect via the Digilent Agent.
It automatically notified me to update the firmware
It took around 15 seconds to download & flash the new firmware:
After that, you can enter your WiFi password to allow it to connect wirelessly (which are then stored in the Flash)
The first time it runs, it needs to be calibrated. The calibration process involves connecting 2 sets of wires together. It automatically generates a couple of outputs, which it reads back and uses to calculate the calibration values.
These values are also stored in the flash.
Software, Features & Testing:
WaveForms Live Android App:
Digilent has released a Waveforms Live app for Android, which is free and can be downloaded from the Google Play Store. The UI is identical to the UI of Waveforms Live that is available on a desktop (through the browser).
I'm not sure whether the app is simply a wrapper (which would be easier to implement), or a completely native application. The main reasoning for developing the app was that they manage to use more of space on the display, some of which would have been taken up by the browser.
The Play store states that the last date that this was updated was on the 1st of June, 2017 (Version 1.0.2).
The features are identical to the desktop version (except for the missing Bode plot function).
One thing to remember is that the OpenScope needs to be added to a WiFi network before it can be accessed, which needs to be done using a USB cable (i.e. on a computer via the USB-UART interface).
If you do plan on using the OpenScope with your phone somewhere outside, first configure it to connect to your phone's hotspot.
The UI does seem to indicate that it can store credentials to multiple WiFi networks, but when I added more than 3, all of them got wiped out.
When it connects to the WiFi network, connect to it using its IP address. The onboard LEDs blink to indicate the IP address: "When connected to a Wifi network the 3 user LEDs display the last octet of the OpenScope MZ's IP address by blinking the number of times corresponding to that digit of the last octet in decimal. For example an OpenScope MZ with an IP address ending in '123' would blink LD1 once, LD2 twice and LD3 three times."
Portrait mode gives you better access to the instrument panel:
Landscape mode is better for viewing:
The Android app supports pinch to zoom, which can be used to change the time base.
The OpenScope MZ supports simultaneous connections to the Android app and the desktop web page. It is a little buggy, but works most of the time. The control is independent: for example if you change a setting on the desktop and acquire data, the mobile screen will not update automatically.
Waveforms Live in a browser:
Waveforms Live can be accessed from a browser. The OpenScope cannot be used (as per documentation) with Waveforms 2015. It is not (yet) supported by Sigrok or PulseView either.
Instrument Panel:
The Instrument panel occupies the right side of the browser UI. The buttons on the top are the typical trigger buttons, and an option to control the time base lies below that (which can also be adjusted using the scroll wheel on a mouse).
Oscilloscope:
The OpenScope has a 2 channel, 6.25M/s (2 Mhz (-3db) bandwidth & 12 bit resolution) oscilloscope. The voltage range supported is +/- 20V, with protection upto 40V and the input impedance is 1MΩ, with a maximum sample depth of 32640 samples.
The ADCs of the PIC32MZ are used for sampling, and if I recall correctly, 2 channels are interleaved per channel to increase the sampling rate. On the input side, a combination of an analog switch & op amp are used to provide variable gain. A buffered precision voltage reference is used to provide an accurate & stable voltage reference.
The trigger sources are the 2 analog oscilloscope channels, and the logic analyzer. For the oscilloscope channels, a voltage level can be selected, with the option of a rising, falling or crossing edge. To continuously stream data from it (live update like a bench oscilloscope), simply set the trigger to OFF and click RUN.
To control the timebase (time-zoom), simply use the mouse scroller.
The OpenScope will automatically adjust the sampling rate and the number of samples it takes to obtain the highest resolution possible. i.e. the further you zoom in (each grid is measured in microseconds), the sampling rate will increase. As you zoom out, and each grid is in milliseconds, the sampling rate will decrease. The user can manually override this either by locking (forcing/setting) the sampling rate or total samples.
One problem I noticed is that even in the 'live-stream' mode, if I zoomed out too much, and each grid was a second (for a total of 1s * 10 = 10s), the OpenScope would try to sample data for 10 seconds so that it could fill the screen. During this time, the UI would tend to seem unresponsive. So if you zoom out too far, the OpenScope will sample data for that period and will seem unresponsive during that time.
In the following screenshot, the OpenScope has been set to continuously sample and stream data:
Note how the sampling rate has increased to the maximum (6.25MS/s) to ensure the best resolution. I have also increased the Y offset and the volts/grid.
The voltage source of these samples was a 6V power adapter for a cell phone.
Same device, but I zoomed out. The sample rate has reduced to 2.324MS/s.
There's an option to set cursors for voltage & time. Here, I moved the Y cursors to try to approximate the peak ripple (which is also displayed in the math menu).
The MATH menu calculates a few parameters too: frequency, period, amplitude, Vpp, Vmax, Vmin, Vmean & VRMS.
I also set up a 555 in Astable mode: Channel 1 (yellow) is connected to the output & Channel 2 (blue) to the capacitor.
FFT (Fast Fourier Transform) is supported, allowing the OpenScope to be used as a frequency spectrum analyzer.
Zoomed in on the FFT:
Logic Analyzer/Digital IO:
Setting the trigger source to the Logic Analyzer shows these options: Rising edge, Falling edge, Rising/Falling edge or OFF. Each channel can be set independently.
The digital I/O ports can be switched between the logic analyzer, or simple I/O. In I/O mode, each channel can be set as input or output. One way of using this is to remotely trigger I/O lines, which could be helpful in debugging.
In terms of I/O I was hoping that it would be possible to perform burst data transfers: eg. for testing WS2812 LEDs. Enter the data, and allow the OpenScope to burst it out on a particular pin. This might be possible given that the OpenScope is programmable, though I'll need to have a closer look at it. Not too sure, but on further review it looks like this might be possible using Digilent's other instrumentation products.
The Logic Analyzer has 10 ports, and has a rate of 10MS/s. It mentions 50MS/s on the box, but if I recall correctly, the designer (in the Microchip Masters video) mentions that though the PIC32MZ is theoretically capable of 50MS/s, using that rate would stall all other transfers: including the UART, which is used to get data out, which is why it has been limited to 10M/s.
What's most disappointing is that there is no inbuilt protocol decoder (though Digilent clearly states this on the website). There was a request for this feature on the forum, and a feature request was opened on GitHub, but there doesn't seem to be any update.
While the logic analyzer capability is better than nothing, the absence of a protocol decoder makes it difficult to use.
I hooked up the OpenScope MZ to the I/O lines of a Nokia 5110 LCD (84*48 pixels, monochrome), which uses a Philips PCD8544 controller (SPI):
This thread on the Digilent forum has details on how to export data from Waveforms Live to Sigrok:
Sam Kristoff exported the channel data from Waveforms Live to a CSV, deleted the header columns and imported the CSV to Sigrok:
Imported to Sigrok:
I tried the same, and all I got was this:
I used Kristoff's formatted CSV file (which worked for him), and the import settings he suggested. The Sigrok SPI decoder remains blank for some reason (do let me know if any of you figure it out).
I reinstalled PulseView and this was the result:
One packet got decoded and the rest remained blank. This is definitely not a OpenScope/Waveforms Live issue since I'm using the same CSV file that Kristoff exported (and which worked for him).
EDIT: I reported the issue here, and after doing some checking on their own, a Sigrok dev filed a bug. They suggested using a non-zero sample rate when importing the CSV for now, which works fine:
Sigrok/Pulseview do not support the OpenScope, and the developers are not currently working on adding support in the near future.
Personally, I think that Digilent should work on adding Sigrok support as soon as possible. Sigrok is much easier to use than Waveforms Live because it has protocol decoders (although it misses out on a couple of features). While Digilent could add protocol decoder support to Waveforms Live, spending that time on adding Sigrok support would be a much better investment: Sigrok is regularly updated with tons of protocol decoders and even decodes data from common ICs. Allowing Sigrok to interface with the OpenScope (even if it's just for the Logic Analyzer), would be great: once the hardware/firmware/drivers are added to Sigrok, Sigrok will basically take care of all software features.
The PIC32MZ is a 3.3V IC, which means that the OpenScope cannot be used to interface with 5V TTL parts like the Arduino Uno. I'm not sure whether it is 5V tolerant (I seem to remember a discussion about this in the Microchip Masters video).
The OpenScope targets makers on a budget (who commonly use 5V parts) so this could be a deal breaker.
The PIC32MZ2048EFG124 (datasheet) has +5V tolerant pins. I cross referenced the schematic with the pins on the datasheet, and the logic inputs seem to be +5V tolerant. I have used it with a Arduino Uno (+5V TTL - Atmega328p), and it continues to work fine - no magic blue smoke; yet. Don't take my word for it: I will not be responsible for any damage. The Magic Blue Smoke Refilling Kit has been discontinued, so there is no way of reviving any fried electronics.
Bode Plot:
I tried this out using a RC network. You get the option to set the start & stop frequencies, step size and sweep type. The frequency settings are buggy: they tend to change on their own, and at times the OpenScope will not perform the sweep in the range that was set.
There is an option to export the result as a PNG or CSV.
The time to generate the plot depends on the frequency range and the step size.
Second order RC low pass filter:
Waveform Generator:
The Waveform Generator can be used to generate Sine, Triangular, Ramp, Square or DC outputs with a 10 bit resolution & 1 Mhz (max) frequency. The output is adjustable to 3V pk-pk with a DC voltage offset of 1.5V
Schematics ( and the Microchip Masters talk) show that a R2R ladder is used as a DAC. A SPI DAC was used in earlier pre-release versions, but was replaced with an opamp & R2R ladder to reduce the cost.
One ADC channel is used to sample the output from the waveform generator, which forms a closed loop error compensation system.
The waveform generator is easy to use: just set the options and activate it. One minor issue is that everytime any parameter needs to be changed, the waveform generator needs to be turned off first.
In the following image, the Waveform generator has been set to generate a 1kHz 3Vp-p sine wave with a 1V offset. The output is fed back into the OpenScope through channel 1 (yellow), which is detecting a 999.9Hz 3.018Vpp sine wave with a 1.026V offset.
I originally planned to use a IC 741 op amp an a non-inverting amplifier, but I connected the IC wrong and fried it.
I went ahead used a simple resistive divider: the waveform generator output is connected to channel 1 (yellow), and to channel 2 via the resistive divider(blue).
Power Supply:
The OpenScope MZ can be powered only from USB, and this severely limits the power it can spare. Both the outputs can be independently configured to output 0 to 4V, and can source a maximum of 50mA. While this doesn't put it in the league of a typical bench-top power supply, it is good enough for powered small circuits: a couple of ICs or logic gates (CMOS, not TTL!). 50mA is too little for a ESP8266 (which draws a lot more than that when transmitting), but this should be adequate for powering up a low power ARM or MSP430 core.
Data Logger (BETA):
Data from both the analog channels can be streamed to the browser. I tried exporting the data, but it didn't seem to work (it wasn't working for the oscilloscope/ logic analyzer too for that session - resetting the devices usually fixes it).
The user can set sample rate and the number of samples, or let it stream continuously.
Firmware & Programming:
The Instrumentation protocol format (JSON) is available, and the OpenScope MZ can be programmed using the Arduino IDE or Microchip's MPLAB-X IDE.
I originally planned on testing this out, but realised that this will need a little more research before I tinker with it.
What Digilent needs to do:
Conclusion:
The OpenScope does what it was advertised to do: Digilent managed to ship a device with an oscilloscope, logic analyzer, function generator, data logger & (tiny) power supply for less than $100. The specifications might not seem very impressive, but do remember that this is targeted towards hobbyists: the product is meant to make the tools a hobbyist needs accessible for a low price. The software will need a little more work till it's stable, but in its current state, its stable enough to be used barring the occasional hiccup. The OpenScope is packed with software features, but misses one of the most important: a decoder for the logic analyzer.
There aren't many competing products: Saleae discontinued the Logic 4 (which had slightly better specifications, but missed out on a few features), and most low cost devices are simply logic analyzers.
The OpenScope MZ includes a oscilloscope, logic analyzer and function generator with specifications that are certainly adequate for a hobbyist and at $89, it is the best option for hobbyists, students & amateurs that are getting into electronics.
Top Comments
Very good detailed review.
DAB
Seriously good review, appreciate the time you spent on it.
Kind regards
Based on this, CSV files work when imported to Pulseview from Waveforms Live with a non-zero sample rate.
(Export data from Waveforms Live as CSV to Sigrok if you want a protocol decoder)