Close
0%
0%

udpx

udpx is is a technology to transport data over WiFi to microcontrollers, supporting decompression

Similar projects worth following
udpx can be used to receive frame by frame animations generated by any UDP client application- Receive over the air Video frames- Be used as a Protocol base for a different mission like send on real time information from sensorsTarget board is ESP32. Any board of this type will do the job. ESP822 is supported in subproject Remora but without compression. Video presentation https://www.youtube.com/watch?v=feGacaxcCXQ

Some more examples of udpx driving a 968 RGB Led matrix:

udpx consists of two parts at the moment, both open source:

  1. udpx Firmware
  2. Android application

The Android application generates UDP requests to the firmware. Every request is a full frame refresh of the video. But also the application is used to tell the Firmware what are the WiFi credentials via Bluetooth and to discover online Firmware's using multi-cast DNS.

That way we want to use the full feature circle of the Espressif 32 proving that IoT should be not hard to use and setup. Without complex WiFi manager access points. Just sending a fast Bluetooth push with your credentials and the firmware should be online.

A PCB is on it’s final design state. Our colleague Samuel, who created also the udpx Pixels protocol, designed it and it’s also open source like all the components of this project.

  • Detailed tutorial with video - Q&A Log

    Martin Fasani02/11/2020 at 08:24 0 comments

    Team please follow and add anything you consider important.
    @Samuel Archibald @Hendrik Putzek 

    Got people asking me how to compile this and although is not over complicated I will leave this Log entry to summarize. Questions:

    1.  Can I use Arduino to install this Firmware?


    A: Yes you can, but you will have to download the dependencies described in platformio.ini that are 5:

    The best reply for 1. is that it would be a lot less work and a good time investment to install:

    https://platformio.org/platformio-ide and use that to compile any Espressif projects in the future. Arduino library dependency is hard to grab and IMHO not the right way to keep your project libraries. The best is that each project contains his own library folder, than to keep a centralized library in a messy directory structure, and then when you customize a library you affect all projects using them. I strongly suggest to compile this using Platformio IDE.

    Maybe it's possible also to make a 5 minutes video tutorial to clear any doubts.

  • First batch of udpx boards arrives

    Martin Fasani01/22/2020 at 10:49 0 comments

    @Samuel Archibald announces in his Twitter account that first batch of udpx boards arrived

    Backward picture in this tweet: https://twitter.com/IoTPanic/status/1219695622162407428

    I'm excited to see it assembled!

    Lately I've been implementing a couple of new features in my fork of Samuel's Pixels library to introduce more control over the brightness and give the Android app user more options to fine tune the UDP stream to udpx Firmware 

  • Implementing PIX565 a protocol that reduces UDP payload

    Martin Fasani01/15/2020 at 11:30 0 comments

    Just for a quick resume check this tweet:

    https://twitter.com/martinfasani/status/1217360074567491584

    Modified slightly udpx pixels library to add a new header byte:


    byte[0]protocol[80,82]P (888)R is 565
    byte[1]non used0
    byte[2]chunk LSB 16 bit LSB
    byte[3]chunk MSB
    byte[4]Length of payload LSB 16 bit LSB
    byte[5]Length of payload MSB

    https://github.com/martinberlin/pixels
    First byte[0] is very important since identifies protocol type

    P 0x50 is Pixels, a byte per color. So it takes 3000 bytes to feed a 1000 pixels RGB Led matrix

    R 0x52 is 565, using 5 bits for Red, 6 for Green and 5 for Blue. So it reduces the color brightness gradients in 31 for R/B and 63 for Green. But it also resuces in 1/3 the udpx payload, using only 2000 bytes to feed every pixel of a 1000 RGB Matrix.

    That makes everything faster since it's also ZLIB compressed in the App and decompressed in the ESP32 using miniz library.


    Proof-of-concept videos
    udpx Android application last releases

  • Remora now supports also udpx protocol

    Martin Fasani01/06/2020 at 18:19 0 comments

    Remora our partner project to receive very short UDP messages and launch animations directly in the Espressif chip now supports receiving frame per frame animations too. The only limitation is the MTU of the ESP32/8266 that is about 1470 bytes so it allows to send 484 RGB pixels.

    Our protocol consists of a 5 byte header and then per Pixel one byte for Red (0-255) , one for Green and next for Blue. 

    In udpx we overcome this limitation offering zlib and Brotli compression. I find personally zlib decompression very good but Brotli has the benefit of better compression ratio (at the cost of spending more time)

    Our Cordova Android app is JavaScript but the compression part uses Webassembly libraries to increase the speed at what is currently the fast programming language on a browser. There will be upcoming logs with more ideas and my own implementation tests. I’m looking forward for more people to test the protocol and to tweak/ fork our open source libraries with their own ideas.

  • Hardware buying guide

    Martin Fasani01/06/2020 at 09:01 0 comments

    If you plan to send video over WiFi using udpx please check the Hardware buying guide

    The Firmware can be the same for a simple Led Stripe or for a large Led Matrix, but the Android application supports only one type of Led Matrix, just take a look into our guide to make sure you get the right hardware.

View all 5 project logs

Enjoy this project?

Share

Discussions

Martin Fasani wrote 01/06/2020 at 10:25 point

Thanks for liking the project @Hendrik Putzek Maybe we can get Samuel on the boat too?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates