Navigation

    • Register
    • Login
    • Search
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular
    1. Home
    2. nrf24_is_hard
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    nrf24_is_hard

    @nrf24_is_hard

    0
    Reputation
    2
    Posts
    1
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    nrf24_is_hard Follow

    Best posts made by nrf24_is_hard

    This user hasn't posted anything yet.

    Latest posts made by nrf24_is_hard

    • How to make sense of Struct data received from Arduino in RPi via NRF24?

      Hi guys,

      I know that for a simple transmission e.g. humidity and temperature, the Arduino can simply fit these into a float array and send it to the RPi.

      The RPi can then execute the following code snippet to get the value:

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

      Arduino snippet:

      struct values{
      char name[15];
      float temp;
      float humi;
      float light;
      float soilMoist;
      float soilTemp;
      float gasSensor;
      float pirSensor;
      };
      struct values DataToSend;
      DataToSend.temp=dht.ReadTemperature();
      //continue storing data in DataToSend
      radio.write(&DataToSend,sizeof(DataToSend))
      

      My question is now, how would I send this struct from the Arduino to the RPi with a similar method like the float array?

      posted in General Discussion
      nrf24_is_hard
      nrf24_is_hard
    • 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?

      posted in General Discussion
      nrf24_is_hard
      nrf24_is_hard