Для создания автоматизированных систем необходимо уметь считывать данные с различных датчиков. Один из наиболее распространенных датчиков, который считывает температуру и влажность — это Si7021. Подключение одного датчика к Arduino не является сложной задачей, но что делать, если нужно подключить два датчика? У нас есть для вас решение!
В этой пошаговой инструкции мы расскажем, как подключить два датчика Si7021 к Arduino и собрать программу для считывания данных. Мы будем использовать библиотеку Wire.h, которая поможет нам общаться с датчиками, а также Serial.print для отображения результатов на мониторе порта.
Для начала, давайте разберемся в технических характеристиках датчика Si7021. Он оснащен интерфейсом I2C, который позволяет считывать данные с помощью двух пинов — SDA и SCL. Каждый датчик должен иметь свой уникальный адрес, чтобы мы могли читать данные от каждого из них.
- Подключение двух датчиков Si7021 к Arduino
- Шаг 1: Подготовка материалов
- Шаг 2: Схема подключения
- Шаг 3: Программирование
- Шаг 4: Результат
- Шаг 1: Сборка материалов
- Шаг 2: Подготовка Arduino и датчиков
- Подключение к Arduino
- Библиотеки и код
- Шаг 3: Подключение датчиков к Arduino
- Необходимые компоненты:
- Подключение датчиков к Arduino:
- Шаг 4: Написание и загрузка кода
- 4.1 Написание кода для подключения датчиков
- 4.2 Загрузка кода на Arduino
- Вопрос-ответ
- Можно ли подключить датчики Si7021 к Arduino без использования библиотек?
- Как правильно подключить два датчика Si7021 к Arduino?
- Как узнать, какой адрес имеет каждый датчик?
- Какие функции библиотеки Si7021 нужно использовать для получения температуры и влажности?
- Какие ограничения есть у датчиков Si7021?
- Могут ли датчики Si7021 быть использованы для контроля влажности в парниках?
- Какая точность измерений у датчиков Si7021?
Подключение двух датчиков Si7021 к Arduino
Шаг 1: Подготовка материалов
Для подключения двух датчиков Si7021 к Arduino нам потребуются:
- 2 модуля Si7021;
- Arduino UNO или аналогичная плата;
- брэдборд;
- макетные провода.
Шаг 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к Ом.
Убедитесь, что все материалы у вас имеются в наличии и готовы к использованию.
Также перед началом работы рекомендуется проверить работоспособность всех компонентов.
- Подключите Arduino к компьютеру и запустите среду разработки Arduino IDE.
- Создайте новый проект и загрузите простой скетч Blink, который мигает светодиодом на Arduino. Это позволит вам проверить, что ваша плата работает правильно.
- Непосредственно перед подключением датчиков убедитесь, что они не повреждены. Для этого можно проверить их на работоспособность с помощью специального скетча, который позволяет считать данные с датчика.
Шаг 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%.