#NRF24L01 issues

1 messages · Page 1 of 1 (latest)

true spruce
#

Hey, having issues with my radio LED project.

There is a raspberry pi with an NRF24L01 acting as a transmitter, it transmits data using pigpio and nrf24. It's a 6 byte list.

There is also a Arduino acting as a receiver, with 2 RGB led strips connected.

#

The raspberry pi runs a python script to transmit

#
import RPi.GPIO as GPIO
from lib_nrf24 import NRF24
import time
import spidev
import configparser
import codecs
import platform
import struct
import logging
import pytz
from datetime import datetime, timedelta
import sacn

# Import config file
CONFIG_FILE = "config/config.ini"

config = configparser.ConfigParser()
config.read_file(codecs.open(CONFIG_FILE, "r", "utf-8"))

# Set settings based off of config file
# Grab channels to be used for the shoe RGB values, and take one as Python counts from 0, not 1.
SHOE_CH1=int(config.get("Shoes", "shoe_one_channel")) - 1
SHOE_CH2=int(config.get("Shoes", "shoe_two_channel")) - 1
# Configure nrf24 variables, a lot of these are not use and so are hashed out
RADIO_HOSTNAME = config.get("Radio", "hostname")
RADIO_PORT = config.get("Radio", "port")
RADIO_ADDRESS = config.get("Radio", "address")
# RADIO_GPIO_MOSI = config.get("Radio", "gpio_mosi")
# RADIO_GPIO_MISO = config.get("Radio", "gpio_miso")
# RADIO_GPIO_SCK = config.get("Radio", "gpio_sck")
RADIO_GPIO_CE = int(config.get("Radio", "gpio_ce"))
# RADIO_GPIO_CSN = config.get("Radio", "gpio_csn")
#timestamp 12:01
UNIVERSE_ID = int(config.get("sACN", "universe"))
TIMEZONE_CFG = config.get("Logging", "timezone")

GPIO.setmode(GPIO.BCM)

pipe = [0x31, 0x53, 0x4E, 0x53, 0x52]

radio = NRF24(GPIO, spidev.SpiDev())
radio.begin(0, 17)

radio.setPayloadSize(6)
radio.setChannel(0x76)
radio.setDataRate(NRF24.BR_250KBPS)
radio.setPALevel(NRF24.PA_MIN)

radio.openWritingPipe(pipe)
radio.printDetails()

receiver = sacn.sACNreceiver()
receiver.start()

@receiver.listen_on('universe', universe=int(UNIVERSE_ID))  # listens on universe 1
def callback(packet):  # packet type: sacn.DataPacket
    # clear()
    rgb_data = packet.dmxData[SHOE_CH1:SHOE_CH2 + 3]
    print(rgb_data, datetime.now())  # print the received DMX

    # Create a string to be used in the log
    rgb_str = ''
    for x in range(len(rgb_data)):
        rgb_str += str(rgb_data[x]) + ', '
    # Assign the data in the appropriate channels to two tuples
    rgb_ch1 = rgb_data[0:3]
    rgb_ch2 = rgb_data[3:6]

    # Make payload
    payload = [
        rgb_data[0],
            rgb_data[1],
            rgb_data[2],
        rgb_data[3],
        rgb_data[4],
        rgb_data[5],
    ]

    radio.write(payload)
    print(f'Payload: {payload}')

    start = time.time()
    radio.startListening()
    while not radio.available(0):
        time.sleep(1/100)
        if time.time() - start > 2:
            print("Timed out.")
            break

# optional: if you want to use multicast use this function with the universe as parameter
receiver.join_multicast(int(UNIVERSE_ID))
#

py code ^

#

This is what happens with the current script trying to broadcast to the arduino

#

I can't show the arduino code due to my friend losing his laptop charger

thorny nova
#
#include <SPI.h>
#include <printf.h>
#include <RF24.h>

#define SHOEPIN1 6
#define NUMPIXELS1 60
#define SHOEPIN2 5
#define NUMPIXELS2 60

// Set up two sets of NeoPixels (one for each shoe)
Adafruit_NeoPixel shoe1(NUMPIXELS1, SHOEPIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel shoe2(NUMPIXELS2, SHOEPIN2, NEO_GRB + NEO_KHZ800);

// Set  up the NRF24L01 radio
RF24 radio(7, 8); // CE, CSN

void setup() {
  // Begin serial output for troubleshooting
  Serial.begin(9600);

  // Begin writing to LED shoes
  shoe1.begin();
  shoe2.begin();
  shoe1.show();
  shoe2.show();

  // Test blink
  chaser(shoe1, NUMPIXELS1);
  chaser(shoe2, NUMPIXELS2);

  // Set up the radio and start listening for data
  radio.begin();
  radio.setPALevel(RF24_PA_MIN);
  radio.setChannel(0x76);
  const uint64_t pipe = 0x31534E5352;
  radio.openReadingPipe(1, pipe);
  radio.powerUp();
  radio.startListening();
}

void loop() {
  int RGBRGB[6];
  // Read data given its available
  if (radio.available()) {
    // Data received will be 2 channels of 8 bit RGB data
    radio.read(&RGBRGB, sizeof(RGBRGB));
    int srlRGB = RGBRGB;
    Serial.println(RGBRGB[0]);
    Serial.println(RGBRGB[1]);
    Serial.println(srlRGB);apt

    uint32_t CH1 = shoe1.Color(RGBRGB[0], RGBRGB[1], RGBRGB[2]);
    uint32_t CH2 = shoe2.Color(RGBRGB[3], RGBRGB[4], RGBRGB[5]);

    // Show the given data across the two halves of LEDs. 
    shoe1.fill(CH1);
    shoe2.fill(CH2);
    shoe1.show();
    shoe2.show();
  }
}

void chaser(Adafruit_NeoPixel strip, int num_leds) {
  strip.setPixelColor(0, strip.Color(255, 0, 0));
  strip.show();
  delay(25);
  for (int i = 1; i < num_leds; i++) {
    strip.setPixelColor(i - 1, strip.Color(0, 0, 0));
    strip.setPixelColor(i, strip.Color(255,0,0));
    strip.show();
    delay(25);
  }
  strip.setPixelColor(num_leds - 1, strip.Color(0,0,0));
  strip.show();
}```
true spruce
#

^

true spruce
#

Tried switching to circuitpython and there is still no communication between the radios. Arduino serial monitor is only reporting "0"

#
#include <Adafruit_NeoPixel.h>
#include <SPI.h>
#include <printf.h>
#include <RF24.h>

#define SHOEPIN1 6
#define NUMPIXELS1 60
#define SHOEPIN2 5
#define NUMPIXELS2 60

// Set up two sets of NeoPixels (one for each shoe)
Adafruit_NeoPixel shoe1(NUMPIXELS1, SHOEPIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel shoe2(NUMPIXELS2, SHOEPIN2, NEO_GRB + NEO_KHZ800);

// Set  up the NRF24L01 radio
RF24 radio(7, 8); // CE, CSN

void setup() {
  // Begin serial output for troubleshooting
  Serial.begin(9600);

  // Begin writing to LED shoes
  shoe1.begin();
  shoe2.begin();
  shoe1.show();
  shoe2.show();

  // Test blink
  chaser(shoe1, NUMPIXELS1);
  chaser(shoe2, NUMPIXELS2);

  // Set up the radio and start listening for data
  radio.begin();
  radio.setPALevel(RF24_PA_MIN);
  radio.setChannel(69);
  uint8_t pipe[6] = "1SNSR";
  radio.openReadingPipe(1, pipe);
  radio.powerUp();
  radio.startListening();
}

void loop() {
  int RGBRGB[6];
  // Read data given its available
  if (radio.available()) {
    // Data received will be 2 channels of 8 bit RGB data
    radio.read(&RGBRGB, sizeof(RGBRGB));
    int srlRGB = RGBRGB;
    Serial.println(RGBRGB[0]);
    Serial.println(RGBRGB[1]);
    uint32_t CH1 = shoe1.Color(RGBRGB[0], RGBRGB[1], RGBRGB[2]);
    uint32_t CH2 = shoe2.Color(RGBRGB[3], RGBRGB[4], RGBRGB[5]);

    // Show the given data across the two halves of LEDs. 
    shoe1.fill(CH1);
    shoe2.fill(CH2);
    shoe1.show();
    shoe2.show();
  }
}

void chaser(Adafruit_NeoPixel strip, int num_leds) {
  strip.setPixelColor(0, strip.Color(255, 0, 0));
  strip.show();
  delay(25);
  for (int i = 1; i < num_leds; i++) {
    strip.setPixelColor(i - 1, strip.Color(0, 0, 0));
    strip.setPixelColor(i, strip.Color(255,255,255));
    strip.show();
    delay(25);
  }
  strip.setPixelColor(num_leds - 1, strip.Color(0,0,0));
  strip.show();
}
#

Arduino .c file ^

#
import board
from digitalio import DigitalInOut
import busio
import sacn
from circuitpython_nrf24l01.rf24 import RF24
import time
import struct


print("Hello blinka!")

# Try to great a Digital input
pin = DigitalInOut(board.D4)
print("Digital IO ok!")

# Try to create an I2C device
i2c = busio.I2C(board.SCL, board.SDA)
print("I2C ok!")

# Try to create an SPI device
spi = busio.SPI(board.SCLK, board.MOSI, board.MISO)
print("SPI ok!")

try:
    import spidev

    SPI_BUS = spidev.SpiDev()
    CSN_PIN = 0
    CE_PIN = DigitalInOut(board.D22)

except ImportError:
    SPI_BUS = board.SPI()

    CE_PIN = DigitalInOut(board.D4)
    CSN_PIN = DigitalInOut(board.D5)

nrf = RF24(SPI_BUS, CSN_PIN, CE_PIN)
print('Radio initialised!')

nrf.pa_level = -12

address = b"1SNSR"

radio_number = 0

nrf.open_tx_pipe(address)
nrf.channel = 69

print('Transmission ready!')

payload = bytearray(b'\x00\x00\x00\x00\x00\x00')

def master(count=5):
    nrf.listen = False

    print('Beginning loop!')
    while count:
        buffer = struct.pack(
            '<BBBBBB',
            payload[0],
            payload[1],
            payload[2],
            payload[3],
            payload[4],
            payload[5]
        )
        print('Transmitting data!')
        start_timer = time.monotonic_ns()
        result = nrf.send(buffer)
        end_timer = time.monotonic_ns()
        print('Data Transmitted!')

        if not result:
            print('It\'s dead, mate')
        else:
            print(f'It was successful, time to transmit was {(end_timer-start_timer) / 1000} us. Send {payload}')

            for x in payload:
                payload[x] += 50
        time.sleep(1)
        count -= 1

master()
print("done!")
#

python file ^

jaunty haven
#

What board are you using as the receiver? When you say you used Circuitpython, was that on the Pi or in the receiver?

#

If you are running the Circuitpython on the Pi, via "Blinka" you should be using the board.SPI() not the spidev. but you pin assignments don't appear to be consistent. I may just be misunderstanding what you are doing....

true spruce
#

I'm using an Arduino nano to receive, using circuitpython on the pi

jaunty haven
#

try removing the import spidev section and set the pins correctly for the board.SPI() section

true spruce
#

Okay, I'll have to ask @thorny nova to do that tomorrow

#

Thanks, I'll let you know

thorny nova
#

Thanks @jaunty haven

#

We'll try it tomorrow

jaunty haven
#

Good luck -- I have used the circuitpython library to communicate between a Pi and an microcontroller running Circuitpython.

#

I have not tried to talk to an Arduino board with it.

jaunty haven
#

@true spruce @thorny nova I reread the examples and I see that they now do use spidev -- my mistake. I still think your pin assignments are incorrect, How do you have the nrf24l01 wired to the Pi? Your code is using pin D22 for CE -- is that correct? Your other python example appears to use pin 17 on the Pi

#

There have been several changes in the examples since the last time I used them (the use of spidev is new) so my experiences may nat be relevant.

true spruce
#

I have just changed it to the port it should be in - port 20 if i'm correct. Unfortunately that has net no improvement.

#

@jaunty haven

jaunty haven
true spruce
#
#include <Adafruit_NeoPixel.h>
#include <SPI.h>
#include <printf.h>
#include <RF24.h>

#define SHOEPIN1 6
#define NUMPIXELS1 60
#define SHOEPIN2 5
#define NUMPIXELS2 60

// Set up two sets of NeoPixels (one for each shoe)
Adafruit_NeoPixel shoe1(NUMPIXELS1, SHOEPIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel shoe2(NUMPIXELS2, SHOEPIN2, NEO_GRB + NEO_KHZ800);

// Set  up the NRF24L01 radio
RF24 radio(7, 8); // CE, CSN

void setup() {
  // Begin serial output for troubleshooting
  Serial.begin(9600);

  // Begin writing to LED shoes
  shoe1.begin();
  shoe2.begin();
  shoe1.show();
  shoe2.show();

  // Test blink
  chaser(shoe1, NUMPIXELS1);
  chaser(shoe2, NUMPIXELS2);

  // Set up the radio and start listening for data
  radio.begin();
  radio.setPALevel(RF24_PA_MIN);
  radio.setChannel(69);
  uint8_t pipe[6] = "1SNSR";
  radio.openReadingPipe(1, pipe);
  radio.powerUp();
  radio.startListening();
}

void loop() {
  int RGBRGB[6];
  // Read data given its available
  if (radio.available()) {
    // Data received will be 2 channels of 8 bit RGB data
    radio.read(&RGBRGB, sizeof(RGBRGB));
    int srlRGB = RGBRGB;
    Serial.println(RGBRGB[0]);
    Serial.println(RGBRGB[1]);
    uint32_t CH1 = shoe1.Color(RGBRGB[0], RGBRGB[1], RGBRGB[2]);
    uint32_t CH2 = shoe2.Color(RGBRGB[3], RGBRGB[4], RGBRGB[5]);

    // Show the given data across the two halves of LEDs. 
    shoe1.fill(CH1);
    shoe2.fill(CH2);
    shoe1.show();
    shoe2.show();
  }
}

void chaser(Adafruit_NeoPixel strip, int num_leds) {
  strip.setPixelColor(0, strip.Color(255, 0, 0));
  strip.show();
  delay(25);
  for (int i = 1; i < num_leds; i++) {
    strip.setPixelColor(i - 1, strip.Color(0, 0, 0));
    strip.setPixelColor(i, strip.Color(255,255,255));
    strip.show();
    delay(25);
  }
  strip.setPixelColor(num_leds - 1, strip.Color(0,0,0));
  strip.show();
}
#

arduino ^

#
import board
from digitalio import DigitalInOut
import busio
import sacn
from circuitpython_nrf24l01.rf24 import RF24
import time
import struct


print("Hello blinka!")

# Try to great a Digital input
pin = DigitalInOut(board.D4)
print("Digital IO ok!")

# Try to create an I2C device
i2c = busio.I2C(board.SCL, board.SDA)
print("I2C ok!")

# Try to create an SPI device
spi = busio.SPI(board.SCLK, board.MOSI, board.MISO)
print("SPI ok!")

try:
    import spidev

    SPI_BUS = spidev.SpiDev()
    CSN_PIN = 0
    CE_PIN = DigitalInOut(board.D20)

except ImportError:
    SPI_BUS = board.SPI()

    CE_PIN = DigitalInOut(board.D4)
    CSN_PIN = DigitalInOut(board.D5)

nrf = RF24(SPI_BUS, CSN_PIN, CE_PIN)
print('Radio initialised!')

nrf.pa_level = -12

address = b"1SNSR"

radio_number = 0

nrf.open_tx_pipe(address)
nrf.channel = 69
print('Transmission ready!')

payload = bytearray(b'\x00\x00\x00\x00\x00\x00')

def master(count=5):
    nrf.listen = False

    print('Beginning loop!')
    while count:
        buffer = struct.pack(
            '<BBBBBB',
            payload[0],
            payload[1],
            payload[2],
            payload[3],
            payload[4],
            payload[5]
        )
        print('Transmitting data!')
        start_timer = time.monotonic_ns()
        result = nrf.send(buffer)
        end_timer = time.monotonic_ns()
        print('Data Transmitted!')

        if not result:
            print('It\'s dead, mate')
        else:
            print(f'It was successful, time to transmit was {(end_timer-start_timer) / 1000} us. Send {payload}')

            for x in payload:
                payload[x] += 50
        time.sleep(1)
        count -= 1

master()
print("done!")
#

raspi ^

#

This is where the program hangs on raspi:

#

pin 22 ce

#

24 csn

true spruce
#

We're considering using Bluetooth to broadcast and then NRF24 to receive

jaunty haven
true spruce
#

I don't really know either, @thorny nova just said it may work

#

Obviously it's better to have this working natively

jaunty haven
#

I am looking at the nrf24l01_simple_test.py from the library and I don't understand how this works on the pi ```try: # on Linux
import spidev

SPI_BUS = spidev.SpiDev()  # for a faster interface on linux
CSN_PIN = 0  # use CE0 on default bus (even faster than using any pin)
CE_PIN = DigitalInOut(board.D22)  # using pin gpio22 (BCM numbering)

except ImportError: # on CircuitPython only
# using board.SPI() automatically selects the MCU's
# available SPI pins, board.SCK, board.MOSI, board.MISO
SPI_BUS = board.SPI() # init spi bus object

# change these (digital output) pins accordingly
CE_PIN = DigitalInOut(board.D4)
CSN_PIN = DigitalInOut(board.D5)

initialize the nRF24L01 on the spi bus object

nrf = RF24(SPI_BUS, CSN_PIN, CE_PIN)

On Linux, csn value is a bit coded

0 = bus 0, CE0 # SPI bus 0 is enabled by default

10 = bus 1, CE0 # enable SPI bus 2 prior to running this

21 = bus 2, CE1 # enable SPI bus 1 prior to running this``` -- This is all new since the last time I tried using this library on a Raspberry Pi-- I will have to set up a system to test this on myself and see if I can get it to work. I don't think I'll be able to do this today but I am curious how this works... Do you have 2 Raspberry Pis? If so , as a first step, I suggest trying to get them to communicate using the library examples just to make sure the hardware is properly connected.

true spruce
#

I have not got two pis, though i may be able to get access to one.

jaunty haven
#

The code you are using appears to to want you use CS on CE0 (not 24) -- again, I have no idea if this works . could just try replacing ```try:
import spidev

SPI_BUS = spidev.SpiDev()
CSN_PIN = 0
CE_PIN = DigitalInOut(board.D20)

except ImportError:
SPI_BUS = board.SPI()

CE_PIN = DigitalInOut(board.D4)
CSN_PIN = DigitalInOut(board.D5)``` with ```

SPI_BUS = board.SPI()

CE_PIN = DigitalInOut(board.D22)
CSN_PIN = DigitalInOut(board.D24)``` to see if that works better

#

Just to clarify, do you have the spidev module installed on your Pi?

#

If you don't have spidev installed then your code will be trying to use D4 and D5, not D22 and D24 as desired.

thorny nova
#

Pretty sure it's installed

jaunty haven
#

OK - then try the code above to avoid it ```SPI_BUS = board.SPI()

CE_PIN = DigitalInOut(board.D22)
CSN_PIN = DigitalInOut(board.D24)```

#

also, I don't understand why you used D20 if you have CE on D22

#

I have managed to find my nrf24l01 test boards for the Pi and for a CircuitPython feather board. I'll see if I can get them working with the newer version of the library. I have to go offline for several hours now and may not get back to this until tomorrow. In the meanwhile, I suggest confirming the pins you are using on your Pi and make sure the code matches. If you are using the "spidev" code then CS must be on CE0 -- with the "board.SPI()" code -- it should be on D24. I'm curious if fixing the pin assignments stops your code from "hanging".

thorny nova
#

We're currently testing with two arduinos and having issues...

#

One of the radios may be dead, we'll keep you updated

jaunty haven
#

FYI -- I have verified that I can get the circuitpython_nrf24l01 library nrf24l01_simple_test.py file to work between a Raspberry Pi and a feather m4 express. The Pi uses the spidev module with CS on CE0 and CE on D22. The M4 uses D4 and D5 as in the example. Note, I ran into a minor syntax error with the Circuitpython library on the M4: See this issue for the workaround https://github.com/nRF24/CircuitPython_nRF24L01/issues/40

#

I'll see I I can get it to talk to the M4 using the Arduino Library ....

jaunty haven
#

I have had partial success getting the Pi to communicate with my feather M4 express running the Arduino rf24 library. When the Pi transmits, the M4 does receive the packet, but the Pi does not receive the ACK and reports a failed transmission. When sending from the M4, the Pi is still not receiving. Still investigating...

jaunty haven
#

Ah -- OK -- the Pi and the M4 running the Arduino rf24 "GettingStarted" example works fine together. On the Pi I hade to uncomment these lines ```# uncomment the following 3 lines for compatibility with TMRh20 library
nrf.allow_ask_no_ack = False
nrf.dynamic_payloads = False
nrf.payload_length = 4

#

@true spruce @thorny nova see notes above. You should be able to communicate between your Pi and your Arduino board if you add in the uncommented lines from the nrf24l01_simple_test.py example on the Pi.

#

I suggest trying the examples I used above to verify that you can get them to communicate.

true spruce
#

@thorny nova

thorny nova
#

Okay, I've given it a go with the follow code (from both the examples)

#

Output from Raspberry Pi: send() failed or timed out

thorny nova
#

That's with code directly from the examples (python code taken directly from github, though I did uncomment the lines above)

jaunty haven
#

@thorny nova I have the Pi as Radio 0 and the Transmiter running nrf24l01_simple_test,py with the uncommented lines (the CE is on D22 and the CS is CE0 - the defaults) The Arduino board is using Radio 1 and the Receiver running the Getting Started sketch with the correct pin settings for my board (CE=4, CS=5) On the Pi I see```Which radio is this? Enter '0' or '1'. Defaults to '0' 0
nRF24L01 Simple test
*** Enter 'R' for receiver role.
*** Enter 'T' for transmitter role.
*** Enter 'Q' to quit example.
T
Transmission successful! Time to Transmit: 1431.048 us. Sent: 0.0
Transmission successful! Time to Transmit: 1333.235 us. Sent: 0.01
Transmission successful! Time to Transmit: 1393.079 us. Sent: 0.02
Transmission successful! Time to Transmit: 1317.61 us. Sent: 0.03
Transmission successful! Time to Transmit: 1366.516 us. Sent: 0.04
*** Enter 'R' for receiver role.
*** Enter 'T' for transmitter role.
*** Enter 'Q' to quit example.

on the receiver I seeRF24/examples/GettingStarted
Which radio is this? Enter '0' or '1'. Defaults to '0'
radioNumber = 1
*** PRESS 'T' to begin transmitting to the other node
Received 4 bytes on pipe 1: 0.00
Received 4 bytes on pipe 1: 0.01
Received 4 bytes on pipe 1: 0.02
Received 4 bytes on pipe 1: 0.03
Received 4 bytes on pipe 1: 0.04

thorny nova
#

I'll try again with the Arduino as radio 1

#

This is with Arduino as Radio 1 and Raspberry Pi as Radio 0

#

Pretty sure they're all connected right

jaunty haven
#

I don't know what to say -- I know "it works for me" is not very helpful. I have had to be very careful with the wiring to make sure I have solid connections.

thorny nova
#

Yeah, fair enough

#

I'm not using any breakout boards in this set up, are you?

jaunty haven
#

hard to see -- Arduino on lop -- pi on bottom -- I have the nrf24l01 boards in sockets.

thorny nova
#

Yeah, I'll try that (the boards have got decoupling caps and things that I'm not using)

jaunty haven
#

I do have caps installed between 3.3V and GND 100 microF and .1 microF

thorny nova
#

Mmkay, it's going to be a bit then before I do it (running out of jumper cables) will let you know how it goes

jaunty haven
#

Good luck !

jaunty haven
#

FYI -- I also tried it without the caps and it did not seem to make any difference. I have had issues with poor connections on the breadboard causing problems. I reinstalled the capacitors and reseated all my jumpers and it seems to be working reliably now.

jaunty haven
#

better picture of the boards. Arduino (feather m4) on left , pi on right. What board are you running the Arduino code on?

true spruce
#

Arduino nano atmega324 if it matters)

#

@thorny nova

thorny nova
#

Was driving, at uni for exam

thorny nova
#

I honestly think I wasn't running the Arduino as radio 1 the whole time, I'll do a bit more testing and see how it goes with the actual production code

jaunty haven
#

Yay!

thorny nova
#

Yeah, it's great that I've finally got something. Thanks for your help

jaunty haven
#

You're welcome -- Good luck with your project --- and your exams!

true spruce
#

Well, something has yet again broken it, editing the example causes it to stop working - i think it's changing the float to an 6 byte integer

thorny nova
#

Yeah, we've got lighting software running over the network (LAN) to a raspberry pi which is then transmitting specific bytes to the arduino using the NRF24L01s which is then taking the 4 channels of RGB and splitting it up across the two strips

#

Silly bugs were fixed (and there were, as usual, many silly bugs)

jaunty haven
#

It's all part of the experience!! Glad it is working!

thorny nova
#

Yeah, thanks again

true spruce
#

@jaunty haven Hey, we're at the theatre trying to get it working now, and it's not working

#

@thorny nova is running example code (transmitting from the Arduino to the Pi) and the pi is receiving but the Arduino says it timed out

thorny nova
#

I reckon it's a power supply issue

jaunty haven
#

If the Arduino is sending but timing out, then it sounds like it is not receiving the "ACK" from the Pi. Make sure you have the Pi properly configured - that is with the extra lines in the code uncommented.

jaunty haven
thorny nova
#

3.3V pin on an Arduino nano (well, Arduino nano equivalent from local electronics store)

jaunty haven
#

What is the power source?

#

The 3,3V pin is meant to be an output.. Were you powering it this way in your previous testing that was working?

#

also see here " You can use both the 5V pin and the 3.3V pin to provide power to modules that are connected to the Arduino. But you can't use the 3.3V pin to power your Arduino Uno/Nano." https://circuitjournal.com/arduino-power-pins

#

"You can use the 3.3V pin to power sensors and modules that need 3.3V power.

It can supply about 100 to 150mA of current. The 3.3V regulator is connected to the output of the 5V regulator. Drawing current from the 3.3V regulator will dissipate heat in both the 3.3V regulator and the 5V regulator. This means that if you connect a 3.3V device to the 3.3V pin, then it also limits the maximum current you can use for the 5V modules connected to the 5V pin."

#

@thorny nova Did I understand you correctly. Are you powering the nano via its 3.3V pin?

thorny nova
#

Yes, that is what I meant

jaunty haven
#

OK -- so as noted, that may be a problem.

thorny nova
#

Yeah

#

I'll use a breakout board then

#

Thanks for your help