O’Reilly seems to be publishing a fair number of shorter publications recently, which I really like since it allows you to gain expertise in a specific topic in an evening or weekend vs. the broader-subject books which span many hundreds of pages. I’m pretty comfortable with a number of prototyping platforms, but was curious to learn a little bit more about the guts of Arduino’s hardware instead of it all being nicely abstracted for me. With this in mind, I purchased the Mintronics Bundle from Maker Shed, comprising a Mintronics: MintDuino and Mintronics: Survival Pack, plus picked up an FTDI Friend to handle USB to serial duties in a breadboard-friendly form factor. This blog post, however, centers around the MintDuino eBook which I also purchased, with the aim of making sense of all that hardware.
I read the book cover to cover both to pass the time until my kits arrived, and because I wanted a good understanding of the overall process before I started wiring everything up. Initially I read it on my Nook Simple Touch which is is great for power-reading, but less so for viewing pictures of intricately-wired micro controllers – when it came time to build, I loaded the same DRM-free ePub to iBooks on my iPad using O’Reilly’s new Dropbox syncing feature. Reviews on oreilly.com and Maker Shed suggested that the book failed to cover assembly of the MintDuino itself, though this appeared to refer to an earlier version, and worst-case, the Make: Projects site has a detailed MintDuino assembly guide. This is confirmed in the book’s preface:
Content Updates, December 16, 2011: …Added a new chapter that explains how to build the Mintduino”
and indeed the first chapter is a step-by-step guide with detailed color pictures of the major steps and sub-circuits. The remaining chapters detail the construction of a 2-player reflex game as various sub-tasks, with each step’s hardware and programming concepts building on the last.
Assembly of the MintDuino went extremely well, between the detailed steps and the corresponding Figures which allow you to ensure that your breadboard looks how it should at each step. I connected a 9V battery to my assembled MintDuino, and…nothing. I looked it over, made sure nothing was smoking, and tried again: ah! The LED started blinking – with increasing rapidity – until it stopped! I quickly removed the battery and checked the board over to make sure nothing had blown. Not seeing (nor smelling) any issues, I re-connected the power – and it did the same thing – so apparently the blinking LED sketch that is pre-loaded on the included 328 to facilitate testing, instead of continuously blinking an LED, flashes it with increasing speed for such a short time that it’s easy to miss it while wiring up the battery, and simulates LED burn-out instead of a reassuring steady blink. Interesting choice.
Another surprise came when it was time to upload the first simple sketch to the MintDuino. The instructions went something like this:
Connect the FTDI Friend (or other FTDI adapter) to your MintDuino…After uploading the sketch to the MintDuino…
To explain, the FTDI Friend is a USB to serial converter, which allows you to upload new sketches to the MintDuino, since it is pre-programmed with the Arduino bootloader. This process is not exactly plug-and-play. In addition to the FTDI Friend’s drivers not installing correctly without manual intervention, as detailed in Adafruit’s extensive tutorial, the COM port assigned to the device must be divined and detailed Port Settings configured – thankfully also explained in the Adafruit tutorial. In addition, the correct MCU and COM port must be targeted in the Arduino Tools menu – something I thankfully recalled from prior Arduino use, but was appalled to see recklessly glossed over by the author.
With sketches uploading successfully, we embark on the “big project” – a reflex game which pits two competitors in a race to push their respective button first after a random length of time between 5 and 10 seconds has elapsed (indicated by the flash of an LED). The subtasks form a sensible, modular approach to the final project, each highlighting a particular concept or technique. The completed project appears below, slightly altered from the version appearing in the book, whose wiring somewhat blocks one of the buttons.
I am rather perturbed when I notice grammar and spelling mistakes in technology books, since while the two may not really be linked, I find that significant grammatical errors undermine my faith in a book’s technical accuracy. Actual technical errors, however, are a bold affront to the vulnerable reader, who, embarking on a journey of learning, expects to receive accurate, expert information from their guide. While no Errata appear to have been submitted to O’Reilly, I found the following:
- p6: Cut one piece
orof red wire…
- the example code includes “is this needed?” in the comments – assuming this is not an exercise for the reader, it seems rather shocking that it made it into the final version? In addition, code that turns both LEDs on is commented “turn LED off:” which is likely a pasting error, but…how did no one catch this during the editorial process?
- The “About the Authors” section ends with “None” – an unfilled placeholder for the second author, or … ?
- Figure 1-5 does not show a wire from h24 to h18 as described in Step 4 on the previous page.
- The code listing for Subtask 1 is identical to Subtask 2; the correct code can be downloaded from the book’s example code repository, but I did not discover this until after having entered the listing for Subtask 1 manually, and then beginning the entry of Subtask 2, only to experience massive deja vu!
- Page 33 lists 5 jumper wires and 2 LEDs as being required for Subtask 4; I counted 7 wires used, and the LEDs, while mentioned in “What You Need” on vi, were implied as included with the Survival Pack, but it turns out you actually need two additional green LEDs (or, one if you’re OK having one of your LEDs be red, which is included in the pack)
Despite a rather long list of issues for such a short book, I would not hesitate to recommend it to anyone who would like to try their hand at assembling an Arduino-compatible microcontroller, and apply it to an enjoyable example project. I will say that I did not learn as much as I’d hoped about the individual components – e.g. why certain capacitors were selected, why an external crystal is used vs. the 328′s internal oscillator – but the experience of tossing together an Arduino clone on a breadboard has given me the confidence to venture out on my own and seek answers to some of these more advanced topics.
MintDuino: Building an Arduino-Compatible Breadboard Microcontroller
By James Floyd Kelly, Marc de Vinck
Publisher: O’Reilly Media / Make
Released: September 2011
Print ISBN: 978-1-4493-0766-0
eBook ISBN: 978-1-4493-0765-3