Hello, I am looking to select a microcontroller or application processor for a quite complex project as well as a suitable development board to get started. The device should be capable of the following:
Measuring distance from a short-range ToF sensor (between 50-200 Hz) (I2C).
Turn on and off a series of visible LEDs through a driver.
Generate PWM outputs at 1 kHz and count number of pulses in a sequence.
Control a circular TFT IPS or OLED 450x450 min resolution display with capacitive touch interface which displays system status, readout of sensors, has several menus and adjustable user parameters. Think dial gauges.
Support a 5-8 MP embedded camera which displays video on the display up to 20 fps (such as 8MP IMX219 with MIPI interface) and also capture individual pictures from the camera.
Provide haptic outputs when user touches display (I2C).
Parse data from an IMU and calculate orientation (BNO055 or BHI360 most likely).
Have wireless capability to periodically connect and offload data to the cloud.
Not required, but potentially have voice recognition/control (with a microphone and speaker).
The boot time is not super critical, but should not take more than 20-30 seconds and is anticipated to be a portable device such that energy efficiency is somewhat important.
I know these requirements are overly vague, but I can provide more information if necessary. Mainly at a high level I am trying to determine if a micro is the right way to go with micropython or would it be far easier to go the route of a raspberry pi or a variant running linux.
So far I have been looking at the Arduino Portena or MKR Vidor 4000 as potential embedded options as well as the raspberry pi zero 2 W or SBCs like Raspberry Pi Compute Module 4. Also, I don't want to use an ESP32 series device.
Picking the microcontroller first is not the best approach. You listed several requirements, so you should:
Determine Computational Requirements:
Evaluate the processing power needed for each task and device in your project.
Find a Suitable Processor:
Look for a microcontroller that has the necessary hardware features (e.g., communication interfaces, timers) and computational capability to handle your requirements.
Consider Throughput and Power Requirements:
Take into account the processor's throughput and the power consumption of all connected devices. Remember that many processors draw more power when active, so factor that into your calculations.
Determine Battery Capacity:
Once you know the power requirements, calculate the battery capacity needed to keep the system running for the desired duration. Add a "fudge factor" to account for battery degradation over time, as batteries lose capacity gradually.
As you mentioned, this is a very complex project. Do you have the necessary experience and tools in your toolbox to successfully accomplish it?
By following this approach, help you ensure that the microcontroller you choose is well-suited to your project's needs while maintaining efficiency and reliability.
Thank you for the input!
Not sure if this was the right forum, but I do appreciate the feedback.
I am less familiar with Linux/Raspberry Pi OS compared to Arduino/PlatformIO which is why I asked.
For many projects in the past I've been able to use microcontrollers running micropython or arduino. The challenge of this project is the primarily the 5MP+ camera and being able to display video at 20 fps on the TFT display and having very limited RAM/processing power to handle all of that data.
I think the optimal implementation is to run linux on top of an Arm core processor such an STmicro or something similar to RPI Zero 2 W. This would also have the ability of using less power using a sleep mode.