The first xser board is now assembled and working. I've made some progress with the software, mostly migrating the prototype software to the new board (a different processor and I/O mappings). It has now basic functionality, transmitting and receiving serial data. The LCD is also working, and with the demo software written for the prototype it shows the COM port number to which the adapter is attached.
The software is accessible through the GitHub repository.
Last week a new board joined the ever-growing family of low cost ARM boards - the BeagleBone Black. Like the original BeagleBone, it's powered by a TI AM3899 and has a similar form factor and expansion connectors, so it can be used with all the expansion boards ("capes") available for the its predecessor. There are several differences between the old BeagleBone and the new one, but the most important one is the price. With a 45$ tag price it's only 10$ more than a Raspbery Pi (Model B). Taking into account the fact that it has built in Flash memory makes this gap even smaller, since no SD card is required anymore.
At first sight, it looks like a Pi killer. But the Black, like its old brother, the original BeagleBone, falls short in one important area - video. It doesn't offer any decoding (not to mention encoding) acceleration leaving it to the processor core. Additionally, the built in HDMI interface can't handle 1080p video at all. These facts leave the Black out of media player game and send us back to the good old Pi.
Nevertheless, I think that the new board is great a opportunity. With built in storage and direct LCD panel interface it is a great for standalone GUI applications, as well as applications that require more processing power provided by the Raspberry Pi.
A few days ago, I've received the package with all the components. Everything (PCB and components) was ordered from a company called NOA Labs, which operates the smart-prototyping.com Web site.I first read about this site in a Dangerous Prototypes blog post. They offer a wide range of services - PCB manufacturing, component sourcing, mechanical manufacturing, test equipment and much more. Let me try to summarize my experience with them.
Pre-Order and Order
The company is run by German guy named Alex who lives in China. This is a big advantage, since you can actually communicate with him in plain English. I got very quick responses to all my queries, sometimes instantly. They've been able to get all the components I needed, including the (relatively new) PIC18F24K50, which is absent from most distributors' inventory.
The PCB quotation is quite simple and can be easily calculated using the Web site. Component quotation is trickier. They have no cataloging system like Digikey, Mouser etc., so the component definition must be full and precise. Usually it took them a day or less to return the quotation (it's a small BOM - about 15 parts).
It worth noting their willingness to accept such a small quantity order. Until now, the only way to get a variety of components in small quantity was through the big distributors - which means a lot of money (especially the shipment costs to Israel, which are very high). This is a great new option, I hope it's profitable enough for them to keep it running.
The PCB service is quite conventional, with a minimum of 6 mil track width and track-to-track spacing. The xser PCB design is simple and does not stress these limits in any way. The order is for 10 units, I actually got 12, which is very nice and leaves some headroom for soldering tests and oven calibration.
Visually, the PCB looks very good. It is supposed to be 100% tested (in the order page on their Web site, there is an option to choose between 90% and 100% testing without additional cost ... Hmm, tough decision). There is no certificate, report or other evidence that this test has been actually made, so I'll have to trust them on this one.
Overall, being one of the cheapest options around, I couldn't be happier.
I got all the components I ordered - no missing parts, no spares. The packaging, however, had some quirks.
Most of the components came as cut taps, in anti-static bags. This is how things should be.
D-Type connectors came in a plastic bag, without any protection on the pins. There are some minor distortions, but nothing that can't be fixed.
I ordered two PIC12F615s in SOIC package (for a different project). As seen in the picture, their just thrown in an bag. At least it's an anti-static one. This is a no-no.
LCD glasses are very sensitive to static charges. They were placed on an anti-static foam, but there was another piece of regular Styrofoam placed on the top. It should have been anti-static as well.
Some component bags bear Chinese markings. While it's not a problem to understand what is the component in the bag, there is no way to tell who is the manufacturer of the component and what is the original part number.
My overall impression was very positive. I'll definitely continue to work with them on my next projects.
xser is progressing towards initial production.
The circuit schematic and the PCB design are ready and available through the project's github repository.
Beside the (obvious) LCD, I've included some neat features in the unit:
Full support for RTS/CTS lines - this is important for those who are using the Arduino bootloader.
Dual drive - The unit supports both RS-232 signaling levels and flexible logic levels - from 5V down to 1.6V. This range covers all the development boards I'm familiar with directly, without additional level shifters or special purpose adapters. The xser unit will switch to the logic level signaling as soon as the target VCC is connected.
Pushbutton - will be later used to implement functions such as auto baud detection and direct information retrieval (baud rate, drive type, etc.)
PCB Front Side
PCB Back Side
The circuit is based on the PIC18F24K50. This is a new chip from Microchip, a successor to their successful 18F245x family. This chip brings some useful features - it can run directly on 5V from the USB, it is cheaper that the older family and finally, it has a circuit that can derive accurate clock from the USB, making it possible to work without external crystal even in full speed USB. At least so they say.
The processor drives the LCD directly (taking most of its I/O pins) and its UART pins are connected to both drivers - a MAX3222 for RS-232 level signaling and a pair of TI SN74LVC2T45 level shifters that can accept any signaling level from 1.6V up to 5V.
The circuit can use only one of the driving method at any given time. When an external target voltage is applied to the power pin in J2, the RS-232 driver is shut down allowing the level shifter to drive the signal into the controller. When no power is connected to that pin, the MAX3222 operates normally and receives signal in RS-232 levels.
The PCB measures approximately 50x35mm, enabling it to be produced in some cheap manufacturing services that restrict the size to 50x50mm.
Last week, Wyolum has announced the winners of WIG 2012, and I'm very pleased to inform that xser has won the 250$ grant!
So first of all, I would like to express my gratitude to Wyolum for the generous grant.
Now it's time to move on and to make a product out of it. There are three development areas that have to be addressed:
Hardware - The hardware work includes the design of a schematic and a PCB. The final hardware unit should include the processor and the LCD, a DB-9 connector an RS-232 driver and I'm also considering the inclusion of a flexible voltage driver (for driving signals between 1.8V to 5V). All these goodies should fit in a 5cm x 5cm PCB, in order to take advantage of the cheap PCB prototype offering by ITEAD. Another target is the component price - I hope to fit everything I mentioned in a 10$ BOM - quite aggressive, but possible.
Firmware - The firmware is mostly done. It will have to be ported to a different processor (because the PIC18F2553 used by the UBW is too expensive); I also intend to add an on-board programmer (mistakenly called bootloader) in order to make firmware upgrade easy.
Host software - Generally, the host software already does what it should do quite well. There are some user experience work that should be done - converting it into a service, providing an installer etc. It should also be tested thoroughly.
I'll keep updating in this blog, for anyone who is interested. All the files will be publicly available through a GitHub repository. Please note that this is a new repository - the repository used to host the prototype files will not be updated anymore.
If you have any suggestion of feature or any other thought about the production unit - I'll love to hear it.