Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

127 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FoxilloScope (STM32G474 Oscilloscope)

An accessible, wireless oscilloscope built around low-cost development hardware: the ST Nucleo-G474RE board and an M5Stamp C3U (ESP32-C3) module.

  • Bipolar signal measurement
  • Dual-channel
  • Up to 8 MHz sampling rate
  • 12-bit resolution
  • The user interface runs in a web browser on desktop and mobile devices
  • Communication via Wi-Fi or Bluetooth Low Energy (BLE). Bluetooth requires a compatible browser (e.g., Google Chrome).
  • No installable application required

The goal of this project is to turn inexpensive, readily available development components into a practical, portable oscilloscope with live-streaming over Wi-Fi or Bluetooth LE — requiring minimal soldering and no custom PCBs.

💡 Developer Note: For firmware compilation, hardware debug configurations, jumper setups, and local debug servers, see the Developer & Contributor Guide.


Key Features & Hardware Design

  • Affordable Hardware: Total hardware cost is under €25 / $30 (minimal soldering, no custom PCBs needed)
    • Analog front-end (AFE) built on the ST Nucleo-G474RE board – handling signal capture and triggering
    • M5Stamp C3U handles wireless connectivity and hosts the web server
    • Signal conditioning built with six Schottky diodes (BAS40-04 dual-diodes or equivalent) and five resistors
    • Inexpensive oscilloscope probes (not included in BOM)
  • Bipolar Signal Measurement: On-chip analog front-end (AFE) supports true bipolar AC/DC signal measurements (both positive and negative voltages) around virtual ground.

    ⚠️ Important Grounding Notice: Users must not connect probe ground clips to the board's GND pins. Always connect probe ground clips to the board's dedicated Virtual Ground output. This provides a clean mid-rail reference for bipolar measurements and prevents shorting power rails.

  • Input Voltage Range: Measurable range −1.65 V to +1.65 V (1:10 attenuating oscilloscope probes recommended); safe input range −30 V to +30 V.
  • Input Signal Protection: A resistor and diode protection network protects MCU inputs against out-of-range signal spikes.
  • Multi-Transport Web UI: Single-page web dashboard accessible via Wi-Fi (WebSockets), Bluetooth LE (WebBluetooth), or USB (WebSerial).

Assemble at Home (Quick Start)

  1. Flash the Nucleo Board & Set Production Jumpers:
    1. Connect the Nucleo board to your computer via USB. A virtual USB drive will appear.
    2. Copy the FoxilloScope-Production.bin firmware file from the latest release assets directly onto the Nucleo's USB drive.
    3. Wait a couple of seconds and then disconnect the board.
    4. Configure Jumpers (blocks onboard ST-LINK in off/reset state):
      • JP1: Closed
      • JP5 & JP3: Open
  2. Flash the M5Stamp C3U:
    1. Connect the M5Stamp C3U or another ESP32-C3 board to your computer via USB.
    2. Use the Foxilloscope ESP32 Web Flasher to upload ESP32 part of the oscilloscope
  3. Solder Protection & Connections:
    1. Prepare the signal conditioning components:
      • Schottky Diodes: 6× Schottky diodes (BAS40-04 dual-diode sets were used, but almost any Schottky diodes with reverse voltage $V_R \ge 40\text{ V}$ and minimal junction capacitance fit).
      • Resistors: $2\times 1\text{ M}\Omega$ resistors and $3\times 3\dots 6\text{ k}\Omega$ resistors.
    2. Solder the input protection network and interconnections as shown in the wiring diagram below: Wiring Diagram
    3. Attach measurement probes to Channel A / Channel B inputs, and connect probe ground clips to the Virtual Ground output.
  4. Verify Operation:
    1. (Optional) If the debug STM32 firmware is flashed, connect test signal outputs A/B to the Channel A/B inputs or probes:
      • Test Signal A: Small-amplitude decaying sine wave
      • Test Signal B: Triangle wave (−1.65 V to 0 V)
    2. Bluetooth LE (BLE) Connection:
      1. Power up the system and navigate to http://f-scope.local/ in your Chrome browser.
      2. Click the Bluetooth button at the bottom-left to connect, then select the F-SCOPE-xxxx device.
      3. Test if oscilloscope is working correctly.
    3. Wi-Fi Connection:
      1. Connect to the FoxilloScope-xxxx Wi-Fi network.
      2. Open http://f-scope.local/ or http://192.168.4.1/ in your browser.
      3. Test if oscilloscope is working correctly.
  5. Wi-Fi Setup:
    1. Connect to the FoxilloScope-xxxx Wi-Fi network.
    2. Open http://f-scope.local/wifi or http://192.168.4.1/wifi in your browser.
    3. Set up Wi-Fi credentials (Until ESP32-C6 gateway is used, only 2.4 GHz Wi-Fi is supported).
    4. Reconnect back to your Wi-Fi.
    5. Open http://f-scope.local/ in your browser.
  6. Printable Device Label(optional):
    1. Open Sticker Generator in your web browser.
    2. Enter the 4-digit hex MAC ID (xxxx) of your device.
    3. Print the label to attach to your board or enclosure.

(where xxxx represents the device ID – the last four hex digits of the ESP32 MAC address)


M5Stamp C3U Setup & Status Indications

The M5Stamp C3U acts as the wireless bridge connecting the STM32 to your browser.

Pin Connections

  • GPIO 6: UART TX (connects to STM32 UART RX)
  • GPIO 7: UART RX (connects to STM32 UART TX)
  • GPIO 2: Data line for onboard SK6812 RGB LED (WS2812 protocol)

Onboard RGB LED Statuses

LED Color Status / Meaning
Green Client actively connected over WebSocket
Blue Client actively connected over Bluetooth LE (BLE)
Orange Wi-Fi station connection failed (fallback Access Point is active)
White Connected to Wi-Fi network, waiting for web client
Purple Idle in Access Point mode (FoxilloScope AP), waiting for connection
Blinking Pink STM32 firmware update complete (power cycle required)

Deployment & Web Access

1. Wireless Gateway Mode (Default)

Connect your computer, phone, or tablet to the ESP32 gateway (either directly via its FoxilloScope AP or through your local Wi-Fi network) and open:

http://f-scope.local/

The ESP32 serves the web frontend and streams data in real time via WebSockets.

2. Standalone CDN / GitHub Pages Mode

The web app can also be hosted on any static HTTPS server (e.g. GitHub Pages). In this mode, the browser connects directly to the hardware via:

  • WebBluetooth: Connect wirelessly over BLE.
  • WebSerial: Connect directly over USB at 460,800 baud.

Documentation & References

About

Low-cost 8Mhz dual-channel 12-bit wireless oscilloscope, minimal soldering, no custom PCB, based on demo boards - STM Nucleo-G474RE & M5Stamp C3U

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages