Which microcontroller/board should I use?

I'm working on a project with the following parameters and am looking for input on which microcontroller/board I should use. I started off with an Arduino Micro, but ran out of flash and am coming close to the SRAM limit.

  • OLED display (SPI)
  • GPS
  • RTC w/ NVRAM
  • SD card for data logging
  • 2 analog inputs with possible expansion to 4
  • 4 push buttons
  • Form factor smaller than Uno, Mega, Leonardo, etc. (Micro-ish size)

I would like to stay with the Arduino IDE environment, if possible. I'd like at least 128k of flash and 16k of SRAM. 32-bit and 3.3v preferred, but 8-bit and/or 5v is OK.

I've been looking at the Teensy 3.1, NavSpark, and Microduino. Any other suggestions or input on those platforms?

Something Atmega1284P based:
I offer boards in a bunch of form factors, the latest modeled after the Solarbotics Ardweeny. Connectorize as needed.
http://www.crossroadsfencing.com/BobuinoRev17/

Or something a little bigger, with RTC, SD card, RS232 driver for 2nd serial, onboard or offboard USB/Serial module, screw terminals optional.
Same Atmega1284 with 128K flash, 16K SRAM, dual hardware serial ports, SPI, 32 IO, 8 analog inputs. +5/Gnd for all IO pins for button, sensor support.

If you really need 32 bit and want to stay with the Arduino IDE then your choices are a bit limited.
It definitely eliminates all the 8 bit AVR based products.
The Teensy 3.x platform is really nice. Paul has added many capabilities above and
beyond the standard Arduino IDE so the Teensy products not only have additional
features but tend to just work better even when using Arduino core APIs.

There are some nice pic32 based micro-controllers, including in DIP packages,
that also fit your stated requirements.
Search for chipKIT.
Here is a link about using a DIP version.

What you haven't stated is your i/o requirements like number of i/o pins,
output power requirements, native USB support,
and if you need 5v tolerant inputs on your 3.3v pins.

In terms of something that meets your initial requirements, works today at 3.3v with 5v tolerant inputs,
it is hard to beat the Teensy 3.1

If you still want small and are ok with 5v only or 3v only and 8bit, then then the Teensy 2 and Teensy 2++ with
the micro sd adapter can keep things really small:
https://www.pjrc.com/store/sd_adaptor.html

One really nice advantage of leaving the 8 bit AVR world behind is that you no longer have to deal with
all the PROGMEM "crap". You just declare you data const and everything works the
way the C language intended it to work.
No messing with kludgey declarations, no lookups, no special functions, or access routines.
const data "just works".

--- bill

bperrybap:
What you haven't stated is your i/o requirements like number of i/o pins,
output power requirements, native USB support,
and if you need 5v tolerant inputs on your 3.3v pins.

  • Analog input - 2 minimum, 4 desired
  • Digital I/O - 4 for buttons
  • Hardware serial for the GPS
  • SPI for 2 devices - display and SD card
  • Two wire for the RTC
  • USB only needed for loading the code
  • 5v tolerant a bonus, but not required

In terms of something that meets your initial requirements, works today at 3.3v with 5v tolerant inputs,
it is hard to beat the Teensy 3.1

That's kind of where I'm leaning, though the NavSpark with it's built in GPS appears interesting. However, it uses a Spark based processor and I'm sure there are a ton of potential issues with the Arduino IDE integration, libraries, etc.

One really nice advantage of leaving the 8 bit AVR world behind is that you no longer have to deal with
all the PROGMEM "crap". You just declare you data const and everything works the
way the C language intended it to work.
No messing with kludgey declarations, no lookups, no special functions, or access routines.
const data "just works".

Yes, that's my main desire for a 32-bit platform. It's just cleaner in the long run, and will hopefully give me some headroom for further software development.

Thanks for all your input!

CrossRoads:
Something Atmega1284P based:
I offer boards in a bunch of form factors, the latest modeled after the Solarbotics Ardweeny. Connectorize as needed.
Cross Roads Electronics

Thanks for the suggestion. It looks like a nice product, but I'm trying to avoid DIP packages as the device will be used in a high vibration environment (motorcycles, ATVs, etc.) and I have concerns about DIP devices working loose over time.

SMD can also be done. But may not matter if you are favoring 32 bit.
Or just solder the DIP in place vs using a socket.
You'l probably want conformal coat (moisture protection) and IO protection if you're going in a vehicle?


CrossRoads:
Or just solder the DIP in place vs using a socket.

Good point, hadn't thought about that.

You'l probably want conformal coat (moisture protection) and IO protection if you're going in a vehicle?

For sure. I usually conformal coat everything once I finalize the hardware. IO protection, especially power, becomes interesting in an automotive environment, as well.

high vibration environment

SD card is in a socket.

Good catch! Sockets usually have spring pressure 'pins' against the card pads?
Good sockets are push-push to engage & release.

How about the Tiva C launchpad and the Energia IDE?
80MHz ARM Cortex M4F (F denoting hardware floating point - energia does utilise this)
256kb Flash, 8kb EEPROM, 32kb SRAM.
4 SPI controllers, 4 i2c controllers, 8 UARTs featuring 9 bit and IrDA modes too, USB OTG (unsupported in energia) and 2 CAN controllers (again not supported directly in energia, although I managed to get a TI driverlib sample to compile and do have some activity on the transmit pin, I dont have the full hardware to demonstrate its the correct activity on transmit but it seems to be working).

There you have it, full 32 bit at 3.3v.

Energia itself is pretty much arduino for texas instruments microcontrollers so although its borderline I'd say it meets the requirements of staying within the arduino environment.
Most of all, straight from TI the board costs just $13.

Might be on the larger side although its still smaller than an uno. Otherwise I'd go teensy.