I'm currently thinking about the feasibility of creating a robot which streams live video footage and other data such as temperature, humidity, etc. to a smartphone. Is it possible to do this on an Arduino Uno board? Or is a Raspberry Pi board needed?
A standard arduino (like the Uno) is not powerful enough, but if you go a bit higher, like the ESP32 (with WIFI), it's definitely possible to stream an image with a tiny Chip: ESP32 with camera
The arduino is physically incapable of doing video streams. The atmega 32u can only handle gpio operations and working with sensors and some math and serial comms. The Raspi CAN take a video image stream and then publish it where you want. There is a camers module that plugs directly into the pi for this sort of purpose. Usually the arduino acts as an I/O expander for the pi. The pi then can connect to the internet and publish data to a webserver or to a server machine. Does this make sense?
You need more computing power than the Arduino Uno. Your question is needs more context, there is endless electronics that can do it, but if you want to find one that can handle your particular case, you need to think about the following:
- What kind of data rates do i need to stream (it is a trade off between computation power, transmission distance, data rates)
- RGB cameras have very different resolutions which influence data rates (compression needed?)
- What are my sensors data rates wanted (compression needed?)
- Does it need to be realtime (what delay is acceptable)
- What should the electronic platform do else then streaming data?
- Physical constraints your robot has (how big, heavy can your electronics be)
- Physical pins you need to connect sensors (or what interfaces you want to use like i2c, rs232, usb, camera direct connection, ...)
For a project i did, i made a simple data-link for a drone, i needed a Raspberry Pi 2 to cope with the 1080p video compression and some sensor data and command and control link. Over a standard internet protocol (RTSP, TCP, UDP) and compression you will introduce delay i estimated around 300ms for the video (it used about 3 MBit for 1080p h264 compressed) for the transmission i used an ubiquity long range wifi with limited success (you never get the ranges they advertise, especially if you also move), with a 3g or 4g modem you may get better ranges but you will be dependent on the 3g/4g network coverage. As the project evolved they now changed to a Raspberry Pi 3 because they wanted also to stream LiDAR data (for LiDAR data rates needed are big for a usable data set, 4 MBit is not uncommon). But all of this things can be done in a completely different way.
For projects like this there are trade offs to be made, unless you define your functions properly and have some experience it is hard to know what to use in the end. The technology today will allow you to do what you describe but there will be a cost to it (time, money, learning).
My robot project uses an Esp32Cam to control the robot and stream video to a web ui over a websocket connection. https://github.com/Ezward/Esp32CameraRover2. It is also possible to do this with an Arduino Uno and a OV7670 camera module, but it is way easier with an Esp32Cam. Cheap and easy.