EEC172 Final Project

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:

KeyFunction
MUTERun/Hold toggle
1Capture waveform
2Upload to AWS
3/4Timebase up/down
5/6Vertical scale up/down
7Cycle trigger mode
0Switch 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 block diagram showing TV Remote sending IR signal to IR Receiver, connected to CC3200 LaunchPad with ADC detector and SPI, outputting to Analog Input via WiFi to AWS and OLED Display

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

Protocols:
  • • SPI — OLED display communication
  • • ADC — Analog signal input
  • • UART — Debug output
Sensing Devices:
  • • 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

ComponentQtyCostSource
CC3200 LaunchPad1ProvidedUniversity Lab
SSD1351 128×128 OLED1ProvidedUniversity Lab
IR Receiver + Remote1ProvidedUniversity Lab
Jumper WiresAssortedProvidedUniversity Lab
Signal / Function Generator1ProvidedUniversity 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.