Rafael Bachmann honored our Student Branch with a talk about hardware design from scratch. This means no arduino and nothing preassembled, only the plain components designed and soldered by yourself. He mentioned this sounding like a lot of work, but it is necessary work to avoid abstraction.
Another interesting point he mentioned was to only consider the waterfall model for designing your board, in contrast to modern software design. Any other model is hard to realize since no quick iterations are possible, since the delivery of new hardware takes to long and also is expensive.
Following i will list the points listed by Rafael for his own design of a blinker.
Choice of processor To choose the processor you need, Rafael mentions these criteria:
- communication protocols
- whether you need many floating point operations (FPO)
- limits on energy consumption
- price and ease of circuit flashing
- available programming environment
As a small "pro tip" by Rafael: try to find a processor with a public scheme, this will ease your design and later adjustments to the board.
Draw a schematic of your board Rafael personally uses KiCad, a design suite which "treats the schematic like code", by sticking with the old Input -> Processing -> Output model.
Keep in mind, that up until this point you had not a single opportunity to test your design, so it it is especially important to be careful with every design decision.
Software Now, that you recieved your own board, completely designed by yourself, it is time to fill your board with software. Rafael proposes languages like C, C++ or (his very favorite) Rust to build your awesome application.
So if you ever try to design your own hardware completely from the start, make sure you take these advices seriously, it might help you out a lot.