Introduction
I have been attending Linux.Conf.Au for over 10 years -- I have been to every one since LCA2004 in Adelaide. It is a very useful conference to stay in touch with developments in Linux and Free/Open Source Software. Simon Lyall and I have run the Linux.Conf.Au Sysdmin Miniconf for nearly as long -- Simon and I alternate years as "main organiser", and help out in the other years. (Simon has a good summary of the LCA2017 Sysadmin Miniconf: Session 1, Session 2, and Session 3; and all the slides and videos from this year are also linked from the LCA2017 Sysadmin Miniconf Programme.)
Over recent years there has also a focus on Open Hardware as an extension of the Open Source Software movement. In particular there has been an Open Hardware Miniconf since 2010 -- originally called an "Arduino Miniconf", but getting a more general name as interest spread out beyond the Arduino Platform (see also the Wikipedia summary of Arduino history). Each of those Open Hardware Miniconfs has had an assembly project which a select few (usually about 30 -- limited by room size) got to build and take home.
Because I started out in 8-bit computers, including building a few expansion modules, I have always been a bit attracted to Open Hardware and kept an eye on the developments over the last decade -- including the Arduino, the Raspberry Pi, and other development boards. But Open Hardware often ended up being crowded out by other things. In particular attending the Open Hardware Miniconf assembly session usually got crowded out by conflicting events like the Sysadmin Miniconf, or by being booked out very quickly.
This year, at LCA2017, I finally got a chance to play with a few of the bits of Open Hardware. I happened to see the sign up announcements for two different Open Hardware sessions within a few hours of them opening -- and thus was able to quickly sign up before they filled up. It was also one of the years when the Open Hardware Miniconf did not conflict with the Sysadmin Miniconf, so I could do both. (Though the Sysadmin Miniconf consumed all of my Monday, and the Open Hardware Miniconf consumed all of my Tuesday, so I did not see any other LCA2017 Miniconfs!)
Open Hardware Miniconf
The LCA2017 Open Hardware Miniconf assembly project was called "IoTuz", and was essentially an ESP32 development board -- a recently released 32-bit Wifi/Bluetooth/CPU system on a chip from Expressif, who actually sponosored the Miniconf (by donating the ESP32 devices used).
The IoTuz hardware was supplied (for AUD$100) "partly assembled" (with the surface mount parts pre-assembled), and a collection of through-hole components to be added by attendees (parts list). That was fortunate as the last time I did any soldering -- over 20 years ago -- everything in the hobbiest market was through-hole.
My hardware assembly went pretty slowly, taking the entire assembly session and about another hour later in the afternoon. Partly it seems to have been due to the (temperature controlled) soldering iron I had chosen not heating properly -- I made much faster progress once one of the helpers pointed out that the iron did not seem to be melting the solder as fast as expected, and suggested I try another soldering iron. But also not having done any soldering in the last 20 years made for fairly slow progress (I also originally assumed the issues with melting the solder were all my unpracticed technique, and not the equipment...).
By the end of the Miniconf I did have a pretty much completely assembled IoTuz, in part thanks to one of the helpers who soldered the more closely pitched LEDs with much more skill than I had. Fortunately my board did have the CN3063 battery charge controller installed, along with the two small (red) wires reversing the pinouts due to a late-discovered layout issue -- so I could also test, briefly, that it appeared to charge the supplied battery. (At the entry to the Miniconf they were trying to ensure the boards without the battery charge controller/modification went to Melbourne based attendees, where the designers could easily get hold of the board again to fix the issue later.) The missing items were the speaker and microphone -- the speaker because it did not arrive in time, and the microphone due to a layout issue. I believe the speakers finally arrived towards the end of LCA2017, but I did not hear they had arrived in time to collect one. (AFAICT, from the IoTuz.net, the intended speaker was the CUI Inc CVS-1508, DigiKey 102-2498-ND, which seems to be available in New Zealand for under NZ$5 quantity one. The planned microphone was apparently Knowles SPU0410HRH5RH-PB (DigiKey 423-1138-1-ND) which also seems to be available in New Zealand for under NZ$1.50, quantity one. However there is an issue with the circuit layout for the Microphone (see end of page), where pins 2 and 4 need to be crossed over at MK91 (on the centre left of the board), which seems tricky for me to assemble by hand; my board may never have a microphone.)
On the Miniconf day my IoTuz "sort of" worked -- it seemed to power on safely and I was able to program it, but watching the console, it crashed very soon after boot, every time. Originally I assumed that was an assembly error on my part, but after rechecking the board (and adding the remaining components I had originally skipped, due to time constraints, in case their absence was causing stray signals), I found out that others were also experiencing similar crashes.
This past weekend -- my first one back at home since the conference! -- I had a chance to try the IoTuz board with the latest IoTuz firmware (following the IoTuz Software instructions), and found that it actually ran in a stable fashion. (I think the fix to the crashing was commit e9a65c5ebb by Angus, based on the timing of this Twiter reply the next day.)
Actually having the board running in a stable fashion did a lot to make me feel like I had successfully assembled the board, and gotten something useful out of the Miniconf. The ExpressIf develoment enviroment (ESP32 IDF) and MQTT (MQTT Wikipedia Page) look to be interesting to explore further.
References:
Automate your home with MQTT
The second Open Hardware session at LCA2017, which I also managed to get onto the hardware list for, was a 1.5 hour tutorial -- "Automate your home with MQTT" -- which provided a very useful breadboard kit (AU$40) based around the ESP8266 (ESP8266 on Wikipedia) also from ExpressIf (the ESP8266 is an earlier chip, which became very popular with hobbiest and led to the design of the ESP32).
The supplied ESP8266/Breadboard kit seemed really good value, and included:
Wemos D1 Mini ESP8266 module (or a clone)
Solderless breadboard
Large bundle of breadboard jumper wires, in multiple colours
A substantial kit of breadboard-usable sensors and outputs
which gives a lot of scope for easily experimenting with simple circuits.
The tutorial was essentially self-guided, starting with a set of pre-supplied examples -- although part way through I realised they suggested following the even shorter 1 hour tutorial, which skipped through the examples even quicker. (Warning: raw HTML; I cannot find a rendered version online.) There were a bunch of helpers in the room to assist anyone who got stuck, but the instructions were fairly well written so pretty easy to follow for anyone with some development and wiring experience.
I got at least half way through the tutorial in the hour and a half available -- far enough to prove the programming tools were working, the hardware was basically working as expected, and to get the network access and MQTT reporting working. The main challenge was that the supplied multi-colour LED was a common anode rather than common cathode LED -- which meant the common line was Vcc rather than Gnd, and the programming settings for the individual colours all needed to be inverted. That difference required some thinking through the logic in the example programs, but was simple enough to accomodate once we realised the substitution.
Despite not "finishing" the tutorial I got a lot of useful experience out of the tutorial, including more insight into how MQTT works and some experience programming in Lua (Lua on Wikipedia). Lua was originally intended to be an embeddable scripting language (eg for ad-hoc automation of parts of a larger program), but also seems to work well for simple "hardware automation" scripting. I did not get as far as the NodeRed part of the tutorial, but it seems like an interesting "wiring up" environment to experiment with later.
Together with the supplied kit to take away, the whole tutorial was very good value, and I was very glad that I had been able to take part. The breadboarding kit should be useful for lots of other simple prototyping later on. (I also took the opportunity to purchase a second ESP8266 breadboard module -- for another AU$8 -- to have a second one for additional experiments.)
Resources:
Tomu
Tim Ansell created Tomu a "tiny ARM microprocessor (that fits inside the USB port)", with the intention of being able to turn it into something that can be used for authentication like the YubiKey 4 Nano, but at a lower cost.
Since he was selling the bare (assembled) board, at LCA2017 for AU$10 (a slight loss I think; he talked about them costing US$10 to manufacture...), and I happened to be nearby when someone else asked about buying one I also bought one in case it turned out to be useful.
Tim warned everyone buying them that while the board was assembled it did not even have a bootloader installed. Fortunately some people have documented how to program the bootloader using a Raspberry Pi and OpenOCD.
Since I did not actually have a Raspberry Pi, I have ordered a Raspberry Pi 3, a Raspberry Pi Cobbler Plus breakout board with a breakout cable, and associated bits from NiceGear so that I would have the parts necessary to attempt to program in the bootloader. Hopefully those will arrive this week, and together with the breadboard from the MQTT tutorial kit I think it should be enough bits to program in the boot loader. (Plus of course the Raspberry Pi 3 should be useful for other things on its own.)
Resources:
Tomu hardware design including Gerbers
Silicon Labs EFM32HG309 Microprocessor Datasheet and EFM32HG309 Reference Manual
Numoto Mimas v2
I learned about the last hardware item also via Tim Ansell -- one of his many projects is to improve the MicroPython on FPGA support. This is primarily to improve the programming environment for the HDMI2USB Video Capture System, particularly to benefit the Numato Opsis board (used for capturing the Linux.Conf.au video the last few years) that Tim Ansell helped design.
Tim organised a BoF session on MicroPython on the FPGA at LCA2017. During that BoF he mentioned that their main development target is the Numato Mimas v2, which costs (just!) under US$50 in quantity one, for a self-contained development board. Once Tim highlighted that this was also the same board that the j-core Open Processor (which was also presented about at LCA2017) was targetting for development, I decided to order one as soon as I was home -- I have always wanted to play with programmable hardware. (I actually ended up ordering two because US$50 is more than cheap enough to have a couple around to experiment with -- it works out a tiny bit cheaper than the Raspberry Pi 3. They turned up pretty much as soon as I got home -- having failed to be delivered while I was still travelling, due to being shipped much faster than I expected!)
So far I have not even had time to take the boards out of their static bags, let alone do anything with them. But the idea of simulating a processor in hardware seems exciting, particuarly an Open Source processor. (Not all the tools are Open Source -- the minimal FPGA synthesis tool is a "free to use" limited license of a closed source tool from Xilinx.)
Resources:
Numato Mimas V2, including downloads, a knowledge base of "getting started" articles and sample code
Xilinx ISE Webpack, which needs a gratis (no cost) "ISE WebPACK" license, to use for FPGA synthesis (available for Microsoft Windows and Linux)
Numato "Getting started with FPGA" guide, which also uses the Numato Mimas V2 as an example.
MicroPython on FPGAs Wiki page, including details on cross-compiling and Qemu support.
LiteX QEmu emulation of the targeted MicroPython FPGA software CPU, for testing, I think based on QEmu and Enjoy Digital Litex
Timvideos Numato Opsis SoC based on LiteX, which includes additional peripherals
J-Core on the Numato Mimas V2, including detailed instructions on getting the Xilinx ISE Webpack installed and running
Conclusion
By the end of next week it seems likely I will have "one of everything" of what is currently popular in Open Hardware. Then all I have to do is actually find time to do some work with those items.