Having been busy for the past several months, I’m just now able to refocus on all of my projects, including the POV Poi one that’s been sitting idling. Every day I stare at the two batons, yearning for me to pick them up and do some work. Alas, the time has finally come.
Unfortunately, while I haven’t been able to work on them for months, I have been able to toss around ideas with other folks and one thing became rather apparent: we are in dire need of a specific development board. For me the whole problem is that for any kind of developing that I want to do, I need to have one of the batons connected to the computer as I work. This gets annoying, having to rip them open every time, especially since they are also still in the R&D stage. And recreating the circuitry on a breadboard each time is a pain, not to mention having to deal with a bunch of jumper wires, any one of which can get snagged and pulled out, causing testing to stop to figure out why all of a sudden things stopped working.
So I thought, why not make a permanent development board? One based on the current hardware, plus the ability to add more later. Things like an accelerometer, an RTC, card reader, Bluetooth, RF, battery charging circuit, a buck/boost circuit, etc., etc. I’m sure over time more people will come up with more ideas.
With that in mind, I started working on the current hardware being used for my specific project, the POV poi batons. What are all the items that are currently in them, and what remains to be added still:
- Atmega 328p (change)
- Li-Ion charging circuit (add)
- Buck/Boost circuit (add)
- Micro SD card reader
- ADXL345 Accelerometer (add)
- DS3231 RTC (add)
From there, others have suggested adding support for Bluetooth as well as RF, with the latter being the most requested right now. Someone also asked for a pony but that just isn’t going to happen.
First thing I wanted to change was the micro controller: switch it out for an Atmega32U4 for its native USB capabilities. However I soon discovered it doesn’t have enough interrupts for all of the peripherals. While the Arduino bootloader supports five interrupts, four of those are on pins that are being used for communications such as Serial and I2C, leaving me with just one. Both the ADXL345 as well as the DS3231 have interrupt capabilities. So does the more common nRF24L01+ RF device. While one can certainly use them without the interrupt, why limit the end-user? All of a sudden, using the 32U4 became impossible.
Enter the new AT91SAM3X ARM series! Those things are massive! With all kinds of capabilities, including an interrupt on up to 103 IO lines. 103!! It also has native USB capabilities, as well as USB OTG, meaning it can also act as a host to other USB devices. This opens up all kinds of options. Now I only need to convince myself that I can indeed work with these controllers, maybe build a breakout board first, see if I can even get that working correctly before moving on to a larger system.
Remember when in an earlier post I mentioned how ideas flow in my head? Just as I started writing this post here, I came up with another thought: a multi processor development board. Why have a development board that’s specific to one processor? Why not make it so one could swap out processors and continue developing? I know it’s possible, after all Atmel already did it: the STK600! Taking a cue from that, I thought, “Why not build a development board where one can swap out the processor to whatever they’re using, or want to use?” It would mean making a “motherboard” onto which you can plug in daughter boards with the processor of your choice.
Please stop thinking long enough for me to catch my breath.