DuinoScope GIGA R1, a high-performance, feature-rich dual-channel digital oscilloscope built specifically for the Arduino GIGA R1 WiFi board and the Arduino Giga Display Shield (800x480 capacitive touch display).
This project leverages the impressive dual independent 1 Msps ADCs and hardware peripherals of the STM32H7 microcontroller to deliver a competent, responsive, and aesthetically stunning scope. It also features a real-time web-based control panel accessible over a local WiFi Access Point.
- 📊 Dual-Channel Trace Acquisition: Independent sampling on channels
CH0(A0 - Yellow trace) andCH1(A1 - Cyan trace). - ⚡ High-Speed 1 Msps Sampling: Exploits dual independent ADCs using hardware-optimized circular DMA buffers.
- 📱 On-Board Capacitive GUI: A sleek dashboard built on the Giga Display using
GU_ElementsandLVGLstyling. Supports advanced touch gestures:- Pinch Zoom: Seamlessly scale the Timebase on the fly.
- Vertical Drag: Adjust vertical trace offsets directly on the screen.
- 🌐 Wireless Access Point & Captive Portal:
- Generates a standalone hotspot named
DuinoScope(Password:12345678). - Captive Portal DNS automatically redirects connected devices to the control dashboard.
- Generates a standalone hotspot named
- 🖥️ Real-Time Web Control Panel:
- Responsive mobile-optimized interface with styled HSL color palettes and dark glassmorphism design.
- Telemetry Parameters: Real-time display of Frequency (Frec), Peak-to-Peak Voltage (Vp-p), Maximum Voltage (Vmax), and Minimum Voltage (Vmin) for both channels.
- Interactive controls to toggle channels, modify Volts/Div, alter Timebase, and customize Trigger parameters.
- 🚦 Smart RGB Status LED:
- 🔵 Breathing Blue: Waiting for WiFi connection / Disconnected.
- 🔵 Solid Blue (Dim): WiFi remote client connected.
- 🟢 Green (Dim): Standby with no signal activity.
- 🟡 Yellow (Solid): CH0 active and traces shown.
- 🔵/🟢 Cyan (Solid): CH1 active and traces shown.
- 🛡️ Analog Front End (AFE) Support: Integrates digital outputs (pins 3, 4, 5, and 6) to configure hardware attenuation and voltage ranges on an optional Fscope-500k daughterboard (handling ± inputs and 10x probes).
| Hardware Component | Pin / Channel | Description / Parameters |
|---|---|---|
| Channel 0 Input | A0 |
Yellow trace analog signal input |
| Channel 1 Input | A1 |
Cyan trace analog signal input |
| AFE CH0 Control | Pins 3 & 4 |
Range selection logic signals for CH0 |
| AFE CH1 Control | Pins 5 & 6 |
Range selection logic signals for CH1 |
| Trigger Output / Sync | Pin 2 |
Synchronization indicator output pin |
| Status RGB LEDs | LEDR, LEDG, LEDB |
Active-low PWM-driven status indicators |
When powered up, DuinoScope starts a secure local hotspot. You can connect your phone or laptop to access the web panel:
- SSID:
DuinoScope - Password:
12345678 - Web Dashboard URL:
http://192.168.3.1/(Any browser request will automatically redirect here via Captive DNS). - Polling Debounce: The web UI polling interval is 250ms with a 3-strike buffer (750ms total debounce) to ensure telemetry updates remain smooth and avoid flickering connection state alerts on single-packet loss.
To compile this project, ensure you have the following libraries installed in your Arduino IDE or CLI path:
Arduino_AdvancedAnalog(v1.5.0): For fast, hardware-level trace buffer acquisition via DMA.lvgl(v8.3.11): The UI library used to build the modern graphical interface. Note that version 8.x is required.Arduino_H7_Video(v1.0): Built-in library (part ofarduino:mbed_gigacore) to interface with the display hardware.Arduino_GigaDisplayTouch(v1.1.0): Touch driver for the Giga Display Shield.Arduino_GigaDisplay_GFX(v1.1.0): Display driver interface.WiFi(v1.0) &WiFiUdp: Built-in libraries for local Access Point and DNS captive portal.
- Put the Arduino GIGA R1 board in DFU bootloader mode by double-pressing the physical RESET button (the green LED near the USB port will start breathing).
- Compile and upload using the command below:
arduino-cli compile --fqbn arduino:mbed_giga:giga --port 1-3.2 --upload /path/to/DuinoScope-GIGA-R1(Replace /path/to/... and 1-3.2 with your actual workspace folder and DFU port).
- Open
DuinoScope-GIGA-R1.inoin the Arduino IDE. - In Tools -> Board, select Arduino GIGA R1.
- Plug in the board and select the appropriate serial port.
- Click Upload. (If upload fails due to CDC access permissions, double-tap the RESET button to compile/upload in DFU mode).
DuinoScope-GIGA-R1/
├── DuinoScope-GIGA-R1.ino # Main sketch containing logic, display rendering & web server loop
├── duinoscope.h # Scope structure definitions, timebase indexes, and volts/div parameters
├── duinoscope_html.h # Embedded C++ raw string literal containing the compiled HTML portal
├── duinoscope_control_panel.html # Source HTML dashboard code (kept as design reference)
├── LICENSE # GNU General Public License v3.0
└── README.md # This project documentationSpecial thanks to gilesp1729, the original author of the code, for laying the foundation of this project and for his excellent work on the display drivers and initial oscilloscope implementation for the Arduino GIGA R1.
This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for the full text.