IoT Mobile Oscilloscope
EEC172 Final Project - UC Davis, Spring 2026
Yaseen Alkhameri, Hyunwoo Chong
Demo Video
Full feature demonstration.
Project Description
This is a standalone IoT oscilloscope built on the TI CC3200 LaunchPad. It samples analog signals via the on-board ADC (PIN_59), displays real-time waveforms on a 128×128 SSD1351 OLED screen at ~15fps, and is fully controlled through an IR remote (no host PC connection needed). Features include adjustable timebase (100μs–5ms/sample), adjustable vertical scale (×1–×8 zoom), three trigger modes (free-running, rising edge, falling edge), waveform capture/hold, and one-button upload of captured waveform data to AWS IoT Device Shadow via TLS REST API. It also has a secondary text-messaging mode using multi-tap T9-style input on the IR remote, which posts messages to AWS IoT and triggers SNS email notifications.
Real-time Sampling
Continuous ADC sampling with adjustable timebase from 100μs to 5ms per sample
IR Remote Control
Full control via IR remote - no PC connection required for operation
AWS IoT Integration
TLS-secured upload to AWS IoT Device Shadow with SNS notifications
Design
Functional Specification
The system boots into Oscilloscope Mode by default. In this mode, the ADC continuously samples, the OLED renders the waveform, and the IR remote adjusts settings:
| Key | Function |
|---|---|
| MUTE | Run/Hold toggle |
| 1 | Capture waveform |
| 2 | Upload to AWS |
| 3/4 | Timebase up/down |
| 5/6 | Vertical scale up/down |
| 7 | Cycle trigger mode |
| 0 | Switch to Text Mode |
In Text Mode, the IR remote keys map to multi-tap T9 letters. MUTE sends the composed message to AWS IoT, and key 9 switches back to Oscilloscope Mode when the buffer is empty.

System Architecture
The CC3200 MCU is the core. SPI connects to the SSD1351 OLED display. The ADC (channel 2, PIN_59) samples analog input. A GPIO pin reads IR receiver pulses decoded via SysTick timing. A 1ms hardware timer drives the millisecond counter for debouncing and sample scheduling. The CC3200's WiFi + TLS stack connects to AWS IoT Device Shadow via HTTPS REST API (port 8443). Waveform data is serialized as JSON arrays (128 samples, 8-bit downsampled) and POSTed to the shadow. On boot, the device GETs the shadow to restore last-used settings. An AWS IoT Rule triggers SNS for email notifications in text mode.
Implementation
ADC sampling uses polling mode with FIFO drain to get the latest sample. A 256-sample ring buffer stores data. The OLED is refreshed at ~15fps by clearing and redrawing the waveform area, status bar (timebase, vertical scale, run/hold, trigger mode), and grid lines. Waveform rendering interpolates vertical lines between consecutive samples for visual continuity.
Capture freezes 128 samples into a separate buffer. Upload builds a JSON payload with settings and waveform array, then POSTs via TLS.
Hardware Protocols & Interfaces
- • SPI — OLED display communication
- • ADC — Analog signal input
- • UART — Debug output
- • IR receiver — Remote control input
- • ADC analog input — Signal measurement
Future Work
- •Higher sample rates using DMA
- •FFT frequency analysis display
- •Multi-channel support
- •Additional trigger modes and edge detection
Bill of Materials
| Component | Qty | Cost | Source |
|---|---|---|---|
| CC3200 LaunchPad | 1 | Provided | University Lab |
| SSD1351 128×128 OLED | 1 | Provided | University Lab |
| IR Receiver + Remote | 1 | Provided | University Lab |
| Jumper Wires | Assorted | Provided | University Lab |
| Signal / Function Generator | 1 | Provided | University Lab |
Waveform Viewer
Paste a JSON array of numbers (0–255, up to 128 values) captured from the oscilloscope and visualize the waveform. The display mimics the oscilloscope screen with a dark background and green trace.