How do I decide which ARM board to go for if I am aiming to use it as a micro-controller to run sensors, actuators, motors, and solar panels? And I wish to power up the board via Li-ion battery pack.
Hi joabchua and welcome to the community!
For very low energy usage, it might be interesting for you to have a look at Cortex-M0+.
It is a good idea to make it possible for the MCU to turn off all the peripherals on your design, so you can save energy (especially if running directly on solar panels or a Li-ion battery, you may want to turn on a sensor once per second - or once per minute instead of keeping it on all the time.
You can also use the Watch-Dog timer to wake your MCU up after for instance a minute, and then turn on some sensors, take a measurement and turn off the sensors and put the MCU to sleep, then repeat.
A couple of things you will often find convenient, would be if the board has ...
1: Timers (I need those in almost every design I make)
2: DMA (this enhances the MCU's ability to transfer data, including copying data from memory to memory)
3: On-chip ADCs and perhaps a comparator. I don't use ADCs very often myself, but at times I find that I need one, and it's a good thing to have handy.
For motor control, I would like to mention NXP's LPC1500 series. If you need USB, a LPC1549 would be a good choice.
Embedded Artists make a nice board containing a LPC15xx, this board can be connected to a board which controls motors.
If motors are your primary focus, this is probably the best starting point. In addition, the LPC15xx series have a very strong feature called SCT (State Configurable Timer); it can be used for many different types of tasks, and remember that you can use it for more than one job in one design!
If you need WiFi, try taking a look at STMicroelectronics's STM32W108; the price just dropped a lot for this MCU (only £1.6)!
Let's imagine you've found a suitable board or microcontroller and you need a few I/O-pins extra. If that's the case, you can add 16 I/O-pins by using an I/O-expander. This can easily be done up to 8 times if using I2C. Again, NXP make such I/O-expanders; so do Microchip.
It's also possible to add external ADCs if your board does not have enough, or if you've used the pins for other things.
Many sensors have a digital interface (often using I2C). Almost all ARM-based MCUs have at least one I2C interface, where you can add more than one device.
SD/MMC cards can be read/written by using the SPI, which you also find on almost all ARM-based MCUs.
I find both NXP and STMicroelectronics Cortex-M based microcontrollers particularly easy to work with; there's also good support for these in OpenOCD.
-But perhaps you want to try out a board before you decide which one to go for.
I recommend that you take a look at this blog-post, perhaps you can win a board, so you can start doing a couple of tests.
Since you're a student, it might help you to know that the tools have free trial versions, but you can also build your own GCC+OpenOCD toolchain, which will be a fully working development environment. Thus you're not limited to a specific development computer; you can choose any platform as long as it can run OpenOCD and GCC.