import time
import board
import digitalio
import struct
from circuitpython_nrf24l01.rf24 import RF24

Настройка пинов CE и CSN (подберите пины в соответствии с вашей схемой подключения)

ce = digitalio.DigitalInOut(board.D4)
csn = digitalio.DigitalInOut(board.D5)

Инициализация SPI шины

spi = board.SPI()

Создаём объект радиомодуля

nrf = RF24(spi, csn, ce)

Уровень мощности передатчика (можно менять: -18, -12, -6, 0 dBm)

nrf.pa_level = -12

Адреса для передачи и приёма (5 байт, в байтовом формате)

address = [b"1Node", b"2Node"]

Выбираем, какой радио будет передатчиком (0) или приёмником (1)

radio_number = 0 # 0 — передатчик, 1 — приёмник

Открываем трубы для передачи и приёма

nrf.open_tx_pipe(address[radio_number]) # Труба для передачи
nrf.open_rx_pipe(1, address[not radio_number]) # Труба для приёма

Включаем динамический размер пакета (по умолчанию включён)

nrf.dynamic_payloads = True

def transmit_data():
nrf.listen = False # Выключаем режим приёма, включаем передачу
payload = 0.0
while True:

Упаковываем float в 4 байта

buffer = struct.pack("<f", payload)
result = nrf.send(buffer)
if result:
print(f"Отправлено: {payload}")
else:
print("Ошибка передачи")
payload += 0.1
time.sleep(1)

def receive_data():
nrf.listen = True # Включаем режим приёма
while True:
if nrf.available():
buffer = nrf.read()

Распаковываем float из полученных байт

received = struct.unpack("<f", buffer[:4])[0]
print(f"Получено: {received}")
time.sleep(0.1)

if __name__ == "__main__":
try:
if radio_number == 0:
transmit_data()
else:
receive_data()
except KeyboardInterrupt:
print("Завершение работы")

[file-name 000119_2025-04-25_07-25-40.txt]