DS203 customized firmware
DS203 is a nice open source oscilloscope. And this is an attempt to design improved GUI for the scope offering rich functions, better than those provided by original not-so-user-friendly firmware. The source code is in C++ for better code organisation and it is possible to compile it on Windows and Linux machine. For speeding up the development process, you can compile this application as native Win32 app, this offers you the ability to test new features on PC before compiling and uploading the firmware onto DS203 device. For windows users, there is a Visual Studio 2010 project file (Build/desktop_win32). For compiling the firmware for ARM Cortex M3 target device, there is a script in "Build" folder (arm_win32 for win32 platform, arm_linux for linux platform)
For owners of DS203 who would like to try this firmware:
- download hex file from Bin/GAB_N1.hex (the number specifies in which slot the app will be loaded, N stands for newer hardware versions of dso board, choose GAB_O1.hex for older dso's)
- power on your oscilloscope while holding the first button
- on device's display, there should be displayed "DFU tool" and a new USB disk should appear in "My computer"
- copy the hex file to your oscilloscope
- after successful upload, on the USB disk will disconnect itself and reconnect again. Sometimes it will show some error message during uploading (don't worry, the computer has probably uploaded the file successfully, there is probably some bug in the DFU program)
- turn off
- turn on without holding any button
For developers that want to build the firmware, but don't want to use github:
- download whole repository by clicking on "Download ZIP" button on right
- and run the build script Build/arm_win32/_makefile.bat
For building this project you need ARM GCC toolchain. The building script will automatically download one for you, if you want to use your own toolchain, just modify the CBASE value in makefile.bat. The official download link for the toolchain is https://sourcery.mentor.com/sgpp/lite/arm/portal/package8735/public/arm-none-eabi/arm-2011.03-42-arm-none-eabi-i686-mingw32.tar.bz2 it is about 36MB. If the link will be dead or you will have troubles unpacking tar.bz2, you can download stripped version of that toolchain (13MB) from my webpage http://pub.valky.eu/arm-2011.03-lite.zip
For developers that would like to contribute to this project: Just contact me, or make a modification of the source code and push me a request.
The DS203 device has 4 push buttons and two slide buttons. The function of first three buttons is following:
- PlayPause button - Enter
- Square button - Escape
- Circle button - Show toolbox
- Triagle button - User assignable button
- The two slider buttons are used for navigation and value change.
- UART, MIDI, CANBUS decoder
- Mask tests, pass/fail calculations (create envelope of your signal and catch disturbances which exceed this envelope)
- Advanced mathematical operators (3 operands)
- User defined FIR filter (in Oscilloscope/Math)
- Cursors with lock-to-channel function
- Spectral analysis
- PID Controller
- Export to Wave (use your favourite sound editing program for signal examination)
- Export to CSV file
- Export to interactive SVG
- Chromatic tuner utility with very precise frequency counter
- Remote control with android device over UART/bluetooth (or with DsoControl application)
- Touchscreen support
- Serial port monitor with selectable baud rate
- Snake game :)
- OneWire implementation through TX pin of uart, currently compatible with DS1820, DS18S20, DS18B20
- finish oscilloscope module - 92% done
- calibration - 80% done
- fft view - 80% done
- signal generator - 90% done
- connection with android tablet/phone - 90% done
- optimize ROM usage (many bitmaps are stored as 8bits per pixel) - 0%
This firmware finally implements a simple method for analog channel calibration. It's good idea to calibrate the DAC (wave out) first, it can be handy if you dont have regulated power supply. The device should be connected to a PC during calibration.
- Calibrating Adc:
- Go to User app/Calib tab, select Adc menu item
- Connect volt meter to Waveout
- Change the value (four digits) next to 0.5V label until you get exactly 0.5V on your voltmeter or multimeter.
- Do the same for 1.5V value
- Click on "Use labels", the dialog will hide
- Now you can check proper DAC calibration by changing the voltage shown on Adc menu item with navigation buttons, the voltage shown on display shoud match the voltage measured on the WaveOut connector within the error +-0.001V
- Calibrating analog channel
- Enter "Analog-Simple" calibration dialog
- Select desired channel and resolution
- Connect the probe to selected channel and connect tip of the probe with the crocodile (ground).
- Select "Reset Vpos" and wait a few seconds
- Connect the probe to a precise power supply and by changing the K value, try to match Vin value with the real voltage of power supply. If you dont have any regulated PSU, you can connect the probe with WaveOut
- Hit save and try changing the input voltage and check whether you get correct reading at the Vin value. Use a sensible voltage while matching the K value, for example - if you are calibrating 200mV range, use 4x200mV = 800mV at input.
- After finishing, select "Save calib data"
If you want to build this firmware with your own modules, follow the instructions in man/Readme.txt.
Remote control with android phone
The firmware implements simple expression evaluator which can be used to control the device remotely. In Resources folder you can find android project (including .apk executable) which demonstrates this feature through bluetooth wireless connection. There is also PC application (Resources/DsoControl) that can be used as remote control by sending the mouse cursor position and keystrokes through bluetooth or UART. Read more here: https://github.com/gabonator/DS203/tree/master/Man/SerialOutput
- Author's webpage - www.valky.eu
- Seeedstudio forums - http://www.seeedstudio.com/forum/viewforum.php?f=26
- DSO Quad wiki pages - http://www.seeedstudio.com/wiki/DSO_Quad
Alternative firmwares and useful resouces:
- Petteri Aimonen - http://essentialscrap.com/dsoquad/
- Pedro Simoes - https://github.com/pmos69/dso203_gcc
- Marco Sinatti - https://sites.google.com/site/marcosinatti/elettronica/dso
Credits and contributors:
Please let me know if I forgot to mention someone who contributed to this project...
- Frederic Borry
- Francesco Gugliuzza
- Florian Bauer
- Michal Hrouda