Skip to the content
2 layersSih, the printed circuit board in 3D

AZHAI is a software-defined sonar transmitter firmware designed for autonomous underwater vehicles (AUVs).

Copper layers
2
Thickness
1.6 mm
Parts
73
Nets
101
Pads
379
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 10.0 (file 20260206)
Created
11 Sep 2026
Updated
25 Sep 2026

Overview

Sih is an open-source printed circuit board by arthithadee, from the arthithadee/Sonar_transmitter repository on GitHub. It is a 2-layer board with 73 parts on 101 nets.

It is built around the LMR36510ADDA, TLV75733PDBVR-MS and TXB0104PW, with the BLM15AG102SN1D11, ES1J and IRF540N among its other parts. Its parts include 25 capacitors, 14 resistors, 8 connectors, 7 ICs and 6 diodes. It belongs with the STM32 boards of this library.

Main components

7

README

README.md

AZHAI Firmware — Software-Defined Sonar Transmitter

PS 26058 — Low-Power, Real-Time Adaptive Software-Defined Sonar Transmitter Payload for AUVs

1. Overview

AZHAI is a software-defined sonar transmitter firmware designed for autonomous underwater vehicles (AUVs).

Underwater sonar is used for applications such as:

  • Seafloor mapping
  • Underwater object detection
  • Depth measurement
  • Navigation
  • Marine habitat monitoring
  • Underwater infrastructure inspection

Traditional sonar systems often use fixed transmission parameters. However, underwater conditions continuously change due to factors such as temperature, salinity, depth, pressure, and turbidity. These environmental changes affect acoustic propagation, attenuation, and detection performance.

AZHAI addresses this by dynamically adapting the transmitted waveform and its parameters according to the current underwater environment.


2. Core Idea

The system follows the pipeline:

text
Environmental Sensors
        ↓
ADC Acquisition
        ↓
Physical Parameter Calculation
        ↓
Acoustic Propagation Model
        ↓
Adaptive Parameter Selection
        ↓
Waveform Selection
        ↓
Waveform Generation
        ↓
DAC → Analog Signal Conditioning
        ↓
Sonar Transducer

The firmware dynamically determines parameters such as:

  • Center frequency
  • Bandwidth
  • Pulse duration
  • Transmit amplitude / power
  • Repetition rate
  • Waveform type

This allows the transmitter to generate a waveform suited to the current underwater conditions instead of using one fixed configuration.


3. Firmware Architecture

The firmware is divided into independent modules so that the physics calculations, waveform generation, and hardware control can be developed and tested separately.

FileResponsibility
Inc/sonar_types.hShared data types, waveform configuration, sampling constants and Hann-window prototype
Src/hann_window.cSingle shared Hann-window implementation
Inc/environment_calc.hPhysics-engine interface
Src/environment_calc.cEnvironmental calculations and adaptive parameter selection
Inc/lfm.hLFM waveform interface
Src/lfm.cLFM chirp generation
Inc/gs.hGeometric sweep interface
Src/gs.cGeometric frequency sweep generation
Inc/pcm.hPhase-coded waveform interface
Src/pcm.cBarker-13 phase-coded waveform generation
Inc/cfm.hChaotic frequency modulation interface
Src/cfm.cChaotic frequency modulation generation
Src/main.cPeripheral initialization, DMA buffer management, waveform dispatch and telemetry

4. Environmental Inputs

The firmware receives environmental information through the ADC.

ADC Pin Mapping

PinParameterADC ChannelRank
PA0TurbidityADC_CHANNEL_01
PA1DepthADC_CHANNEL_12
PB0TemperatureADC_CHANNEL_83
PB1SalinityADC_CHANNEL_94
PA5Battery LevelADC_CHANNEL_55

The raw ADC values are converted into physical quantities before being passed to the acoustic propagation model.

text
ADC Raw Values
      ↓
Calibration / Conversion
      ↓
Temperature
Salinity
Depth / Pressure
Turbidity
Battery Level

5. Physics Engine

environment_calc.c contains the main environmental and acoustic propagation calculations.

The engine performs:

5.1 ADC → Physical Units

Sensor ADC readings are converted into meaningful physical quantities such as:

  • Temperature in °C
  • Salinity in PSU
  • Depth in metres
  • Turbidity in NTU
  • Battery percentage

5.2 Speed of Sound

The firmware estimates the speed of sound in seawater using the Mackenzie equation, considering environmental conditions such as:

  • Temperature
  • Salinity
  • Depth

5.3 Acoustic Absorption

The firmware estimates frequency-dependent acoustic absorption using the Francois-Garrison model.

This helps determine how much acoustic energy is lost during propagation.

5.4 Turbidity Scattering

An additional turbidity-dependent scattering model is used to estimate signal losses caused by suspended particles.

The turbidity scattering coefficient is represented by the tunable constant:

c
K_TURB

This value must be calibrated or validated experimentally.

5.5 Transmission Loss

The propagation model combines spreading and absorption/scattering losses to estimate the total transmission loss:

text
Transmission Loss
        =
Geometric Spreading Loss
        +
Absorption Loss
        +
Turbidity Scattering Loss

The estimated loss is then used for adaptive transmitter parameter selection.


6. Adaptive Parameter Selection

Based on the estimated underwater propagation conditions, the physics engine derives suitable transmission parameters.

These include:

  • Center frequency (Fc)
  • Bandwidth (BW)
  • Pulse duration (T)
  • Transmit amplitude
  • Waveform type

The system attempts to balance:

text
Detection Performance
        ↕
Acoustic Propagation Loss
        ↕
Transmitter Power
        ↕
Transducer Bandwidth

The final parameters are passed to the selected waveform generator.


7. Supported Waveforms

AZHAI supports multiple transmit waveform types.

7.1 LFM Chirp

Linear Frequency Modulation (LFM) sweeps frequency linearly over the selected bandwidth.

text
Frequency
   ^
   |        /
   |       /
   |      /
   |     /
   |____/____________> Time

Advantages:

  • Large time-bandwidth product
  • Good range resolution
  • Pulse-compression capability
  • Suitable for underwater detection

Implementation:

text
lfm.c

7.2 Geometric Sweep

The geometric sweep changes frequency exponentially rather than linearly.

text
Frequency
   ^
   |          /
   |        /
   |      /
   |    /
   |___/____________> Time

Implementation:

text
gs.c

The sweep parameters are generated according to the selected center frequency and bandwidth.


7.3 Barker-13 Phase-Coded Waveform

The phase-coded waveform uses a Barker-13 sequence to encode the transmitted pulse.

text
+ + + + + + - - + + - + -

The phase transitions provide correlation properties useful for pulse compression and detection.

Implementation:

text
pcm.c

7.4 Chaotic Frequency Modulation

The CFM waveform uses a chaotic sequence to vary the instantaneous frequency.

The chaotic sequence is generated using the selected chaotic-map parameters and then converted into frequency modulation.

Implementation:

text
cfm.c

Important: The CFM sidelobe characteristic does not have a simple closed-form value. The parameter SIDELOBE_CFM_DB must therefore be determined through offline simulation or measurement.


8. Waveform Selection

The physics engine evaluates the available waveform options and selects the appropriate waveform using an argmax-based selection mechanism.

Conceptually:

text
Environmental Conditions
          ↓
Propagation Model
          ↓
Candidate Waveforms
          ↓
Performance Estimation
          ↓
       ARGMAX
          ↓
Selected Waveform

The selected waveform configuration is then passed to the corresponding generator.


9. Real-Time Waveform Generation

The firmware uses a DMA-driven ping-pong buffer architecture for continuous waveform transmission.

text
             ┌──────────────┐
             │ Waveform     │
             │ Generator    │
             └──────┬───────┘
                    ↓
          ┌───────────────────┐
          │ Ping-Pong Buffer  │
          └───────┬───────────┘
                  ↓
                 DMA
                  ↓
                 DAC
                  ↓
        Analog Signal Conditioning
                  ↓
            Sonar Transducer

While one buffer is being transmitted by DMA, the other buffer can be prepared with the next waveform samples.

This helps maintain continuous real-time transmission without requiring the CPU to generate every sample at the exact transmission instant.


10. Sampling and Timer Configuration

The waveform sample rate is defined by:

c
FS_HZ

The reference implementation assumes a 500 kHz sample rate.

TIM6 is configured based on the timer clock.

If the TIM6 timer clock is 90 MHz:

text
Period = (90,000,000 / 500,000) - 1
       = 179

Therefore:

text
TIM6 Period = 179

Important

The 90 MHz assumption must be verified against the actual STM32 clock tree before flashing.

Check:

text
SystemClock_Config()

and the project's:

text
.ioc

file.

If the actual TIM6 clock is different, recompute:

text
Period = (timer_clock_hz / 500000) - 1

11. Tunable Design Constants

The constants in the TUNABLE DESIGN CONSTANTS section of:

text
Src/environment_calc.c

are currently placeholders and must be reviewed before final deployment.

Important parameters include:

ParameterPurpose
Target RangeRequired operating/detection range
TL BudgetMaximum acceptable transmission loss
Transducer BW CeilingMaximum usable transducer bandwidth
SIDELOBE_CFM_DBMeasured CFM sidelobe level
K_TURBTurbidity scattering coefficient
Waveform limitsMinimum/maximum frequency and duration constraints

These values should be obtained from:

  • Transducer datasheets
  • Tank/field measurements
  • Acoustic simulations
  • Calibration experiments
  • Offline waveform analysis

Refer to:

text
AZHAI_Physics_Engine_Equations.md

for the meaning and derivation of each parameter.


12. Main Firmware Flow

The main control loop follows this sequence:

text
        START
          │
          ↓
 Initialize GPIO
 Initialize ADC
 Initialize TIM6
 Initialize DAC
 Initialize DMA
          │
          ↓
   Read Environment
          │
          ↓
 Convert ADC Values
          │
          ↓
 Run Physics Engine
          │
          ↓
 Calculate:
 Fc / BW / Pulse / Amplitude
          │
          ↓
 Select Waveform

13. Telemetry

The firmware provides telemetry for monitoring the current operating state.

Typical information includes:

  • Temperature
  • Salinity
  • Depth
  • Turbidity
  • Battery level
  • Estimated speed of sound
  • Transmission loss
  • Selected waveform
  • Center frequency
  • Bandwidth
  • Pulse duration
  • Amplitude / transmit level

This allows the adaptive behaviour of the sonar transmitter to be monitored during testing.


14. Project Structure

text
AZHAI/
│
├── Inc/
│   ├── sonar_types.h
│   ├── environment_calc.h
│   ├── lfm.h
│   ├── gs.h
│   ├── pcm.h
│   └── cfm.h
│
├── Src/
│   ├── main.c
│   ├── hann_window.c
│   ├── environment_calc.c
│   ├── lfm.c
│   ├── gs.c
│   ├── pcm.c
│   └── cfm.c
│
├── AZHAI_Physics_Engine_Equations.md
│
└── README.md

15. Before Flashing — Verification Checklist

Before programming the STM32, verify the following.

Clock

  • Confirm the actual TIM6 timer clock.
  • Confirm the sample rate is 500 kHz.
  • Recalculate the TIM6 period if the clock is not 90 MHz.

ADC

  • Verify PA0 → Turbidity
  • Verify PA1 → Depth
  • Verify PB0 → Temperature
  • Verify PB1 → Salinity
  • Verify PA5 → Battery

Physics Model

  • Review target range.
  • Review transmission-loss budget.
  • Verify transducer bandwidth limits.
  • Calibrate K_TURB.
  • Determine SIDELOBE_CFM_DB experimentally/offline.
  • Verify all sensor conversion equations.

Waveform

  • Verify frequency limits.
  • Verify bandwidth limits.
  • Verify pulse-duration limits.
  • Verify DAC amplitude scaling.
  • Verify waveform samples remain within DAC range.

Hardware

  • Verify DAC interface.
  • Verify analog filter.
  • Verify amplifier/driver stage.
  • Verify transducer impedance and operating range.
  • Verify power-supply limits.

16. Presentation Summary

Problem

AUVs operate in changing underwater environments. Temperature, salinity, depth and turbidity affect acoustic propagation, so a fixed sonar waveform may not always provide efficient transmission.

Solution

AZHAI uses environmental sensor data and an acoustic propagation model to dynamically determine suitable sonar transmission parameters and waveform types.

Key Idea

text
Sense → Model → Adapt → Generate → Transmit

Instead of:

text
Fixed Parameters → Fixed Waveform → Transmit

AZHAI provides:

text
Changing Environment
        ↓
Adaptive Parameters
        ↓
Adaptive Waveform
        ↓
Efficient Sonar Transmission

The goal is to enable a low-power, real-time, software-defined sonar transmitter that can adapt its transmission strategy to the underwater environment experienced by the AUV.

Parts

73
QtyValueFootprintReferences
8100nFCapacitor_SMD:C_0402_1005MetricC9, C11, C13, C14, C15, C17, C19, C23
41kResistor_SMD:R_0402_1005MetricR9, R10, R11, R12
4D_ZenerDiode_SMD:Littelfuse_PolyZen-LSD2, D3, D4, D5
4R_PotentiometerPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmRV1, RV2, RV3, RV4
310kResistor_SMD:R_0402_1005MetricR3, R13, R14
310uFCapacitor_SMD:C_0805_2012MetricC5, C8, C21
2100kResistor_SMD:R_0402_1005MetricR6, R8
2170Resistor_SMD:R_0402_1005MetricR1, R4
218pFCapacitor_SMD:C_0805_2012MetricC1, C2
21uFCapacitor_SMD:C_0402_1005MetricC10, C24
21uF_X5RCapacitor_SMD:C_0402_1005MetricC18, C22
222uFCapacitor_SMD:C_1206_3216MetricC12, C16
2BLM15AG102SN1DInductor_SMD:L_0402_1005MetricFB1, FB2
2Conn_01x02_PinConnector_PinHeader_2.00mm:PinHeader_1x02_P2.00mm_Vertical_SMD_Pin1LeftJ2, J8
2LRelay_THT:Relay_DPDT_Finder_30.22L1, L2
2~Package_SO:Infineon_PG-DSO-8-43U2, U3
1100KResistor_SMD:R_0402_1005MetricR2
1100nFCapacitor_SMD:C_0805_2012MetricC20
110nFCapacitor_SMD:C_0402_1005MetricC25
110nF_C0GCapacitor_SMD:C_0402_1005MetricC7
113.3kResistor_SMD:R_0402_1005MetricR7
12.2nFCapacitor_SMD:C_0805_2012MetricC4
12.2uFCapacitor_SMD:C_0805_2012MetricC3
122Resistor_SMD:R_0402_1005MetricR5
1470uFCapacitor_SMD:C_0805_2012MetricC6
1ADC_DEPTHConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6
1Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1
1Conn_02x16_Counter_ClockwiseConnector_PinHeader_2.00mm:PinHeader_2x01_P2.00mm_Vertical_SMDJ7
1CrystalCrystal:Crystal_SMD_MicroCrystal_CC5V-T1A-2Pin_4.1x1.5mmY1
1D_TVSPackage_TO_SOT_THT:TO-220-3_VerticalD1
1ES1JPackage_TO_SOT_THT:TO-220-3_VerticalD6
1FuseFuse:Fuse_0402_1005MetricF1
1IRF540NPackage_TO_SOT_THT:TO-220-3_VerticalQ3
1IRF9540NPackage_TO_SOT_THT:TO-220-3_VerticalQ2
1LMR36510ADDAPackage_SO:Texas_HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalViasU4
1Q_PMOS_DSGPackage_DIP:DIP-24_W7.62mmQ1
1SEN_SALINITYConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4
1SEN_TEMPConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ5
1SEN_TURBIDITYConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ3
1STM32F446RETxPackage_QFP:LQFP-64_10x10mm_P0.5mmU1
1TC4427xOAPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1TLV75733PDBVRPackage_TO_SOT_SMD:SOT-23-5U7
1TXB0104PWPackage_SO:TSSOP-14_4.4x5mm_P0.65mmU6

Similar boards

  • 4 layers100 × 100 mmPCBA OCTV, the printed circuit board in 3D

    PCBA OCTV

    intechstudio/grid-hardware

    403 parts59GPL-3.0
  • 4 layers32.7 × 99.7 mmGrid devkit, the printed circuit board in 3D

    Grid devkit

    RustyCircuit/grid-devkit

    KiCad PCB designed to interoperate with the Intech Studio Grid ecosystem. This devkit is a fork of Intech's VSNX hardware design, adapted to fill a gap between fully-developed hardware and breadboard/DIY controller…

    167 parts1GPL-3.0
  • 4 layers99.8 × 65 mmHPM6E00ADCEVKRevC, the printed circuit board in 3D

    HPM6E00ADCEVKRevC

    hpmicro/hpm_apps

    hpm apps for hpm sdk

    327 parts35BSD-3-Clause
  • 4 layers25 × 30 mmRF CC1101-433, the printed circuit board in 3D

    RF CC1101-433

    AnotherMike-exe/KiCadBlocks

    Reusable KiCad 10 PCB layout blocks: module reference boards, design block fragments and host setup docs

    25 partsMIT
  • 2 layers96.8 × 97 mmPsoc5power, the printed circuit board in 3D

    Psoc5power

    profdc9/DRSSTC-PCB-Pack

    A pack of PCBs for a dual resonant solid state tesla coil setup. Pretty much everything you need.

    133 parts59
  • 2 layers100 × 100 mmMain REVA2, the printed circuit board in 3D

    Main REVA2

    Joris1306/Collecteur_de_donnees_animalieres

    Bienvenue sur le dépôt officiel du projet Piège Photographique avec Classification Animale par IA. Nous sommes une équipe de six étudiants ingénieurs de Polytech Nantes ayant dédié une année universitaire complète à la…

    68 parts1
  • 2 layers106 × 50 mmUmc, the printed circuit board in 3D

    Umc

    0x007E/umc

    Microcontrolled Motor Control Unit

    140 parts
  • 2 layers95 × 75 mmAudio amplifier pcb, the printed circuit board in 3D

    Audio amplifier pcb

    ABDELBARI0/audio-amplifier-01-pcb

    A discrete-component audio amplifier PCB designed using KiCad. The project includes the electrical schematic, PCB layout, and a 3D visualization of the board and its component placement.

    36 parts

Questions

What parts does the Sih use?

73 parts, built around the LMR36510ADDA, TLV75733PDBVR-MS, TXB0104PW and BLM15AG102SN1D11. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Sih KiCad files?

From the arthithadee/Sonar_transmitter repository on GitHub, at the commit this page was made from: the board is sih.kicad_pcb and its schematic sih.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Sih design in my own project?

Its repository states no licence, so its author keeps all rights: ask arthithadee before reusing the design.