Build a wireless Bluetooth oscilloscope using the nRF52 and Python! In this video, I show step-by-step how to turn an Adafruit Feather nRF52832 (nRF52) into a multi-channel 12-bit Bluetooth Low Energy oscilloscope that streams live ADC data to a custom Python Qt GUI on your PC.
You’ll see how to:
1. Configure the Feather nRF52 in the Arduino IDE with the Adafruit Bluefruit / BLEUart library
2. Set up Bluetooth Low Energy (BLE) using the Nordic UART Service (NUS)
3. Sample up to 4 ADC channels (A0–A3) with a 12-bit SAADC and adjustable sample rate from 10–1000 Hz
4. Stream ADC codes as text over BLE and parse them in Python
5. Use Bleak to scan for BLE devices, connect to the Feather, subscribe to notifications, and send commands (like changing sample rate)
6. Plot signals in real time, pause/resume, reset zoom, clear plots, and add markers to read time (s) and voltage (V) precisely
Timestamps
00:00 - Introduction: Bluetooth Oscilloscope with nRF52
00:23 - Demo 1: Square Wave & Low-Pass Filter
01:53 - Hardware Overview: Adafruit Feather nRF52832
03:02 - Arduino Firmware Walkthrough
06:31 - Understanding BLE Advertising
08:43 - Python Software Implementation (Bleak Library)
12:05 - App Demo: Real-time Plotting & Features
13:23 - Demo 2: DC Voltage Test (Resistor Ladder)
14:48 - Conclusion & Future Projects
Apply this setup to IoT sensors, battery-powered nodes, and low-power data logging for smart home, industrial, and embedded applications
This project is great if you’re interested in embedded systems, IoT, Arduino, Bluetooth LE — or if you just want a DIY Bluetooth oscilloscope/data logger for your bench.
Arduino + Python code (Feather nRF52 Bluetooth oscilloscope): https://github.com/fromconcepttocircuit/
If you find this useful, don’t forget to like, subscribe, and comment which part you’d like a deeper dive on (BLE setup, ADC, or Python GUI).
#nRF52 #Python #Arduino #Oscilloscope #Electronics #IoT #BluetoothLowEnergy #BLE #Maker #DIYElectronics #EmbeddedSystems #PyQt6 #DataVisualization #Adafruit #WirelessSensor