When you don’t want to fight with low-level syntax you use a high-level programming language. What if that concept was applied to hardware?
TinkerForge is, to oversimplify, a group of modular circuit boards that “just work” with your computer. As long as the program you’re working on is connected to a master brick (via USB), all of the sensors and actuators connected to that same brick will “just work” together. You connect the bricks together and write your program, then the bricks take care of executing that program in the real world. No messing around with firmware, no soldering, and if you want to change something you just rearrange the bricks.
Please Introduce yourselves and the origin of TinkerForge.
Our names are Bastian Nordmeyer and Olaf Lüke, we both have a Master degree in Computer Science from the University of Paderborn. At the University we worked at a research project that had the goal to teach robots playing soccer. But instead of programming the behaviour of the robots we actually had to fiddle around with the hardware most of the time. That is where the idea of easy-to-use and modular hardware was born!
What made you decide to open source the project?
We both love Open Source Hardware ourselves. We have everything from OpenMoko over Arduino to Beagleboards in use here! Also, in our opinion, it makes sense for hardware that is made to tinker around with to be open source.
What advantages did you realize from an open source strategy?
With our hardware it is possible to get the easiest possible access to control hardware, a few lines of Python are enough for most small projects. But since it is open source it is also possible to go deeper and perhaps write some C code to change the firmware of a Brick or Bricklet and if that isn’t enough you could also go ahead and make your own hardware that works together with ours. None of this would be possible without it being open source!
What license(s) is TinkerForge released under?
We consider the programming language bindings public domain, there
shouldn’t be any restrictions to use them. Everything else is either
LGPL if it is a library and perhaps usable in other projects or GPL or
GPL-like licensed if it belongs to our core stuff. The hardware is
licensed by the OHL (CERN Open Hardware License).
Were there any tools/resources that were vital to your success?
We use the standard open source compilers and editors and so on for developing, nothing special. We did receive an EXIST-Gründerstipendium [entrepreneurial grant] that helped us a lot financially in the development phase.
Could you suggest one really important skill people should learn first?
In general I think the thing that we needed most is endurance. If you want to learn something just do it and keep doing it! You won’t be able to learn programming or designing hardware in 2 weeks, it will take a lot of work and a lot of time.
Did you ever make a major shift in the direction of the project? Why?
Oh, quite a lot! The first hardware version had a size of 2x2cm (now the Bricks have 4x4cm). They were absolutely tiny! Unfortunately we weren’t able to fit everything on them that we wanted. The first software version used DBUS instead of the generated language bindings. We already had the software ready and working for that, but it was to much of a hassle to get working on different operating systems (i.e. impossible).
How much of the project was individual effort and how much was social?
Getting the grant was quite a social effort i guess. Also we did of course have discussions about every aspect of the concept and what sensors to use for hours on end. Other then that it was a lot of developing effort for two people. It took us more than two years to design the hardware, write the firmwares, the tools (brickd, brickv), the language bindings and the documentation.
Where is TinkerForge going next?
More Bricklets, more Bricks, more language bindings, cases, on device programming support, better documentation, direct Raspberry PI support, etc, etc. There is lots to do!
It seems like Arduino is the most obvious comparison to TinkerForge. Do you consider Arduino a competing platform?
Any plans to combine bricks that are often used together into one board?
We will do this (and are in the process of doing it) for companies that want to use large amounts of the same Bricks and Bricklets. I don’t think this makes sense for the general purpose hardware. This would just make everything more expensive (we would have to make smaller amounts of more circuit boards etc.)
How did you settle on this particular level of modularity?
We just used the UNIX principle: “Make each Brick/Bricklet do one thing well”.
Is TinkerForge just for learning/prototyping or is it cheap enough to
embed in finished products?
If you make millions of this product: Probably not. If you make one of this product per month: Hell yes! The industrial alternatives you can get are often orders of magnitude more expensive.
Obviously a great deal of attention was paid to making the bricks work together transparently. Was that an important goal from the beginning? Why?
That was goal from the beginning, yes. The transparency is [necessary so that the user does not] need to think about the hardware components at all.
Are there any aspects of the hardware/software that limit hackability?
Regarding the hackability: We use 0402 and almost only SMD parts. This makes it of course virtually impossible if you want to directly solder something on a Brick or Bricklet. At that point there has to be a trade off between size+price and hackability and we decided to go with size+price. Other then that, every part should be hackable. There should be (and will be in the future) more documentation for the low level stuff.
Was TinkerForge intended to be a commercial project or did it evolve into that?
I think it was clear from the beginning that the project was too big to be just a side project or a hobby.
How did you balance the need for commercial success against engineering goals?
Good question. This is probably the hardest of all the problems to solve. We originally wanted to start the online shop in the end of 2010. In reality we were only able to go online in mid December 2011! Most of the additional time invested probably had to do with the trade off between high end parts and costs.
We have dozens of prototypes laying around here with different board-to-board connectors, different wire-to-board connectors and different processors. We first used 8 bit AT91USB processors, but decided to go for the 32bit SAM3S later on (quite a bit more expensive, but a lot more capabilities).
Good board-to-board connectors can be hugely expensive (like the Molex PMC series). For a Master Brick they would cost more then the whole Master Brick now. Lots of cheap Chinese ones only worked for 50 or so mating cycles until something broke.
Is it possible to run a TinkerForge stack independent of a computer?
Yes it is, if you write your own firmware (our firmware on the bricks/bricklets is opensource, so you can use it as a starting point).
If you want to control it from the outside you need a full computer currently. We have planned something called “Low Level Programming Interface” which should enable it to control our products via SPI, I2C or serial interface from other microcontrollers. Although it is possible (we have designed the hardware accordingly) I’m not sure if this will maybe be dropped since we don’t have enough manpower to implement it. Since currently nobody has asked for it, it has a low priority for us.
Any final thoughts?
There is no recipe you can go by, I think. You just have to test lots and lots of stuff until you find something that works well and isn’t too expensive.