В этой статье мы узнаем о модуле REYAX RYB080I BLE и его взаимодействии с платой Arduino. REYAX RYB080I — это сверхмаломощный модуль Bluetooth от компании Reyax Technology. Он основан на чипе Texas Instrument и называется чипом Reyax RYB080I BLE. Мы рассмотрим функции, характеристики и энергопотребление этого модуля Bluetooth и сравним его с другими классическими модулями Bluetooth, такими как HC-05 или HC-06. Также ранее на нашем сайте мы рассматривали подключение к плате Arduino модуля HM-10 BLE 4.0.
Затем мы сделаем несколько проектов, используя этот модуль REYAX RYB080I BLE и Arduino. Во-первых, мы сделаем проект интеллектуального пульсоксиметра и измерим уровень кислорода в крови и частоту сердечных сокращений. Значение BPM и SpO2 будет отображаться в приложении Android. Во втором примере мы отправим данные о влажности и температуре с датчика DHT11 в приложение Android по беспроводной сети. Это будет похоже на метеостанцию. В третьем примере проекта мы будем управлять несколькими светодиодами, отправляя некоторые команды из приложения Android.
Необходимые компоненты
- Плата Arduino Nano (купить на AliExpress).
- Датчик пульсоксиметра MAX30100 (купить на AliExpress).
- Модуль OLED дисплея с диагональю 0.96 дюйма и интерфейсом I2C (купить на AliExpress).
- Модуль Bluetooth Reyax RYB080I_lite BT.
- Светодиод 5 мм любого цвета (3 шт.) (купить на AliExpress).
- Датчик температуры и влажности DHT11 (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Модуль BLE REYAX RYB080I
Это модуль Bluetooth RYB080I Bluetooth v4.2 и v5.0 с низким энергопотреблением. Модуль очень мал по размеру и достаточно мощный, чтобы добавить беспроводную связь в ваши проекты. Этот модуль BLE основан на чипе Texas Instrument CC2640R2F ARM Cortex M3, являющемся отраслевым стандартом. Модуль BLE с ультранизким энергопотреблением может использоваться в проектах, где размер и мощность имеют большое значение.
Сравнивая размер этого модуля Bluetooth RYB080I с классическими модулями Bluetooth, таким как HC-05 или HC-06, вы поймете, что размер этого модуля вполовину меньше. Все эти модули работают по UART (универсальный асинхронный приемопередатчик) и работают на AT-командах.
На этом модуле BLE есть 5 контактов. Это VDD, которому требуется питание 3,3 В. Затем идут контакты Tx и Rx для связи UART. Есть контакт сброса для сброса модуля. И, наконец, контакт заземления GND. Предпочтительно использовать этот модуль с контроллерами с низким энергопотреблением. Поскольку его контакты UART совместимы только с 3,3 В , мы не можем подключить модуль к цифровым контактам UART 5 В микроконтроллера. Вы можете питать этот модуль с помощью круглой батарейки или любой литий-ионной батареи.
Функции модуля
• Bluetooth v4.2 и v5.0 с низким энергопотреблением.
• Чип промышленного стандарта TI CC2640R2F ARM® Cortex®-M3.
• Возможность одновременного подключения двух устройств Bluetooth.
• Поддержка роли хост-клиента.
• Разработан с интегрированной в печатную плату антенной.
• Металлическая крышка для защиты от электромагнитных помех.
• Передача, прием и активация всего с помощью 2 контактов UART.
• Простое управление с помощью команд AT.
• Стандартный профиль общих атрибутов (GATT).
Потребление энергии
Модуль работает в диапазоне от минимум 1,8 В до максимум 3,8 В. Выходной диапазон составляет от -21 до +5 дБм . Активный ток составляет около 1,5 мА в режиме вещания. В режиме вещания средний ток модуля составляет около 0,2 мА . Вы можете просмотреть техническое описание RYB080I, чтобы узнать больше о данном модуле. Аналогично, ток в режиме ожидания составляет всего 2 мкА, и для выхода из спящего режима требуется 2 миллисекунды.
Вы можете выбрать скорость передачи данных 9600 или 115200 Бод. Радиочастота составляет около 2,4 ГГц, обычно 2483,5 МГц. Может выдержать до 100 тыс. циклов стирания.
Приложения
• Аксессуары для смартфонов/планшетов.
• Удаленный мониторинг и управление.
• Умный дом.
• Позиционирование в помещении.
Интеллектуальный пульсоксиметр с использованием модуля REYAX RYB080I BLE и Arduino
Принципиальная схема и соединения
Теперь давайте рассмотрим несколько примеров проектов с использованием модуля REYAX RYB080I BLE и Arduino. Первый из них — проект «Умный пульсоксиметр». В этом проекте мы будем измерять процент кислорода в крови (SpO2) и частоту сердечных сокращений (BPM) и отображать данные на OLED-дисплее, а также в приложении Android. Принципиальная схема этого проекта приведена на следующем рисунке.
Мы используем датчик пульсоксиметра MAX30100 и OLED-дисплей. Оба являются модулями, работающими по интерфейсу I2C. Аналогично, модуль Bluetooth RYB080I питается от источника 3,3 В. Вывод UART преобразуется в логический уровень 3,3 В с помощью делителя напряжения.
Исходный код программы
Исходный код программы для сопряжения пульсоксиметра и датчика частоты сердечных сокращений MAX30100 с Arduino приведен ниже. Скопируйте этот код и загрузите его на плату Arduino.
Библиотеки, необходимые для данного проекта, можно скачать по следующим ссылкам:
1. Библиотека Arduino MAX30100
2. Библиотека OkaOLED
3. Библиотека Adafruit GFX
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
#include <Wire.h> #include "MAX30100_PulseOximeter.h" #include "Wire.h" #include "Adafruit_GFX.h" #include "OakOLED.h" #define REPORTING_PERIOD_MS 1000 OakOLED oled; PulseOximeter pox; uint32_t tsLastReport = 0; const unsigned char bitmap [] PROGMEM= { 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x18, 0x00, 0x0f, 0xe0, 0x7f, 0x00, 0x3f, 0xf9, 0xff, 0xc0, 0x7f, 0xf9, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xf0, 0xff, 0xe7, 0xff, 0xf0, 0xff, 0xe7, 0xff, 0xf0, 0x7f, 0xdb, 0xff, 0xe0, 0x7f, 0x9b, 0xff, 0xe0, 0x00, 0x3b, 0xc0, 0x00, 0x3f, 0xf9, 0x9f, 0xc0, 0x3f, 0xfd, 0xbf, 0xc0, 0x1f, 0xfd, 0xbf, 0x80, 0x0f, 0xfd, 0x7f, 0x00, 0x07, 0xfe, 0x7e, 0x00, 0x03, 0xfe, 0xfc, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; void onBeatDetected() { Serial.println("Beat!"); oled.drawBitmap( 60, 20, bitmap, 28, 28, 1); oled.display(); } void setup() { Serial.begin(9600); oled.begin(); oled.clearDisplay(); oled.setTextSize(1); oled.setTextColor(1); oled.setCursor(0, 0); oled.println("Initializing pulse oximeter.."); oled.display(); Serial.print("Initializing pulse oximeter.."); if (!pox.begin()) { Serial.println("FAILED"); oled.clearDisplay(); oled.setTextSize(1); oled.setTextColor(1); oled.setCursor(0, 0); oled.println("FAILED"); oled.display(); for(;;); } else { oled.clearDisplay(); oled.setTextSize(1); oled.setTextColor(1); oled.setCursor(0, 0); oled.println("SUCCESS"); oled.display(); Serial.println("SUCCESS"); } pox.setOnBeatDetectedCallback(onBeatDetected); } void loop() { pox.update(); if (millis() - tsLastReport > REPORTING_PERIOD_MS) { Serial.print("Heart BPM:"); Serial.print(pox.getHeartRate()); Serial.print("-----"); Serial.print("Oxygen Percent:"); Serial.print(pox.getSpO2()); Serial.println("\n"); oled.clearDisplay(); oled.setTextSize(1); oled.setTextColor(1); oled.setCursor(0,16); oled.println(pox.getHeartRate()); oled.setTextSize(1); oled.setTextColor(1); oled.setCursor(0, 0); oled.println("Heart BPM"); oled.setTextSize(1); oled.setTextColor(1); oled.setCursor(0, 30); oled.println("Spo2"); oled.setTextSize(1); oled.setTextColor(1); oled.setCursor(0,45); oled.println(pox.getSpO2()); oled.display(); tsLastReport = millis(); } } |
Итак, после загрузки кода OLED-дисплей начнет отображать значение BPM и SpO2. Теперь включите Bluetooth на вашем мобильном телефоне. Для управления модулем BLE вам необходимо установить на телефон приложение REYAX BLE UART.
Итак, после установки приложения нажмите «Подключиться». И из списка выберите модуль REYAX BLE. Приложение Android быстро подключится к Reyax Bluetooth и начнет отображать значение BPM и SpO2. Поместите палец на датчик MAX30100, отобразятся BPM и процент кислорода. Таким образом, вы можете использовать модуль Bluetooth RYB080I и Arduino в устройствах мониторинга здоровья .
Метеостанция с использованием модуля REYAX RYB080I BLE и Arduino
Принципиальная схема и соединения
Теперь давайте займемся другим проектом. Речь идет о мониторинге данных датчиков на смартфонах через Bluetooth. Итак, для этого я взял в качестве образца датчик влажности и температуры DHT11. Схема данного проекта приведена на следующем рисунке.
Соединение платы Arduino и модуля RYB080I Bluetooth осталось прежним. Но в схему добавлен датчик DHT11. Его выходной контакт подключен к контакту D2 платы Arduino.
Исходный код программы
Вот код для этого проекта. Используя библиотеку DHT11 Arduino, мы получаем данные о влажности и температуре с датчика. Вы можете скопировать этот код и загрузить его на плату Arduino Nano.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include "DHT.h" #define DHTPIN 2 // what digital pin we're connected to #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("Temperature and Humidity Test"); dht.begin(); } void loop() { float h = dht.readHumidity(); // Read Celsius float t = dht.readTemperature(); // Read Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); // Check errors if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } // Compute heat index in Fahrenheit (the default) float hif = dht.computeHeatIndex(f, h); // Compute heat index in Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); Serial.println("Humidity: "); Serial.print(h); Serial.println(" %"); Serial.println(" "); Serial.print("Temperature: "); Serial.print(t); Serial.println(" C"); delay(2000); } |
Теперь снова подключите Android-приложение к модулю Bluetooth Reyax Таким образом, после подключения мобильного телефона к Bluetooth Reyax начнется получение данных о температуре и влажности.
И на экране смартфона начнут показываться измеренные датчиком DHT11 значения влажности и температуры. Таким образом можно сделать простой проект метеостанции с использованием модуля RYB080I Bluetooth и Arduino и контролировать ее по беспроводной сети на смартфоне.
Управление несколькими светодиодами с помощью модуля REYAX RYB080I BLE и Arduino
Принципиальная схема и соединения
Теперь давайте рассмотрим третий пример. В этом примере мы будем управлять 3 разными светодиодами, отправляя некоторую команду с нашего мобильного телефона. Итак, вот схема подключения для проекта.
Исходный код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
int led1 = 2; int led2 = 3; int led3 = 4; char junk; String inputString = ""; void setup() { Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); } void loop() { if (Serial.available()) { while (Serial.available()) { char inChar = (char)Serial.read(); inputString += inChar; } Serial.println(inputString); while (Serial.available() > 0) { junk = Serial.read() ; } if (inputString == "a") { digitalWrite(led1, LOW); } else if (inputString == "b") { digitalWrite(led2, LOW); } else if (inputString == "c") { digitalWrite(led3, LOW); } else if (inputString == "x") { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); } inputString = ""; } } |
Все светодиоды питаются через контакты 3,3 В и подключены к цифровым выходным контактам платы для подключения GND. Теперь снова подключите приложение Android к Reyax Bluetooth.
После беспроводного соединения отправьте команду a, b, c или x. Таким образом, вы можете включать и выключать светодиоды. Аналогичным образом вы можете сделать и другие проекты, используя этот модуль Bluetooth REYAX RYB080I и плату Arduino .