As software developers, we have learned to take for granted the effects of Moore’s Law. We have become inured to the attitude that, if processors aren’t quite fast enough to run a large, complex program fast enough today, the next release of improved hardware tomorrow will do the trick.
We plan for such growth in processing power as a matter of fact, without thinking how far and fast hardware has improved and continues to do so on a predictable track.
As a former hardware engineer, and someone who thoroughly understands the relentless progress of Moore’s Law, I sometimes still stand in wonder of the progress that’s been made.
(For comparison, when I last did IC design, the feature size was on the order of one micron. Today’s CPUs are using features sizes of 17 nm–60 times smaller.)
My interest in the introduction of new devices for IoT development and deployment, and my involvement in the Maker Culture has reminded me of this progress in a tangible way.
I was recently doing some exploratory work with the Raspberry Pi Zero and the ESP8266 ESP-01 WiFi module. Both are amazing examples of technological innovations in hardware.
The Raspberry Pi platform, for those unfamiliar with it, is:
…a series of credit card-sized single-board computers developed in the United Kingdom by the Raspberry Pi Foundation to promote the teaching of basic computer science in schools and in developing countries. — Wikipedia
The platform is supported by a large number of open-source and commercial OS images, IDEs and toolchains, making it the platform of choice for Maker development.
The most recent version of this platform, the Raspberry Pi Zero, is a marvel of compactness that gave me pause. It’s less than the size of a credit card but contains a processor more powerful than computers of the 1980s. And it sells for just $5 USD.
Amazing as the Raspberry Pi Zero is, the ESP8266 platform is even more amazing.
The ESP8266 is a low-cost Wi-Fi chip with full TCP/IP stack and MCU (Micro Controller Unit) capability produced by Shanghai-based Chinese manufacturer, Espressif Systems. — Wikipedia
The ESP8266 comes in a variety of packages, ranging from the ESP-01 to the ESP-12, differing only in the number of I/O pins brought out to the edge of the board and therefore easily available to the designer. The ESP-01 sells for just $4 USD.
Open-source software stacks that are replacements for the simple, AT-style command structure intrinsic to the ESP8266 abound.
With the addition of the NodeMCU SDK to the ESP8266 ESP-01 model, one has access to a WiFi-connected, general purpose embeddable controller that has power undreamed of just a few short years ago.
I have recently been experimenting with both the Raspberry Pi Zero and the ESP8266 ESP-01 as components of a home monitoring and automation system and have been reminded, once again, that even with decades of time to become jaded, I can still be amazed by the pace of technology.
Just to put it in perspective, in the 1960’s we put a man on the moon with technology that looks ludicrously simple compared to today’s capabilities, compared against the Apollo Guidance Computer:
|Apollo Guidance Computer||iPhone 6||Raspberry Pi Zero||ESP8266 ESP-01|
|Frequency||2.048 MHz||1.4 GHz||1 GHz||160 MHz|
|Memory||4 KB RAM (data memory), 72 KB ROM (program memory)||Up to 256 GB||512 MB||64 KB of instruction RAM, 96 KB of data RAM|
|Ports||DSKY, IMU, Hand Controller, Rendezvous Radar (CM), Landing Radar (LM), Telemetry Receiver, Engine Command, Reaction Control System||Lightning (480 Mbps)||USB 2.0, HDMI, SD Card||Serial @ 115,200 baud, 2 GPIO pins, 802.11bgn WiFi, 10 bit ADC|
|Power Consumption||55 W||1 W||0.7 W||0.3 W|
|Weight||70 lb (32 kg)||4.55 oz (129 g)||0.3 oz (9 g)||0.05 oz (1.5 g)|
|Dimensions||24 12.5 6.5 in (61 32 17 cm)||5.44 x 2.64 x 0.27 in (138.1 x 67.0 x 6.9 mm)||2.6 x 1.2 x 0.2 in (65 x 30 x 5 mm)||0.6 x 1.0 x 0.1 in (14.3 24.8 x 3 mm)|
|Cost||$150,000 USD||$1,000 USD (256 GB model)||$5 USD||$4 USD|
|Notes||Not reprogrammable||Phone, handheld computer, Internet access device||Programmable, embeddable computer||Programmable, embeddable controller|