Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN/YC: Seeking advice for building a physical hardware device (esp. Picwing)
44 points by markbao on Jan 19, 2009 | hide | past | favorite | 33 comments
To give some background, I'm looking into building a Linux-based touch-screen device that I can run stuff on.

I have no knowledge in electrical engineering or anything of the sort. I'm primarily a web developer, trying to move away from just doing web apps. I have a bit of C knowledge, and I have a plan on how I'm going to go about doing this (prospectively.)

I have a hard time figuring out where to start.

I don't have access to a college, so I can't really take a course. With everything tech-related, the only choice I've ever had was to self-learn, so I'm looking for any textbooks or books in general that will give a crash-course on electrical engineering, PCBs, and building hardware in general.

I'm especially interested in Picwing's Smart Frame. They've built a Linux-based(?) hardware device with wifi and Flash (though I'm not looking into doing Flash)

###

So to pose a question: how would you suggest I get started on the path of building a touch-screen device, with no knowledge of building hardware stuff?

Thanks!




Since people may be interested in the process of building an embedded product (a simple one) it usually goes something like this (that I have been involved in):

1. Buy a dev board closest to your product desires.

2. Modify the board as needed and get some of the features working, while laying out a PCB.

3. Design the PCB and simulate as much of the hardware as possible.

4. Send out a board revision with all sorts of test points and such, including parts for experimental stuff. Jumpers are good to add at this point to, so that certain parts can be tested independent of the rest. (this is expensive, think 1-5k for a small run of small boards)

5. Order all the parts, if the board is using a lot of surface mount (SMD) you do not want to be hand soldering, so order a stencil too (for laying the solder paste). Parts will be expensive since you need rolls to feed into a pick and place machine, stencil will be around $300-400 for a good quality one.

6. Build the boards.

7. Test them and find all the problems and errors.

8. Go back to step 3 until the board mostly works.

Software development will continue throughout the whole process.

If you are good and able to keep the revs to a minimum, and the board is small it can still be relatively inexpensive.

But if you plan to sell it, regulatory certifications (FCC, UL) can be another problem since they are slow and expensive.

Hope that was useful. Now remember this is the process I have been involved in and others may do it differently, such as when parts are very expensive more simulation is done. If you are doing something very simple or piecing together boards you may be able to get away with breadboard prototyping most of it.


This is great advice.

I've been through this a few times as well - I built some Zigbee based devices a couple of years back.

You don't always need to fabricate your own boards - particularly for first runs. Sometimes you can get away with the dev board, sometimes you can get away with OEM boards (e.g. if you develop for PIC microcontroller, there are loads and loads of different prebuilt modules you can lift and drop).

The case of regulatory certifications is an interesting one - they do have consideration for a "module radio", which means you can got through a much cheaper, quicker certification process (it's still a pain). It's been about 3-4 years since I looked into it, so there might be other options now.

When you're selecting a dev board make sure it's accessible to you. If at all possible, go for something with a good cross-compiler and an emulator.

The fact that you want Linux - Well depends on the power you need, but you could use anything from a standard Intel through to a Blackfin. I hear the Motorola/Freescale toolchain is good too - although I've never used it personally. Anyone on here have much experience with embedded Linux?


My first step would be to ask Edward of PicWing for any advice he'd care to share, and to ask if their device runs arbitrary AIR code, if you could boot it from alternate media easily, or if you could use an emulator to get the software working on hardware you already have or can source easily.

IOW, figure out if you can use some of what they know, and figure out if you can remove the hurdle of "how do I get a portable touch screen device working?" and make it more like "how do I get to the point where I can find out if I can even write what I want to write?" Maybe buy a tablet PC and use that to prototype, etc.

Don't even remotely consider building your own hardware until you have something that demands you do that. Custom hardware is messy, gross, expensive, intolerant of mistakes, long lead time, etc. Figure out if the rest of your business "works" before you commit to your own custom hardware. (Oh, and with your background, you're going to hire out the EE part, or it's not going to get done. Trust me on that one.)


I can say that from our own personal experience at Picwing that getting into hardware is no easy task. Like many in this thread have commented, it is a very messy, expensive, time consuming ordeal. So if you can at all avoid doing it, then you should. If you can find a ready-to-use alternative, or something that might be close to an alternative, then I would suggest going with that.

With that said, we got into hardware because we didn't really find anything quite like what we wanted to make for the price that we wanted. So we went ahead and started building something custom for ourselves. That's not to say we really underestimated the time and effort involved in doing so. We spent more time on the hardware than we would have liked...time that we could have spent improving software.

Regarding the other questions, our device is designed to run arbitrary flash 10 code (within reasonable constraints), but does not run arbitrary AIR code. We develop and test our software on regular PCs, and then test again on the Picwing. The environments are close enough that we don't need to have an emulator.


Well, you certainly have your work cut out for you. Hacking together hardware isn't quite the same as software, because mistakes are expensive. Debugging noise on a signal line with an oscilloscope takes eons compared to watching a value in memory. And if it's a significant screw-up you've got to re-spin the PCB which costs real $$. Hell I have an EE degree and I still find it annoying as crap.

If you're looking at running Linux, don't bother with your own PCB. Even the smallest possible system that runs that is going to be using high-speed data lines, processors with 100+ pins, multi-layer boards...it's just not something you worth spending your own time on. Get one of the development boards people are mentioning here.

However, don't assume something like the Picwing needs to run Linux and Flash and WiFi. Companies like Microchip, TI, and Freescale sell processors that run in the $5-$10 range and have their own built-in code memory and RAM. These things are programmed in C, and although being way less powerful, are more than capable of running a basic TCP/IP stack and graphics/touch library once you learn to think outside of having an operating system. You interface them with external components such as an LCD display, Ethernet or WiFi controller, and an SD card or USB stick for extra storage (or stand-alone serial flash chip, depending on your needs). Microchip for example also provides software libraries that handle things like the TCP/IP stack, graphics/touch interface, FAT file system, etc, and I believe the competitors do the same. (Disclaimer of sorts: I used to work for Microchip and wrote parts of those libraries, so I'm most familiar with their stuff. When I left Microchip's graphics library was limited to QVGA, but I'd imagine either they or a competitor has stepped that up recently.)

Reason I mention this is that this is the cheap way to go if/when you want to get towards mass-production. You can go ahead and develop on the expensive dev boards with Linux while you get the interface right and figure out the business model, but plan to hire someone to design custom HW the right way when you want to do volume. China and India are full of design shops that do nothing but clone iPhones all day long...I'm sure someone around here has a few contacts that could get this done cheap once you can specify exactly what you want.


Start out small. I'm a programmer and didn't know jack about EE until I started playing around with the Arduino and buying stuff off sparkfun.com. I still don't know much but I've managed to do a lot of really cool stuff with hardware from what I've learned from the Arduino.


Yes. Buy an arduino kit like this one I got for Christmas: http://www.adafruit.com/index.php?main_page=product_info&... . Work through the tutorials and as many more as you can find until you're comfortable with the hardware.

Round up as many interesting RSS feeds for hardware hacking as possible. As a first exercise, learn how to read spec sheets for components in order to select suitable devices (everything from passive and simple active discrete components to CPUs and displays).

I've never done what you're asking to do but electronics are surprisingly modular these days, so the next steps should be pretty obvious once you get rolling.


I seem to be in a similar position but going a little more slowly. Do you have any tips on understanding the spec sheets? Have you found any good tutorials?


Agreed, if you are already a programmer, you'll love this thing. Digital electronics is a fairly simple gap to bridge if you are already a hacker.


ditto to you, too.


And you still don't know jack.


Maybe I should read the "Why so many minds think alike" article because I was thinking about that exactly. Between Picwing and some idea I had, I was really wondering where one would start.

And I also have the same kind of background as yours.

I know myself and I don't think I'll ever get to it unfortunately (it seems that there is too much to learn and not enough time to spend on it), but I'm curious to know the process. If you do get to it yourself, please share your experiences in a couple of weeks/months.


Yeah, exactly. With how fast technology is going, and the fact that people go to 4 years of college to learn EE, I was highly doubting that I, a guy that hasn't even entered college yet, would be able to pull half of it off. Most likely I'll have to drop out to get the amount of time and money I need.

Definitely will document it and share my experiences if I do choose to do it.


As other people have said, it really depends on what your goal is.

As far as I'm concerned, I'm not so much into really building a product than learning about electronics. I tend to want to reinvent the wheel just to know how stuff works.

But for the project I had in mind, it would be more to learn the software part than the hardware. For the hardware, I'll probably start looking at the Arduino stuff. Looks very expandable and fun :)


It's not trivial if you get down to the PCB level. A good place to start is sites like: www.sparkfun.com www.makezine.com

These sites will have tutorials and such.

However, I would recommend you figure out what it is you want to learn from the experience. If it's making hardware, then focus on that, but start with more simple projects. Designing a PCB that has a fast running CPU and memory and such can be difficult.

If it's creating the software, you'll save a lot of money and aggravation by purchasing an existing piece of hardware and running your own software on it. (for instance, the Android phones have touchscreens and displays, as do a lot of web tablets)

[edit] Another option would be to make friends with a hardware person, give them lots of beer and coerce them into building it for you.


Buy a Nokia internet tablet. It runs linux and is very hackable.

If you want to go lower level arduino is a good platform and community to get started in.


Depends on the size of touchscreen you want - there are a bunch if items you can get started on right away

1) Much cheaper to get started than a full touch screen as well. n770 or n800 can be picked up cheap. Note they don't use a full implementation of X and they use maemo widget sets. The advantage of the nokia is that they have enough storage and memory.

2) Another alternative is to find a small touchscreen photo display.

3) iRiver PMP-120 or other media playing device with a touch screen.

4) If you are willing want a more customizable platform I would go with an Intel atom based chip laptop with a touch screen.


It depends on how much you want to know, and what level you want to get to. I would say that a linux based touch-screen device is actually pretty high level (it is running linux afterall).

If you want to make something like this you can buy things premade like the gumstix (http://www.gumstix.com/) that can get you there pretty quick. Then you can hack from there.

PCBs and lower level stuff is another animal. I mean there is just a huge amount of completely different concepts involved. Designing a PCB for some 8 bit microcontroller running at 32KHz is nothing like designing a radio board with an antenna.


If you want to learn about hardware, then start with something like an Arduino as others here have suggested. You'll have a long, hard road ahead, but it can be done.

If you just want to get something working, find existing hardware (iPhone, Android, tablet PC, etc) that does what you need and code for it. This is by far the cheaper option until you get into selling thousands of copies. Since building thousands of units requires even more tens of thousands of dollars, it's a fair bet that you'll be better off with expensive hardware for a long time.

I am an EE/SE with plenty of experience who sometimes takes on contract work. I was actually asked to build a device like this recently. Small quantities, say 5-20 per year. My suggestion to the buyer was that we use a mini/micro ITX board, standard off the shelf electronic hardware and a simple custom designed hardware interface that I would only charge him about $1k to design and that could be built for about $70 each. And this is a very simple board that has 1/1000 the complexity of a NIC card that you can buy at MicroCenter for $10.

Custom hardware in small to moderate quantities is expensive make no bones about it.


I'm in a similar position in that I'm a software guy and I recently started a hardware project, although I probably have less web dev experience and quite a bit more C experience. As others here have mentioned, check out http://sparkfun.com. From what I understand, Atmel microcontrollers are pretty widely used. (A microcontroller is basically a CPU with peripherals and RAM all bundled onto a single chip.) I bought a little SAM7 board and it has been working pretty well for me.

My app isn't as complex as yours, and I have found debugging to be quite difficult. If you're programming at the microcontroller level, you probably will end up needing a hardware debugger of some kind. I got a little JTAG unit, although I haven't made much use of it yet.

In summary, these embedded projects are certainly doable, but you're going to have to put a lot of time into it. It also helps if you find someone who's already done this kind of thing to talk to.


I like doing things on the cheap so I think you should prototype your software on something of comparable size to the device you want and see if it's even usable before you dive into a bunch of hardware.

If you want to work with something you might have sitting around, you can do stuff with a Linksys Router. It won't have a touchscreen, but you could mock up some web pages for what you want and get a pretty good idea if it's going to work.

Here's a link with some info: http://www.wi-fiplanet.com/tutorials/article.php/3562391

Here's some other page that had some source code: http://www.polarcloud.com/tomato

The source there had a README that said I needed this: ftp://ftp.linksys.com/opensourcecode/wrt54gl/4.30.11/WRT54GL_v4.30.11_11_US.tgz


I occasionally flirt with this idea,too. If I had the time... I would start with Chumby for the hardware design. I believe it is open source, though you have to agree to contribute back any changes/improvements to the Chumby folks. For the software, I would use Android. And for any misc. circuit stuff, I would experiment using Arduino. (I learned to solder my first circuit for an Arduino project of my mine last year.) The one book on my bookshelf that I reference very often is "Practical Electronics for Inventors" by Paul Scherz


Don't do it. You are wasting your time and it's very inefficient. In China, there are factories that have pre-rolled boards that will give you what you want at very cheap prices. Build a prototype, then get in contact with a chinese sourcer to find you what you need. You'll need to buy in bulk of about a thousand pieces or so - but on the positive side, you can get your frame and so on done there also.

Anyone who is even thinking of building such a device themselves is grossly inefficient.

If you need a company in china, send me an email I'll direct you to one.


for a low level but not too hard introduction to all things electronics you can't go wrong by getting:

The Art of Electronics, Paul Horowitz ISBN13 978-0521370950

If you know nothing then it will be hard but just plug away.


I haven't looked at this book in quite a while, but I remember being happy with the order in which it covered material. I seem to remember it doing digital electronics pretty far after covering transistors. I wish my college curriculum had followed that order. There was at least one lab where I spent the whole time guessing and interchanging parts instead of realizing that I had a CMOS chip that couldn't drive the TTL chips I had connected to its output.


I have some experience with embedded linux and I would suggest using netburner's dev board to start (netburner.com) They have a good C++ IDE to help you get started.

If you are more familiar with Flash I would suggest getting started playing with a chumby (chumby.com)

I am going to get some phidgets to play with in the next couple months (phidgets.com)

and I have been looking at bug labs but I'm not very java talented. This has also held me back from doing much with the android G! I bought.


I am making a USB device for my start-up and the top comment is pretty much sums it up. Other tips: 1. For low volume PCB protos (even 3 boards) you can't go past http://www.ourpcb.com for value for money. They have been awesome and very helpful. Ask for John. They can also solder those hard SMD chips and source components from your BOM. 2. For supply chain post your requirements at www.hkinventory.com - make sure you use a temporary email as you may get spammed. Usually it's a hard struggle to get a handful of components (they usually deal in thousands) but in this economic climate I think they will get what they can!

3. Plastic moulds is expensive, but again try posting your requirements at alibaba or something similar. In my experience, get a professional mechanial eng / industrial engineer to design the CAD. This may be 8k to 15k. Again I did a mini tender to three firms and got their responses and then chose one.

Good luck. Feel free to contact me if you have any further questions.



You could register for ALibaba.com and find manufacturers. From there you could buy maybe a few different prototypes for a low amount and start to play with it.


http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Compute...

gumstix.com toradex.com sparkfun.com parallax.com

digikey.com mouser.com


A friend of mine created http://www.muvium.com/. It lets you build the device virtually using java.


Why not something like a Beagle Board? Beagleboard.org


Do you plan to sell this device or is it just for fun?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: