Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    Camera image over MQTT

    Scheduled Pinned Locked Moved MicroPython
    low power
    27 Posts 9 Posters 17.9k Views 11 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J Offline
      jmarcelino @robmarkcole
      last edited by

      @robmarkcole
      The other problem is you can't work with the image in RAM on the LoPy, there's just not enough of it. You'd need to dump it out to file in blocks first which makes compression difficult.

      However the FiPy does have a lot more RAM (4 Megabytes) :-) (...or the OEM modules)

      1 Reply Last reply Reply Quote 1
      • ahaw021A Offline
        ahaw021 @robmarkcole
        last edited by

        @robmarkcole - why do you want to send images over LoRa and specifically why have you chosen MQTT as the Transport

        The reason why I ask is that I have done a few projects where customers have asked for this but when we broke up the problem they were actually looking for something else

        Andrei

        R 1 Reply Last reply Reply Quote 0
        • R Offline
          robmarkcole @ahaw021
          last edited by

          @ahaw021 hi Andrei, the use case is to send a single image once every 24 hours over long distance

          ahaw021A 1 Reply Last reply Reply Quote 0
          • ahaw021A Offline
            ahaw021 @robmarkcole
            last edited by ahaw021

            @robmarkcole

            I understand that it might be commercially sensitive etc

            My question comes from a problem approach

            So the question I specifically want to understand is why do you want to send the image - what is the purpose of having the image sent rather than jumping to a "solution" - I need to send the image

            For example:

            Project 1: Farmer wanted to analyse the health of his sheep (color of their wool)

            Approach 1: Send the Image over NB-IOT to Azure Image Processing
            Approach 2: What we ended up doing - local image processing and sending the results over LoRaWAN. We used a camera from JeVois to do all the processing locally and just send a small message with LoRaWAN - http://jevois.org/

            Project 2: Security at Remote Substations

            Approach 1: Try Stream over long range protocols such as LoRaWAN or Satellite links
            Approach 2: Use the local IP cameras with computer vision to identify when someone is in the substation - send an alert via LoRaWAN to security office and they could decide what to do (most of the time by the time the responders got on site the people entering the station left)

            You can use deltas to minimise the size of the data you are sending. In computer vision there is a concept of background subtraction which is one approach to minimise the ammount of data

            Yet another option is to use the JeVois to store the actual images (you can have up to 8GB of memory i believe) and only send notifications when the camera is full

            Andrei

            R 1 Reply Last reply Reply Quote 0
            • R Offline
              robmarkcole @ahaw021
              last edited by

              @ahaw021 Hi Andrei, that is very interesting, I actually have one of those jevois cameras to try out. My project is monitoring of endangered birds, in particular capturing a daily image of a remote nest to check the number/status of eggs. The question is if this information could be analysed on the camera, or if a person would have to review the images.
              Is your work written up?
              Thanks

              ahaw021A 2 Replies Last reply Reply Quote 0
              • ahaw021A Offline
                ahaw021 @robmarkcole
                last edited by

                @robmarkcole

                This is a fairly simple computer vision problem

                The work we have done is proprietary to the customer so we aren't able to share it

                What I would suggest you do

                A) Use the storage available locally to save an image
                B) send the counts
                C) run for two weeks and see how accurate it is

                Sample of a related problem

                https://www.youtube.com/watch?v=PHwCK9ItDbc

                Andrei :D

                1 Reply Last reply Reply Quote 0
                • ahaw021A Offline
                  ahaw021 @robmarkcole
                  last edited by

                  @robmarkcole

                  did you get anywhere with this

                  I have a JeVois camera and can provide you a reference code for a laptop (not an embedded board as I am waiting on my Pycoms) and actually have some eggs that I can send sample code for

                  I believe simple blob detection should be good enough for what you need as the eggs should be fairly easy to make out

                  Let me know

                  Andrei

                  R 1 Reply Last reply Reply Quote 0
                  • R Offline
                    robmarkcole @ahaw021
                    last edited by

                    @ahaw021 Hi Andrei, didn't make a start yet but its moving up my to-do list.
                    Definitely confirming the image recognition algorithm is the first step and the more data the better. Perhaps you can post the image data on GitHub or Kaggle?
                    Cheers

                    1 Reply Last reply Reply Quote 0
                    • B Offline
                      BetterAuto Pybytes Beta @bucknall
                      last edited by

                      @bucknall said in Camera image over MQTT:

                      Hi @robmarkcole

                      This is definitely possible over WiFi as there are working examples written in C for the ESP32, however I'm yet to see this ported to MicroPython so it might be a while before you're able to do it specifically in MicroPython.

                      Here's a link to the example I'm referencing written in C;

                      https://github.com/igrr/esp32-cam-demo

                      I see that project converts color pictures into ASCII art. Can anyone enumerate some other options for capturing color pictures and sending via network, LoRa or otherwise? I know of the Arducam, what else?

                      Anything native to the ESP32 that can just connect one of the Onvif cameras (OV7670, OV2640) and send?

                      1 Reply Last reply Reply Quote 0
                      • P Offline
                        phusy012 @robmarkcole
                        last edited by

                        @robmarkcole Hi wondering, if you have completed the project. We are also trying to connect camera(with low resolution) to Lopy4 and obtain the still image, convert into ASCII, break down into chunks and send it through LoRa.

                        Would appreciate your guidance on how you did.

                        Thankyou
                        Regards
                        Sonam

                        S 1 Reply Last reply Reply Quote 0
                        • S Offline
                          smzk2001 @phusy012
                          last edited by

                          @phusy012 Hello Phusy012: I am trying to send image file to some back-end server via NBIoT technology. I would really appreciate if you may share some information that you might have collected related to your project.
                          I can be contacted at: smzk2001@gmail.com

                          J 1 Reply Last reply Reply Quote 0
                          • J Offline
                            jcaron @smzk2001
                            last edited by jcaron

                            @smzk2001 NB-IOT is barely better than LoRa. With a peak rate of 26 kbits/s, it’s going to take forever to transmit a picture.

                            Exactly how long will depend a lot on the resolution, number of channels (i.e. grayscale vs colour), depth (number of bits per channel), compression, nature of the image...

                            A very basic 640 x 480 black and white (literally: 1 bit per pixel, not grayscale) uncompressed picture will take over 10 seconds to transmit. A 2 megapixels 24-bit colour picture, uncompressed, will take half an hour. Even if compressed, it will take minutes. Higher resolution pictures will quickly take hours.

                            NB-IOT is definitely not designed for this purpose. Cat-M1 would be barely better.

                            Depending on your exact application (picture parameters as described above, frequency or frame rate...), you’ll have to either switch to a much higher bandwidth technology (“full” LTE, WiFi...) or if relevant switch to local processing of the image to send only the result of the processing (e.g. “a move was detected” or “3 people were present”) rather than the image itself.

                            Of course, in either case, battery life will quickly become an issue.

                            S 1 Reply Last reply Reply Quote 1
                            • S Offline
                              smzk2001 @jcaron
                              last edited by

                              This post is deleted!
                              J 1 Reply Last reply Reply Quote 0
                              • J Offline
                                jcaron @smzk2001
                                last edited by

                                @smzk2001 I’m not sure I understand your issue. If you can send a few bytes then surely you can send thousands?

                                S 1 Reply Last reply Reply Quote 0
                                • S Offline
                                  smzk2001 @jcaron
                                  last edited by

                                  @jcaron Dear Jcaron: Tnx for your reply. Sorry, if I couldn't make it clear. But, I now I have made it to sending a few hundreds of bytes now (upto 1KB). As soon as I am done with the final project, I will share my updates.

                                  1 Reply Last reply Reply Quote 0

                                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                  With your input, this post could be even better 💗

                                  Register Login
                                  • 1
                                  • 2
                                  • 1 / 2
                                  • First post
                                    Last post

                                  Pycom on Twitter

                                  Pycom