
Ask HN/YC: Seeking advice for building a physical hardware device (esp. Picwing) - markbao
To give some background, I'm looking into building a Linux-based touch-screen device that I can run stuff on.<p>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.)<p>I have a hard time figuring out where to start.<p>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.<p>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)<p>###<p>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?<p>Thanks!
======
ejs
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.

~~~
jwilliams
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?

------
sokoloff
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.)

~~~
edawerd
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.

------
ewoodh2o
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.

------
nolanbrown23
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.

~~~
iigs
Yes. Buy an arduino kit like this one I got for Christmas:
[http://www.adafruit.com/index.php?main_page=product_info&...](http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=68&sessid=65d2609b6bc85542f4161a1569e2dcc3)
. 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.

~~~
streety
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?

------
Timothee
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.

~~~
markbao
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.

~~~
Timothee
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 :)

------
cmos
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.

------
danw
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.

~~~
anthony_barker
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.

------
ejs
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.

------
HeyLaughingBoy
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.

------
mightybyte
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.

------
tedshroyer
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

------
hugs
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

------
markessien
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.

------
dazzawazza
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.

~~~
tedshroyer
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.

------
mcotton
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.

------
graemeklass
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.

------
speek
arduino.cc sparkfun.com <http://en.wikibooks.org/wiki/LearnElectronics>
<http://www.gumstix.com/>

Enjoy.

------
rokhayakebe
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.

------
NonEUCitizen
[http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-
Compute...](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-
Science/6-111Spring2004/CourseHome/index.htm)

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

digikey.com mouser.com

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

------
ColinJohnson
Why not something like a Beagle Board? Beagleboard.org

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

