ARM Pro Mini

Slowly but surely, the age of 8-bit micros being the first tool anyone picks up is coming to an end, and we’re seeing more and more ARM dev boards in nifty, breadboard-friendly packages. [Zapta] thought he would throw his hat into the ring with the ARM Pro Mini, a tiny little board based on the ARM M0 microcontroller.

The ARM chip on this board is the NXP LPC11 with 64 kB of Flash, 12 kB of RAM, and just enough pins to make the whole endeavor worthwhile. The board itself is extremely simple, with just enough SMD parts to be annoying to hand solder.

All the nifty bonuses of ARM boards are available on the ARM Pro Mini, including drag and drop firmware over the USB port, support for single stepping and debugging, and the IDE is a single install with NXP Eclipse/LPCXpresso. Mbed is also supported, so it’s possible to use this board with no software installs when using the online Mbed IDE.

[Zapta] has put everything you need to build this board up on his Github, and has even done a few simple ‘getting started’ tutorials, including a cool little example with a graphics library and a small OLED.

83 thoughts on “ARM Pro Mini

  1. So when can I use the Arduino IDE or even GCC and Makefiles? Arm is well supported.
    Open hardware with closed software is not a combination I care for. You can’t learn as much from captive projects. The four freedoms are important.
    I’d probably switch tomorrow if the examples which can only be done today with the closed IDEs could be done by cloning a repo and typing “make” – which I can do a cross-compile for the Raspberry Pi and other ARM based boards.

    There is one more place where 8-bit will continue to rule for a while – breadboarding. My DIP AVR micros are much easier to play with and there are lots of variants (tinys, megas), although there are DIP variants of the NXP./ARM, and breakout boards would work.

    You don’t see PIC micros as often as AVR because of the open nature of the Arudino IDE. Microchip has MPLAB. Same idea.

      1. That is indeed what I thought “arm pro mini -> teensy3.x”
        Going the mbed route will stymie you with magic serial numbers, not sure if those lpcexpresso guys are really open source (as in contributing).

        1. You don’t need any serial numbers to use the mbed online IDE. If you are stymied then ask in the forums or email the support address.

          The instructions in the Pro Mini’s readme for using it with developer.mbed.org should get you started.

    1. I like that the Arduino IDE comes bundled with so many open libraries.
      But the IDE itself? Why would that be your deciding factor? That thing is horrid!

      I can’t even count the number of times that I have inserted an f into code because I instinctively tried to type f to bring down the file menu.

      Then when I click any of the menus.. about 50% of the time 1/2 of the options are missing! Or.. they are on top of one another! Click off, click again and it usually works. I would think I am the only one with the problem since it has been there through several versions but I’ve installed it on many computers and still it’s the same!

      How about some sort of built in language reference? Or type ahead? Most IDEs have that.

      It is SO easy to close without saving. No, i don’t want more nag screens! Other IDEs save your work when you hit compile. Arduino saves it to a temporary location to compile and leaves your original untouched. I’ve lost hours of work, sure it was saved… I compiled it!

      Why is ‘compile’ labeled ‘verify’? I guess it’s because you are verifying that your code compiles but really?

      Why after clicking verify, then imediately clicking upload. without changing anything does it need to compile again before it uploads? This is especially a pain if you are waiting with the reset button because you are using a serial interface with no control lines.

      Ok, done ranting but I am eager to see other people’s complaints that I hadn’t thought of myself!

      I like your GCC plus makefiles idea much better!!!

        1. I have to admit that Arduino IDE is kind of a bad text editor with buttons to compile and transfer. Not much more… I’ve been searching since a long time an IDE for Arduino, available for Linux, that allows me to improve my workflow and my coding. This is not the case with the Arduino IDE.

          The only solution is to not get used to Eclipse, Kdevelop etc… (yes I have my own bad habits like hitting Ctrl+Space to list all the propositions)

      1. Don’t settle for *that* intentionally crippled “IDE”. Serial debugging is so 1980’s backward as Disco. It is fine is you are a pro, but most are not.

        Since SWD hardware debugger is built-in on Cortex cores (older or larger chips uses JTAG). Do yourself a favor and get hold of a SWD hardware standalone (or use a eval board with built-in) debugger for ARM. Makes you life a hell lot easier to do hardware source code level debugging.

        Most of the real IDE supports it and give you source level, break points, register/asm level debugging etc. If not, use gdb (or with GUI front end).

        1. It’s a nice operating system ;-)

          On a serious note, you will tend to form habits if you spend 8+ hrs a day typing in the same environment. I try to exit notepad with :q pretty much every time I use it, and it sometimes irks me google chrome doesn’t jump to the top of a page when I hit gg.

    2. “So when can I use the Arduino IDE or even GCC and Makefiles? ”

      RIGHT NOW, what is the problem

      “My DIP AVR micros are much easier to play with and there are lots of variants (tinys, megas), although there are DIP variants of the NXP./ARM, and breakout boards would work.”

      Well I was going to destroy your argument but you seem to be doing a pretty good job yourself

      Personally I find the ARM Cortex M0 chips to be: far less expensive, far less power-consuming, require far less external components, run far faster and have far more memory resources than the AVR parts. The only reason to choose an AVR device at this point is for a legacy application. Between embed and coocox and espruino and armpit scheme, the software options for ARM are WAY more interesting.

      ARM has sufficient horsepower to run interpreted languages like scheme or javascript. These implementations have a very easy learning curve so you can get your project up and running and talking to peripheral devices much more quickly than if you code up in a compiled language. You can debug interactively and fix bugs on the fly. If you’ve never tried it before, you will be really surprised at how quickly you can get a complex piece of software off of the drawing board and into a working state. Espruino has a lot of promise because you can easily recode critical loops in C and compile them into the interpreter.

      1. “far less power-consuming” well this is a bit of a mixed thing. uA/MHz yes, they are better. But on the other hand it’s not that easy to find something with very low current(<1uA) when on standby with a 32K RTC.

      2. Kind of funny to see someone asking for 32kHz RTC for ARM chip and power consumptions… So this is not what the typical Arduino users would ask for as they use a discrete RTC chip instead of the 32kHz osc in AVR chip nor do the care too much about the various power saving modes etc.

        I play with ARM M4 and got the lowest power deep sleep to 5uA with RTC running. Teensy forum users haven’t figure out how to do that on their own and last time I checked they were at least 30x. Pretty sad for the herd. Current for PSoC4 (M0 no built-in RTC) deep sleep at 1.7uA and hibernate at 150nA.

        1. I hate to disappoint you, but i have not used an arduino yet.
          Your 5u is still a good value, but i bet it is a lot more when your temp shoots up to, say 50-60 deg C. Had this issue with arm based board burning through it’s RTC battery in a few months due to sun heating up the box.

    3. I don’t understand how a closed compiler and IDE hurts you. The code you’re writing is C/C++, and that can be compiled anywhere and shared with anyone.

      The limit to portability is the hardware – different peripherals on each microcontroller and different registers you need to use to control them. Arduino has addressed the problem by building a library that gets ported to several other microcontrollers. That library is open source, so you could port it to your microcontroller of choice, and that’s great. But your port will work just as well on closed IDEs and compilers, so their openness is a non-issue (from a technical standpoint, at least; I know some people have strong philosophical feelings about closed software).

      AVR Studio’s advantage over Microchip MPLAB 7 was not that it was open source. The advantages were that (1) it was cross platform (Windows, Mac, Linux), (2) had more features (Eclipse vs. homegrown IDE) and (3) the zero-cost compiler wasn’t crippled (Microchip turns off optimization in its free compilers). If MPLAB had matched AVR Studio’s features, it would’ve been every bit as good a choice for Arduino.

      That said, I use Microchip PIC32s because they have the largest selection of 32 bit microcontrollers in DIPs.

      1. Bob, I fully agree.
        I would add that not all optimizations are turned off in free compilers and are fully usable, especially for home projects. Difference to paid versions is not that huge.

        Except of that, you can use MIPS GCC for building binaries for PIC32, at least that’s what I do for some projects. You can use “fork” of the same taken from chipkit MPIDE (in fact, Arduino for PIC32), both are fully open-sourced. For loading binary into PIC32 one can use fully open-sourced PicKit2 and similar programming software, like pic32prog.
        And there is also pinguino project, designed as open sourced alternative to Arduino, using Microchip micros (both 8 and 32 bit).
        PIC32 MCUs come in PDIP packages as well, like PIC32MX270F256B – 256kB FLASH / 64kB RAM, USB and so on. Copmpare it with LPC1114.

        Often I see a lot of people whining about how PIC32 devtools are closed source, instead of doing a bit of googling.

      2. “I don’t understand how a closed compiler and IDE hurts you. The code you’re writing is C/C++, and that can be compiled anywhere and shared with anyone.”

        You can only wish. Placing stuff at specific memory locations, for instance, is not part of C/C++. Not talking about memory mapped IO. You need that for your interrupt handlers (aka ISR). So, all compilers/linkers have different special modes/hacks to achieve that. That makes it non portable.

      1. Thank you for mentioning the work those guys are doing. I submitted this to HAD weeks ago, but I guess it wasn’t gee-wiz enough for them to bother even a one line mention.

        Just so you don’t have to read all 80 pages on the Arduino forum, I’ll summarize. Those guys are taking the old Maple IDE software and making it compliant with the Arduino API. They are fixing quite a bit as they go along.

        Roger Clarke’s page is a good place to start: https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki

        BTW, you can get a Maple Mini Chinese clone for $4-$5 on Ali Express, which is where I got mine. The only real difference between the Chinese clone and the original Maple Mini is that the clone is a two-layer board and they did away with the separate regulator for the ADC (and some caps). I haven’t done any testing on this yet to determine how many bits the ADC will be degraded by this. I suspect that even if it is 1-2 bits, for hobby use, it won’t be a deal breaker (the ADC is 12 bits).

        The chip on the Maple Mini and clone is the STM32F103, a Cortex-M3. The particular variant used has 128KB flash and 20KB SRAM. Lots of GPIO, I2C, SPI, CAN, DMA, ADC, etc.

        I am not able to contribute to the code development, but I have some boards and will help test. I hope that some of you talented coders will help those other guys out. Having such an inexpensive and powerful board more accessable will be a good thing for all.

        1. “STM32F103 is ARM Cortex-M3, not M0”

          I know that, but once you hit the “Post Comment” button the post is there in tablets of stone forever. Sorry if there is any confusion as a result.

          Blame the lack of an Edit button. I’m sure the “No Edit Button” problem must have slipped under the radar at HAD, you might want to mention it to those in the upper sanctum at HAD towers. I’m sure they will address it as soon as you bring it to their attention.

    4. Check out Penguin for PIC.
      Microchip and AVR were going at it for a while. I was a PIC guy. They had the history, and before the Arduino, the had the market share and hobby market.
      Good to see the open source and abstraction nature of the wiring/arduino language making room for PIC, MSP, ARM, etc.

      For better or worse, the future of the hobby and by extension the profession isn’t necessarily what CHIP you pick up for a project, but what ABSTRACTION you use. Arduino, python, is. Who knows what else.

  2. It’s wonderful to see the adoption of open source ARM designs. Hopefully, more and more open source maker-friendly tool chains and debuggers will arise.

    We have a dime sized Atmel ARM Cortex M0+ with IMU and Bluetooth Smart on the way (awaiting PCBs from OSHPark). The base design is open source: github.com/femtoduino/femto-usb

  3. “+Slowly+ but surely, the age of 8-bit micros being the first tool anyone picks up is +quickly+ coming to an end”.

    Is it slowly or quickly, eh?

    I’d argue slowly. I’m enjoying getting the most from the least. The ATTiny85 is a buck fiddy and gives you a serial controller. It costs more for a bottle of water.

    1. Yeah, I would have to disagree that 8-bitters are going away any time soon. For one thing, we dont really NEED wifi enabled ARM powered toasters.

      There are a more than 20 microchips in a modern car. All distributed throughout, and most are doing really simple things that dont need more than 8 bits.

      There will ALWAYS be applications for the little buggers.

  4. The ARM “Maple” boards and clones are almost drop-in replacements fir Arduinos, including the IDE and sketches, many of the simpler ones running with no changes required to run on their STM32 ARM Cortex-M3. I just ordered a couple of the cheap ARM Pro Mini “Maple” clones off ebay for $4.76USD Buy-It-Now and free shipping:
    http://www.ebay.com/itm/311248450407

    Beware that unlike the original Leaf Maple, these cheap clones use 2-layer PCB instead of 4 layer, and simplified power electronics, so the analog signals will probably be noisier without isolated digital and analog power and ground planes. Check out the Leaf Maple ARM IDE.

    1. Am I understanding this correctly, that I can use the Arduino IDE with this board? What do I have to install to make this board show up under the board-menu-entry and the correct bootloader will be installed?

      1. You don’t need a bootloader for the LPC11Uxx. Just plug it in the USB port with ISP switch pressed, and it will present itself as a USB stick with a “firmware.bin” file that you can replace with your own firmware.

      2. I have not played with it yet, but the Maple IDE is supposed to be based on the Arduino IDE (see the liebmaple link above). It uses gcc instead of avr-gcc. That page also says this: “With a few exceptions, the entire Wiring/Arduino language is supported. However, there are some subtle differences, most of which are improvements.” The leaflabs bootloader is on GitHub:

        https://github.com/leaflabs/maple-bootloader

        1. That linked page also says “NOTE: These drivers are not digitally signed, and because of the default driver signature enforcement enabled in Windows 8, it will not allow the installation of the drivers until this feature has been disabled.” Windows 7 also allows running unsigned 64-bit drivers, also with decreased security.

        1. I pushed them very hard, but the wont work.

          Now I’m playing around with some mbed enabled boards from NXP, ST, Nordic and Freescale. It’s fun and they all worked out of the box w/o disabling securities inside Windows.
          Yesterday I killed a NRF51822 (Seeed Arch BLE). Ported the code to a FRDM-KL25Z (didn’t need the BLE option of the Nordic) within minutes.

        1. A joke. Cosmological constant is light speed, so “cosmologically slow” means “slower than light speed”. Geologically fast (compared to plate techtonics) means “faster than continental drift”. That describes pretty much any speed we are normally aware of. The point being that the original (now fixed) quote was correct in its use of both “slowly” and “quickly” on different comparative time scales. Geek humor…

  5. One problem with modern computing (x86 for instance) is there a HUGE separation between the software and the hardware. This isn’t a bad thing per se, as it allows software to run on different hardware configuration without the developer having to worry about the underlying implementation. eg, if I want to access a TCP/IP port, I can easily do so regardless if that data goes out via the ethernet port, Wifi, or even a lame USB adapter. It’s all the same. Languages like Java often take it even further where not only does the hardware not matter but quite often the OS involved.

    The problem stems from an enormous number of so-called “programmers” that have no clue how their computer works… at all….

    Having something easily manageable and digestible, eg an 8 bit controller works to our advantage in the long run. It allows more people to have access to readily available and largely supported tools and hardware and lets and individual learn and understand basic hardware fundamentals and not wrap all of that up in a crappy IDE. This is why I despise the Arduino platform (and others like it in the past such as OOPic and BASIC Stamp) since it, again, separates the hardware from the software.

    ARM is great. I use it myself. But I can do some really nice stuff with ARM because I actually understand the hardware I’m working on. That’s something that wouldn’t be possible if I let some useless RAD-like platform do the heavy lifting for me, open source or not.

    Don’t take it the wrong way. Things like Visual Basic, Java, Arduino, 32-bit ARM and others like them have their place and we certainly need them. But they, and other tools like it, should not be panacea that far too many people think they are. We’re shooting ourselves in the foot and we’re too busy to notice.

    1. Indeed this separation is a very good thing, as you don’t need to know exactly how your computer works. So with arduino more or less the same has happened: to make it easier a lot of the hardware has been abstracted away. That is because the deep knowledge that you value so much, turns out not to be so valuable after all: it can be largely be replaced with a library and a simple IDE. These new people are able to program their arduinos, with a gentle learning curve. It works as intended!
      It is not up to you who can call themselves a programmer. If you feel the need to denigrate people with less experience, then I don’t think you are a very nice person, or at least not acting like one.

      1. You sound like a wimp. Are you one of those guys that cries to mommy when the C guys tell you to RTFM?

        I see his point. It’s people using Cricuts because they have no idea how to use an X-acto blade. Sure Cricuts are nice and make things fast but you lose out not knowing how to use an X-acto and the Cricut people laugh all the way to the bank.

        1. Every time this argument comes up, the question is how far back do you go?

          Is it necessary to know how the library you are using is working?
          Is necessary to know how the compiler is working?
          Is it necessary to know how the processor is working?
          Is it necessary to know how each individual bit of hardware interacts with each other?
          Is it necessary to know the chemistry behind the CPU?
          Is it necessary to know the quantum mechanics that defines the behaviour of the particles?
          Does the guy who designed the CPU need to know how to program in node.js?

    2. Using different hardware is like traveling to a foreign land as you have to get out of your comfort zone. What happen if you are doing something new that no one else has written the code previously? Are you going to wait for that? Someone still need to know the hardware level stuff to write those library.

      You can either be an explorer, adventurer, backpacker, tourist in a guided tour or staying home passively watching traveling show.

  6. i still use an 8 bit micro in a few applications but the future clearly is arm, we need a wider selection of DIP ARM MCUs and cheaper programmers if you really want to set this off, come on ARM start investing!

    1. One option is to use DIP chip carriers (buy them from schmartboards or ebay or send your own designs to OSHPark). The 5mmx5mm 0.5mm pitch package used in ARM PRO MINI is not as difficult to solder as I initally thought (you can use drag soldering as explained on youtube or one of the home reflow methods). Actually, soldering the micro usb connector is more challenging but once you get the hang of it it’s not that difficult. Get good magnifier for inspection and use plenty of flux and you should be fine.

      As for programmers, the ARM PRO MINI does’t need any, just a standard micro USB cable, and the board is ready to use out of your reflow toaster. No need even to install a avrdude like software, just a simple file drag and drop.

      1. I needed a DIP carrier for an SMT RS-232 to TTL level shifter chip I found on an old laptop motherboard. I drew it up in Eagle, then printed it, pressed it, and etched it, and had it ready 20 minutes after discovering that I needed it.

        Not “rocket science”….

  7. I was using a 16 bit microprocessor (the 68000) in an embedded system back in 1982. When I returned to electronics as a hobby in 2005, I was shocked that 8 bit micros still existed. I figured in 23 years, the cost of 16 and 32 bit cores would’ve come down so much that there’d be no point in using 8 bits.

    Now it’s 30 years after the 68000 and 8 bit is still thriving. It’s bizarre when you think about it.

    1. Consider regular stainless-steel knives. They are present in every home, despite the fact we have electromehanical, laser and many more devices for cuting things. Reason is : they get the job done, and price is very low.

      1. Agreed! Well put.

        One other factor is that the 8-bit chips we’re talking about are mostly AVRs from Atmel. These aren’t tiny-lith versions of the same 1970s designs. Two guys in Norway developed a fresh RISC 8-bit architecture for MCUs.

        In contrast, the Motorola 68k from 1979 had neither on-die storage nor cache. In the interest of fairness, neither of them has an MMU so neither could run Linux.

        The m68k is complex to set up for an embedded system on a small platform, such as taped under a coffee mug or woven into clothes. Let’s contrast this with Chibitronics and the Adafruit Wearables, Flora and Gemma.

        1. I’m not saying the 68k should be in use today (although there is a microcontroller today, ColdFire, whose ancestry can be traced to the 68k). I said “I figured in 23 years, the cost of 16 and 32 bit CORES would’ve come down”. Indeed they have, and I’m just surprised that they haven’t come down enough to wipe out 8 bit microcontrollers.

          1. I concur that the 68k still has uses. There is an MCU version which begat the DragonBall and eventually led to the ARM stuff we dig today.

            My theory is that 8-bit isn’t obsolete because 8 bits are an amazing demonstration of computer power in a simple package. They can deal with lines of input and output, the sensors of the world. They’re the tugboats and rowboats in a world of luxury liners.

      2. I don’t think knives are a good analogy, since they don’t follow Moore’s Law. Electronics come down in price. When I was using the 68000, IBM’s 8088 PC was new and most people were still using 6502s in their Apples and Commodores. Today, no one uses anything less than a 64 bit chip. Yet with microcontrollers, people are still using using 8 bits, despite the fact that 32 bit microcontrollers today are much cheaper than 8 bit microcontrollers in 1983.

        1. I get where you’re coming from, I really do, but as well as the points mentioned above, there are still uses today that 8-bit chips are still perfectly suited for and would be a total waste of transistors and clock cycles (possibly energy usage) when using anything greater.
          Think semi-intelligent Coffee machines with LCD displays, Washing Machine controllers, TV remotes, Alarm Clocks, House Alarm systems, even individual or bunched RGB LED controllers, etc etc etc.
          Stuff now is slowly beginning to come with Internet/intranet capabilities, this is where more capable CPUs will come in, or are otherwise supplemented, e.g. with the ESP8266 or similar.

          1. Fair enough, Stu. Certainly, no matter how cheap a 32 bit uC gets, an 8 bit will be cheaper. That’s why a company making 100,000 widgets will use it. But why should a hobbyist? 32 bit microcontrollers start at 62 cents in single quantity at DigiKey. If you insist on a DIP, they still cost as little as $2.77.

          2. That’s true only up to a certain point. ARM chips uses a newer chip technology with smaller geometry than the 8-bit, so the incremental cost for getting more memory is significantly cheaper for ARM than say ATMega series.

            ARM chips on digi-key @ QTY 1 (size: FLASH/RAM)
            CY8C4013SXI-400-ND IC MCU 32BIT 8K/2K 8-SOIC $0.62000
            MKL03Z8VFG4 MKL03Z8VFG4 8K/2K $1.12000
            336-2579-1-ND EFM32ZG108F32-QFN24 – Silicon Labs 32KB/4KB $1.22000

            That’s getting into the lower end pricing of 8-bitter. The beauty of ARM is that they got you covered should you need faster/bigger chips, So it is worth while to learn it in the long term.

      1. I gave few free samples to people on eevblog that asked for it but am not planning to commercialize it. The license though is very liberal, attribution and share alike not required, commercial mixing and cloning are ok and free, so hopefully somebody will make them available in larger scale. I know of at least one entity that plans on doing so.

  8. How is the “support for single stepping and debugging” working?
    It’s not SWD soooo it is what exactly? Is it useful? tekkieneet says no.

    I’m still looking for “the” general purpose ARM board which I still have not found. The Arm-pro-Mini looks nice since it’s getting somewhere close to what you want to solder at home.

    Regards Christoph

Leave a Reply to pseydtonne Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.