- Digistump Oak
- SparkFun Arduino Pro Micro (3.3v)
- BusBoard SB400 Solderable Breadboard
- Hammond “AS” Size Project Box
- 2x 4.7kOhm resistors
- Some jumper wire, solder, etc
This project is a combo of a couple of boards, as I mentioned in the previous section. I’ll take each board individually in the coming sections. The rest of this stuff you can get off of Amazon, or your favorite electronics supply house. I used a solderable breadboard for this, although you could wire the boards directly together if you wanted, or you could get a custom board built. It used to be much harder to come by solderable breadboards, but for $5 on Amazon you can have some pretty nice ones shipped!
The Digistump Oak is basically an ESP8266-based module. There are a variety of ESP8266 boards out there, but I backed the Oak on Kickstarter so I had a set of 3 of them to play with. The Oak is designed around “shields,” much like the Arduino. There’s support for programming it via the Arduino IDE, so you can use Processing if that appeals to you.
Also, the Oak is supported by the Particle Cloud, although there are still features missing from the integration. For the most part, the Particle Cloud is just a way to flash the board without hooking the Oak directly to a PC. The Arduino IDE uploads the firmware to the cloud, and the Oak checks periodically to see if there is a new firmware image available. It flashes the new image, and then reboots to load it.
It’s probably one of the more inexpensive user-friendly ESP8266 boards around, but everybody’s probably got their own favorite variant, so if something else appeals to you, knock yourself out.
SparkFun Pro Micro
The SparkFun Pro Micro is based around an Atmel ATmega32U4 microcontroller. The major advantage to this chip over similar micros is that it has a dedicated, hardware USB interface. Many other Atmel chips can emulate USB, but the 32U4 actually has full support for it. This means that you can enumerate the Pro Micro as a USB device and have it behave as both a serial port and a keyboard, with a high degree of reliability.
One other requirement I have for my Pro Micro is that I wanted to use the 3.3v variant. That way, I don’t have to do logic level conversion between the Pro Micro and the Oak, which is a 3.3v board. In some cases, this wouldn’t matter, but it doesn’t really seem like the Oak’s 3.3v is recognized as “high” by the 5v Pro Micro. If you’ve got to use a 5v version of the board, SparkFun also sells 3.3v to 5v Logic Level Converters.
It also helps that this is a rather inexpensive board, and you can buy clones for $5 or so on eBay. Do be careful with these knock-offs though! I ordered a set of 3.3v boards from China via eBay, and when they arrived weeks later, they were actually 5v boards! I’m glad I had the foresight to test them before hooking everything up, or I could have fried something. Luckily, eBay refunded my money after I showed them the product was mislabeled on the site. If you decide to go the eBay route, check the listing, and make sure they’re selling the 3.3v/8MHz version.
There are a couple of interfaces I could have used for board-to-board communication. Both the Pro Micro and the Oak support SPI and I2C. I2C uses fewer pins, so I opted to go that route. I2C requires that you pull the data and clock lines to Vcc with pullups, and the standard recommendation is to use 4.7kOhm resistors for this task.
Another board layout consideration is how power should be routed around the board. Both the Oak and the Pro Micro have 3.3v voltage regulators, so either board could accept the 5v from the USB port. The Pro Micro has to be connected to USB for data, so we might as well let it power the Oak.
Design Decision Both boards have “raw” voltage pins that can accept or drive 5v, and both can also accept or drive regulated 3.3v. I opted to connect the 3.3v output from the Pro Micro to the 3.3v on the Oak. This is probably not the “best” way to do it – I’d think that someone who does this for a living would suggest that you hook up the USB 5v to the Oak’s raw voltage in, because that way you’re making use of both regulators. However, there’s enough leftover capacity in the voltage regulator on the Pro Micro that I don’t have any stability issues owing to my decision. Also, this means that “high” voltage on both boards is identical, although I’m not sure that that means much.
I also decided that I might want to reset the Pro Micro from the Oak’s web interface, so I opted to hook the Reset pin on the Pro Micro to a GPIO on the Oak. Should the USB interface get into a bad state, or the Pro Micro crashes for whatever reason, I don’t have to pull power as long as the Oak is still alive.
I added a few headers to the board. The ones next to the Oak are for the Oak’s serial port, so that I can do debug if need be. The ones next to the Pro Micro are also for the Oak – they were just more convenient to place there. The Oak has a “safe mode” that it can be put into where it waits for a flash download over serial. Taking the SDA pin to ground at boot triggers this. That way, if things go horribly wrong, I don’t have to take the Oak completely out and rewire it up to reflash it.
Since I’m basically just jamming two premade, tested boards together like a couple of LEGO bricks, there’s not a lot of complexity to the hardware. The software, on the other hand, is a whole different story.