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]