PlainDAQ - DAQ Module for Raspberry Pi Pico

Open Source DAQ module for Raspberry Pi Pico

Public Chat
Similar projects worth following
PlainDAQ is a simple, useful tool to add basic precision analog functionality to your Raspberry Pi Pico board. It has a precision, low-noise, low-drift 12-bit 500k ksps/s ADC. It also has 10-bit 4.5us DAC which helps create analog outputs and waveforms.

PlainDAQ generates ±5 V voltages to offer bipolar power supply, which is typically difficult to generate. To support all of these features PlainDAQ includes a stable voltage reference with 20 ppm/°C drift.

PlainDAQ is in development process. I decided to share the development process and document every difficulty I experience.

Optionally PlainDAQ also contains a Wi-Fi module remote logging.

PlainDAQ is now on CrowdSupply, Subscribe to PlainDAQ if you want to get notified**
**The pre-launch page will be updated soon with new revisions

Here is the quick list of Features & Specifications:

Analog Inputs:

  • 4 Channels (multiplexed)
  • 12-bit resolution, 72 dB SNR (11.6 ENOB, 4000:1 dynamic range)*
  • 500 kS/s sampling rate
  • ±0.5 V, ±1 V, ±2 V, ±4 V bipolar ranges
  • Auto-offset calibration

Analog Output:

  • 10-bit resolution
  • 50 kS/s sampling rate
  • ±4 V bipolar range

Voltage Reference:

  • 2.5 V, 20 ppm/°C (Typical) Drift
  • Calibrate to 0.05 %, Stored in as ROM as calibration data

Bipolar Voltage Supply:

  • ±5 V power output.
  • ±100 mA current rating.

ESP-WROOM-02D AT-Command Module (Optional):

  • Simple UART interface to Raspberry Pico
  • 2.4 GHz Wi-Fi 802.11 b/g/n
  • Shipped with ESP AT firmware

    • 1 × MCP33141D-05 or MCP33111D-05 ADC
    • 1 × MCP4911 Data Converters / Digital to Analog Converters (DACs)
    • 1 × LM4040DYM3-4.1-TR Electronic Components / Misc. Electronic Components
    • 5 × TMUX1247 Switches and Multiplexers / Analog Switches and Multiplexers
    • 1 × AP62200Z6-7

    View all 8 components

    • GUI - Cursor Control (Help me decide)

      Alperen06/01/2022 at 12:41 0 comments

      Subscrine to PlainDAQ if you want to get updated: SUBSCRIBE

      Note: Pre-launch page will be updated soon. The pictures shown in the pre-launch page are old.

      GUI update
      Hello once again!
      Finally I've had time to work on PlainDAQ's GUI. I worked on vertical cursors and I came up with two ways to control vertical cursors and I am trying to decide which way is the best.

      Please see the video and let me know which way you think is the best.

    • POLL Results

      Alperen05/12/2022 at 08:54 0 comments

      I've conducted a poll in Twitter and Reddit to decide which wireless module (Wi-Fi or BLE) to use and results are here:



      In total 110 people voted and majority of them want the Wi-Fi Module. 

      Seems like I'm going for the wi-fi module. 

    • Finishing the Layout for the New Revision

      Alperen05/10/2022 at 16:48 0 comments

      Finishing the PCB layout, I gotta be more careful to place the components, I am running out of space 

    • Building a Reconstruction Filter for the DAC

      Alperen05/09/2022 at 10:34 0 comments

      Developing a reconstruction filter for the DAC in PlainDAQ, to get nice looking sinewaves.
      Compared Sallen-key(SK) and Multiple feedback(MFB) topologies.
      MFB performed much better in the stop-band.

      LTSPICE files:

      I had to choose between sallen-key or Multiple feedback topology, so I compared them.

      Here are the circuits that I compared:

      FSTh7YkXsAA9D6r (1185×891)Here are the results:

      FSTilZDWQAEkgYG (1333×888)Multiple feedback performed much better in attenuating the stop band.

      Added them to the schematic in my KiCAD project. I also added a switch to switch between filtered and non-filtered DAC output to see the difference between, it's going to be a fun little experiment.

      With the help of the switch I will be able to generate square waves with faster rise-time by using the non-filtered DAC output which is a plus.

      Subscribe to PlainDAQ if you want to get update! We have just released a new update.

    • New revision - New Decisions to Make (Feedback Required)

      Alperen05/04/2022 at 19:21 0 comments

      I’ve been working on a number of different aspects of PlainDAQ lately. In particular, I’ve been cost optimizing the PCB, picking components that are easy to source, and working on an intuitive graphical user interface.

      To help me decide, please join the Twitter poll Twitter Poll or e-mail me at or comment below 

      Recent Changes to the PCB

      • I moved all the terminals to the same side so they are easier to use. (In the previous version, analog inputs and outputs were on opposite sides, which would have been inconvenient when using both inputs and outputs.)
      • The front-end is a bit more complicated, but it's a lot cheaper and has the same performance.
      • The form factor has changed as well. PlainDAQ was previously 75 x 60 mm, and it's now an 80x60 mm rectangle, so it has a slightly larger footprint.
      • I added a new visual that displays the basic input and output capabilities of the board along with a cool diagram.
      • I added a Qwiic connector.
      • I changed the terminal to a more affordable type. The new terminals also accept Dupont cables which is going to make it easier for you to interface with PlainDAQ.

      Help Me Decide Between Wi-Fi & Bluetooth…

      I need change the wireless module, but I need your help to decide between…

      1. An ESP-WROOM-02 Wi-Fi module (first render below)
      2. An HM-BT4502(A) BLE module (second render below)

      New PlainDAQ with ESP-WROOM-02 (Wi-Fi)

      New PlainDAQ with HM-BT4502(A) (BLE)

      To help me decide, please join the Twitter poll Twitter Poll or e-mail me at or comment below 

    • Working on a Revision

      Alperen04/29/2022 at 00:17 0 comments

      I've been working on a new revision of PlainDAQ and I had an empty space left on my PCB. I decided to fill it up with some visuals related to sampling theory.

      Here is what I've drawn: The thick line supposed to be the signal that's being measured and the dotted line supposed to be the reconstructed waveform. To be honest not sure if it's terrrible accurate depiction.  

      Let us hope that it will be printed well on the silkscreen layer  

      I drew this on inkscape and imported it to KiCAD via image converter.

    • Matplotlib Cursor Test

      Alperen04/19/2022 at 12:05 0 comments

      I've been thinking about what features to add to PlainDAQ's GUI.

      Here is one of them: Movable/Interactive Vertical cursors for viewing real-time statistical data.

      Simply by using middle mouse button and dragging it while holding the middle button you can place veritcal cursors. You can analyze the data in between the cursors.

      Some people said that it's very wierd to use middle mouse button for that purpose. What are your thoughts?

    • Plans to Make Matplotlib Faster

      Alperen03/23/2022 at 06:18 0 comments

      I was advised to manually handle garbage collection to make it faster and smoother in eevblog forum.
      The problem is that the term garbage collection is pretty foreign to me.

      As it turns out by using garbage collection optimally we can overcome much of the "Hiccups" that we saw in the previous log's stress test.

      I guess I start learning about garbage collecton concept soon, but right now I'll just develop the GUI with python handling the garbage collection maybe later I go into it.

      Kudos to Berni the super contributor in eevblog:

      eevblog link:

    • Pushing Matplotlib

      Alperen03/19/2022 at 13:10 0 comments

      Before I start developing GUI for PlainDAQ, I wanted to see how far I can push matplotlib

      It can run at 60 FPS if you push it to its limits, which is more than I need.
      There are occasional hiccups, but I think it's fine.

      Here is the code if you're curious:

      The graph is embedded in tkinter because I am thinking about developing the GUI with tkinter and matplotlib.

    • Terminal Type/Color Selection

      Alperen03/15/2022 at 10:25 0 comments

      I've been searching for better looking terminals, and I've found 3 different terminals with colors. They are shown below.

      I'm not sure which one to pick really, but once I get my hands on them I'll be sharing photos of PlainDAQ with each one to get some feedback, stay tuned!

    View all 11 project logs

    Enjoy this project?



    Jacob wrote 03/23/2022 at 15:18 point

    Can confirm that matplotlib is very slow w/ regards to garbage collection. Its not really meant to be updated constantly for live rendering. In another project I wrote my own simple graphing package to give me a high update rate for live view, and then I kept matplotlib if I want to look at saved data. Good luck!

      Are you sure? yes | no

    Alperen wrote 03/23/2022 at 16:25 point


    You wrote graphing package from scratch? :D

      Are you sure? yes | no

    Jacob wrote 03/24/2022 at 20:31 point

    Just a quick one so that I could see the data coming in. It was not feature-rich so it didn't take too long. All of my exported plots were using a 'real' graphing package.

      Are you sure? yes | no

    Similar Projects

    Does this project spark your interest?

    Become a member to follow this project and never miss any updates