I have a BG96 Arduino Shield module connected to an OpenMV Cam H7. I need to send the image to the cloud for further processing. I send each pixel of the image, and I can use HTTPS, UDP or MQTT. My questions are:

-Is it possible to use my own computer as a cloud environment?

-I will only send a couple of pictures for documenting, so do I need to set up something like a virtual machine?

  • 3
    That's two questions. Please ask one question per post. Your second question will almost certainly be opinion-based and therefore off-topic.
    – Chenmunka
    Mar 9, 2020 at 11:06
  • 1
    It may be useful to understand that "the cloud" is just another way to say "Somebody else's computer"
    – hardillb
    Mar 9, 2020 at 11:12
  • Somebody else's computer might also be mine. The reason of my second question is I don't want to use something like ThingSpeak, so is it possible to just use my computer as a server? Mar 9, 2020 at 13:57
  • It's entirely your choice what you choose to run on your machine (there are multiple MQTT brokers or HTTP servers available for nearly any OS)
    – hardillb
    Mar 9, 2020 at 17:55

2 Answers 2


Your question is a bit confuse for this forum, however we can provide you some pointers so that you can rephrase your question and progress in the topics.

You do not need any kind of VM, however to do that you need:

  • A webserver and an open port on your machine. By default webserver bind themselves to the port 80, but on most computer and routers the port is closed by default. So you need to choose a webserver technology, my personal favourite is nodejs because it's very easy to learn and every thing you need exist the nodejs framework (uploading/downloading files, sending emails, templating html...). But as geonnave python is a good candidate too.

  • Then this webserver needs a machine to run on, since you seem to be a beginner I would suggest installing a linux distribution (probably ubuntu) in your personal computer.

  • Last but not least you need to send the data from arduino, you can choose any technology you want to do that but I'm not advising mqtt since it don't seem to be really fitting your usecase. But classic tcp over an open port will be perfect and simple. Just send binary data or json file or whatever your most confortable with.

  • 1
    Thank you for your comment. Can I kindly ask why MQTT does not seem to be fitting for sending images over a network? Throughput of MQTT is more than HTTP, regarding amount of data I have, I thought it would fit best. Mar 11, 2020 at 10:46
  • 1
    I would not recommand MQTT because you don't need what's MQTT is designed for. I've made a short answer about MQTT here : iot.stackexchange.com/a/4552/3383
    – YCN-
    Mar 11, 2020 at 11:02
  • 1
    Thank you for your help. I don't need to store data actually, I only need to send arrays of consecutive, one by one. Mar 11, 2020 at 14:58
  • 1
    Then a TCP socket is perfect for your usecase you don't need anything more.
    – YCN-
    Mar 12, 2020 at 8:14

Assuming your Arduino has Wi-Fi, you can send the image using HTTP to a Web Server running on your own computer.

So you would need:

  • a Wi-Fi shield (or an Arduino with built-in Wi-Fi)
  • an HTTP client library running on the Arduino
  • a Web Server running on your computer (I recommend python's Flask)

As for how to encode the image, my suggestion is base64 + JSON.

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