Wing5
Introduction
This is a 5 Channel fader wing that can be soldered at home, with no special soldering experience.
Due to Distributor Stocks the LPC1114FN28 is discontinued, even it is on the Long term Support list of NXP. Due to this fact I will make some fixes and then freze the design. (Done on 05 September 2016, last Version is PA3).
I will switch to a different SoC for Wing5-Version B. Options are:
- PIC32 in DIP28 Package. It does not offer as much I/O pins as the LPC1114FN28. I may drop the I2C interface.
- Arduino compatible footprint. This makes the Wing5 a shield.
- Arduino Mini/Micro/Nano compatible. This makes it possible to use small of the shelf modules.
- Use and SMD part for the SoC.
The Goals
- use open source tools only - everyone should be able to change it to their needs.
- Only thruhole parts for easy home soldering.
- PCB size of 100mm x 160mm. These are often explemly cheap to get from pool manufacturers (in comparison to the size).
- standard parts, easy to buy from stock distributors.
- should be able to comunicate with other microcontrollers or with a PC
The Board
The board uses an LPC1114FN28, which by now is the only ARM-Cortex microcontroller within a thruhole package.
It is fast, does not need an external oscillator and has 22GPIO pins and a lot of peripherals available.
It is not cheap but can be bought from a lot of distributors.
I use Cerry MX keys in the design, as they are very reliable and they are available in a huge amount of flavours (click, no-click,...).
If you would like to use other buttons, you can take the design and exchange the keys with others.
For interfacing with the outside world I decided to use the serial port as well as the I2C port. For the serial port I added a CAN-Bus
Transceiver to be able to attach a bunch of these boards to a bus. I will use a baudrate that is a multiple of 115200 baud, to be able to
attach the boards to a PC via a USB to Serial converter with a CAN-Transceiver attached.
The PCB
the PCB is done in KiCad to solve the goal to only use open source tools. the project file will be available soon, as some makeup things are needed.
Here is a pdf of the Wing5 schematic(old Version Wing5 PA2).
As KiCad has a 3D view which shows the result within a 3D viewer I made some screenshots of the board.
Tilted view of the top side | View of the top side | View of the bottom side |
|
|
|
The Manufactured PCB
The manfuactured PCB's just arived. Here are pictured from one of the unpopulated PCB's.
The pictures are not great. I need to find some time to set up a propper camera and lighting setup.
Tilted view of the top side | View of the top side | View of the bottom side |
|
|
|
The Populated PCB
Now it't time to populate the PCB's.
Tilted view of the top side | View of the top side | View of the bottom side |
|
|
|
The following pictures show the Wing5 PCBs inside a case for playing around with.
Two Wng5 side by side | Backside | Front |
|
|
|
The Adapter
Here you find the first version of the Wing to PC Adapter schematic.
It is meant to be used with the TTL-232R-3V3 cable from FTDI.
The Test Software
The first version of the software will be based on the software of a small LPC1114FN28 based light desk extended by
the communication interface for UART and I2C.
The first test software version (20150930) outputs fader and button changes via the serial Port and expects LED changes via the serial port.
It outputs the fader state with the string F<faderid><value>\r\n, where faderid is a two digit hex number and value is a three digit hex value.
A button press is output with the string B<buttonno>, where button no is a 3 digit button number and b<buttonno> is output when a button is released.
To change the intensity of an LED, send the string L<mask><collumn><row><value>, where mask, collumn and row are one digit hex values and value is a 3 digit hex value.
Each LED has four timeslots, each a quarter of a second long. For each LED, a value can be set for each of the four timeslots, independently.
The mask is a bitmask of the slots that shall be modified by the operation. Collumn is the collumn and row is the row of the LED. The value is a value between 0x000 and 0x3E8.
For example, to set the LED in the second column third row to 0x300 use the command:
LF12800
To let LED in column 0 row 4 blink, you can use:
L304300
To let it blink in double speed use the following command:
L504300
And to let it blink with 180 degree phase shift.
LA04300
The Software
The final firmware as well as the Linux test application send and receive events.
The firmware polls the keys and the faders and does a Multiplexing on the LED's and dimms them.
The Fader and Key-Changes are send over the serial port, once a listener has registered itself.
The Linux application receives the fader and butten changes and sends led-changes back to the wing.
Links to the software archives can be found in the Files section below.
The Open Isues
Add test pads to get device into bootstrap-loader mode during power up DONE
Divide the chassis ground of the faders from the normal ground and connect them via capacitor. DONE
Add EMI Suppression Filter (VFR3VD31E131T51B or DST310H55B271M250?). DONE
Add 10K pull down resistors in series with a four-times dip-switch to CPU_COL1..4 for configuring a node ID. This makes 16 possible nodes.
When adding P-Channel MOS-FETs for driving the Anode of the LED's, add 10K pull down resistors in series with a four-times dip-switch to CPU_LED_ROW1..5, which makes 5 more configuration bits. This makes 9 Konfiguration bits. Use one for selecting I2C or UART as Communication interface. The rest can be used to configure the ID. DROPPED
May align extra leds to position 1/4 and 3/4 above the lower button row. Scheduled to later revision. DONE
- Build an adapter with an FTDI232R based cable and a CAN Transceiver to connect the board to a PC.
Schematic DONE
layout PCB DONE
build bread board prototype DONE
Write test Application for two interfaces connected to a PC DONE
test bread board prototype with PC DONE
- build and test PCB prototype
Create a protocol for running on top of the UART, that does the layer-2 framing and the collision detection/avoidance DONE
Build a prototype implementation of the protocol for Linux DONE
Implement the protocol into the firmware of the board DONE
The Files
Last update: 2016-09-05
Contact me via: