element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Members
    Members
    • Benefits of Membership
    • Achievement Levels
    • Members Area
    • Personal Blogs
    • Feedback and Support
    • What's New on element14
  • Learn
    Learn
    • Learning Center
    • eBooks
    • STEM Academy
    • Webinars, Training and Events
    • More
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • More
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • More
  • Products
    Products
    • Arduino
    • Dev Tools
    • Manufacturers
    • Raspberry Pi
    • RoadTests & Reviews
    • Avnet Boards Community
    • More
  • Store
    Store
    • Visit Your Store
    • Choose Another Store
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
Raspberry Pi
  • Products
  • More
Raspberry Pi
Blog Wave Miner: A Pi-controlled Digital Signal Processor
  • Blog
  • Forum
  • Documents
  • Events
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Raspberry Pi requires membership for participation - click to join
Blog Post Actions
  • Subscribe by email
  • More
  • Cancel
  • Share
  • Subscribe by email
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: shabaz
  • Date Created: 26 Apr 2022 11:34 PM Date Created
  • Views 1998 views
  • Likes 11 likes
  • Comments 10 comments
  • wave miner
  • audio
  • waveminer
  • sigmastudio
  • rpibeginner
  • ad
  • adau1701
  • adau1401
  • digital signal processing
  • digital signal processor
  • analog devices
  • raspberrypi
  • sound
  • dsp
  • sigmadsp
Related
Recommended

Wave Miner: A Pi-controlled Digital Signal Processor

shabaz
shabaz
26 Apr 2022
Wave Miner: A Pi-controlled Digital Signal Processor

Table of Contents

  • Introduction
  • What Does it Do?
  • Circuit Diagram
  • A Look at the DSP Module
  • Building the Wave Miner
  • Summary

Introduction


I have not seen many Pi Digital Signal Processor (DSP) boards, but when you need it you need it, and I recently needed such a thing, so I decided to put one together.


This project turned out to be low-cost (about $40-$50) and quick to construct (a few hours) because it only uses a few components. It is almost entirely through-hole PCB construction, there are a few optional surface-mount parts, but they can be omitted if desired.


The main part is the DSP module, which is available from AliExpress for about $20 (the search term is ' ADAU1401 Board ' but if you see ADAU1701 Board, it is identical (they are both the same part functionally, but the 1401 chip works across an automotive temperature range).


Essentially all this project does is connect the I2C pins of the DSP module to the Pi, and bring out some signal input/outputs onto stereo jack and BNC connectors. It's super-easy from a hardware construction perspective.

To actually use the board, see the part 2 blog post here: Wave Miner: 10 Experiments with a Pi Digital Signal Processor (DSP)

There is also an experimental project to convert the Pi and Wave Miner into an Inductance, Capacitance and Resistance (LCR) meter.

What Does it Do?

The DSP board can be used for all sorts of things, like sound effects, audio filtering, and test purposes such as measuring AC signals or audio or generating test signals.


The DSP board works with the Pi (the Pi is required to program and configure the board), but it retains its code afterward so the board can be disconnected from the Pi and used standalone too, for instance as an electronic crossover for speakers.
There are many educational uses, especially for experimenting with speech or music or learning about digital signal processing techniques.


I've put together lots of experiments in a separate blog post covering a range of functionality, and they are easy to execute, using basic equipment such as headphones. This blog post is purely concerned with building the DSP board, which is called the Wave Miner : )

All the files discussed in this blog post are available on the Wave Miner GitHub page.


Circuit Diagram


All DSP connections are brought out to pin headers. There are plenty of jumper connections so that the project is easy to extend. It is possible to plug another board, such as prototyping perfboard, on top, or use jumper wires to connect to a breadboard.


The project can be powered from the Pi, or from an external 7-12V supply, depending on a jumper setting.



A Look at the DSP Module


Here is a block diagram of the ADAU1401 chip; although there are pairs of ADC and DAC devices, it isn't necessary to use them as a stereo pair. It is perfectly acceptable to (say) use just one ADC and generate four separate processed stream outputs from it.

There is not a lot of information about the DSP core, because the manufacturer (Analog Devices) expects users to make use of the AD development environment and algorithms, rather than code the entire device at a very low level; in fact, there is no user-accessible assembler or compiler. In the past, DSP chips required coding in a way similar to microcontrollers, using assembler language, or C code.


The DSP module from AliExpress contains the DSP chip, plus a crystal, EEPROM (for storing code that the DSP can run at power-up, a voltage regulator, and input/output RC filters for the ADCs and DACs.

The photo below shows the AliExpress DSP module. The DSP chip (ADAU1401) and EEPROM chip are both powered by an on-module 3.3V regulator. There is a 12.288 MHz crystal on the module, which is suitable for 48 ksample/sec rates.

There are lots of pins labeled MP; these are multi-purpose connections, a bit like GPIO on a microcontroller. The Wave Miner PCB brings those connections out to pin headers so that future projects can be wired up, or plugged on top.

Building the Wave Miner


The PCB can be ordered by submitting the Gerber files to any PCB manufacturer such as JLC PCB or Elecrow. Refer to the bill of materials to see what needs to be ordered; the main parts are the DSP module and whatever connectors you plan to use. The earlier photos show the fully-populated board with all the connectors. The component L1 is a hand-wound choke, but it can be replaced by any ready-made one that fits the holes, or just use a wire link.

Once the board has been assembled, five jumper connections need to be made as shown here:


The blue jumpers are used to connect the BNC sockets to the input and output wires from the DSP module. For future experiments, you could disconnect the blue jumpers and patch jumper wires from the Wave Miner to a breadboard if desired.

The red jumper connection is used to select the power supply source. When set as shown in the diagram above, the DSP module is powered by the Pi.


The ribbon cable uses IDC connectors, these are not hard to do but need some practice with one or two spare connectors if you've never done it before. A vice is required for applying the force. Probably the better option is to buy a pre-assembled cable, it is cheaper too.


The PCB is designed to fit 1593W series Hammond plastic enclosures, part codes 1593WGY, 1593WBK or 1539WTBU (they are all the same, just different colors). The front and rear panels could also be manufactured as PCBs. For now, I just manually drilled holes in the plastic panels that come with the Hammond case. The details are in the diagram below (the cutout diagram is downloadable as a PDF from the GitHub page).


Summary


With a near-trivial amount of effort, it is possible to build the Wave Miner and be ready to experiment with DSP. The PCB files, schematic and bill of materials are at the GitHub site. I'll write up Part 2, which contains such experiments, within a day or two.


Thanks for reading!

Anonymous
  • colporteur
    colporteur 22 days ago in reply to shabaz

    I will leave just a WOW, coloured in green.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • colporteur
    colporteur 22 days ago in reply to shabaz

    Great summary, thank you. You must have a development area second to none.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • shabaz
    shabaz 22 days ago in reply to colporteur

    Protoboard version photo.. pretty much just the ready-made module, and connectors and an inductor and a capacitor or two.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • shabaz
    shabaz 22 days ago in reply to colporteur

    Hi Sean,

    Hopefully this timeline helps explain including motivation:

    July 2021 - First experiment with the DSP module from AliExpress, I didn't get a chance to work on it any further. I wrote that experiment at this link: First Steps with DSP which I re-read last month to recall how to use the module. I was originally keen to explore DSP for radio and for filtering (for speech or signals to measure noise in a bandwidth).

    March 2022 - I needed a signal generator to help with a RoadTest, so I considered making something with a DAC and rummaged around for any off-the-shelf DAC, but in the end I saw the DSP module and decided to prototype on Perfboard for that one use-case. But, then I started thinking it would be handy for other use-cases, and so I used KiCAD to make the PCB design. Since I had created the Perfboard prototype for the RoadTest, that gave me confidence the PCB would work too. The PCB just breaks out the connections from the ready-built DSP module, so it was quick to do. There is hardly any other circuitry on the board. Keeping it simple meant more chance of it working too.

    Mid April 2022 - I sent off the PCB files to JLC PCB on the 14th April. I didn't need to wait to write code, since I had the perfboard version. Also, I wrote the code for one or two examples.


    Third week of April 2022 - I got the PCB, and assembled the board that evening (there are not many parts on the board).  I was struggling with the web page work, so I asked a friend to help me. He worked his magic in a few evenings, we communicated via messenger (Signal/Whatsapp), i.e. working remotely. He raised any changes as GitHub requests, which I clicked to accept, and so his changes got automatically merged. He worked without the hardware. The code is split into command-line and web folders, in fact two separate GitHub links, which meant he could exclusively focus on just one GitHub link.

    End of April: Finished the apps (the DSP side doesn't take long because it is drag-and-drop of graphical elements, not any coding as such, and the C app side on the Pi I'm reasonably good at, since it is only using one protocol (I2C) - I used C but it would be equally good to do it in Python etc., whatever one is comfortable with that supports I2C). I wrote them up as I was coding them, and took photos/screenshots along the way although some were left to the end.


    I saved heaps of time by not creating a video (a video takes several evenings or a full day because I'm unable to do it in a single take, and in this case I did not think it was worth it, since it would have reduced the number of example apps I could do in the time.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • colporteur
    colporteur 23 days ago

    I'm curious to understand your motivation for first thinking of the idea and then following through with development. From my perspective, it was not an easy task. How long as the project been in the hopper?

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
>
Element14

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2022 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • Facebook
  • Twitter
  • linkedin
  • YouTube