Chirp! A Low Cost Function Generator

A cheap function generator for my lab that can do sine, square, and triangle waves and be automated using serial commands

Similar projects worth following
Chirp is an easy to use, lightweight, low cost function generator shield for the Arduino that features a GUI or serial terminal interface.

The entire project is open source hardware, firmware, and software!

We have working prototypes, but are planning a limited production run based on interest. We're planning on making minor tweaks and are welcoming feedback. What do you think?

This project started because I needed several higher frequency sync signals for some test equipment throughout a lab. There were a lot of options out there, but there were either pricey or limited feature set. After running across Analog Devices' DDS family, I thought it would be a fun and low cost way to solve the problem.

The scope expanded to a menu based serial terminal, and eventually a GUI for ease of configuration.

My goal was to make this available to other people that might want a low cost signal generator for work or their home lab, and to make the hardware, software, and firmware completely open source so that others can learn and grow the project!


  • Simple, easy to use serial and GUI interface
  • USB self-powered
  • Arduino shield
  • 80mA maximum output
  • Sine and Triangle (0V to 3V)
    • 0V to 3V output
    • 0 to 200KHz
  • Square waveform (0 to 4V)
    • 0V to 4V output
    • 0 to 2MHz

Est. Cost

As it stands and based on volume, we're targeting Chirp at $49 with the features listed above. Here's some possible enhancements:

  • Ditch the Arduino shield concept and make this a standalone function generator (+$6)
  • Offset adjustment to scale the signal from -5V to +5V (+$5)
  • Basic DAC reconstruction filter would allow Sine waves up to 1MHz (+$4)
  • Advanced DAC reconstruction filter, Sine waves up to 8MHz (+$10)

If you'd like one from our limited production run, click here.

  • 1 × AD9837 Analog Devices programmable waveform generator IC

  • Gradle Gradle Gradle!

    Mike Lemberger08/21/2016 at 03:22 0 comments

    The first hurdle I ran into while moving to a continuous integration tool (i.e. Travis), was migrating my build process from using the Eclipse IDE to a command line build tool. There are several options out there for this, but I decided on gradle for this project's build tool.

    What is gradle? It is a flexible general purpose build tool, like make, maven, or ant. Being an embedded c programmer, I was very familiar with make but wanted to learn more about some of the newer build tools out there, which is mainly why I chose gradle.

    One of the nice things over make is that gradle already has a build plugin for java. For those of you new to gradle, I would recommend checking out the gradle plugin for java.

    Modify Default Gradle Folders

    I wanted to change the gradle the default directory from src/main/java and /src/main/resources to src/ and lib/ for its source folder and resources folder respectively.

    sourceSets { 'src/'
    	main.resources.srcDir 'lib/'

    Read more »

  • Open Sourcing a Project

    Mike Lemberger08/14/2016 at 18:42 0 comments

    What I found is that there are a variety of different licenses out there, and selecting one depends on the author's preference for the project. One of the goals of Chirp is to make the hardware, software, and firmware freely available for others to learn and grow the project.

    A great resource for this was, especially their FAQ page. In addition, this page was helpful in narrowing down the license that we wanted to use for Chirp.

    Ultimately, we wanted to use Copyleft and decided on the GPLv3 because we wanted to make sure that derivative work is made available under the same terms.

    Implementing the license was straight forward, we added a copyright and boilerplate heading to every source file and attached a copy of the GPLv3 license in a file named `COPYING`.

  • What's all this Continuous Integration stuff anyhow?

    Mike Lemberger08/12/2016 at 02:55 0 comments

    This title is in honor of the great Analog Engineer, Bob Pease, who helped me learn that as an engineer, you're never done learning...

    Continuous integration is a beautiful thing! A practice only new to me as of about a year ago, continuous integration (CI) allows for code to be built as soon as it's checked into your Version Control System (VCS).

    So why is this important? Imagine, before continuous integration, broken code (i.e. code that does not compile) would be checked into VCS and no one would know about it until another developer would check the code out and attempt to build. Only then would the second developer realize there was an issue, and have to scramble to either fix the issue or find the developer responsible.

    Read more »

  • Goodbye rxtx, Hello nrjavaserial!

    Mike Lemberger08/10/2016 at 21:24 0 comments

    The Chirp GUI application was previously using RXTXcomm JAR from and the Windows 64-bit DLLs from Mfizz for its serial communications.

    Read more »

View all 4 project logs

Enjoy this project?



Thomas wrote 10/07/2017 at 17:42 point

Hi Mike, you shared some insights into how to get started with CI, that's nice!
How did this resonated with the HaD crowd? How much response did you get (if any)?

  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