Last two weeks we were familiarizing with the LPC1343 micro-controller and trying to sort our ideas out and also to get from very high-level project overview to concrete and detailed prototype. We made lots of achievements and in the process we learned a lot.
At first we wired USB cable, a LED, a potentiometer and an old Nokia 3310 display to the controller. USB cable is used for communication between our software and the main board using USB HID protocol. LED serves as an indicator for pulse-width modulation (PWM). With potentiometer we can test the functionality of AD converters and display is a very nice way how to test Serial Peripheral Interface Bus (or SPI). This protocol will be used to control Direct Digital Synthesizer (DDS) in our final design.
We really loved the performance of the LED display using SPI so we went crazy a little bit and we ended up with a funny Peanut Butter Jelly Time animation running on our prototype! See the image and the video below for evidence. :-)
While Biiter and Stick were trying to understand how the microcontroller works (and listening to Peanut Butter Jelly Time song for at least one hundred million times), Sargon got into designing the final board so we could get it printed. I think the following images are impressive and speak for themselves.
As you can see our main board design has one LPC1344 microcontroller (U1), three connectors for attaching various shields (SV1, SV3, SV4), one Direct Digital Synthesizer (U$1) for generating simple signals, one operational amplifier for amplifying this signal (U$3), another operation amplifier for amplifying input signals (U$2) and six switches to decide whether input signals need amplification or not (IC1-IC6).
We haven't forgot to work on our software as well! We now have a fully functional Python application which sends commands to mainboard via USB. One can set values for both PWM pins, control both OPAMPs, set the DDS frequency and waveform type, set the direction of IO pins and their values (if they are set to as output), set the state of the switches and the sampling rate for reading analog values and input pins.
This Debug module will not be a part of the final solution, but it is very critical for us now as we can read and set various main board properties. Next step would be to implement separate module (with easy to use user interface) for every prototype shield we create and create these shields as well.