2022-05-13 14:00:33 -05:00
2022-05-12 16:57:07 -05:00
2022-05-12 15:59:25 -05:00
2022-05-13 13:54:08 -05:00
2022-05-13 13:07:11 -05:00
2022-05-13 13:27:54 -05:00
2022-05-13 13:55:41 -05:00
2022-05-11 21:54:48 -05:00
2022-04-16 14:32:01 -05:00
2022-05-13 14:00:33 -05:00

Logitech-Z906

Logitech Z906 Control Library

This 5.1 speaker system comes with a 1000 Watts Peak/500 Watts RMS power for a rich THX Certified surround sound. With the ability to decode Dolby Digital and DTS encoded soundtracks.

The Logitech Z906 is who has six class D amplifiers included, but you cannot use them if you do not have the console connected.

hardware

The main component is a Renesas D2-71583 intelligent digital amplifier and sound processor.

The system requires external firmware to boot the DSP, the EN25F10A serial flash memory has been chosen.

This is the dump data.

DE-15 Console Connector

The communication between the Digital Audio Processor and the console is done through TTL serial communication at 3.3V.

The following table illustrates the pinout.

Pin Description Pin Description
6 GND 12 TX
13 RX 15 Console Enable

D2-71583 NO is 5V tolerant. If you have Arduino UNO, MEGA, etc use a Logic Level Converter.

Serial settings
Baud rate 57600
Data 8 bit
Parity Odd
Stop 1 bit

Here is the DE-15 male as viewed from the front of the Main Board.

Enable Console

Connect pin 15 to GND.

Basic Usage

Instantiate a Z906 object and attach to Serial1, you may create multiple Z906 objects.

Z906 LOGI(Serial1)

cmd method uses single or double argument, check next tables.

LOGI.cmd(arg_a)
LOGI.cmd(arg_a, arg_b)

Examples :

LOGI.cmd(MUTE_ON)         // Enable Mute
LOGI.cmd(MAIN_LEVEL, 15)  // Set Main Level to 15

Request data

LOGI.request(MAIN_LEVEL)    // return current Main Level
LOGI.request(READ_LEVEL)    // return current Read Level
LOGI.request(CENTER_LEVEL)  // return current Center Level
LOGI.request(SUB_LEVEL)     // return current Subwoofer Level

LOGI.request(STATUS_STBY)   // return stand-by status
LOGI.request(VERSION)       // return firmware version

Single argument command

argument description
SELECT_INPUT_1 Enable TRS 5.1 input
SELECT_INPUT_2 Enable RCA 2.0 input
SELECT_INPUT_3 Enable Optical 1 input
SELECT_INPUT_4 Enable Optical 2 input
SELECT_INPUT_5 Enable Coaxial input
SELECT_INPUT_AUX Enable TRS 2.0 (console) input
LEVEL_MAIN_UP Increase Main Level by one unit
LEVEL_MAIN_DOWN Decrease Main Level by one unit
LEVEL_SUB_UP Increase Subwoofer Level by one unit
LEVEL_SUB_DOWN Decrease Subwoofer Level by one unit
LEVEL_CENTER_UP Increase Center Level by one unit
LEVEL_CENTER_DOWN Decrease Subwoofer Level by one unit
LEVEL_REAR_UP Increase Rear Level by one unit
LEVEL_DOWN_UP Decrease Rear Level by one unit
PWM_OFF PWM Generator OFF
PWM_ON PWM Generator ON
SELECT_EFFECT_3D Enable 3D Effect in current input
SELECT_EFFECT_41 Enable 4.1 Effect in current input
SELECT_EFFECT_21 Enable 2.1 Effect in current input
SELECT_EFFECT_NO Disable all Effects in current input
BLOCK_INPUTS Disable signal input
NO_BLOCK_INPUTS Enable signal input
RESET_PWR_UP_TIME Reset Power-Up Timer
EEPROM_SAVE Save current settings to EEPROM
MUTE_ON Enable Mute
MUTE_OFF Disable Mute

Double argument command

argument a argument b description
MAIN_LEVEL 0-255 Set Main Level to argument b value
READ_LEVEL 0-255 Set Read Level to argument b value
CENTER_LEVEL 0-255 Set Center Level to argument b value
SUB_LEVEL 0-255 Set Sub Level to argument b value

EEPROM

Use the EEPROM_SAVE function with caution. Each EEPROM has a limited number of write cycles (~100,000) per address. If you write excessively to the EEPROM, you will reduce the lifespan.

Get Temperature

return the value of main temperature sensor.

LOGI.main_sensor()

Basic Example

#include <Z906.h>

// Instantiate a Z906 object and Attach to Serial1
Z906 LOGI(Serial1);

void setup(){

Serial.begin(9600);
while(!Serial);

while(LOGI.cmd(VERSION) == 0)
{
  Serial.println("Waiting Z906 Power-Up");
  delay(1000);
}

Serial.println("Z906 Version : " + (String) LOGI.request(VERSION));

// Power ON PWM Generator
LOGI.cmd(PWM_ON);

// Select RCA 2.0 Input
LOGI.cmd(SELECT_INPUT_2);

// Disable Mute
LOGI.cmd(MUTE_OFF);

// Set Main Level to 15;
LOGI.cmd(MAIN_LEVEL, 15);
}

void loop(){

Serial.println("Temperature main sensor: " + (String) LOGI.main_sensor());

delay(1000);
}

YouTube

YouTube

Description
Logitech Z906 Control Library
Readme MIT 22 MiB
Languages
C++ 100%