2025-04-25 07:25:40
#example - Ниже приведён пример простого кода на CircuitPython для работы с модулем nRF24L01 на плате с микроконтроллером RP2040 (например, Raspberry Pi Pico или Arduino Nano RP2040 Connect) с использованием библиотеки circuitpython_nrf24l01. Пример демонстрирует передачу и приём данных по радиоканалу.
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("Завершение работы")
Back to list