HS101 Oscilloscope

HS101 is a portable and compact DIY oscilloscope for mobile phones and tablets using Android with HScope app. Easy to build, this oscilloscope is made for standard uses like DC measurements, long period voltage logging and automotive basic checkup like:
- Battery level logging
- Battery Ignition Off Draw (IOD) data logging (with C650-like amp clamp or a DIY tool)
- Alternator AC ripple level (example here)
- Relative Compression Test (with C650-like amp clamp, example here)
- In-Cylinder Compression Test (with 100 PSIG pressure sensor, example here)
- Fuel Pump Test (with C650-like amp clamp, example here)

  • Channels


  • Input Range

    0 - 20V or see Other Modules

  • ADC Resolution

    12 Bits (effective without noise: 8 bit, 10bit @ 100KSa/s, 11bit @ 75KSa/s, 12bit @ 12KSa/s)

  • Sampling rates

    3KS/s, 6KS/s, 12KS/s, 25KS/s, 50KS/s, 75KS/s, 100KS/s, 150KS/s, 300K/s, 450KS/s, 600KS/s, 900KS/s, 1800KS/s (experimental, not linear)

  • Bandwidth
    (sine wave -3dB)

    200KHz (not limited without capacitor C1). Sine wave visible with sinc interpolation up to 400KHz @ 1800KS/s)

  • Continous acquisition

    Up to 100KSa/s

  • Input Noise

    < 60mV (<= 15mV for Sampling Rate <= 100KSa/s)
    <=20mV with the Black Pill (<=10mV for Sampling Rate <= 100KSa/s)

  • Input Impedence

    10KΩ (if use a standard oscilloscope probe it works just with x1 factor) or see Other Modules

  • Consumption

    < 0.1A

  • Modules supported in HScope

    Automotive Module, Audio Module

1. How to build it

The hardware is based on STM32F103 microcontroller. It integrate 2 fast 12bit ADCs for the data acquisition. The Blue Pill development board has been chosed for its size, suiteable for this project.

Over this board we are going to install a little module for input acquisition.

The input module is the only part that need to be built with a stripboard. Here is the building scheme for this module. Schematic files are available on GitHub. Components are on the top, connection are made on the back.

List of the components:

Name Value
Microcontroller STM32F103C8 Blue Pill
Microcontroller Programming Tool Raspberry Pi USB to TTL Cable (or another model specified here)
Perforated PCB Board 6x7 holes
Connectors 6 Pin single row female 2.54mm pin header connector strip (x2)
6 Pin single row male 2.54mm pin header connector strip (x2)
R1 10KΩ - 1/4W  
R2 2KΩ - 1/4W  
C1 470pF Allow a better ADC response but reduce the Bandwidth (optional)
D1 1N4007 (x2)  
USB Cable USB OTG Cable - Micro USB to Micro USB or USB Type-C to Micro USB (according the device)
Other Probe with BNC Connector or cable for making the probe. Plastic box or 40mm Heat-shrink tubing for boxing.  

Using a BNC connector is possible to use commercial oscilloscope probes. In alternative is possible to self made a cable with or without connector (I suggest a shielded cable like the headphone cable).

2. Flash the Firmware

The firmware flashing is made with the app STM32 Utils which allow the direct flashing of the HS101 Firwmare. In this app there are the instructions on how to connect the USB-TTL Cable to the STM32 Blue Pill board.
After the connecting, and pressing Init Chipset:
1) Go to Init Chipset and check that the app read the chipset
2) Go to the Blue Box icon and in the list select HS10X Oscilloscope, then FLASH FW
After flashing disconnect the USB-TTL cable from the STM32 board and reset the jumpers to the original position.

In case you have your own programmer then you can get the firmware from GItHub

3. Tests

The STM32 use the USB power to work. Once connected to the phone the red led of the Blue Pill board should turn on. Opening the HScope app it should recognize the oscilloscope and show the data.
The free-version of HScope allow to use the HS101 as voltage tester and as simple oscilloscope. Sampling rate and refresh rate are limited in the free-version.
With the full version of HScope is possible to have access to real-time statistics, FFT and to use the data logger. The refresh rate is up to 20-25 FPS.
The Automotive Module allow to have high sampling rate continous recording (up to 100KSa/s) for analyse data from sensors, record audio signals or other analysis which require long time recording.
Audio Module is also supported by this device.

4. Noise Considerations

The noise is strongly dependant from the phone model. Here there is a list of tips to decrease the overall noise. More of these modifications are applied and lower is the noise:
- Add 2 capactitors between GND and 3.3V pins (there are 2 places on the Blue Pill. Value 100uF. The capacitor near the USB connector can be 470uF and this show a little improvement.
- Insulate the USB shield from the board GND. In some phone the USB shield is not connected to the GND of the phone so it generate noise. The 4 pins on the side of the USB need to be cut and USB connector need to be fixed in other ways that allow insulation from the board GND.
After these modification the +-5V module show an avarage noise at rest level (probe not connected) of 7mV @ 100KSa/s (max 10mV). On another phone this same hardware configuration show a noise of 10mV (max 12mV).
Noise at higher sampling rates is higher, up to 30mV. 300KSa/s and 600KSa/s can show lower noise (down to 15mV stable for 300KSa/s and 10-15mV for 600KSa/s, depending on phones)

4. Alternative Design

This is an alternative design using a 3.5mm audio connector for the probe.

In case you wish to make the board as thin as possible for a little box (in the picture 58x35x15) the components should be placed flat.

This is a full PCB implementation by Vladimir (source files are available on Github):

5. Other Modules

- ±5V Module

6. Other

Some implementation from the users.

Built by Владимир (Vladimir):

Built by Ondrej (box made with 3D printer):

Built by Denis:

Related Articles / Discussions / Tests:
- What should your scope's impedance be? 1M, 8M, 50, 10K Ohm?
- HS101 vs HT1008
- Article on Time4EE
- Article on Electronics-Lab

First Release: Jul 2018
Last Update: Apr 2019