/TCPi-adau1701-esp32

SigmaStudio TCP/IP Channel Tools Box.

Primary LanguageJupyter NotebookGNU General Public License v3.0GPL-3.0

SigmaStudio TCPIP Channel Tools Box

What is this?

  • This is a Python package, with which you can:
    • Remotely control SigmaDSP through TCP/IP channel.
      • With SigmaStudio or Python programs.
    • Use ESP32 / PC as a client.
    • Use ESP32 / PC as the server.
    • Can also read data from SigmaDSP over TCP/IP channel (with Python programs).
    • Can read/write EEPROM.

Why?

  • I was playing with SigmaDSP (ADAU1701/ADAU1401), and often need to switch between USBi and FTDI FT232H.
  • With SigmaDSP TCP/IP channel, SigmaStudio and Python programs can share the same means to access SigmaDSP, no more switching.
  • Remote access is always a huge advantage:
    • Can control any SigmaDSP no matter where it is, as long as it's TCP/IP reachable. Very convenient for maintenance.
    • Configurations can be modified and deployed over multiple SigmaDSP devices on-demand, with just a few lines of code.
    • No need to squeeze huge code into a tiny MCU (like ESP32), parameters can be calculated remotely and deployed onto devices.
    • UI controls (like push buttons) no longer need to be "on-device", you can control SigmaDSP with just your phone.

Design and Features

  • Coverage of SigmaDSP's memory space:
    • Can access data of program RAM, parameter RAM, and also EEPROM, just assign the address to read/write.
  • Can also read data from SigmaDSP
    • Not only writing data to, but can also read data from SigmaDSP via TCP/IP channel (with Python programs).
  • Support "reset" command:
    • With ESP32 as the server, SigmaDSP and ESP32 itself will be reset upon receiving the "reset" command.
  • A client can be:
    • A PC running SigmaStudio
    • A PC running Python programs
    • An ESP32 running MicroPython
    • A smart phone
  • A server can be:
    • A PC with Python environment
    • An ESP32 with MicroPython environment
      • Using its I2C port to access SigmaDSP.
  • Portability:
    • The same package can be used on PC / ESP32 without modification required.

How to use it

  • For using ESP32 as the server:
    • Download TCPi_uPy.rar.
    • Unzip it and edit the following items in file config.py:
      • LED, on your ESP32 module:
        • ON_BOARD_LED_PIN_NO, ON_BOARD_LED_HIGH_IS_ON
      • I2C connection:
        • I2C_SCL_PIN_ID, I2C_SDA_PIN_ID: with which pins the ESP32 should use to connect with ADAU1701.
        • Avoid some pins of ESP32, see ESP32 GPIO guide.
      • WiFi:
        • SSID, PASSWORD
    • Upload all files to ESP32.
    • In ESP32's terminal interface, type import test_tcpi_upy, it will show its IP when the WiFi connection is established.
      • The default port number is 8086.
      • You can write import test_tcpi_upy into file main.py, so it will run as a Sigma TCP/IP channel server after each boot.
    • Follow AD's instructions for connecting the server with SigmaStudio.
  • Please also see here and here for other examples.

Test Results

Supported Chips

  • ADAU1701
  • ADAU1702
  • ADAU1401
  • ADAU1401A

Limitations

  • Not high speed, obvious latency.
  • Need more memory to accommodate the data SigmaStudio uploads all at once. ESP32 with 8MB PSRAM is preferred.

Dependencies