How to make sense of received Struct from Arduino via NRF24?



  • Hi guys,

    Currently I have been at this for days now, and I just don't know how to decode the struct value upon receiving the struct data from my Arduino. I am using Python on the RPi side, both are fitted with the same NRF24L01 and I am using RF24 Library https://github.com/matmany/lib_nrf24 which is forked from BLavery.

    So my code on the Arduino side is relatively standard, the Arduino transmits a struct data of sensorName[15], Air temperature, Air Humidity, Light sensor, soil Moisture, soil Temperature, gas Sensor and motion Sensor to a defined pipe. Apart from sensorName, these are all declared as Integers as I will convert it to float in RPi to shorten the size of the struct, thus the struct size is 31, just 1 byte away from the maximum.

    Upon running my code at the RPi, I get all sorts of bytes values and I want to convert it to their actual values, which is integer->float.

    RPi code is just something like

    receivedMessage=[]
    radio.read(receivedMessage,radio.getDynamicPayloadSize())
    print(receivedMessage)
    
    OUTPUT:
    different kinds of values
    [0,2,3,195,0,0,0,etc.]
    

    With a previous small side thing I did a few months ago, I only had to transmit temperature and humidity in a float array, and I did it like this, which works!

    DataBytes = 8
    receivedMessage=bytearray(DataBytes)
    radio.read(receivedMessage,radio.getDynamicPayloadSize())
    data = struct.unpack('ff', receivedMessage)
    humidity=data[0]
    temp=data[1]
    
    

    So my question is, how would I do the same in the case of receiving struct?


Log in to reply
 

Suggested Topics

  • 4
  • 4
  • 20
  • 2
  • 2
  • 9

21
Online

11.4k
Users

11.1k
Topics

112.7k
Posts