Подключение к STM32F103C8 модуля nRF24L01


В этой статье мы рассмотрим подключение беспроводного приемопередающего модуля NRF24L01 к плате STM32F103C8. Мы соберем схему передатчика и приемника, используя пару NRF24L01 + STM32F103C8 (Blue Pill). Модуль NRF24L01 используется в большом числе приложений, там, где требуется беспроводное управление чем либо. Это приемопередатчики, которые предполагают, что каждый модуль может передавать и получать данные. Эти модули очень дешевы, и вы можете использовать их с любым микроконтроллером, таким как Arduino или STM32F103C8.

Подключение к STM32F103C8 модуля nRF24L01

Мы подключим модуль NRF24L01 к плате STM32 и, используя пример кода, построим беспроводную сеть. В первом примере мы отправим простой текст «Hello World» с передатчика на приемник. Во втором примере мы дополнительно подключим к этой схеме датчик барометрического давления BME280. Затем мы отправим данные о влажности, температуре, давлении и высоте с передатчика/отправителя на приемник.

Необходимые компоненты

  1. Отладочная плата STM32F103C8 (STM32 Blue Pill) (купить на AliExpress).
  2. Модуль nRF24L01 (купить на AliExpress).
  3. Датчик BME280 (купить на AliExpress).
  4. Источник питания 5 В.
  5. Макетная плата.
  6. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Модуль NRF24L01

Модуль NRF24L01

nRF24L01  это беспроводной приемопередающий модуль, то есть каждый модуль может как отправлять, так и получать данные. Он работает на частоте 2,4 ГГц . Эта частота попадает в диапазон ISM и является законной для использования в большинстве стран для инженерных проектов. При эффективной работе модули могут покрывать расстояние до 100 метров.

Модуль NRF24L01 с антенной для него

Вторая версия этого модуля, nRF24L01 PA+LNA, поставляется с разъемом SMA , антенной-уткой и специальным чипом RFX2401C, который объединяет в себе PA + LNA. Этот чип  вместе с антенной-уткой помогает модулю достичь значительно большего диапазона передачи - около 1000 м. PA означает усилитель мощности (Power Amplifier) , который увеличивает мощность сигнала, передаваемого с чипа nRF24L01+. LNA означает усилитель с низким уровнем шума (Low-Noise Amplifier), который принимает крайне слабый и неопределенный сигнал с антенны и усиливает его до более полезного уровня.

Модуль работает при напряжении 3,3 В, но его контакты SPI допускают напряжение 5 В. Каждый модуль имеет диапазон 125 адресов, и каждый модуль может взаимодействовать с 6 другими модулями, поэтому с этим модулем можно организовать ячеистую сеть. Модуль NRF24L01 работает с помощью интерфейса SPI, поэтому вы можете использовать NRF24L01 с любым микроконтроллером с контактами SPI, например, с платами STM32 или Arduino.

Взаимодействие модуля приемопередатчика NRF24L01 с STM32

Теперь давайте соединим модуль трансивера NRF24L01 с микроконтроллером STM32 и построим собственный передатчик и приемник. Схема передатчика и приемника приведена ниже. Вы можете собрать пару этих схем на макетной плате.

Схема подключения модуля приемопередатчика NRF24L01 к STM32

Ниже показано соединение плат NRF24L01 и STM32F103C Blue Pill.

NRF24L01 VCC ………………………………………… 3,3 В STM32F103C
NRF24L01 CSN ……………………………………………… PA4 STM32F103C
NRF24L01 MOSI ………………………………………… PA7 STM32F103C
NRF24L01 GND ……………………………………………… GND STM32F103C
NRF24L01 CE ……………………………………………… PB0 STM32F103C
NRF24L01 SCK ………………………………………… PA5 STM32F103C
NRF24L01 MISO ………………………………………… PA6 STM32F103C
Собранная на двух макетных платах конструкция проекта

Библиотека NRF24L01 для STM32

Плата STM32 не поддерживает библиотеку nRF24L01 RadioHead ( #include <RH_NRF24.h>). Поэтому нам нужно использовать библиотеку RF24. Эта библиотека разработана для максимального соответствия предполагаемой работе чипа и построена на основе стандартной библиотеки SPI.

Библиотека поддерживает два заголовочных файла:

Вы можете загрузить библиотеку по следующей ссылке с Github. Добавьте библиотеку в Arduino IDE.

Более подробно про использование интерфейса SPI в плате STM32F103C8 (Blue Pill) вы можете прочитать в этой статье.

Простой код передатчика и приемника

Теперь давайте проверим простую связь между передатчиком и приемником STM32 NRF24L01. Схема передатчика отправит «Hello World» вместе с номером пакета. Вы можете отобразить переданное и полученное сообщение в окне монитора последовательной связи.

Код передатчика

Код приемника

После загрузки кода на оба микроконтроллера вы можете открыть оба окна монитора последовательной связи. Они отобразят данные отправителя и получателя с номером пакета.

Беспроводная отправка данных с датчика с помощью NRF24L01 и STM32

Давайте теперь рассмотрим второй пример. В этом примере мы будем подключать NRF24L01 с датчиком BME280  к схеме передатчика. Датчик BME280 использует протокол I2C для связи и измеряет температуру окружающей среды, влажность, атмосферное давление и высоту. Ниже приведена схема передатчика для данного варианта.

Схема для беспроводной отправки данных с датчика BME280 с помощью NRF24L01 и STM32

Датчик работает по протоколу I2C, поэтому его выводы I2C, т.е. SDA и SCL, подключены к PB7 и PB6 соответственно. Мы будем отправлять показания датчика BME280 по беспроводной сети с передатчика STM32 NRF24L01 на приемник STM32 NRF24L01.

Собранная конструкция проекта для варианта с датчиком BME280

Код передатчика

Для кода передатчика требуется библиотека BME280, ее вы можете скачать по следующей ссылке. Добавьте библиотеку в папку библиотек Arduino.

Код приемника

После загрузки кода вы можете открыть окно монитора последовательной связи и в нем вы увидите переданные и полученные данные.

Тестирование работы варианта проекта с датчиком в окне монитора последовательной связи

(Проголосуй первым!)
Загрузка...
43 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *