pu2clr/si4735 Arduino Library

repository·master·Indexed 21 days ago

https://github.com/pu2clr/si4735

An Arduino library for controlling Silicon Labs SI47XX series ICs to build AM, SSB, and FM/RDS radio receivers. It includes over 60 examples supporting various hardware interfaces such as I2C LCD20x4, OLED, TFT touch screens, and microcontrollers including ATtiny85, ESP32, and STM32. The library provides specialized functionality for Shortwave (SW) bands, Single Sideband (SSB) patching for LSB/USB, and FM RDS/RBDS features.

Tokens
64K
Snippets
93
Records
296
Agent score
72%

What's inside pu2clr/si4735

  1. Overview of the PU2CLR SI4735 Library

    master

    The PU2CLR SI4735 library is an Arduino-based interface designed to control the Silicon Labs SI47XX IC family (including SI4730, SI4732, and SI4735). It enables the creation of broadcast AM, SSB, and FM/RDS radio receivers.

    Supported Frequency Ranges:

    • AM and SSB modes: 150kHz to 30MHz
    • FM mode: 64 to 108 MHz

    Key Technical Details:

    • Communication Protocol: I²C
    • SSB Support: Available on SI4735-D60 and SI4732-A10 devices via specific patches.
    • Compatibility: Works with all members of the SI473X family, subject to the specific features of each IC version.
  2. Overview of SI4735 Radio Features

    master

    The GERT_BAAK sketch provides a comprehensive radio interface with the following capabilities:

    Band Support

    • FM (VHF): 64–108 MHz
    • AM (MW): 520–1710 kHz
    • SW: 2.3–30.0 MHz
    • LW: 153–279 kHz

    Modulation and Tuning

    • Modulations: FM, AM, and SSB (USB & LSB). SSB is controlled via BFO.
    • Tuning Steps: AM and SSB support 1, 5, 9, and 10 kHz steps. Tuning step control is available for all broadcast and ham bands (except FM).
    • Advanced Features: FM Stereo, RDS (with SNR threshold and toggle), Automatic Frequency Control (AFC), and Automatic Gain Control (AGC).
    • Manual Gain: Controlled via the rotary encoder.
    • Seek: AM/FM seek tuning functionality.

    User Interface and Controls

    • Controls: Manual control is handled via the touchscreen and a Rotary Encoder.
    • Display: Includes S-meter, SNR, RSSI, and Volume indicators. The display automatically powers off after 5 minutes to save battery life and wakes up upon interaction with the touchscreen or rotary controller.
    • Input: On-screen keyboard for frequency control and rotary encoder for volume and FM presets.
    • Presets: FM presets are managed by the rotary encoder and can be finalized by the rotary switch or automatically when the screen wakes up.
    • Band Selection: Supports 17 Broadcast bands and 11 Ham bands, with preferred modulations pre-set for each.

    Power Management

    • Consumption: Approximately 120 mA active, dropping to 80 mA when the display is switched off.
  3. Overview of the SI4735 Arduino Library

    master

    The SI4735 library provides a user-friendly programming interface for the Silicon Labs SI47XX family of AM/FM/SW broadcast radio receivers within the Arduino development environment.

    Key technical details:

    • Communication Protocol: The library uses I2C for communication with the chip.
    • Compatibility: It is built based on the "AN332 Si47XX PROGRAMMING GUIDE" and its amendments, making it compatible with various members of the SI47XX family (functionality will depend on the specific chip version used).
    • License: Distributed under the MIT License.
  4. Overview of the Si4735 DSP Radio Chip

    master

    The Si4735 is a Digital Signal Processing (DSP) radio chip from Silicon Labs capable of demodulating AM, FM, SSB (Single Side Band), and NBFM (Narrow Band FM) via firmware patches. It is controlled by a microcontroller (e.g., ATmega328, ATtiny85, ESP32) using a set of commands and arguments.

    Key Capabilities:

    • Frequency Bands: FM (64–108 MHz), AM/MW (520–1710 kHz), SW (2.3–26.1 MHz+), and LW (153–279 kHz).
    • Features: Automatic station seeking (AM/FM), Automatic Frequency Control (AFC), Automatic Gain Control (AGC), RDS/RBDS support, and digital tuning.
    • Communication: Supports I2C and SPI, though this specific library only uses the I2C protocol.
  5. Overview of the PU2CLR SI4735 Arduino Library

    master

    The PU2CLR SI4735 library is an open-source C++ library designed for the Silicon Labs SI473X family of broadcast AM/FM/SW/LW radio receiver ICs. It provides an object-oriented interface to control these devices via the I²C communication protocol.

    Key capabilities include:

    • Support for the entire SI473X device family.
    • Implementation of over 120 functions, covering most features offered by the Si47XX family.
    • Support for SSB (Single Side Band) via specific patches (e.g., for SI4735-D60).
    • RDS (Radio Data System) support.
    • Automatic I²C bus address detection.
    • Control over FM de-emphasis (50 or 75 μs), AGC, AVC, and filters.
    • Clock reference selection (crystal or external).

    The library is cross-platform and compatible with most Arduino-supported boards, including ATtiny85, ATmega328/32u4/2560, ARM Cortex, STM32, Arduino DUE, and ESP32.

  6. Features of Thiago's Kit Firmware

    master

    The firmware provides a comprehensive radio interface with the following capabilities:

    • Band Support:
      • FM (VHF): 64–108 MHz
      • AM (MW): 520–1710 kHz
      • SW: 2.3–30.0 MHz
      • LW: 153–279 kHz
    • Modulation & Tuning:
      • FM, AM, and SSB (USB & LSB) modulation.
      • SSB is controlled via BFO.
      • AM and SSB support tuning steps of 1, 5, 9, and 10 kHz.
      • AM/FM seek tuning and Automatic Frequency Control (AFC).
      • Automatic Gain Control (AGC) and Manual gain control via rotary encoder.
    • Display & UI:
      • S-meter, SNR, RSSI, and Volume indicators.
      • FM Stereo and RDS (with SNR threshold and toggle).
      • On-screen keyboard for frequency control.
      • Preset management for FM via rotary encoder.
      • Band selection for Broadcast (17) and Ham (11) bands.
    • Power Management:
      • Display automatically switches off after 5 minutes to save battery.
      • Display wakes up via touchscreen, rotary encoder, or rotary encoder switch.
      • Power consumption: ~120 mA (active), ~80 mA (display off).
  7. Si4735-D60 and Si4732-A10 features

    master

    The Si4735/Si4732 series provides the following capabilities:

    • Supported Bands: FM (64–108 MHz), AM (520–1710 kHz), SW (2.3–26.1 MHz), and LW (153–279 kHz).
    • Advanced Tuning: AM/FM seek tuning, Automatic Frequency Control (AFC), and Automatic Gain Control (AGC).
    • Special Modes: SSB (Single Side Band) patch support (available on Si4735-D60 and Si4732-A10) and RDS/RBDS processing.
    • Audio: Digital FM stereo decoder and Digital audio out (Note: Crystal and digital audio modes cannot be used simultaneously).
    • Interface: I²C and SPI support, and firmware upgrade capability.
  8. Explore SI4735 Third Party Projects and Hardware Implementations

    master

    The extras/Third_Party_Projects directory contains various hardware designs, software implementations, and contributions from the community using the SI4735 library. These projects range from compact evaluation boards (EVBs) to advanced ESP32-based touchscreen interfaces.

    Key community projects include:

    • David's SI4735 Radio KIT: A compact EVB designed for the SI4735 IC, utilizing an Arduino Nano as a platform to support SSB (Single Side Band) functionality.
    • Gert Baak (PE0MGB): An advanced implementation using an ESP32 and a 2.8-inch TFT Touchscreen. This project features a highly developed user interface.
    • Nancy Gail: Various projects and hardware designs shared via the "SI47XX for Radio Experimenters" community.
    • Rolf's Project: An evolution of Jim Reagan's design that adds external mute control to minimize clicking and popping in speakers, utilizing features supported by the PU2CLR Si4735 Arduino Library.
    • Felix Angga: Software implementations available on GitHub (slametradio).
  9. What is an SI4735 patch and how does it work?

    master

    A patch is a piece of software used to modify the behavior of the SI4735 device, typically to fix bugs or add new features (like SSB support) that are not available in the device's internal ROM firmware.

    How it works:

    1. The patch is distributed in binary form.
    2. The host MCU (e.g., an Arduino) transfers the binary to the SI4735's internal RAM using the I²C protocol.
    3. The patch is executed internally by the SI4735's internal MCU.
    4. Because the RAM is volatile, the patch must be re-transferred every time the device is powered on.