0
\$\begingroup\$

I'm a hobbyist with little experience. Usually I play with Arduino Pro Mini or ESP8266. I can make them do simple things I want, but for obvious reasons I can't give them too many features at once.

E.g. if I try adding a OLED with configuration interface, or logging to SD card, or persistent variable storage and button debounce logic, to an existing program, it becomes too much for the device to handle.

Essentially, I'd like something no stronger than what I'm using, but with an order of magnitude (x20 or so) more FLASH and RAM, or something to the same effect.

What I've considered:

  • external memory: can't put code on it (?)

  • (on ESP8266) replacing the flash memory with a larger one: not enough

  • optimizations: not enough

  • multiple microcontrollers: doesn't scale well, takes up space, uses more power

  • upgrade to Raspberry Pi Zero, C.H.I.P., etc: overpowered, but best option so far

  • run all the logic on an external server: limited usefulness

So the question - is there a good (inexpensive, not needing many changes to existing software) product (device class) or technique that fulfils this need?

[EDIT] Further considered ideas:

  • external SDRAM, loading code from SD card: time investment, and it's essentially a Pi Zero with a much weaker CPU

It seems the answer might be that if I'm looking for a relatively mainstream (easy and cheap) solution, I should accept the greater power usage and use an ARM computer. Can anyone confirm?

[EDIT2] Thank you all, I now have an uotline of available product tiers. The general thoughts I get are:

  • SRAM prices will put anything up to and including ARM Cortex M4 at a similar level, should choose by support quality and power usage

  • where power conservation isn't a concern, a small SBC will offer cheap resources

\$\endgroup\$

closed as off-topic by Olin Lathrop, PeterJ, brhans, nidhin, Daniel Grillo Jan 5 '16 at 10:15

This question appears to be off-topic. The users who voted to close gave this specific reason:

If this question can be reworded to fit the rules in the help center, please edit the question.

  • 2
    \$\begingroup\$ Work your way up the product matrix of your chosen vendor :) If you've used Atmel, look at their higher power parts such as the SAMxxx series. At a certain point, to get more memory, you will have to jump product lines, so if more memory is truly what you need, look at peripherals to help you get there. FYI, I think the moderators here / rules here frown upon parts recommendations questions, so this may get closed. \$\endgroup\$ – Krunal Desai Dec 26 '15 at 22:44
  • 2
    \$\begingroup\$ If the ATmega128A or ATmega1284P don't meet your needs then try the XMEGA series instead. \$\endgroup\$ – Ignacio Vazquez-Abrams Dec 26 '15 at 22:49
  • \$\begingroup\$ @krusnal-desai Thank you for the warning - I am asking about a class of devices (replacements or addons) that might exist and I am not aware of, rather than something with just 8x times the memory. Question amended. What kind of peripherals do you speak of? \$\endgroup\$ – kaay Dec 26 '15 at 23:00
  • 1
    \$\begingroup\$ "Too much for the device" - like you run out of RAM and Flash? Or you run out of CPU horsepower? None of the tasks you mention seem very demanding of memory. Maybe a more specific question with what you are actually trying to do will get more helpful answers? \$\endgroup\$ – bigjosh Dec 27 '15 at 0:11
  • 1
    \$\begingroup\$ You've given relative but not absolute numbers for memory requirement, which is confusing. The "breakpoint" is probably having a DRAM interface on the chip, at which point you can add as much as you want. The Pi has a DRAM chip stuck on the top of its package. \$\endgroup\$ – pjc50 Dec 27 '15 at 2:12
4
\$\begingroup\$
  • Have a look at the mbed boards. The mbed platform offers an incredibly powerful and easy to use C++ API and cloud-based development environment (libraries also available offline) for programming many ARM based boards. I highly recommend the FRDM-KL25Z board. For more power consider the FRDM-K64F and ST-NUCLEO-F411. Many more boards there. Some of them have more than 1MB of Flash and 128KB of RAM!!! For bare metal development that's a tonne!

Many of the solutions mentioned already are also awesome:

  • Use an ATMega1284p. That part has Arduino IDE support via the sanguino project (simply add this link "https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json" to the boards manager in the most recent Arduino IDE) The ATMega1284p has 16KB of RAM, 128KB of Flash and even comes in a 40-PDIP package.

  • Use the USBTeensy 3.0. One of the most popular and incredibly powerful ARM based bare metal embedded platform with excellent Arduino IDE support. You can get the purple OSHPark version for $17. Thats $2-3 cheaper than the original.

  • Consider using some of the Newer Arduino based ARM platforms such as

    • Arduino Zero
    • Arduino Due
    • Arduino 101 (Intel based)
    • Arduino MKR1000 (Arduino Zero + WIFI not in production yet)
  • Don't forget the Spark Core. Its an ARM Cortex-M3 with a WiFi chip and an Arduino compatible API. Costs under $20

  • OS/Linux based boards such as Raspberry Pi e.t.c are also great but they are totally different beasts. Familiarity with the Linux OS running on them is necessary. Also these boards need to run your application on top of Linux. So your application might not be able to fully leverage the hardware resources/performance of the SOC. They're also not real-time i.e. tasks that need precise timing might not be well suited to run on an SBC. On the upside they run freakin Linux! This means you can run your apps in many programming languages, leverage multiple libraries, configure servers and do a lot of really cool stuff that you simply can't do on bare metal platforms.

  • The ESP8266 is a great platform and is supported by the Arduino IDE. Many of the breakout boards come with 4MBytes of Flash Memory. That's tonnes of program Memory. Not really sure how that might not be enough for any application. But if that's the case wait for the ESP32. An even more powerful WiFi SOC from espressif with more IO, WiFi, BLE, two cores and more RAM and very likely will be able to support larger SPI Flash for program memory.

Hope this helps

\$\endgroup\$
  • \$\begingroup\$ Teensy 3.1 or 3.2, maybe, not 3.0. ESP8266: dunno where to buy with such large memory, mine all have 0.5 or 1MB, and I can only tell that by melting the shield off. I don't use Arduino IDE with it, I stay true to event-driven programming it was built for, so, after failed tries with native programming, I stayed with custom NodeMCU builds. Guess I should revisit native. \$\endgroup\$ – kaay Dec 27 '15 at 20:34
2
\$\begingroup\$

Have a look at mbed (mbed.org).

It has a 'cloud based' development environment, so you can start development without having to install and configure an IDE. It has a pretty wide range of libraries, so you should have a reasonably productive starting point for projects.

Mbed currently supports ARM-based MCUs from nine different manufacturers, so you should be able to find something close to your needs.

Looking at ST Micro's mbed-compatible boards, there are 24, many of which exceed your 20x more Flash and RAM requirement.

For example, the NUCLEO-L476RG has 1 MB Flash and 128 KB SRAM. It also runs about 5x faster than an ATmega-based Arduino

You might need to be more precise about your projects needs because some of the chips have very useful peripherals (e.g. DAC, CAN, USB, LCD Driver with graphic accelerator, SDIO interface, I2S, memory interface, precision BLDC motor-control, Touch switches, RTC, etc)

Most of ST's Nucleo's cost a similar price, under 9 GBP+VAT, and are available from e.g. Farnell, RS-components, Digikey, Mouser, etc.

The Nucleo-64 boards have Arduino compatible-layout headers (but 3.3V, not 5V), and the Nucleo-32 are similar in size to the Arduino Nano. ST Micro also make shields which fit their Nucleo-64 boards, covering things like wireless, motor control and sensors, at similar costs.

As well as the mbed community, there is also ST's own community for help and support.

If you have significant experience with Atmel MCU peripherals, you should also look at Atmel's mbed boards. I have no experience with them, but I assume they will work fine.

\$\endgroup\$
1
\$\begingroup\$

Take a look at the Teensy 3.1 & 3.2...

https://www.pjrc.com/teensy/teensy31.html

Here is how they stack up memory-wise...

They have 64kB RAM compared to 2kB on the Arduino Pro Mini. They have 256kB Flash compared to 32kB on Arduino Pro Mini.

Most importantly, they are extremely well supported and documented, and have a strong community like the parts you are used to working with.

You can program the Teensy using the Arduino IDE and PJRC has already ported many popular Arduino libraries to run on the Teensy which can make the migration easy.

\$\endgroup\$
  • \$\begingroup\$ They have indeed improved, 3.0 had less RAM (16) than the cheap STM32F103C8T6 board (20). \$\endgroup\$ – kaay Dec 27 '15 at 14:28
  • \$\begingroup\$ They are amazing hardware, but the real value is in the software and support. \$\endgroup\$ – bigjosh Dec 27 '15 at 14:30
  • \$\begingroup\$ Indeed. This does seem to be the most convenient way to go while not raising power usage much. \$\endgroup\$ – kaay Dec 27 '15 at 14:55

Not the answer you're looking for? Browse other questions tagged or ask your own question.