4.10.1. Лабораторная работа №4.10.1.md
Беспроводная связь - сканер радиоэфира
Тема работы
До сих пор все наши устройства были «привязаны» проводами. В этой лабораторной работе мы сделаем первый шаг в мир беспроводных технологий. Мы познакомимся с популярным радиомодулем NRF24L01
, который позволяет устройствам общаться друг с другом «по воздуху». Мы не будем передавать данные, а напишем полезную программу-сканер, которая покажет нам, какие радиоканалы свободны, а какие заняты. Это важнейший первый шаг перед настройкой любой беспроводной связи.
Цель
- Понять назначение и принцип работы интерфейса
SPI
. - Познакомиться с характеристиками и возможностями радиомодуля
NRF24L01
. - Научиться использовать специальные разъёмы на плате
Рудирон
для быстрой установки модулей. - Написать программу-сканер для анализа радиоэфира.
Оборудование и материалы
- Отладочная плата
Рудирон
. - 1 радиомодуль
NRF24L01
. - USB-кабель для подключения
Рудирона
. - Компьютер с
Arduino IDE
и установленной библиотекойRudiron_NRF24L01
.
Ход работы
-
Интерфейс
SPI
Радиомодуль
NRF24L01
обменивается данными с микроконтроллером по интерфейсуSPI
(Serial Peripheral Interface). В отличие отI2C
,SPI
— это более быстрый и простой интерфейс, который идеально подходит для устройств, требующих высокой скорости передачи данных, таких как радиомодули, дисплеи или SD-карты.В простейшем случае
SPI
использует 4 линии:MISO
(Master In, Slave Out) — данные от ведомого к ведущему.MOSI
(Master Out, Slave In) — данные от ведущего к ведомому.SCK
(Serial Clock) — тактовый сигнал, синхронизирующий передачу.CS
илиSS
(Chip Select / Slave Select) — пин для выбора ведомого устройства, с которым будет общаться ведущий.
Рудирон
, как ведущий, управляет всем процессом, аNRF24L01
является ведомым. -
Модуль `NRF24L01
NRF24L01
— это трансивер, то есть он может и передавать, и принимать данные. Он работает на частоте 2.4 ГГц (как Wi-Fi и Bluetooth).Важно! Модуль
NRF24L01
очень чувствителен к питанию и работает от 3.3В. Никогда не подключайте его выводVCC
к пину5V
— это мгновенно выведет модуль из строя!На плате
Рудирон
есть специальный разъём, предназначенный для прямой установки модуляNRF24L01
. Это невероятно удобно, так как вам не нужно соединять 8 пинов проводами.- Установите модуль. Просто вставьте
NRF24L01
в соответствующий разъём на платеРудирон
. Убедитесь, что он вставлен правильно, согласно ключу (маркировке) на плате и модуле.
Блокируемые пины и прерывание
IRQ
:- При установке модуля
NRF24L01
задействуются пины 20, 21, 22, 24, 28, которые становятся недоступными для других задач. - Модуль также использует линию прерывания, которая подключена к кнопке
B2
(пин 31). Чтобы прерывания от радиомодуля работали корректно, необходимо установить перемычкуIRQ
на плате.
- Установите модуль. Просто вставьте
-
Установка библиотеки
Rudiron_NRF24L01
- Скачайте архив с библиотекой из репозитория Rudiron Libraries.
- В
Arduino IDE
перейдите в меню Sketch → Include Library → Add .ZIP Library… и выберите скачанный архив.
-
Написание и загрузка кода
- Установите перемычку
PRG | RUN
в положениеPRG
. -
В
Arduino IDE
введите следующий код:#include <Rudiron_NRF24L01.h> // Создаём объект для работы с радиомодулем RF24 radio(28, 20); // Пины CE, CSN void setup() { Serial.begin(115200); Serial.println("Starting NRF24L01 Channel Scanner..."); if (!radio.begin()) { Serial.println("Радиомодуль не найден! Проверьте подключение."); while (true); // Бесконечный цикл, если модуль не работает } // Устанавливаем минимальную мощность для сканирования radio.setPALevel(RF24_PA_MIN); } void loop() { const int num_channels = 126; int values[num_channels]; // Сканируем все каналы for (int i = 0; i < num_channels; i++) { radio.setChannel(i); radio.startListening(); delayMicroseconds(128); radio.stopListening(); if (radio.testCarrier()) { values[i] = 1; // Канал занят } else { values[i] = 0; // Канал свободен } } // Выводим карту каналов в монитор порта for (int i = 0; i < num_channels; i++) { Serial.print(values[i]); } Serial.println(); delay(1000); // Пауза перед следующим сканированием }
- Нажмите кнопку «Upload», чтобы загрузить код на плату.
- Установите перемычку
-
Проверка работы
- Откройте Монитор последовательного порта (
Tools → Serial Monitor
) и установите скорость 115200 бод. - Вы увидите строки из нулей и единиц.
0
означает, что радиоканал свободен, а1
— что на нём есть какая-то активность (например, работает ваш Wi-Fi роутер).
- Откройте Монитор последовательного порта (
Результаты
Вы создали полезную утилиту — сканер радиоэфира. Теперь вы можете определить, на каких каналах меньше всего помех, и использовать эту информацию для настройки надёжной беспроводной связи между вашими устройствами.
Анализ результатов
#include <Rudiron_NRF24L01.h>
. Мы подключили библиотеку для работы сNRF24L01
.RF24 radio(28, 20);
. Мы создали объектradio
и указали пиныCE
иCSN
, которые используются наРудироне
(28 и 20).radio.testCarrier()
. Эта функция «слушает» эфир на выбранном канале и возвращаетtrue
, если обнаруживает несущую частоту (сигнал от другого устройства).
Выводы
В этой лабораторной работе вы научились работать с радиомодулем NRF24L01
и интерфейсом SPI
. Вы поняли, как использовать специальные разъёмы на плате Рудирон
для быстрой сборки проектов и как важно правильно настраивать перемычки. Навыки работы с беспроводными технологиями открывают огромные возможности для создания систем «умного дома», роботов с дистанционным управлением и сетей датчиков.
Вопросы для самопроверки
- Для чего используется интерфейс
SPI
? - Почему модуль
NRF24L01
нельзя подключать к5V
? - Какие пины на
Рудироне
задействуются при установкеNRF24L01
в специальный разъём? - Какую перемычку и в какое положение нужно установить для корректной работы прерываний от радиомодуля?
- Что означает
1
в выводе сканера? А0
? - Как бы вы выбрали лучший канал для своего проекта, глядя на вывод сканера?
Поздравляем с первым шагом в мир беспроводной связи! Это завершает наше знакомство с основными возможностями Рудирона
. Вы прошли огромный путь и теперь готовы к созданию практически любых проектов, которые только сможете придумать
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home