Tuesday, February 26, 2013

Using a Freescale Freedom board with mbed environment

For a few years now the mbed platform has given beginners and enthusiasts alike an easy entry to embedded hardware development via the cloud-based IDE/compiler and hardware based around NXP Cortex-M3 hardware. However the hardware entry cost hasn't been that competitive, and the platform has perhaps languished. But no more! You can now use the Freescale Freedom FRDM-KL25Z board with mbed. The mbed bootloader is now available for this powerful and incredibly cheap board - and thus reducing the setup process from almost a gigabyte of IDE to a simple web browser. 

To use your Freedom board with mbed is very simple - we've tested it and simplified the process for you below:

  • If you don't already have one - get a Freedom board
  • Download and install USB drivers available from here
  • Visit mbed.org and create a user account
  • Follow the instructions to download and install the mbed bootloader from here
  • Create your first program from here
  • Learn how to install the compiled .bin program file onto your Freedom board from here 


And off you go - it couldn't be easier. If you're wondering what a Freedom board is - it's a powerfu development board from Freescale. With a low-power ARM® Cortex™-M0+ 48 MHz processor, USB OTG interface, accelerometer, RGB LED and capacitive touch slider and more - it's an inexpensive development board that's fully supported by Freescale and third-party development software. For more details, data sheets and to order - click here.

And for more news and updates, please follow us on twitterFacebook and Google+ - and don't forget to check out Ninja Blocks!

Monday, February 25, 2013

Arduino tutorial 15a – RFID with Innovations ID-20

Learn how to use RFID readers with your Arduino. In this instalment we use the Innovations ID-20 RFID reader. The ID-12 and ID-2 are also compatible. If you have the RDM630 RFID reader, we have a different tutorial.

This is part of a series originally titled “Getting Started with Arduino!” by John Boxall – A tutorial on the Arduino universe. The first chapter is here, the complete series is detailed here.

Updated 26/02/2013

RFID – radio frequency identification. Some of us have already used these things, and they have become part of everyday life. For example, with electronic vehicle tolling, door access control, public transport fare systems and so on. It sounds complex – but isn’t. In this tutorial we’ll run through the basics of using the ID-20 module then demonstrate a project you can build and expand upon yourself.


To explain RFID for the layperson, we can use a key and lock analogy. Instead of the key having a unique pattern, RFID keys hold a series of unique numbers which are read by the lock. It is up to our software (sketch) to determine what happens when the number is read by the lock.  The key is the tag, card or other small device we carry around or have in our vehicles. We will be using a passive key, which is an integrated circuit and a small aerial. This uses power from a magnetic field associated with the lock. Here are some key or tag examples:

In this tutorial we’ll be using 125 kHz tags – for example. To continue with the analogy our lock is a small circuit board and a loop aerial. This has the capability to read the data on the IC of our key, and some locks can even write data to keys. And out reader is the Innovations ID-20 RFID reader:

Unlike the RDM630 reader in the other RFID tutorial – the ID-20 is a complete unit with an internal aerial and has much larger reader range of around 160 mm. It’s a 5V device and draws around 65 mA of current. If you have an ID-12 it’s the same except the reader range is around 120mm; and the ID-2 doesn’t have an internal aerial. Connecting your ID-20 reader to the Arduino board may present a small challenge and require a bit of forward planning. The pins on the back of the reader are spaced closer together than expected:

… so a breakout board makes life easier:

… and for demonstration and prototyping purposes, we’ve soldered on the breakout board with some header pins:

 The first thing we’ll do is connect the ID-20 and demonstrate reading RFID tags. First, wire up the hardware as shown below:

If you’re using the breakout board shown earlier, pin 7 matches “+/-” in the diagram above. Next, enter and upload the following sketch (download):

// Example 15a.1
#include <SoftwareSerial.h> SoftwareSerial id20(3,2); // virtual serial port char i; void setup()  { Serial.begin(9600); id20.begin(9600); }
void loop ()  { if(id20.available()) { i = id20.read(); // receive character from ID20 Serial.print(i); // send character to serial monitor Serial.print(" "); } }

Note that we’re using a software serial port for our examples. In doing so it leaves the Arduino’s serial lines for uploading sketches and the serial monitor. Now open the serial monitor window, check the speed is set to 9600 bps and wave some tags over the reader – the output will be displayed as below (but with different tag numbers!):

Each tag’s number starts with a byte we don’t need, then twelve that we do, then three we don’t. The last three aren’t printable in the serial monitor. However you do want the twelve characters that appear in the serial monitor.  While running this sketch, experiment with the tags and the reader… get an idea for how far away you can read the tags. Did you notice the tag is only read once – even if you leave it near the reader? The ID-20 has more “intelligence” than the RDM630 we used previously. Furthermore when a tag is read, the ID-20 sends a short PWM signal from pin 10 which is  just under 5V and lasts for around 230 ms, for example (click image to enlarge):

 This signal can drive a piezo buzzer or an LED (with suitable resistor). Adding a buzzer or LED would give a good notification to the user that a card has been read. While you’re reading tags for fun, make a note of the tag numbers for your tags – you’ll need them for the next examples.

RFID Access System

Now that we can read the cards, let’s create a simple control system. It will read a tag, and if it’s in the list of allowed tags the system will do something (light a green LED for a moment). Plus we have another LED which stays on unless an allowed tag is read.  Wire up the hardware as shown below (LED1 is red, LED2 is green – click image to enlarge):

Now enter and upload the following sketch (download):

// Example 15a.2
#include  SoftwareSerial id20(3,2); // virtual serial port
// add your tags here. Don't forget to add to decision tree in readTag(); String Sinclair = "4F0023E2129C"; String Smythe = "4F0023CC9737"; String Stephen = "010044523C2B";
String testcard;  char testtag[12];  int indexnumber = 0;  char tagChar;
void setup()  { Serial.begin(9600); pinMode(7, OUTPUT); // this if for "rejected" red LED pinMode(9, OUTPUT); // this will be set high when correct tag is read. Use to switch something on, for now - a green LED.  id20.begin(9600);  digitalWrite(7, LOW); digitalWrite(9, LOW); }
void approved() // when an approved card is read { digitalWrite(9, HIGH); Serial.println("yes");  delay(1000); digitalWrite(9, LOW); }
void notApproved() // when an unlisted card is read { digitalWrite(7, HIGH); Serial.println("no"); delay(100); digitalWrite(7, LOW); }
void readTag() { tagChar = id20.read(); if (indexnumber != 0) // never a zero in tag number { testtag[indexnumber - 1] = tagChar; } indexnumber++; if (indexnumber == 13 ) // end of tag number { indexnumber = 0; testcard = String(testtag); if (testcard.equals(Sinclair)) {  approved();  }  else if (testcard.equals(Smythe)) {  approved();  } else if (testcard.equals(Stephen)) {  approved();  } else {  notApproved();  } } }
void loop() { readTag(); }

In the function readCard() the sketch reads the tag data from the ID-20, and stores it in an array testtag[]. The index is -1 so the first unwanted tag number isn’t stored in the array. Once thirteen numbers have come through (the one we don’t want plus the twelve we do want) the numbers are smooshed together into a string variable testcard with the function String. Now the testcard string (the tag just read) can be compared against the three pre-stored tags (Sinclair, Smythe and Stephen).

Then it’s simple if… then… else to to see if we have a match, and if so – call the function approved() or disApproved as the case may be. In those two functions you store the actions you want to occur when the correct card is read (for example, control a door strike or let a cookie jar open) or when the system is waiting for another card/a match can’t be found. If you’re curious to see it work, check the following video where we take it for a test run and also show the distances that you have to work with:


Hopefully this short tutorial was of interest. We haven’t explored every minute detail of the reader – but you now have the framework to move forward with your own projects.

Have fun and keep checking into tronixstuff.com. Why not follow things on twitterGoogle+, subscribe  for email updates or RSS using the links on the right-hand column, or join our Google Group – dedicated to the projects and related items on this website. Sign up – it’s free, helpful to each other –  and we can all learn something.


Sunday, February 17, 2013

Controlling LCD modules with ATtiny45

When creating many Arduino-compatible projects some people are downsizing to the ATtiny45/85 microcontrollers due to the cheaper price and ease of programming. However with only 8 pins you would think not too much could be possible. To demonstrate what can be possible, Instructables user "baharini" shows how to use an ATiny45/85 with Arduino bootloader and a 74HC595 shift register to drive a full-sized HD44780-compatible LCD module. It's quite simple and works well - plus cheaper than using an ATmega328.

For more information and detailed tutorial, start here. And for more news and updates, please follow us on twitterFacebook and Google+ - and don't forget to check out Ninja Blocks!

If you find yourself programming ATtiny45/85 microcontrollers now and again - save time and hardware assembly with the new Tiny AVR Programmer:

With a simple USB interface it makes programming the little ATtinys with Arduino a breeze, and is supported in Windows, MacOS and Linux. Plus there's a GPIO LED and breakout pins to use it is a basic development board as well. For more informationa and to order click here.

Tuesday, February 12, 2013

Kit Review – SC/Jaycar Garbage and Recycling Reminder


Every month Australian electronics magazine Silicon Chip publishes a variety of projects, and in January 2013 they published the “Garbage Recycling Reminder” by John Clarke. Jaycar picked it up and now offers a kit, the subject of our review. This kit solves the old but recurring (for some) problem – which bin to put out, and when!

The kit offers a simple way of keeping track of the bin schedule, and is suitable for up to four bins. With a simple user-interface consisting of a button and LED for each bin – once setup the reminder can easily be used by anyone. It allows for weekly, fortnightly and alternate fortnights – which is perfect for almost every council’s schedule.


The kit arrives in typical Jaycar fashion:

and includes everything you need, including an enclosure, front panel sticker and battery:

 The PCB is well done, and routed nicely to fit inside the enclosure:

Now to get started. The instructions included are a reprint of the magazine article, and as Jaycar have modified the kit a little, their notes and photos are also included. However there isn’t anything to worry about.

Assembly is straight-forward, the only annoying thing was the assumption that the constructor will use off-cuts for jumper links. Instead – use your own header pins:

Furthermore, when soldering in the resistors and 1N914 diodes next to the LEDs – leave them floating so you can move them a bit to make way for the LEDs:

This is also a good time to check the buttons line up with the holes drilled into the front panel (a template is included with the instructions):

At this point you can fit the LEDs to the PCB, and carefully match it up with the drilled lid. You are supplied with a red, green, yellow and blue LED – which generally match the bin lid colours from various councils. Screw the PCB into the lid then solder the LEDs in – after double-checking they protrude out of lid. Then insert the battery and make a final test:


If you made it that far, you can apply the sticker included to illustrate the front panel. To save time we cut the sticker up for a minimalist look. However you now need to set-up the jumpers before closing the box up. There is a set of three pins for each bin, and a jumper can bridge the first two or last two pins, or none. If you don’t bridge them – that bin is weekly. If you bridge the first two – that bin is fortnightly from the setup day. If you bridge the last two – that bin is fortnightly from the next week, for example:

So you can easily set it up for a weekly bin and an alternating-fortnight pair of bins. Once you’ve setup the jumpers, screw up the box and you’re done.


Once you’ve set the jumpers up as described earlier, you just need to execute the programming function at the time you want the reminders to start every week. For example, if your weekly collection is 4 AM on a Thursday – do the programming around 5pm Wednesday night – that will then be the time the LEDs start blinking. When you put out the appropriate bin, press the button below the matching bin LED to stop the blinking. You can control the number of bins – so if you only have two bins, only two LEDs will activate. The blinking period is eighteen hours, and you can adjust the start time via the buttons.

How it works

The circuit is based around a Microchip PIC16LF88 and has an incredibly low current draw, around 15 uA when the LEDs aren’t blinking. This allows the circuit to run for over two years on the included 3v coin cell battery. The internal clock is kept accurate to around 10 minutes per year using an external 32.768 kHz crystal. After a period of use the battery voltage may drop to a level insufficient to adequately power the LEDs, so each one has a voltage doubler by way of a diode and capacitor – very clever. This ensures LED brightness even with a low battery. For complete details purchase the kit or a copy of the January 2013 edition of Silicon Chip.

Now it sits next to the kettle, waiting for bin night…


Personally I needed this kit, so I’m a little biased towards it. However – it’s simple and it works. Kudos to John Clarke for his project. You can purchase it from Jaycar and their resellers, or read more about it in the January 2013 edition of Silicon ChipFull-sized images available on flickr. This kit was purchased without notifying the supplier.

In the meanwhile have fun and keep checking into tronixstuff.com. Why not follow things on twitterGoogle+, subscribe  for email updates or RSS using the links on the right-hand column? And join our friendly Google Group – dedicated to the projects and related items on this website. Sign up – it’s free, helpful to each other –  and we can all learn something.

Friday, February 8, 2013

First look: Arduino Due


After much waiting the Arduino Due has been released, so let’s check it out. We’ll run through the specifications and some areas of interest, see what’s different, some random notes – then try out some of the new features. Before moving forward note that it might look the same - the Due is not a drop-in replacement for older boards – even the Mega2560. It’s different.

First announced in late 2011, the Due is the Arduino team’s first board with a 32-bit processor – the Atmel SAM3X8E ARM Cortex-M3 CPU. With an 84 Mhz CPU speed and a host of interfaces and I/O, this promises to be the fastest and most functional Arduino board ever. According to the official Arduino press release:

Arduino Due is ideal for those who want to build projects that require high computing power such as the remotely-controlled drones that, in order to fly, need to process a lot of sensor data per second.
Arduino Due gives students the opportunity to learn the inner workings of the ARM processor in a cheaper and much simpler way than before.
To Scientific projects, which need to acquire data quickly and accurately, Arduino Due provides a platform to create open source tools that are much more advanced than those available now.
The new platform enables the open source digital fabrication community (3d Printers, Laser cutters, CNC milling machines) to achieve higher resolutions and faster speed with fewer components than in the past.

Sounds good – and the Due has been a long time coming, so let’s hope it is worth the wait. The SAM3X CPU holds a lot of promise for more complex projects that weren’t possible with previous ATmega CPUs, so this can be only a good thing.


First of all, here’s the Due in detail – top and bottom (click to enlarge):

You can use Mega-sized protoshields without any problem (however older shields may miss out on the upper I2C pins) – they’ll physically fit in … however their contents will be a different story:

The specifications of the Due are as follows (from Arduino website):

Microcontroller AT91SAM3X8E
Operating Voltage 3.3V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 54 (of which 12 provide PWM output)
Analog Input Pins 12
Analog Outputs Pins 2 (DAC)
Total DC Output Current on all I/O lines 130 mA
DC Current for 3.3V Pin 800 mA
DC Current for 5V Pin 800 mA
Flash Memory 512 KB all available for the user applications
SRAM 96 KB (two banks: 64KB and 32KB)
Clock Speed 84 MHz

Right away a few things should stand out – the first being the operating voltage – 3.3V. That means all your I/O needs to work with 3.3V – not 5V. Don’t feed 5V logic line into a digital input pin and hope it will work – you’ll damage the board. Instead, get yourself some logic level converters. However there is an IOREF pin like other Arduino boards which intelligent shields can read to determine the board voltage. The total output current for all I/O lines is also 130 mA … so no more sourcing 20mA from a digital ouput for those bright LEDs.

Each digital I/O pin can source 3 or 15 mA – or sink 6 ot 9 mA … depending on the pin. High-current pins are CAN-TX, digital 1, 3~12, 23~51, and SDA1. The rest are low current. And there’s still an LED on digital 13. You will need to redesign any existing projects or shields if moving to the Due.

The analogue inputs now have a greater resolution – 12-bits. That means it can return a value of  0~4095 representing 0~3.3V DC. To activate this higher resolution you need to use the function analogReadResolution(12).

Memory – there isn’t any EEPROM in the SAM3X – so you’ll need external EEPROMs to take care of more permanent storage. However there’s 512 KB of flash memory for sketches – which is huge. You have to see it to believe it:

Excellent. A new feature is the onboard erase button. Press it for three seconds and it wipes out the sketch. The traditional serial line is still digital 0/1 – which connect to the USB controller chip.

Hardware serial – there’s four serial lines. Pulse-width modulation (PWM) is still 8-bit and on digital pins 2~13.

The SPI bus is on the ICSP header pins to the right of the microcontroller – so existing shields that use SPI will need to be modified – or experiment with a LeoShield:

You can also use the extended SPI function of the SAM3X which allow the use of digital pins 4, 10 or 52 for CS (chip select).

The SAM3X supports the automtive CAN bus, and the pins have been brought out onto the stacked header connectors – however this isn’t supported yet in the IDE.

There are two I2C buses – located on digital 20/21 and the second is next to AREF just like on the Leonardo.

There’s a 10-pin JTAG mini-header on the Due, debug pins and a second ICSP for the ATmega16U2 which takes care of USB. Speaking of USB – there’s two microUSB sockets. One is for regular programming via the Arduino IDE and the USB interface, the other is a direct native USB programming port direct to the SAM3X.

The SAM3X natively supports Ethernet, but this hasn’t been implemented on the hardware side for the Due. However some people in the Arduino forum might have a way around that.

Using the Due

First of all – at the time of writing – you need to install Arduino IDE v1.5.1 release 2 – a beta version. Windows users – don’t forget the USB drivers. As always, backup your existing installation and sketch files somewhere safe – and you can run more than one IDE on the same machine.

When it comes time to upload your sketches, plug the USB cable into the lower socket on the Due – and select Arduino Due (Programming Port) from the Tools>Board menu in the IDE.

Let’s upload a sketch now (download) – written by Steve Curd from the Arduino forum. It calculates Newton Approximation for pi using an infinite series. As you can see from the results below, the Due is much faster (690 ms) than the Mega2560 (5765 ms). Click the image to enlarge:

Next, let’s give the digital-to-analogue converters a test. Finally we have two, real, 12-bit DACs with the output pins being … DAC0 and DAC1. No more mucking about with external R-C filters to get some audio happening. These pins provides true analogue outputs which is controlled by the analogWrite() function. To use them is very simple – consider the following example sketch which creates a triangle wave:

void setup()  { analogWriteResolution(12); // 12-bit! }
void loop()  { for(int x=0; x<4096; x++)  { analogWrite(DAC0, x); // use DAC1 for ... DAC1 } for(int x=4095; x>=0; --x)  { analogWrite(DAC0, x); } }  And the results from the DSO (click image to enlarge):

This opens up all sorts of audio possibilities. With appropriate wavetable data saved in memory you could create various effects. With the IDE there are example sketches that can play a .wav file from an SDcard – however I’d still be more inclined to use an external shield for that. Nevertheless for more information, have a look at the Audio library. In the future we look forward to experimenting further with the Due – so stay tuned.

Getting a Due

Good luck … at the time of writing – the Dues seem to be very thin on the ground. This may partly be due to the limited availability of the Atmel SAM3X8E. My contacts in various suppliers say volumes are quite limited.


I really hope this is a rare event, however one of the Dues received had the following fault in manufacturing:

One side of the crystal capacitor wasn’t in contact with the PCB. However this was a simple fix. How the QC people missed this … I don’t know. However I’ve seen a few Arduinos of various types, and this error is not indicative of the general quality of Arduino products.

Where to from here?

Visit the official Arduino Due page, the Due discussion section of the Arduino forum, and check out the reference guidefor changes to functions that are affected by the different hardware.


Well that’s my first take on the Due – powerful and different. You will need to redesign existing projects, or build new projects around it. And a lot of stuff on the software side is still in beta. So review the Due forum before making any decisions. With that in mind – from a hardware perspective – it’s a great step-up from the Mega2560.

So if you’re interested – get one and take it for a spin, it won’t disappoint. The software will mature over time which will make life easier as well. If you have any questions (apart from Arduino vs. Raspberry Pi) leave a comment and we’ll look into it.

Have fun and keep checking into tronixstuff.com. Why not follow things on twitterGoogle+, subscribe  for email updates or RSS using the links on the right-hand column, or join our Google Group – dedicated to the projects and related items on this website. Sign up – it’s free, helpful to each other –  and we can all learn something.

Wednesday, February 6, 2013

Kit Review – JYE Tech FG085 DDS Function Generator


There has been a lot of talk lately about inexpensive DDS (direct digital synthesis) function generators, and I always enjoy a kit – so it was time to check out the subject of this review. It’s the “FG085 miniDDS function generator” from JYE Tech. JYE is a small company in China that makes inexpensive test equipment kits, for example their capacitance meter (my first kit review!) and DSO. The capacitance meter was good, the DSO not so good – so let’s hope this is better than their last efforts.


The instructions (AssemblyGuide_085G) are much better than previous efforts, and if you have bought the kit – read them. The kit arrives in a large zip-lock bag, with the following bundle of parts:

The AC adaptor is 100~240V in, 15V DC out. Everything is included with the kit including a short BNC to alligator clips lead for output. The PCBs are very good, with a nice solder mask and silk screen:

and back:

At this point we realise that most of the work is already done. There’s two microcontrollers ATmega48 and ATmega168- one for display and user-interface control, and the other for function generation. It takes only a few minutes to solder in the through-hole parts, headers and sockets:

… then you flip over the PCB and add the LCD:

… followed by the buttons and rotary encoder. From previous research this is the part that causes people a lot of trouble – so read carefully. There’s a lot of buttons – and if they aren’t inserted into the PCB correctly your life will become very difficult. The buttons must be inserted a certain way – they’re “polarised” – for example:

As you can see above, one side has a double-vertical line and the other side has a single. When you fit the buttons to the PCB – the side with the double-vertical must face the left-hand side of the PCB – the side with the DC socket. For example:

Furthermore, don’t be in a rush and put all the buttons in then try to solder them all at once.  Do them one at a time, and hold them tight to the PCB with some blu-tac or similar. If they don’t sit flush with the PCB the front panel won’t fit properly and the buttons will stick when in use. So exercise some patience, and you’ll be rewarded with an easy to use function generator. Rush them in and you’ll be very unhappy. I warned you! After fitting each button, test fit the front panel to check the alignment, for example:

Then you end up with nicely-aligned buttons:

… which all operate smoothly when the panel is fitted:

After the buttons comes the rotary encoder. Be very careful when fitting it to the PCB – the data legs are really weak, and bend without much effort. If you push in the encoder, be mindful of the legs not going through the holes and bending upwards. Furthermore, when soldering in the encoder note that you’re really close to an electrolytic – you don’t want to stab it with a hot iron:

The CP2012 chip in the image above is for the USB interface. More on that later. Now the next stage is the power-test. Connect DC power and turn it on – you should be greeted by a short copyright message followed by the operation display:

If you didn’t – remove the power and check your soldering –  including the capacitor polarities and look for bridges, especially around the USB socket. Now it’s time to fit the output BNC socket. For some reason only known to the designers, they have this poking out the front of the panel for the kit – however previous revisions have used a simple side-entry socket. Thus you need to do some modifications to the supplied socket. First, chop the tag from the sprocket washer:

… then remove the paper from the front panel:

Now solder a link to the washer in a vertical position:

… then fit the BNC socket to the panel, with the washer aligned as such:

Finally, align the top panel with the PCB so the BNC socket pin and washer link drop into the PCB and solder them in:

If you want to use the servo mode, solder three short wires that can attach to a servo form the three “output” pads between the BNC and USB socket.

Finally, screw in the panels and you’re finished!

Using the function generator

Operation is quite simple, and your first reference should be the manual (manual.pdf). The display defaults to normal function generator mode at power-up – where you can adjust the frequency, offset, amplitude and type of output – sine, square, triangle, ramp up, ramp down, staircase up and down:

The ranges for all functions is 0~10 khz, except for sine which can hit 200 kHz. You can enter higher frequencies, such as up to 250 kHz for sine – but the results aren’t so good.

Instead of filling this review with lots of screen dumps from an oscilloscope to demonstrate the output – I’ve made the following video where you can see various functions being displayed on a DSO:


You can also create signals to test servos, with adjustable pulse-width, amplitude and cycle times. However you’ll need to solder three wires onto the PCB (next to the BNC socket area) to attach to the servo.

According to the user manual and various retailers’ websites – the FG085 can generate frequency sweeping signals. These are signals that sweep from a start to as finish frequency over a period of time. However the firmware on the supplied unit is old and needs updating to enable this function. You can download the firmware in .hex file format from here. Then go and dig up an AVR programmer and avrdudeAt the time of writing we had some issues with the signature not being recognised when updating the firmware, and solidly bricked the FG085. Our fault – so when that’s sorted out we’ll update the review – stay tuned.

There is also a USB port on the side – after installing CP2102 drivers in Windows we could connect at 115200 bps with terminal, however all the FG085 returned was the firmware version number. Perhaps later on the designers will update the firmware to allow for PC control. Somehow I wouldn’t bank on it.

Oh – if you’re wondering what DDS is - click here!


It’s an interesting piece of equipment. Putting the firmware upgrade issues to one side, the FG085 does what it sets out to do. During testing it worked well, and we didn’t come across any obvious inaccuracies during use.  The price varies between US$43 and $50 – so for that money it’s  a good kit. Just take care during construction and you’ll be fine.

The function generator is available in kit form or assembled, with or without panels from China. The kit version with panels is also available from Sparkfun (KIT-11394) and their resellers. Full-sized images available on flickr. This kit was purchased and reviewed without notifying the supplier.