I want to build a device to perform image acquisition and processing, but I don't know which kind of board/microcontroller to use. My idea is to use a low-res camera, take a shot, analyze it and return the results. These shots should be taken at most a couple of times per day, in an outdoor environment, in "controllable" conditions: no video streaming or elaboration, only single shots.

An Arduino-like board would be perfect, but a single low-res image wouldn't fit in the low amount of RAM available to any Arduino board available (quick estimate: 100x100 pixels times 3 color channels times 4 bytes for each float32 = 120 KB).

Therefore I was thinking about a Raspberry Pi Zero board, which mounts a Broadcom BCM2835 and 512 MB of RAM, but it's rather an overkill for my needs.

I don't have any high computing needs, since the interval between the shots is really long (hours), and the pictures taken don't need to be stored (so no need for an external SD memory). The microcontroller should process the image processing on its own; there won't be any laptop around to delegate the compute, and I don't want to transmit images over the internet since this thing is gonna stay outdoor in places with low network coverage. A small GPU chip inside would be great.

Moreover, power consumption is another "constraint": between the shots (hence, the 99% of the time), the system will go in sleep mode/next-to-zero energy consumption, or simply shut down. I plan to wake it up from a "master" node nearby via wireless connection when it's time to take another shot. This requirement is set because there won't be power sources around, at most a solar panel to recharge the batteries the microcontroller will run on.
(The RPi doesn't seem to have a real sleep mode: from a very quick search I found this discussion, where they suggest to shut it down completely and wake it up using an external device - which is what I'm planning to do anyway.)
Moreover, I think running an entire OS is useless: my application is a single program, and I don't need a kernel using my precious CPU clocks. I won't use any peripherals such as usb/hdmi/sd available in a RPi, but having them on a prototype is fine; if I'll ever build any production-level board I'll use directly the Broadcom chips.

To recap, I'm looking for suggestions for a board/microcontroller with the following details:

  1. A couple of MBs of SRAM/DRAM, to store a shot from a low-res camera to be immediately processed.
  2. Low-power consumption: it will need to run on a battery pack. A sleep-mode is not needed, I can turn the device on at each iteration (using an external wireless module).
  3. GPIO pins to get the picture from camera and use other stuff.
  4. A decent CPU (maybe with a GPU?) to run OpenCV or other image processing tools, in a decent amount of time (I'd say at most 1h to analyze a couple of shots).
  5. No need for a complete OS: an Arduino-like board or microcontroller, with more RAM would be great.

What advantages could I get from using a RPi, instead of working directly on a CPU+RAM like the ones mounted on it? The board and the OS would not be of much help in my case, I think.
In case you think using a board to prototype my idea isn't useful, what kind of microcontroller would you suggest to use?

Similar questions:
In this discussion the OP requested a device with more RAM to perform image processing, but he wanted to install an entire OS on it: Embedded System for a image processing task
And here's a similar discussion: Embedded system for image processing project

Edit: I don't want a specific recommendation of a specific board/microcontroller to use (although it would be great), rather to point me to a "class" of devices that could suit my needs.

  • \$\begingroup\$ Do you already have the application working on a PC? If so, going with a <whatever>Pi-class board would be the easiest migration. \$\endgroup\$ – Dave Tweed Jan 14 '19 at 2:09
  • \$\begingroup\$ @Dave Tweed No I haven't written any software yet, because the selection of the board could change the programming language I'll use. \$\endgroup\$ – Alberto Chiusole Jan 14 '19 at 8:43
  • \$\begingroup\$ @DaveTweed I've clarified in the question that I don't want a specific board name, but rather a suggestion on which kind of board to use for my specific use case. Hope this solves the "off-topic" votes. \$\endgroup\$ – Alberto Chiusole Jan 14 '19 at 11:33
  • \$\begingroup\$ The big pre-requisite here is a camera interface, surely? Is GPIO sufficient? Generally "microcontroller" and "GPU" are exclusive, but you might have success with some of the dsPIC boards? \$\endgroup\$ – pjc50 Jan 14 '19 at 11:45
  • \$\begingroup\$ @pjc50 You are right, the other pre-requisite is the camera. I saw the (OmniVision OV7725](ovt.com/sensors/OV7725) and it seems perfect for my low-res and low-power application. Any thoughts? \$\endgroup\$ – Alberto Chiusole Jan 14 '19 at 12:00