Как подключить два датчика si7021 к Arduino

Для создания автоматизированных систем необходимо уметь считывать данные с различных датчиков. Один из наиболее распространенных датчиков, который считывает температуру и влажность — это Si7021. Подключение одного датчика к Arduino не является сложной задачей, но что делать, если нужно подключить два датчика? У нас есть для вас решение!

В этой пошаговой инструкции мы расскажем, как подключить два датчика Si7021 к Arduino и собрать программу для считывания данных. Мы будем использовать библиотеку Wire.h, которая поможет нам общаться с датчиками, а также Serial.print для отображения результатов на мониторе порта.

Для начала, давайте разберемся в технических характеристиках датчика Si7021. Он оснащен интерфейсом I2C, который позволяет считывать данные с помощью двух пинов — SDA и SCL. Каждый датчик должен иметь свой уникальный адрес, чтобы мы могли читать данные от каждого из них.

Подключение двух датчиков Si7021 к Arduino

Шаг 1: Подготовка материалов

Для подключения двух датчиков Si7021 к Arduino нам потребуются:

  1. 2 модуля Si7021;
  2. Arduino UNO или аналогичная плата;
  3. брэдборд;
  4. макетные провода.

Шаг 2: Схема подключения

Для подключения двух датчиков Si7021 к Arduino необходимо провести следующие соединения:

  • На Arduino соединяем модули по интерфейсу I2C: модуль 1 подключаем к выводам SDA и SCL, модуль 2 — к выводам SDA1 и SCL1;
  • Оба модуля соединяем с брэдбордом;
  • От брэдборда выводим питание и землю на модули датчиков и на Arduino.

Шаг 3: Программирование

Перед тем как загрузить программу на Arduino, необходимо убедиться, что библиотека Wire.h, которая отвечает за работу по I2C, установлена. Для этого можно использовать встроенный менеджер библиотек Arduino IDE (Sketch -> Include Library -> Manage Libraries…).

Далее следует скопировать и вставить данный код:

// Подключаем библиотеку для работы с I2C

#include <Wire.h>

// Подключаем библиотеку датчика Si7021

#include <Si7021.h>

Si7021 sensor1;

Si7021 sensor2;

void setup() {

// Запускаем I2C-интерфейс

Wire.begin();

// Инициализируем оба модуля датчиков

sensor1.begin();

sensor2.begin();

// Настраиваем последовательный порт для вывода результатов

Serial.begin(9600);

}

void loop() {

// Считываем температуру и влажность с первого датчика

float temp1 = sensor1.getCelsius(), hum1 = sensor1.getHumidity();

// Считываем температуру и влажность со второго датчика

float temp2 = sensor2.getCelsius(), hum2 = sensor2.getHumidity();

// Выводим результаты на последовательный порт

Serial.print(«Sensor 1: «);

Serial.print(temp1); Serial.print(» C, «);

Serial.print(hum1); Serial.println(» %RH»);

Serial.print(«Sensor 2: «);

Serial.print(temp2); Serial.print(» C, «);

Serial.print(hum2); Serial.println(» %RH»);

// Задержка 2 секунды перед следующей итерацией

delay(2000);

}

После этого программа может быть загружена на Arduino.

Шаг 4: Результат

После загрузки программы на Arduino, на последовательный порт должны выводиться данные о температуре и влажности с двух датчиков Si7021. Таким образом, мы смогли успешно подключить два датчика к Arduino и считать данные с них.

Шаг 1: Сборка материалов

Перед началом работы необходимо подготовить все необходимые материалы. Для подключения двух датчиков Si7021 к Arduino вам понадобится:

  • 2 датчика Si7021;
  • Arduino Uno;
  • провода для подключения;
  • резисторы 4,7к Ом.

Убедитесь, что все материалы у вас имеются в наличии и готовы к использованию.

Также перед началом работы рекомендуется проверить работоспособность всех компонентов.

  1. Подключите Arduino к компьютеру и запустите среду разработки Arduino IDE.
  2. Создайте новый проект и загрузите простой скетч Blink, который мигает светодиодом на Arduino. Это позволит вам проверить, что ваша плата работает правильно.
  3. Непосредственно перед подключением датчиков убедитесь, что они не повреждены. Для этого можно проверить их на работоспособность с помощью специального скетча, который позволяет считать данные с датчика.

Шаг 2: Подготовка Arduino и датчиков

Подключение к Arduino

Для подключения датчиков Si7021 к Arduino понадобится плата Arduino Uno или аналогичная. Подключение осуществляется по протоколу I2C, который использует два вывода: SDA и SCL. Подключите каждый датчик к Arduino следующим образом:

  • SDA датчика подключите к выводу SDA Arduino
  • SCL датчика подключите к выводу SCL Arduino
  • Подключите общий провод к земле Arduino.
  • Подключите питание датчика к пину 3.3В Arduino

После этого датчики Si7021 будут готовы к работе на плате Arduino.

Библиотеки и код

Для работы с датчиками необходимо загрузить библиотеки Si7021 и Wire в Arduino IDE. Скачайте эти библиотеки и установите их.

Затем, для проверки работы датчиков, загрузите скетч для датчика Si7021 в Arduino IDE: File->Examples->Adafruit Si7021->test.

Этот код проверит правильность подключения датчиков и выведет информацию о температуре и влажности в монитор порта.

Теперь Arduino и датчики готовы к работе.

Шаг 3: Подключение датчиков к Arduino

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

  • 2 датчика Si7021
  • Arduino Uno
  • Провода для подключения

Подключение датчиков к Arduino:

1. Соедините контакт GND датчиков и Arduino на борту GND.

2. Соедините контакт VCC датчиков и Arduino на борту 5V.

Датчик 1Датчик 2
D1 (SDA)D2 (SDA)
D0 (SCL)D1 (SCL)

3. Соедините контакт SDA каждого датчика соответственно с контактом D1 и D2 на Arduino.

4. Соедините контакт SCL каждого датчика соответственно с контактом D0 и D1 на Arduino.

5. При необходимости используйте резисторы на линии данных (SDA и SCL) для защиты от помех.

Готово, датчики Si7021 подключены к Arduino и готовы к использованию!

Шаг 4: Написание и загрузка кода

4.1 Написание кода для подключения датчиков

Для написания кода для подключения датчиков Si7021 к Arduino, необходимо использовать библиотеку Wire. Она позволяет отправлять и принимать данные по шине I2C. Подключите библиотеку в своем проекте и объявите объекты для каждого датчика.

#include <Wire.h>

int addr1 = 0x40; // Адрес первого датчика

int addr2 = 0x41; // Адрес второго датчика

void setup() {

Wire.begin(); // Инициализация шины I2C

Serial.begin(9600); // Инициализация последовательного порта

}

void loop() {

float temp1 = readTemperature(addr1); // Чтение температуры с первого датчика

float hum1 = readHumidity(addr1); // Чтение влажности с первого датчика

float temp2 = readTemperature(addr2); // Чтение температуры со второго датчика

float hum2 = readHumidity(addr2); // Чтение влажности со второго датчика

// Вывод данных на консоль

Serial.print("Temp1: ");

Serial.print(temp1);

Serial.print("C, Hum1: ");

Serial.print(hum1);

Serial.print("%, Temp2: ");

Serial.print(temp2);

Serial.print("C, Hum2: ");

Serial.print(hum2);

Serial.println("%");

delay(2000);

}

float readTemperature(int addr) {

Wire.beginTransmission(addr); // Начало передачи данных

Wire.write(0xF3); // Отправка команды на измерение температуры

Wire.endTransmission(); // Окончание передачи данных

delay(500); // Задержка для ожидания завершения измерения

Wire.requestFrom(addr, 2); // Запрос на чтение данных

byte msb = Wire.read(); // Чтение старшего байта

byte lsb = Wire.read(); // Чтение младшего байта

uint16_t data = msb << 8 | lsb; // Составление целого числа из прочитанных байтов

float temperature = ((175.72 * data) / 65536.0) - 46.85; // Расчет температуры по формуле

return temperature; // Возврат значения температуры

}

float readHumidity(int addr) {

Wire.beginTransmission(addr); // Начало передачи данных

Wire.write(0xF5); // Отправка команды на измерение влажности

Wire.endTransmission(); // Окончание передачи данных

delay(500); // Задержка для ожидания завершения измерения

Wire.requestFrom(addr, 2); // Запрос на чтение данных

byte msb = Wire.read(); // Чтение старшего байта

byte lsb = Wire.read(); // Чтение младшего байта

uint16_t data = msb << 8 | lsb; // Составление целого числа из прочитанных байтов

float humidity = ((125.0 * data) / 65536.0) - 6.0; // Расчет влажности по формуле

return humidity; // Возврат значения влажности

}

4.2 Загрузка кода на Arduino

Чтобы загрузить код на плату Arduino, подключите ее к компьютеру с помощью USB-кабеля и откройте программу Arduino IDE. Выберите тип платы и порт в меню Tools и нажмите кнопку Upload.

  • Выберите тип платы в меню Tools -> Board.
  • Выберите порт в меню Tools -> Port.
  • Нажмите кнопку Upload.

После завершения загрузки кода на плату, откройте монитор порта в Arduino IDE для просмотра получаемых данных с датчиков.

Вопрос-ответ

Можно ли подключить датчики Si7021 к Arduino без использования библиотек?

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

Как правильно подключить два датчика Si7021 к Arduino?

Датчики подключаются через интерфейс I2C. Необходимо подключить SDA и SCL пины каждого датчика к соответствующим пинам на Arduino. Также необходимо подключить общий провод к GND на Arduino.

Как узнать, какой адрес имеет каждый датчик?

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

Какие функции библиотеки Si7021 нужно использовать для получения температуры и влажности?

Для получения температуры используется функция readTemperature(). Для получения влажности используется функция readHumidity().

Какие ограничения есть у датчиков Si7021?

Датчики не могут работать при температурах выше 85 градусов Цельсия и влажности выше 80%. Также они не могут работать с напряжением питания выше 3,6 В.

Могут ли датчики Si7021 быть использованы для контроля влажности в парниках?

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

Какая точность измерений у датчиков Si7021?

Точность измерения температуры составляет +/-0,4 градуса Цельсия. Точность измерения влажности составляет +/-3%.

Оцените статью
bojsya.ru