ahmed-shehata / Logitech-Z906

Logitech Z906 Control Library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

This information is made to be able to control the unit without the need of the console, using any device with a programmable serial port, especially an arduino :)

Codenamed "Liszt".

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
3 GND 6 GND
11 3.3V @ 250mA 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)
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_REAR_DOWN 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.request(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);
}

Use with Docklight

Docklight is a testing, analysis and simulation tool for serial communication protocols.

Use the following project to use Z906 unit connected to a PC.

Z906.ptp

YouTube

YouTube

About

Logitech Z906 Control Library

License:MIT License


Languages

Language:C++ 100.0%