

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
7LMR36510ADDA
SOP-8-EP-40℃~+125℃@(TJ) 1 1A 1V~61.75V 26uA 4.2V~65V 400kHz Adjustable Buck Buck Built-in Yes SOP-8-EP DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersTLV75733PDBVR-MS
SOT-23-5SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMSKSEMIUncategorisedTXB0104PW
TSSOP-14-40℃~+85℃ 1 1.2V~3.6V 1.65V~5.5V 100Mbps 4 Auto Direction Detection Bidirectional CMOS CMOS Tri-State TSSOP-14 Translators, Level Shifters ROHSTexas InstrumentsTranslators, Level ShiftersBLM15AG102SN1D11
04021 1kΩ@100MHz 300mA 650mΩ ±25% 0402 Ferrite Beads ROHSMurataFerrite BeadsES1J
SMA(DO-214AC)-55℃~+150℃ 1 Independent 1.7V@1A 1A 35ns 5uA@600V 600V SMA Fast Recovery / High Efficiency Diodes ROHSMDDDiodes - Rectifiers - Fast RecoveryIRF540N
TO-2201 N-channel 1.35nF 100V 130W 280pF 33A 35mΩ@10V 4V 52nC@10V 85pF N-Channel TO-220 MOSFETs ROHSOSENMOSFETsIRF9540NS
TO-263MOSFETsMinos
README
README.mdAZHAI 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:
Environmental Sensors
↓
ADC Acquisition
↓
Physical Parameter Calculation
↓
Acoustic Propagation Model
↓
Adaptive Parameter Selection
↓
Waveform Selection
↓
Waveform Generation
↓
DAC → Analog Signal Conditioning
↓
Sonar TransducerThe 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.
| File | Responsibility |
|---|---|
Inc/sonar_types.h | Shared data types, waveform configuration, sampling constants and Hann-window prototype |
Src/hann_window.c | Single shared Hann-window implementation |
Inc/environment_calc.h | Physics-engine interface |
Src/environment_calc.c | Environmental calculations and adaptive parameter selection |
Inc/lfm.h | LFM waveform interface |
Src/lfm.c | LFM chirp generation |
Inc/gs.h | Geometric sweep interface |
Src/gs.c | Geometric frequency sweep generation |
Inc/pcm.h | Phase-coded waveform interface |
Src/pcm.c | Barker-13 phase-coded waveform generation |
Inc/cfm.h | Chaotic frequency modulation interface |
Src/cfm.c | Chaotic frequency modulation generation |
Src/main.c | Peripheral initialization, DMA buffer management, waveform dispatch and telemetry |
4. Environmental Inputs
The firmware receives environmental information through the ADC.
ADC Pin Mapping
| Pin | Parameter | ADC Channel | Rank |
|---|---|---|---|
PA0 | Turbidity | ADC_CHANNEL_0 | 1 |
PA1 | Depth | ADC_CHANNEL_1 | 2 |
PB0 | Temperature | ADC_CHANNEL_8 | 3 |
PB1 | Salinity | ADC_CHANNEL_9 | 4 |
PA5 | Battery Level | ADC_CHANNEL_5 | 5 |
The raw ADC values are converted into physical quantities before being passed to the acoustic propagation model.
ADC Raw Values
↓
Calibration / Conversion
↓
Temperature
Salinity
Depth / Pressure
Turbidity
Battery Level5. 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:
K_TURBThis 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:
Transmission Loss
=
Geometric Spreading Loss
+
Absorption Loss
+
Turbidity Scattering LossThe 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:
Detection Performance
↕
Acoustic Propagation Loss
↕
Transmitter Power
↕
Transducer BandwidthThe 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.
Frequency
^
| /
| /
| /
| /
|____/____________> TimeAdvantages:
- Large time-bandwidth product
- Good range resolution
- Pulse-compression capability
- Suitable for underwater detection
Implementation:
lfm.c7.2 Geometric Sweep
The geometric sweep changes frequency exponentially rather than linearly.
Frequency
^
| /
| /
| /
| /
|___/____________> TimeImplementation:
gs.cThe 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.
+ + + + + + - - + + - + -The phase transitions provide correlation properties useful for pulse compression and detection.
Implementation:
pcm.c7.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:
cfm.cImportant: The CFM sidelobe characteristic does not have a simple closed-form value. The parameter
SIDELOBE_CFM_DBmust 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:
Environmental Conditions
↓
Propagation Model
↓
Candidate Waveforms
↓
Performance Estimation
↓
ARGMAX
↓
Selected WaveformThe 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.
┌──────────────┐
│ Waveform │
│ Generator │
└──────┬───────┘
↓
┌───────────────────┐
│ Ping-Pong Buffer │
└───────┬───────────┘
↓
DMA
↓
DAC
↓
Analog Signal Conditioning
↓
Sonar TransducerWhile 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:
FS_HZThe reference implementation assumes a 500 kHz sample rate.
TIM6 is configured based on the timer clock.
If the TIM6 timer clock is 90 MHz:
Period = (90,000,000 / 500,000) - 1
= 179Therefore:
TIM6 Period = 179Important
The 90 MHz assumption must be verified against the actual STM32 clock tree before flashing.
Check:
SystemClock_Config()and the project's:
.iocfile.
If the actual TIM6 clock is different, recompute:
Period = (timer_clock_hz / 500000) - 111. Tunable Design Constants
The constants in the TUNABLE DESIGN CONSTANTS section of:
Src/environment_calc.care currently placeholders and must be reviewed before final deployment.
Important parameters include:
| Parameter | Purpose |
|---|---|
| Target Range | Required operating/detection range |
| TL Budget | Maximum acceptable transmission loss |
| Transducer BW Ceiling | Maximum usable transducer bandwidth |
SIDELOBE_CFM_DB | Measured CFM sidelobe level |
K_TURB | Turbidity scattering coefficient |
| Waveform limits | Minimum/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:
AZHAI_Physics_Engine_Equations.mdfor the meaning and derivation of each parameter.
12. Main Firmware Flow
The main control loop follows this sequence:
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 Waveform13. 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
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.md15. 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_DBexperimentally/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
Sense → Model → Adapt → Generate → TransmitInstead of:
Fixed Parameters → Fixed Waveform → TransmitAZHAI provides:
Changing Environment
↓
Adaptive Parameters
↓
Adaptive Waveform
↓
Efficient Sonar TransmissionThe 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| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100nF | Capacitor_SMD:C_0402_1005Metric | C9, C11, C13, C14, C15, C17, C19, C23 |
| 4 | 1k | Resistor_SMD:R_0402_1005Metric | R9, R10, R11, R12 |
| 4 | D_Zener | Diode_SMD:Littelfuse_PolyZen-LS | D2, D3, D4, D5 |
| 4 | R_Potentiometer | Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm | RV1, RV2, RV3, RV4 |
| 3 | 10k | Resistor_SMD:R_0402_1005Metric | R3, R13, R14 |
| 3 | 10uF | Capacitor_SMD:C_0805_2012Metric | C5, C8, C21 |
| 2 | 100k | Resistor_SMD:R_0402_1005Metric | R6, R8 |
| 2 | 170 | Resistor_SMD:R_0402_1005Metric | R1, R4 |
| 2 | 18pF | Capacitor_SMD:C_0805_2012Metric | C1, C2 |
| 2 | 1uF | Capacitor_SMD:C_0402_1005Metric | C10, C24 |
| 2 | 1uF_X5R | Capacitor_SMD:C_0402_1005Metric | C18, C22 |
| 2 | 22uF | Capacitor_SMD:C_1206_3216Metric | C12, C16 |
| 2 | BLM15AG102SN1D | Inductor_SMD:L_0402_1005Metric | FB1, FB2 |
| 2 | Conn_01x02_Pin | Connector_PinHeader_2.00mm:PinHeader_1x02_P2.00mm_Vertical_SMD_Pin1Left | J2, J8 |
| 2 | L | Relay_THT:Relay_DPDT_Finder_30.22 | L1, L2 |
| 2 | ~ | Package_SO:Infineon_PG-DSO-8-43 | U2, U3 |
| 1 | 100K | Resistor_SMD:R_0402_1005Metric | R2 |
| 1 | 100nF | Capacitor_SMD:C_0805_2012Metric | C20 |
| 1 | 10nF | Capacitor_SMD:C_0402_1005Metric | C25 |
| 1 | 10nF_C0G | Capacitor_SMD:C_0402_1005Metric | C7 |
| 1 | 13.3k | Resistor_SMD:R_0402_1005Metric | R7 |
| 1 | 2.2nF | Capacitor_SMD:C_0805_2012Metric | C4 |
| 1 | 2.2uF | Capacitor_SMD:C_0805_2012Metric | C3 |
| 1 | 22 | Resistor_SMD:R_0402_1005Metric | R5 |
| 1 | 470uF | Capacitor_SMD:C_0805_2012Metric | C6 |
| 1 | ADC_DEPTH | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J6 |
| 1 | Conn_01x02_Pin | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J1 |
| 1 | Conn_02x16_Counter_Clockwise | Connector_PinHeader_2.00mm:PinHeader_2x01_P2.00mm_Vertical_SMD | J7 |
| 1 | Crystal | Crystal:Crystal_SMD_MicroCrystal_CC5V-T1A-2Pin_4.1x1.5mm | Y1 |
| 1 | D_TVS | Package_TO_SOT_THT:TO-220-3_Vertical | D1 |
| 1 | ES1J | Package_TO_SOT_THT:TO-220-3_Vertical | D6 |
| 1 | Fuse | Fuse:Fuse_0402_1005Metric | F1 |
| 1 | IRF540N | Package_TO_SOT_THT:TO-220-3_Vertical | Q3 |
| 1 | IRF9540N | Package_TO_SOT_THT:TO-220-3_Vertical | Q2 |
| 1 | LMR36510ADDA | Package_SO:Texas_HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalVias | U4 |
| 1 | Q_PMOS_DSG | Package_DIP:DIP-24_W7.62mm | Q1 |
| 1 | SEN_SALINITY | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J4 |
| 1 | SEN_TEMP | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J5 |
| 1 | SEN_TURBIDITY | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J3 |
| 1 | STM32F446RETx | Package_QFP:LQFP-64_10x10mm_P0.5mm | U1 |
| 1 | TC4427xOA | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U5 |
| 1 | TLV75733PDBVR | Package_TO_SOT_SMD:SOT-23-5 | U7 |
| 1 | TXB0104PW | Package_SO:TSSOP-14_4.4x5mm_P0.65mm | U6 |
Similar boards
- 4 layers100 × 100 mm

- 4 layers32.7 × 99.7 mm

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 mm

- 4 layers25 × 30 mm

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 mm

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 mm

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 mm

- 2 layers95 × 75 mm

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.