0
\$\begingroup\$

Could be any simple camera module, like for example that: https://www.arducam.com/product/arducam-5mp-plus-spi-cam-arduino-ov5642/

Wifi module could be also any available.

I imagine I would also need some kind of H.264 encoding module, is there even anything like that?

Would I need something else to produce an RTP stream? Is there anything for that?

I fully expect the solution to be very difficult (if it exists) but could it even be wired up at home?

Currently I have setup with RPi, and I just wonder if this can be achieved without Linux or any full fledged OS, just with combining multiple modules, some electronic work and some code (I imagine it would be difficult, but I would willingly accept that challenge).

\$\endgroup\$
7
  • 1
    \$\begingroup\$ Only your development hours prevent your from going bare metal. \$\endgroup\$
    – Jeroen3
    Commented Jan 24, 2020 at 14:08
  • 1
    \$\begingroup\$ H.264 encoding can be done on any computer with enough memory and speed. \$\endgroup\$
    – user20574
    Commented Jan 24, 2020 at 15:43
  • \$\begingroup\$ Cameras typically do only compression within the frame, ie, MJPEG is just a series of independent images leading to very high data rates. Actual (network and especially radio) streaming protocols preferably use compression between frames such at the H264 which you mentioned, which requires more buffer memory and computing power to encode. \$\endgroup\$ Commented Jan 24, 2020 at 17:41
  • \$\begingroup\$ @ChrisStratton I wonder if H264 encoding can be achieved with bare metal. RPi does have it as a part of its VideoCore GPU. \$\endgroup\$ Commented Jan 24, 2020 at 18:17
  • 1
    \$\begingroup\$ It looks like there is: soctechnologies.com/modules/module-h264-encoder :) , the question is if it's possible to wire it up with such a camera and then pass to wifi module as rtp stream. \$\endgroup\$ Commented Jan 24, 2020 at 18:22

3 Answers 3

1
\$\begingroup\$

There are products based on well known modules like the ESP32 that provide camera and network interfaces. One such example I've found is the "AI-Thinker ESP32-CAM".

Image source: AliExpress @ https://www.aliexpress.com/i/4000000845941.html

Image source: AliExpress @ https://www.aliexpress.com/i/4000000845941.html

When you go for a known module you get the benefit of having plenty of resources available to help you get it up and running. For example, you could follow a tutorial and more easily end up with a working system you could use as a starting point for your final project.

\$\endgroup\$
0
\$\begingroup\$

Yes, it is possible. But, you don't want to use an RPi, everything about it assumes Linux. All the hardware drivers assume Linux.

There are very simple microcontrollers that are usually programmed without an OS (AKA bare metal). And at the other extreme, there are complex systems that are usually programmed with an OS. Somewhere in-between is a gray area, where either method could be used, which is used is often decided by the programmer's background, they will often use the method that they are more comfortable with. I grew up using bare metal, so I will tend to use that method if possible.

You should start with a MCU that people often program with bare metal. I use the TI MSP430 series, there are many others. Then pick peripherals that have bare metal drivers available.

\$\endgroup\$
1
  • \$\begingroup\$ Thanks, I'm a programmer that is currently fascinated by and exploring the bare metal solutions (simply because there is less things that can break, SD card cannot be corrupted if there is no SD card for example). What I'm missing is an overview of a correct approach to this kind of a problem. \$\endgroup\$ Commented Jan 24, 2020 at 14:32
0
\$\begingroup\$

Yes, specifically that module you linked has an example arduino sketch "ArduCAM_Mini_5MP_Plus_Video_Streaming" and you can see a discussion about reaching the limits of framerate for streaming here:

https://github.com/ArduCAM/Arduino/issues/173

Basically instead of writing to your SD card you'd just be writing the data out to a UDP socket. I've done similar streaming with small amounts of data from 8x8 thermal imaging arrays so that I could view the current camera image on my laptop.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.