0

I am trying to communicate between two Arduinos using two RF 433 MHz modules (transmitter receiver). I found that the library Wildewire.h allows a maximum of 77 bytes so is there any another library that allows to send a more than that?

  • 2
    Send many packets of 77 – Gregory Kornblum Jun 15 '18 at 10:31
  • That's too abvious but I want to send the message all at once or at least if I can't to know what's the maximum possible I can send at once – bora Jun 15 '18 at 12:38
  • 1
    Edit a link into your question to the source for this library so the someone can look at it to understand why it is limited to 77 bytes. [][][][] You do realize that with the small RAM size of almost all of the AVR processors used on Arduino boards that the idea of sending huge packets of data around between these limited resource devices makes little sense. Even the "big" ATMEGA2560 part used on the Arduino Mega board has only 8K bytes if RAM. – Michael Karas Jun 15 '18 at 13:21
  • 433 MHz isn't really suited for moving large amounts of data, but if you want to make the most of it, send multiple packets as previously suggested. – Chris Stratton Jun 17 '18 at 0:58
  • @MichaelKaras - you seem to be overlooking that packet sizes on limited bandwidth links are kept small for a good reason - and doubly so if they need to be retransmitted in the likely case of failure. The answer is not to muck about with that, but to send multiple packets as previously suggested. – Chris Stratton Jun 17 '18 at 0:58
7

Radio modules send packets of data (and for very good reasons) so, if the total size of the data you want to send is greater than the packet limit, you have to engineer a higher level system (called a protocol) that can split your bigger message up into chunks that can be handled by the .h file.

I'm not saying one isn't available and indeed you may find one but, if you don't find one, you are facing the design of a protocol to handle bigger messages. It's not too difficult - imagine splitting the data you wish to send into 64 byte chunks and appending a single byte at the start of the data that describes the packet payload: -

  • As being a full message
  • As being a start of message (message overruns 64 bytes)
  • As being a mid message
  • As being an end of message (i.e. the last few bytes of data in the message)

This is enough information for your receiver code to reconstruct the original message but make sure you do good error checking if there isn't sufficient in the .h code. And also make sure your receiver "acknowledges" each packet received as being error free.

You might also wish to embed an address that makes your transmission and reception more robust or even add a packet count to the mid message marker byte. You have a maximum of 77 bytes for the payload so you have a few bytes spare for improving integrity but, the minimum payload system is 1 byte header and 76 bytes of payload (which may include other checks like CRC).

  • Thank you for your respond but at least if I can know what's the maximum possible I can send in one transmission – bora Jun 15 '18 at 12:40
  • 2
    Well your question stated that 77 bytes was the maximum and that is reasonable for radio transmission packets. I'm not sure I've addressed your concern so maybe you can elaborate? – Andy aka Jun 15 '18 at 13:22
  • 2
    Even Ethernet can only send 1522 bytes at once. Packets are everywhere. You need bigger than one packet, then send multiple packets. Simple fact of life. – Majenko Jun 16 '18 at 23:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy