Connecting and First Waveform

Power up

Power the board first, before you try to connect. The HM-10 module advertises a few seconds after it comes up.

At boot the firmware does two things worth knowing about:

  1. It homes the digital potentiometers. The X9C wipers have no read-back, so the only way to know where they are is to drive them to a known end stop and then restore the saved positions from EEPROM. This takes a moment and is why the amplitude may briefly move on power-up.
  2. It brings the UART up at 115200. That rate is fixed in firmware, and the HM-10 must already be configured to match it. There is no negotiation and no fallback: if the module is at another rate, the board will advertise and connect normally but understand nothing you send.

Connect

Open the app and start a scan. The board appears as an HM-10 BLE peripheral. Select it.

As soon as the link is up, the app sends the s (status) command and reads the board’s real state — frequency, waveform, mode, active channel, wiper positions, relay states, fault flags. The hardware is always the source of truth. The app does not assume it knows what the board is doing; it asks. If you power-cycle the board while the app is open, reconnect and the UI will re-synchronise from the instrument, not from anything it cached.

If the board connects but never answers a command, see Troubleshooting. The two usual causes are that the MCU is not actually running, or that the MCU and the HM-10 module disagree about the UART rate.

Get a waveform out

The board powers up in Mode 0. In Mode 0 the generator is the only subsystem running, and which BNC is live depends on the active channel.

  1. Check the amplitude before connecting anything. If this board has been reflashed recently, the amplitude will be at maximum: 15.15 Vpp. Set it to something appropriate for your circuit.
  2. Select CH1 Generator as the active channel. This energises relay K3, which mutes CH2’s output, and leaves K2 de-energised so CH1’s output passes.
  3. Choose a waveform — sine is a good first check.
  4. Set a frequency. Anything from 1 Hz to 20 kHz is valid in this mode.
  5. Set an amplitude and, if you want one, a DC offset. Watch the REACHABLE ±x.xx V readout: amplitude and offset share one headroom budget, and that number is the offset ceiling at your current amplitude.
  6. Connect your load to the CH1 BNC.

You should now have a signal. If you have a second instrument to check it against, do — this board is not calibrated against a traceable reference and the voltages it reports are nominal.

Get a measurement in

The oscilloscope is not available in Mode 0. It has no front end of its own; it borrows CH1’s, and in Mode 0 CH1’s front end is busy generating.

To measure:

  1. Switch to Mode 1, Oscilloscope. The DDS stops entirely. This frees the CH1 signal DAC to act as the SAR comparator’s reference and lets relay K5 redirect CH1’s gain pack into the comparator stage.
  2. Confirm your input range. At unity chain gain the input tolerates ±25 V; at maximum gain it tolerates ±8.3 V. If you are unsure, press Autoset — it starts from minimum gain and climbs, so the comparator is never overdriven on the way up.
  3. Connect the probe to the input BNC and capture.

If you need to generate and measure at the same time, that is Mode 3, and it comes with real constraints. See The Four Modes.

A note on greyed-out controls

You will meet controls that are disabled with a short explanation of which mode allows them. That is deliberate. The app mirrors the firmware’s own restrictions rather than letting you send a command that will come back as an error, and it offers a one-click switch to the mode that permits what you were trying to do. A disabled control is information, not a bug.

Updated · Full project report (PDF)